diff --git a/build.xml b/build.xml index 69e770ee31..721e2d842a 100644 --- a/build.xml +++ b/build.xml @@ -282,7 +282,7 @@ - + diff --git a/test/unit/voldemort/client/AdminServiceBasicTest.java b/test/unit/voldemort/client/AdminServiceBasicTest.java index 679f34c2a1..f4a550d8e5 100644 --- a/test/unit/voldemort/client/AdminServiceBasicTest.java +++ b/test/unit/voldemort/client/AdminServiceBasicTest.java @@ -317,7 +317,11 @@ public void testFetchAndUpdate() throws IOException { // do fetch And update call server1 <-- server0 AdminClient client = getAdminClient(); - int id = client.fetchAndUpdateStreams(0, 1, testStoreName, Arrays.asList(0, 1), null); + int id = client.fetchAndUpdateStreams(0, + 1, + testStoreName, + fetchAndUpdatePartitionsList, + null); client.waitForCompletion(1, id, 5, TimeUnit.SECONDS); // check values diff --git a/test/unit/voldemort/client/AdminServiceFailureTest.java b/test/unit/voldemort/client/AdminServiceFailureTest.java new file mode 100644 index 0000000000..3770313745 --- /dev/null +++ b/test/unit/voldemort/client/AdminServiceFailureTest.java @@ -0,0 +1,88 @@ +package voldemort.client; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Iterator; +import java.util.Map.Entry; + +import junit.framework.TestCase; +import voldemort.ServerTestUtils; +import voldemort.TestUtils; +import voldemort.client.protocol.admin.AdminClient; +import voldemort.cluster.Cluster; +import voldemort.server.VoldemortConfig; +import voldemort.server.VoldemortServer; +import voldemort.store.Store; +import voldemort.store.UnreachableStoreException; +import voldemort.utils.ByteArray; +import voldemort.utils.Pair; +import voldemort.versioning.Versioned; + +/** + * Test to check streaming behavior under failure. + * + * @author bbansal + * + */ +public class AdminServiceFailureTest extends TestCase { + + private static String testStoreName = "test-replication-memory"; + private static int TEST_KEYS = 10000; + private static String storesXmlfile = "test/common/voldemort/config/stores.xml"; + + private AdminClient adminClient; + private VoldemortServer server; + private Cluster cluster; + + @Override + public void setUp() throws IOException { + cluster = ServerTestUtils.getLocalCluster(2); + VoldemortConfig config = ServerTestUtils.createServerConfig(0, + TestUtils.createTempDir() + .getAbsolutePath(), + null, + storesXmlfile); + server = new VoldemortServer(config, cluster); + server.start(); + + adminClient = ServerTestUtils.getAdminClient(cluster); + } + + @Override + public void tearDown() throws IOException { + try { + adminClient.stop(); + ServerTestUtils.stopVoldemortServer(server); + } catch(Exception e) { + // ignore + } + } + + protected AdminClient getAdminClient() { + return adminClient; + } + + protected Store getStore(String storeName) { + return server.getStoreRepository().getStorageEngine(storeName); + } + + public void testWithStartFailure() { + // put some entries in store + for(Entry entry: ServerTestUtils.createRandomKeyValuePairs(TEST_KEYS) + .entrySet()) { + getStore(testStoreName).put(entry.getKey(), new Versioned(entry.getValue())); + } + + server.stop(); + try { + // make fetch stream call. + Iterator>> entryIterator = getAdminClient().fetchPartitionEntries(0, + testStoreName, + Arrays.asList(new Integer[] { 0 }), + null); + fail(); + } catch(UnreachableStoreException e) { + // ignore + } + } +}