From 01bacdeaddfa90317523d2ba9ce5dacaf85c4a57 Mon Sep 17 00:00:00 2001 From: Kirill Vlasov <kirill.vlasov@devfactory.com> Date: Thu, 24 Dec 2015 12:35:22 +0500 Subject: [PATCH] [mongodb s3 tarantool] Fixing common-java:DuplicatedBlocks - Source files should not have any duplicated blocks --- .../yahoo/ycsb/db/AsyncMongoDbClientTest.java | 44 +------------- .../com/yahoo/ycsb/db/MongoDbClientTest.java | 8 ++- .../main/java/com/yahoo/ycsb/db/S3Client.java | 58 ++++++++----------- .../com/yahoo/ycsb/db/TarantoolClient.java | 25 +++----- 4 files changed, 42 insertions(+), 93 deletions(-) diff --git a/mongodb/src/test/java/com/yahoo/ycsb/db/AsyncMongoDbClientTest.java b/mongodb/src/test/java/com/yahoo/ycsb/db/AsyncMongoDbClientTest.java index ff75def6..c387be49 100644 --- a/mongodb/src/test/java/com/yahoo/ycsb/db/AsyncMongoDbClientTest.java +++ b/mongodb/src/test/java/com/yahoo/ycsb/db/AsyncMongoDbClientTest.java @@ -16,53 +16,15 @@ */ package com.yahoo.ycsb.db; -import static org.junit.Assume.assumeNoException; - -import java.util.Properties; - -import org.junit.After; - import com.yahoo.ycsb.DB; /** * AsyncMongoDbClientTest provides runs the basic workload operations. */ -public class AsyncMongoDbClientTest extends AbstractDBTestCases { - - /** The client to use. */ - private AsyncMongoDbClient myClient = null; - - /** - * Stops the test client. - */ - @After - public void tearDown() { - try { - myClient.cleanup(); - } catch (Exception error) { - // Ignore. - } finally { - myClient = null; - } - } +public class AsyncMongoDbClientTest extends MongoDbClientTest { - /** - * {@inheritDoc} - * <p> - * Overridden to return the {@link AsyncMongoDbClient}. - * </p> - */ @Override - protected DB getDB(Properties props) { - if( myClient == null ) { - myClient = new AsyncMongoDbClient(); - myClient.setProperties(props); - try { - myClient.init(); - } catch (Exception error) { - assumeNoException(error); - } - } - return myClient; + protected DB instantiateClient() { + return new AsyncMongoDbClient(); } } diff --git a/mongodb/src/test/java/com/yahoo/ycsb/db/MongoDbClientTest.java b/mongodb/src/test/java/com/yahoo/ycsb/db/MongoDbClientTest.java index 6a0bb580..3a4b4f02 100644 --- a/mongodb/src/test/java/com/yahoo/ycsb/db/MongoDbClientTest.java +++ b/mongodb/src/test/java/com/yahoo/ycsb/db/MongoDbClientTest.java @@ -30,7 +30,11 @@ import com.yahoo.ycsb.DB; public class MongoDbClientTest extends AbstractDBTestCases { /** The client to use. */ - private MongoDbClient myClient = null; + private DB myClient = null; + + protected DB instantiateClient() { + return new MongoDbClient(); + } /** * Stops the test client. @@ -55,7 +59,7 @@ public class MongoDbClientTest extends AbstractDBTestCases { @Override protected DB getDB(Properties props) { if( myClient == null ) { - myClient = new MongoDbClient(); + myClient = instantiateClient(); myClient.setProperties(props); try { myClient.init(); diff --git a/s3/src/main/java/com/yahoo/ycsb/db/S3Client.java b/s3/src/main/java/com/yahoo/ycsb/db/S3Client.java index bd19c561..f9f5b2da 100644 --- a/s3/src/main/java/com/yahoo/ycsb/db/S3Client.java +++ b/s3/src/main/java/com/yahoo/ycsb/db/S3Client.java @@ -349,22 +349,8 @@ public class S3Client extends DB { totalSize = sizeArray*fieldCount; } else { try { - GetObjectRequest getObjectRequest = null; - GetObjectMetadataRequest getObjectMetadataRequest = null; - if (ssecLocal != null) { - getObjectRequest = new GetObjectRequest(bucket, - key).withSSECustomerKey(ssecLocal); - getObjectMetadataRequest = new GetObjectMetadataRequest(bucket, - key).withSSECustomerKey(ssecLocal); - } else { - getObjectRequest = new GetObjectRequest(bucket, key); - getObjectMetadataRequest = new GetObjectMetadataRequest(bucket, - key); - } - s3Client.getObject(getObjectRequest); - ObjectMetadata objectMetadata = - s3Client.getObjectMetadata(getObjectMetadataRequest); - int sizeOfFile = (int)objectMetadata.getContentLength(); + Map.Entry<S3Object, ObjectMetadata> objectAndMetadata = getS3ObjectAndMetadata(bucket, key, ssecLocal); + int sizeOfFile = (int)objectAndMetadata.getValue().getContentLength(); fieldCount = sizeOfFile/sizeArray; totalSize = sizeOfFile; } catch (Exception e){ @@ -437,25 +423,10 @@ public class S3Client extends DB { protected Status readFromStorage(String bucket, String key, HashMap<String, ByteIterator> result, SSECustomerKey ssecLocal) { try { - GetObjectRequest getObjectRequest = null; - GetObjectMetadataRequest getObjectMetadataRequest = null; - if (ssecLocal != null) { - getObjectRequest = new GetObjectRequest(bucket, - key).withSSECustomerKey(ssecLocal); - getObjectMetadataRequest = new GetObjectMetadataRequest(bucket, - key).withSSECustomerKey(ssecLocal); - } else { - getObjectRequest = new GetObjectRequest(bucket, key); - getObjectMetadataRequest = new GetObjectMetadataRequest(bucket, - key); - } - S3Object object = - s3Client.getObject(getObjectRequest); - ObjectMetadata objectMetadata = - s3Client.getObjectMetadata(getObjectMetadataRequest); - InputStream objectData = object.getObjectContent(); //consuming the stream + Map.Entry<S3Object, ObjectMetadata> objectAndMetadata = getS3ObjectAndMetadata(bucket, key, ssecLocal); + InputStream objectData = objectAndMetadata.getKey().getObjectContent(); //consuming the stream // writing the stream to bytes and to results - int sizeOfFile = (int)objectMetadata.getContentLength(); + int sizeOfFile = (int)objectAndMetadata.getValue().getContentLength(); byte[] inputStreamToByte = new byte[sizeOfFile]; objectData.read(inputStreamToByte, 0, sizeOfFile); result.put(key, new ByteArrayByteIterator(inputStreamToByte)); @@ -469,6 +440,25 @@ public class S3Client extends DB { return Status.OK; } + private Map.Entry<S3Object, ObjectMetadata> getS3ObjectAndMetadata(String bucket, + String key, SSECustomerKey ssecLocal) { + GetObjectRequest getObjectRequest; + GetObjectMetadataRequest getObjectMetadataRequest; + if (ssecLocal != null) { + getObjectRequest = new GetObjectRequest(bucket, + key).withSSECustomerKey(ssecLocal); + getObjectMetadataRequest = new GetObjectMetadataRequest(bucket, + key).withSSECustomerKey(ssecLocal); + } else { + getObjectRequest = new GetObjectRequest(bucket, key); + getObjectMetadataRequest = new GetObjectMetadataRequest(bucket, + key); + } + + return new AbstractMap.SimpleEntry<>(s3Client.getObject(getObjectRequest), + s3Client.getObjectMetadata(getObjectMetadataRequest)); + } + /** * Perform an emulation of a database scan operation on a S3 bucket. * diff --git a/tarantool/src/main/java/com/yahoo/ycsb/db/TarantoolClient.java b/tarantool/src/main/java/com/yahoo/ycsb/db/TarantoolClient.java index 442a0071..b90dff11 100644 --- a/tarantool/src/main/java/com/yahoo/ycsb/db/TarantoolClient.java +++ b/tarantool/src/main/java/com/yahoo/ycsb/db/TarantoolClient.java @@ -84,21 +84,7 @@ public class TarantoolClient extends DB { @Override public Status insert(String table, String key, HashMap<String, ByteIterator> values) { - int j = 0; - String[] tuple = new String[1 + 2 * values.size()]; - tuple[0] = key; - for (Map.Entry<String, ByteIterator> i: values.entrySet()) { - tuple[j + 1] = i.getKey(); - tuple[j + 2] = i.getValue().toString(); - j += 2; - } - try { - this.connection.replace(this.spaceNo, tuple); - } catch (TarantoolException exc) { - logger.log(Level.SEVERE,"Can't insert element", exc); - return Status.ERROR; - } - return Status.OK; + return replace(key, values, "Can't insert element"); } private HashMap<String, ByteIterator> tuple_convert_filter (List<String> input, @@ -164,6 +150,13 @@ public class TarantoolClient extends DB { @Override public Status update(String table, String key, HashMap<String, ByteIterator> values) { + return replace(key, values, "Can't replace element"); + + } + + private Status replace(String key, + HashMap<String, ByteIterator> values, + String exceptionDescription) { int j = 0; String[] tuple = new String[1 + 2 * values.size()]; tuple[0] = key; @@ -175,7 +168,7 @@ public class TarantoolClient extends DB { try { this.connection.replace(this.spaceNo, tuple); } catch (TarantoolException exc) { - logger.log(Level.SEVERE,"Can't replace element", exc); + logger.log(Level.SEVERE,exceptionDescription, exc); return Status.ERROR; } return Status.OK; -- GitLab