diff --git a/mongodb/src/test/java/com/yahoo/ycsb/db/AbstractDBTestCases.java b/mongodb/src/test/java/com/yahoo/ycsb/db/AbstractDBTestCases.java index 94d082b5eb43c9c8887bd14e7c71ec0878c840a7..503a83f34772d7921f8318ddd5f4615442c4fcc6 100644 --- a/mongodb/src/test/java/com/yahoo/ycsb/db/AbstractDBTestCases.java +++ b/mongodb/src/test/java/com/yahoo/ycsb/db/AbstractDBTestCases.java @@ -57,12 +57,12 @@ import de.flapdoodle.embed.process.runtime.Network; @SuppressWarnings("boxing") public abstract class AbstractDBTestCases { - /** The handle to the running server. */ - private static MongodExecutable ourMongodExecutable = null; - /** The running Mongodb process. */ private static MongodProcess ourMongod = null; + /** The handle to the running server. */ + private static MongodExecutable ourMongodExecutable = null; + /** The directory to download the MongoDB executables to. */ private static final File TMP_DIR = new File("target/mongodb"); @@ -115,8 +115,8 @@ public abstract class AbstractDBTestCases { } /** - * Test method for {@link MongoDbClient#insert}, {@link MongoDbClient#read}, - * {@link com.yahoo.ycsb.db.MongoDbClient#delete}. + * Test method for {@link DB#insert}, {@link DB#read}, and {@link DB#delete} + * . */ @Test public void testInsertReadDelete() { @@ -164,7 +164,69 @@ public abstract class AbstractDBTestCases { } /** - * Test method for {@link MongoDbClient#scan} . + * Test method for {@link DB#insert}, {@link DB#read}, and {@link DB#update} + * . + */ + @Test + public void testInsertReadUpdate() { + DB client = getDB(); + + final String table = "test"; + final String id = "update"; + + HashMap<String, ByteIterator> inserted = new HashMap<String, ByteIterator>(); + inserted.put("a", new ByteArrayByteIterator(new byte[] { 1, 2, 3, 4 })); + int result = client.insert(table, id, inserted); + assertThat("Insert did not return success (0).", result, is(0)); + + HashMap<String, ByteIterator> read = new HashMap<String, ByteIterator>(); + Set<String> keys = Collections.singleton("a"); + result = client.read(table, id, keys, read); + assertThat("Read did not return success (0).", result, is(0)); + for (String key : keys) { + ByteIterator iter = read.get(key); + + assertThat("Did not read the inserted field: " + key, iter, + notNullValue()); + assertTrue(iter.hasNext()); + assertThat(iter.nextByte(), is(Byte.valueOf((byte) 1))); + assertTrue(iter.hasNext()); + assertThat(iter.nextByte(), is(Byte.valueOf((byte) 2))); + assertTrue(iter.hasNext()); + assertThat(iter.nextByte(), is(Byte.valueOf((byte) 3))); + assertTrue(iter.hasNext()); + assertThat(iter.nextByte(), is(Byte.valueOf((byte) 4))); + assertFalse(iter.hasNext()); + } + + HashMap<String, ByteIterator> updated = new HashMap<String, ByteIterator>(); + updated.put("a", new ByteArrayByteIterator(new byte[] { 5, 6, 7, 8 })); + result = client.update(table, id, updated); + assertThat("Update did not return success (0).", result, is(0)); + + read.clear(); + result = client.read(table, id, null, read); + assertThat("Read, after update, did not return success (0).", result, + is(0)); + for (String key : keys) { + ByteIterator iter = read.get(key); + + assertThat("Did not read the inserted field: " + key, iter, + notNullValue()); + assertTrue(iter.hasNext()); + assertThat(iter.nextByte(), is(Byte.valueOf((byte) 5))); + assertTrue(iter.hasNext()); + assertThat(iter.nextByte(), is(Byte.valueOf((byte) 6))); + assertTrue(iter.hasNext()); + assertThat(iter.nextByte(), is(Byte.valueOf((byte) 7))); + assertTrue(iter.hasNext()); + assertThat(iter.nextByte(), is(Byte.valueOf((byte) 8))); + assertFalse(iter.hasNext()); + } + } + + /** + * Test method for {@link DB#scan}. */ @Test public void testScan() { @@ -211,6 +273,13 @@ public abstract class AbstractDBTestCases { } } + /** + * Gets the test DB. + * + * @return The test DB. + */ + protected abstract DB getDB(); + /** * Creates a zero padded integer. * @@ -226,74 +295,4 @@ public abstract class AbstractDBTestCases { return result; } - /** - * Gets the test DB. - * - * @return The test DB. - */ - protected abstract DB getDB(); - - /** - * Test method for - * {@link com.yahoo.ycsb.db.MongoDbClient#update(java.lang.String, java.lang.String, java.util.HashMap)} - * . - */ - @Test - public void testInsertReadUpdate() { - DB client = getDB(); - - final String table = "test"; - final String id = "update"; - - HashMap<String, ByteIterator> inserted = new HashMap<String, ByteIterator>(); - inserted.put("a", new ByteArrayByteIterator(new byte[] { 1, 2, 3, 4 })); - int result = client.insert(table, id, inserted); - assertThat("Insert did not return success (0).", result, is(0)); - - HashMap<String, ByteIterator> read = new HashMap<String, ByteIterator>(); - Set<String> keys = Collections.singleton("a"); - result = client.read(table, id, keys, read); - assertThat("Read did not return success (0).", result, is(0)); - for (String key : keys) { - ByteIterator iter = read.get(key); - - assertThat("Did not read the inserted field: " + key, iter, - notNullValue()); - assertTrue(iter.hasNext()); - assertThat(iter.nextByte(), is(Byte.valueOf((byte) 1))); - assertTrue(iter.hasNext()); - assertThat(iter.nextByte(), is(Byte.valueOf((byte) 2))); - assertTrue(iter.hasNext()); - assertThat(iter.nextByte(), is(Byte.valueOf((byte) 3))); - assertTrue(iter.hasNext()); - assertThat(iter.nextByte(), is(Byte.valueOf((byte) 4))); - assertFalse(iter.hasNext()); - } - - HashMap<String, ByteIterator> updated = new HashMap<String, ByteIterator>(); - updated.put("a", new ByteArrayByteIterator(new byte[] { 5, 6, 7, 8 })); - result = client.update(table, id, updated); - assertThat("Update did not return success (0).", result, is(0)); - - read.clear(); - result = client.read(table, id, null, read); - assertThat("Read, after update, did not return success (0).", result, - is(0)); - for (String key : keys) { - ByteIterator iter = read.get(key); - - assertThat("Did not read the inserted field: " + key, iter, - notNullValue()); - assertTrue(iter.hasNext()); - assertThat(iter.nextByte(), is(Byte.valueOf((byte) 5))); - assertTrue(iter.hasNext()); - assertThat(iter.nextByte(), is(Byte.valueOf((byte) 6))); - assertTrue(iter.hasNext()); - assertThat(iter.nextByte(), is(Byte.valueOf((byte) 7))); - assertTrue(iter.hasNext()); - assertThat(iter.nextByte(), is(Byte.valueOf((byte) 8))); - assertFalse(iter.hasNext()); - } - } - } \ No newline at end of file