You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by jx...@apache.org on 2018/07/10 01:20:51 UTC
[2/2] helix git commit: Fix RoutingTableProvider clean up in the
tests.
Fix RoutingTableProvider clean up in the tests.
A backend thread is added to RoutingTableProvider recently, so in all related tests, need to shut it down.
Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/4511dbc6
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/4511dbc6
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/4511dbc6
Branch: refs/heads/master
Commit: 4511dbc6c0871ec73b287eae8a7190153b7b2d20
Parents: a720de0
Author: Jiajun Wang <jj...@linkedin.com>
Authored: Thu May 24 15:59:38 2018 -0700
Committer: Junkai Xue <jx...@jxue-mn2.linkedin.biz>
Committed: Mon Jul 9 18:20:41 2018 -0700
----------------------------------------------------------------------
.../java/org/apache/helix/TestRoutingTable.java | 305 ++++++++++---------
.../TestCorrectnessOnConnectivityLoss.java | 33 +-
.../integration/TestResourceGroupEndtoEnd.java | 1 +
.../spectator/TestRoutingTableProvider.java | 2 +
...stRoutingTableProviderFromCurrentStates.java | 77 ++---
.../TestRoutingTableProviderFromTargetEV.java | 60 ++--
.../spectator/TestRoutingTableSnapshot.java | 84 ++---
7 files changed, 302 insertions(+), 260 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/helix/blob/4511dbc6/helix-core/src/test/java/org/apache/helix/TestRoutingTable.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/TestRoutingTable.java b/helix-core/src/test/java/org/apache/helix/TestRoutingTable.java
index 8987147..d6144f3 100644
--- a/helix-core/src/test/java/org/apache/helix/TestRoutingTable.java
+++ b/helix-core/src/test/java/org/apache/helix/TestRoutingTable.java
@@ -90,12 +90,14 @@ public class TestRoutingTable {
@Test()
public void testNullAndEmpty() {
-
RoutingTableProvider routingTable = new RoutingTableProvider();
- routingTable.onExternalViewChange(null, changeContext);
- List<ExternalView> list = Collections.emptyList();
- routingTable.onExternalViewChange(list, changeContext);
-
+ try {
+ routingTable.onExternalViewChange(null, changeContext);
+ List<ExternalView> list = Collections.emptyList();
+ routingTable.onExternalViewChange(list, changeContext);
+ } finally {
+ routingTable.shutdown();
+ }
}
@Test()
@@ -104,40 +106,44 @@ public class TestRoutingTable {
RoutingTableProvider routingTable = new RoutingTableProvider();
ZNRecord record = new ZNRecord("TESTDB");
- // one master
- add(record, "TESTDB_0", "localhost_8900", "MASTER");
- List<ExternalView> externalViewList = new ArrayList<>();
- externalViewList.add(new ExternalView(record));
- routingTable.onExternalViewChange(externalViewList, changeContext);
-
- instances = routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
- AssertJUnit.assertNotNull(instances);
- AssertJUnit.assertEquals(instances.size(), 1);
-
- // additions
- add(record, "TESTDB_0", "localhost_8901", "MASTER");
- add(record, "TESTDB_1", "localhost_8900", "SLAVE");
-
- externalViewList = new ArrayList<ExternalView>();
- externalViewList.add(new ExternalView(record));
- routingTable.onExternalViewChange(externalViewList, changeContext);
-
- instances = routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
- AssertJUnit.assertNotNull(instances);
- AssertJUnit.assertEquals(instances.size(), 2);
-
- instances = routingTable.getInstances("TESTDB", "TESTDB_1", "SLAVE");
- AssertJUnit.assertNotNull(instances);
- AssertJUnit.assertEquals(instances.size(), 1);
-
- // updates
- add(record, "TESTDB_0", "localhost_8901", "SLAVE");
- externalViewList = new ArrayList<>();
- externalViewList.add(new ExternalView(record));
- routingTable.onExternalViewChange(externalViewList, changeContext);
- instances = routingTable.getInstances("TESTDB", "TESTDB_0", "SLAVE");
- AssertJUnit.assertNotNull(instances);
- AssertJUnit.assertEquals(instances.size(), 1);
+ try {
+ // one master
+ add(record, "TESTDB_0", "localhost_8900", "MASTER");
+ List<ExternalView> externalViewList = new ArrayList<>();
+ externalViewList.add(new ExternalView(record));
+ routingTable.onExternalViewChange(externalViewList, changeContext);
+
+ instances = routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
+ AssertJUnit.assertNotNull(instances);
+ AssertJUnit.assertEquals(instances.size(), 1);
+
+ // additions
+ add(record, "TESTDB_0", "localhost_8901", "MASTER");
+ add(record, "TESTDB_1", "localhost_8900", "SLAVE");
+
+ externalViewList = new ArrayList<ExternalView>();
+ externalViewList.add(new ExternalView(record));
+ routingTable.onExternalViewChange(externalViewList, changeContext);
+
+ instances = routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
+ AssertJUnit.assertNotNull(instances);
+ AssertJUnit.assertEquals(instances.size(), 2);
+
+ instances = routingTable.getInstances("TESTDB", "TESTDB_1", "SLAVE");
+ AssertJUnit.assertNotNull(instances);
+ AssertJUnit.assertEquals(instances.size(), 1);
+
+ // updates
+ add(record, "TESTDB_0", "localhost_8901", "SLAVE");
+ externalViewList = new ArrayList<>();
+ externalViewList.add(new ExternalView(record));
+ routingTable.onExternalViewChange(externalViewList, changeContext);
+ instances = routingTable.getInstances("TESTDB", "TESTDB_0", "SLAVE");
+ AssertJUnit.assertNotNull(instances);
+ AssertJUnit.assertEquals(instances.size(), 1);
+ } finally {
+ routingTable.shutdown();
+ }
}
@@ -147,20 +153,24 @@ public class TestRoutingTable {
List<ExternalView> externalViewList = new ArrayList<>();
Set<String> databases = new HashSet<>();
- for (int i = 0; i < 5; i++) {
- String db = "TESTDB" + i;
- ZNRecord record = new ZNRecord(db);
- // one master
- add(record, db+"_0", "localhost_8900", "MASTER");
- add(record, db+"_1", "localhost_8901", "SLAVE");
- externalViewList.add(new ExternalView(record));
- databases.add(db);
- }
+ try {
+ for (int i = 0; i < 5; i++) {
+ String db = "TESTDB" + i;
+ ZNRecord record = new ZNRecord(db);
+ // one master
+ add(record, db + "_0", "localhost_8900", "MASTER");
+ add(record, db + "_1", "localhost_8901", "SLAVE");
+ externalViewList.add(new ExternalView(record));
+ databases.add(db);
+ }
- routingTable.onExternalViewChange(externalViewList, changeContext);
- Collection<String> resources = routingTable.getResources();
- Assert.assertEquals(databases.size(), externalViewList.size());
- Assert.assertEquals(databases, new HashSet<>(resources));
+ routingTable.onExternalViewChange(externalViewList, changeContext);
+ Collection<String> resources = routingTable.getResources();
+ Assert.assertEquals(databases.size(), externalViewList.size());
+ Assert.assertEquals(databases, new HashSet<>(resources));
+ } finally {
+ routingTable.shutdown();
+ }
}
@Test()
@@ -168,23 +178,27 @@ public class TestRoutingTable {
List<InstanceConfig> instances;
RoutingTableProvider routingTable = new RoutingTableProvider();
- List<ExternalView> externalViewList = new ArrayList<ExternalView>();
- ZNRecord record = new ZNRecord("TESTDB");
+ try {
+ List<ExternalView> externalViewList = new ArrayList<ExternalView>();
+ ZNRecord record = new ZNRecord("TESTDB");
- // one master
- add(record, "TESTDB_0", "localhost_8900", "MASTER");
- externalViewList.add(new ExternalView(record));
- routingTable.onExternalViewChange(externalViewList, changeContext);
- instances = routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
- AssertJUnit.assertNotNull(instances);
- AssertJUnit.assertEquals(instances.size(), 1);
-
- externalViewList.clear();
- routingTable.onExternalViewChange(externalViewList, changeContext);
- Thread.sleep(100);
- instances = routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
- AssertJUnit.assertNotNull(instances);
- AssertJUnit.assertEquals(instances.size(), 0);
+ // one master
+ add(record, "TESTDB_0", "localhost_8900", "MASTER");
+ externalViewList.add(new ExternalView(record));
+ routingTable.onExternalViewChange(externalViewList, changeContext);
+ instances = routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
+ AssertJUnit.assertNotNull(instances);
+ AssertJUnit.assertEquals(instances.size(), 1);
+
+ externalViewList.clear();
+ routingTable.onExternalViewChange(externalViewList, changeContext);
+ Thread.sleep(100);
+ instances = routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
+ AssertJUnit.assertNotNull(instances);
+ AssertJUnit.assertEquals(instances.size(), 0);
+ } finally {
+ routingTable.shutdown();
+ }
}
@Test()
@@ -193,92 +207,101 @@ public class TestRoutingTable {
Set<InstanceConfig> instancesSet;
InstanceConfig instancesArray[];
RoutingTableProvider routingTable = new RoutingTableProvider();
- List<ExternalView> externalViewList = new ArrayList<ExternalView>();
- ZNRecord record = new ZNRecord("TESTDB");
- // one master
- add(record, "TESTDB_0", "localhost_8900", "MASTER");
- add(record, "TESTDB_1", "localhost_8900", "MASTER");
- add(record, "TESTDB_2", "localhost_8900", "MASTER");
- add(record, "TESTDB_3", "localhost_8900", "SLAVE");
- add(record, "TESTDB_4", "localhost_8900", "SLAVE");
- add(record, "TESTDB_5", "localhost_8900", "SLAVE");
-
- add(record, "TESTDB_0", "localhost_8901", "SLAVE");
- add(record, "TESTDB_1", "localhost_8901", "SLAVE");
- add(record, "TESTDB_2", "localhost_8901", "SLAVE");
- add(record, "TESTDB_3", "localhost_8901", "MASTER");
- add(record, "TESTDB_4", "localhost_8901", "MASTER");
- add(record, "TESTDB_5", "localhost_8901", "MASTER");
-
- externalViewList.add(new ExternalView(record));
- routingTable.onExternalViewChange(externalViewList, changeContext);
- instancesList = routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
- AssertJUnit.assertNotNull(instancesList);
- AssertJUnit.assertEquals(instancesList.size(), 1);
- instancesSet = routingTable.getInstances("TESTDB", "MASTER");
- AssertJUnit.assertNotNull(instancesSet);
- AssertJUnit.assertEquals(instancesSet.size(), 2);
- instancesSet = routingTable.getInstances("TESTDB", "SLAVE");
- AssertJUnit.assertNotNull(instancesSet);
- AssertJUnit.assertEquals(instancesSet.size(), 2);
- instancesArray = new InstanceConfig[instancesSet.size()];
- instancesSet.toArray(instancesArray);
- AssertJUnit.assertEquals(instancesArray[0].getHostName(), "localhost");
- AssertJUnit.assertEquals(instancesArray[0].getPort(), "8900");
- AssertJUnit.assertEquals(instancesArray[1].getHostName(), "localhost");
- AssertJUnit.assertEquals(instancesArray[1].getPort(), "8901");
+ try {
+ List<ExternalView> externalViewList = new ArrayList<ExternalView>();
+ ZNRecord record = new ZNRecord("TESTDB");
+
+ // one master
+ add(record, "TESTDB_0", "localhost_8900", "MASTER");
+ add(record, "TESTDB_1", "localhost_8900", "MASTER");
+ add(record, "TESTDB_2", "localhost_8900", "MASTER");
+ add(record, "TESTDB_3", "localhost_8900", "SLAVE");
+ add(record, "TESTDB_4", "localhost_8900", "SLAVE");
+ add(record, "TESTDB_5", "localhost_8900", "SLAVE");
+
+ add(record, "TESTDB_0", "localhost_8901", "SLAVE");
+ add(record, "TESTDB_1", "localhost_8901", "SLAVE");
+ add(record, "TESTDB_2", "localhost_8901", "SLAVE");
+ add(record, "TESTDB_3", "localhost_8901", "MASTER");
+ add(record, "TESTDB_4", "localhost_8901", "MASTER");
+ add(record, "TESTDB_5", "localhost_8901", "MASTER");
+
+ externalViewList.add(new ExternalView(record));
+ routingTable.onExternalViewChange(externalViewList, changeContext);
+ instancesList = routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
+ AssertJUnit.assertNotNull(instancesList);
+ AssertJUnit.assertEquals(instancesList.size(), 1);
+ instancesSet = routingTable.getInstances("TESTDB", "MASTER");
+ AssertJUnit.assertNotNull(instancesSet);
+ AssertJUnit.assertEquals(instancesSet.size(), 2);
+ instancesSet = routingTable.getInstances("TESTDB", "SLAVE");
+ AssertJUnit.assertNotNull(instancesSet);
+ AssertJUnit.assertEquals(instancesSet.size(), 2);
+ instancesArray = new InstanceConfig[instancesSet.size()];
+ instancesSet.toArray(instancesArray);
+ AssertJUnit.assertEquals(instancesArray[0].getHostName(), "localhost");
+ AssertJUnit.assertEquals(instancesArray[0].getPort(), "8900");
+ AssertJUnit.assertEquals(instancesArray[1].getHostName(), "localhost");
+ AssertJUnit.assertEquals(instancesArray[1].getPort(), "8901");
+ } finally {
+ routingTable.shutdown();
+ }
}
@Test()
public void testMultiThread() throws Exception {
final RoutingTableProvider routingTable = new RoutingTableProvider();
List<ExternalView> externalViewList = new ArrayList<>();
- ZNRecord record = new ZNRecord("TESTDB");
- for (int i = 0; i < 1000; i++) {
- add(record, "TESTDB_" + i, "localhost_8900", "MASTER");
- }
- externalViewList.add(new ExternalView(record));
- routingTable.onExternalViewChange(externalViewList, changeContext);
- Callable<Boolean> runnable = new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- try {
- int count = 0;
- while (count < 100) {
- List<InstanceConfig> instancesList =
- routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
- AssertJUnit.assertEquals(instancesList.size(), 1);
- // System.out.println(System.currentTimeMillis() + "-->"
- // + instancesList.size());
-
- Thread.sleep(5);
-
- count++;
+ try {
+ ZNRecord record = new ZNRecord("TESTDB");
+ for (int i = 0; i < 1000; i++) {
+ add(record, "TESTDB_" + i, "localhost_8900", "MASTER");
+ }
+ externalViewList.add(new ExternalView(record));
+ routingTable.onExternalViewChange(externalViewList, changeContext);
+ Callable<Boolean> runnable = new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+
+ try {
+ int count = 0;
+ while (count < 100) {
+ List<InstanceConfig> instancesList =
+ routingTable.getInstances("TESTDB", "TESTDB_0", "MASTER");
+ AssertJUnit.assertEquals(instancesList.size(), 1);
+ // System.out.println(System.currentTimeMillis() + "-->"
+ // + instancesList.size());
+
+ Thread.sleep(5);
+
+ count++;
+ }
+ } catch (InterruptedException e) {
+ // e.printStackTrace();
}
+ return true;
+ }
+ };
+ ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
+ Future<Boolean> submit = executor.submit(runnable);
+ int count = 0;
+ while (count < 10) {
+ try {
+ Thread.sleep(10);
} catch (InterruptedException e) {
- // e.printStackTrace();
+ e.printStackTrace();
}
- return true;
+ routingTable.onExternalViewChange(externalViewList, changeContext);
+ count++;
}
- };
- ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
- Future<Boolean> submit = executor.submit(runnable);
- int count = 0;
- while (count < 10) {
- try {
- Thread.sleep(10);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- routingTable.onExternalViewChange(externalViewList, changeContext);
- count++;
- }
-
- Boolean result = submit.get(60, TimeUnit.SECONDS);
- AssertJUnit.assertEquals(result, Boolean.TRUE);
+ Boolean result = submit.get(60, TimeUnit.SECONDS);
+ AssertJUnit.assertEquals(result, Boolean.TRUE);
+ } finally {
+ routingTable.shutdown();
+ }
}
private void add(ZNRecord record, String stateUnitKey, String instanceName, String state) {
http://git-wip-us.apache.org/repos/asf/helix/blob/4511dbc6/helix-core/src/test/java/org/apache/helix/integration/TestCorrectnessOnConnectivityLoss.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestCorrectnessOnConnectivityLoss.java b/helix-core/src/test/java/org/apache/helix/integration/TestCorrectnessOnConnectivityLoss.java
index cbe231d..2d8749e 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestCorrectnessOnConnectivityLoss.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestCorrectnessOnConnectivityLoss.java
@@ -118,21 +118,24 @@ public class TestCorrectnessOnConnectivityLoss {
participant.connect();
RoutingTableProvider routingTableProvider = new RoutingTableProvider();
- HelixManager spectator =
- HelixManagerFactory.getZKHelixManager(_clusterName, "spectator", InstanceType.SPECTATOR,
- ZK_ADDR);
- spectator.connect();
- spectator.addConfigChangeListener(routingTableProvider);
- spectator.addExternalViewChangeListener(routingTableProvider);
- Thread.sleep(1000);
-
- // Now let's stop the ZK server; this should do nothing
- TestHelper.stopZkServer(_zkServer);
- Thread.sleep(1000);
-
- // Verify routing table still works
- Assert.assertEquals(routingTableProvider.getInstances("resource0", "ONLINE").size(), 1);
- Assert.assertEquals(routingTableProvider.getInstances("resource0", "OFFLINE").size(), 0);
+ try {
+ HelixManager spectator = HelixManagerFactory
+ .getZKHelixManager(_clusterName, "spectator", InstanceType.SPECTATOR, ZK_ADDR);
+ spectator.connect();
+ spectator.addConfigChangeListener(routingTableProvider);
+ spectator.addExternalViewChangeListener(routingTableProvider);
+ Thread.sleep(1000);
+
+ // Now let's stop the ZK server; this should do nothing
+ TestHelper.stopZkServer(_zkServer);
+ Thread.sleep(1000);
+
+ // Verify routing table still works
+ Assert.assertEquals(routingTableProvider.getInstances("resource0", "ONLINE").size(), 1);
+ Assert.assertEquals(routingTableProvider.getInstances("resource0", "OFFLINE").size(), 0);
+ } finally {
+ routingTableProvider.shutdown();
+ }
}
@AfterMethod
http://git-wip-us.apache.org/repos/asf/helix/blob/4511dbc6/helix-core/src/test/java/org/apache/helix/integration/TestResourceGroupEndtoEnd.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/TestResourceGroupEndtoEnd.java b/helix-core/src/test/java/org/apache/helix/integration/TestResourceGroupEndtoEnd.java
index 47f8af9..f2d876d 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/TestResourceGroupEndtoEnd.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestResourceGroupEndtoEnd.java
@@ -139,6 +139,7 @@ public class TestResourceGroupEndtoEnd extends ZkIntegrationTestBase {
_controller.syncStop();
_spectator.disconnect();
+ _routingTableProvider.shutdown();
}
private void addInstanceGroup(String clusterName, String instanceTag, int numInstance) {
http://git-wip-us.apache.org/repos/asf/helix/blob/4511dbc6/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProvider.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProvider.java b/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProvider.java
index b34e447..e395519 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProvider.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProvider.java
@@ -122,6 +122,8 @@ public class TestRoutingTableProvider extends ZkIntegrationTestBase {
p.syncStop();
}
_controller.syncStop();
+ _routingTableProvider.shutdown();
+ _routingTableProvider2.shutdown();
_spectator.disconnect();
_gSetupTool.deleteCluster(CLUSTER_NAME);
}
http://git-wip-us.apache.org/repos/asf/helix/blob/4511dbc6/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProviderFromCurrentStates.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProviderFromCurrentStates.java b/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProviderFromCurrentStates.java
index 6187cff..72a6dae 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProviderFromCurrentStates.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProviderFromCurrentStates.java
@@ -88,49 +88,52 @@ public class TestRoutingTableProviderFromCurrentStates extends ZkIntegrationTest
new RoutingTableProvider(_manager, PropertyType.EXTERNALVIEW);
RoutingTableProvider routingTableCurrentStates = new RoutingTableProvider(_manager, PropertyType.CURRENTSTATES);
- String db1 = "TestDB-1";
- _setupTool.addResourceToCluster(CLUSTER_NAME, db1, NUM_PARTITIONS, "MasterSlave",
- IdealState.RebalanceMode.FULL_AUTO.name());
- _setupTool.rebalanceStorageCluster(CLUSTER_NAME, db1, NUM_REPLICAS);
-
- Thread.sleep(200);
- HelixClusterVerifier clusterVerifier =
- new BestPossibleExternalViewVerifier.Builder(CLUSTER_NAME).setZkAddr(ZK_ADDR).build();
- Assert.assertTrue(clusterVerifier.verify());
-
- IdealState idealState1 = _setupTool.getClusterManagementTool().getResourceIdealState(
- CLUSTER_NAME, db1);
- validate(idealState1, routingTableEV, routingTableCurrentStates);
-
- // add new DB
- String db2 = "TestDB-2";
- _setupTool.addResourceToCluster(CLUSTER_NAME, db2, NUM_PARTITIONS, "MasterSlave",
- IdealState.RebalanceMode.FULL_AUTO.name());
- _setupTool.rebalanceStorageCluster(CLUSTER_NAME, db2, NUM_REPLICAS);
-
- Thread.sleep(200);
- Assert.assertTrue(clusterVerifier.verify());
-
- IdealState idealState2 = _setupTool.getClusterManagementTool().getResourceIdealState(
- CLUSTER_NAME, db2);
- validate(idealState2, routingTableEV, routingTableCurrentStates);
-
- // shutdown an instance
- _participants[0].syncStop();
- Thread.sleep(200);
- Assert.assertTrue(clusterVerifier.verify());
- validate(idealState1, routingTableEV, routingTableCurrentStates);
- validate(idealState2, routingTableEV, routingTableCurrentStates);
+ try {
+ String db1 = "TestDB-1";
+ _setupTool.addResourceToCluster(CLUSTER_NAME, db1, NUM_PARTITIONS, "MasterSlave", IdealState.RebalanceMode.FULL_AUTO.name());
+ _setupTool.rebalanceStorageCluster(CLUSTER_NAME, db1, NUM_REPLICAS);
+
+ Thread.sleep(200);
+ HelixClusterVerifier clusterVerifier =
+ new BestPossibleExternalViewVerifier.Builder(CLUSTER_NAME).setZkAddr(ZK_ADDR).build();
+ Assert.assertTrue(clusterVerifier.verify());
+
+ IdealState idealState1 =
+ _setupTool.getClusterManagementTool().getResourceIdealState(CLUSTER_NAME, db1);
+ validate(idealState1, routingTableEV, routingTableCurrentStates);
+
+ // add new DB
+ String db2 = "TestDB-2";
+ _setupTool.addResourceToCluster(CLUSTER_NAME, db2, NUM_PARTITIONS, "MasterSlave", IdealState.RebalanceMode.FULL_AUTO.name());
+ _setupTool.rebalanceStorageCluster(CLUSTER_NAME, db2, NUM_REPLICAS);
+
+ Thread.sleep(200);
+ Assert.assertTrue(clusterVerifier.verify());
+
+ IdealState idealState2 =
+ _setupTool.getClusterManagementTool().getResourceIdealState(CLUSTER_NAME, db2);
+ validate(idealState2, routingTableEV, routingTableCurrentStates);
+
+ // shutdown an instance
+ _participants[0].syncStop();
+ Thread.sleep(200);
+ Assert.assertTrue(clusterVerifier.verify());
+ validate(idealState1, routingTableEV, routingTableCurrentStates);
+ validate(idealState2, routingTableEV, routingTableCurrentStates);
+ } finally {
+ routingTableEV.shutdown();
+ routingTableCurrentStates.shutdown();
+ }
}
@Test (dependsOnMethods = {"testRoutingTableWithCurrentStates"})
public void testWithSupportSourceDataType() {
- new RoutingTableProvider(_manager, PropertyType.EXTERNALVIEW);
- new RoutingTableProvider(_manager, PropertyType.TARGETEXTERNALVIEW);
- new RoutingTableProvider(_manager, PropertyType.CURRENTSTATES);
+ new RoutingTableProvider(_manager, PropertyType.EXTERNALVIEW).shutdown();
+ new RoutingTableProvider(_manager, PropertyType.TARGETEXTERNALVIEW).shutdown();
+ new RoutingTableProvider(_manager, PropertyType.CURRENTSTATES).shutdown();
try {
- new RoutingTableProvider(_manager, PropertyType.IDEALSTATES);
+ new RoutingTableProvider(_manager, PropertyType.IDEALSTATES).shutdown();
Assert.fail();
} catch (HelixException ex) {
Assert.assertTrue(ex.getMessage().contains("Unsupported source data type"));
http://git-wip-us.apache.org/repos/asf/helix/blob/4511dbc6/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProviderFromTargetEV.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProviderFromTargetEV.java b/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProviderFromTargetEV.java
index fbf17cf..16a759e 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProviderFromTargetEV.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableProviderFromTargetEV.java
@@ -103,8 +103,12 @@ public class TestRoutingTableProviderFromTargetEV extends ZkIntegrationTestBase
String resourceName = WorkflowGenerator.DEFAULT_TGT_DB + 1;
RoutingTableProvider externalViewProvider =
new RoutingTableProvider(_manager, PropertyType.EXTERNALVIEW);
- Assert.assertEquals(externalViewProvider.getInstancesForResource(resourceName, "SLAVE").size(),
- 0);
+ try {
+ Assert.assertEquals(externalViewProvider.getInstancesForResource(resourceName, "SLAVE").size(),
+ 0);
+ } finally {
+ externalViewProvider.shutdown();
+ }
}
@Test (dependsOnMethods = "testTargetExternalViewWithoutEnable")
@@ -120,33 +124,37 @@ public class TestRoutingTableProviderFromTargetEV extends ZkIntegrationTestBase
RoutingTableProvider targetExternalViewProvider =
new RoutingTableProvider(_manager, PropertyType.TARGETEXTERNALVIEW);
- // ExternalView should not contain any MASTERS
- // TargetExternalView should contain MASTERS same as the partition number
- Set<InstanceConfig> externalViewMasters =
- externalViewProvider.getInstancesForResource(WorkflowGenerator.DEFAULT_TGT_DB, "MASTER");
- Assert.assertEquals(externalViewMasters.size(), 0);
- Set<InstanceConfig> targetExternalViewMasters = targetExternalViewProvider
- .getInstancesForResource(WorkflowGenerator.DEFAULT_TGT_DB, "MASTER");
- Assert.assertEquals(targetExternalViewMasters.size(), NUM_NODES);
-
- // TargetExternalView MASTERS mapping should exactly match IdealState MASTERS mapping
- Map<String, Map<String, String>> stateMap = _setupTool.getClusterManagementTool()
- .getResourceIdealState(CLUSTER_NAME, WorkflowGenerator.DEFAULT_TGT_DB).getRecord()
- .getMapFields();
-
- Set<String> idealMasters = new HashSet<>();
- Set<String> targetMasters = new HashSet<>();
- for (Map<String, String> instanceMap : stateMap.values()) {
- for (String instance : instanceMap.keySet()) {
- if (instanceMap.get(instance).equals("MASTER")) {
- idealMasters.add(instance);
+ try {
+ // ExternalView should not contain any MASTERS
+ // TargetExternalView should contain MASTERS same as the partition number
+ Set<InstanceConfig> externalViewMasters =
+ externalViewProvider.getInstancesForResource(WorkflowGenerator.DEFAULT_TGT_DB, "MASTER");
+ Assert.assertEquals(externalViewMasters.size(), 0);
+ Set<InstanceConfig> targetExternalViewMasters = targetExternalViewProvider
+ .getInstancesForResource(WorkflowGenerator.DEFAULT_TGT_DB, "MASTER");
+ Assert.assertEquals(targetExternalViewMasters.size(), NUM_NODES);
+
+ // TargetExternalView MASTERS mapping should exactly match IdealState MASTERS mapping
+ Map<String, Map<String, String>> stateMap = _setupTool.getClusterManagementTool()
+ .getResourceIdealState(CLUSTER_NAME, WorkflowGenerator.DEFAULT_TGT_DB).getRecord().getMapFields();
+
+ Set<String> idealMasters = new HashSet<>();
+ Set<String> targetMasters = new HashSet<>();
+ for (Map<String, String> instanceMap : stateMap.values()) {
+ for (String instance : instanceMap.keySet()) {
+ if (instanceMap.get(instance).equals("MASTER")) {
+ idealMasters.add(instance);
+ }
}
}
- }
- for (InstanceConfig instanceConfig : targetExternalViewMasters) {
- targetMasters.add(instanceConfig.getInstanceName());
+ for (InstanceConfig instanceConfig : targetExternalViewMasters) {
+ targetMasters.add(instanceConfig.getInstanceName());
+ }
+ Assert.assertTrue(idealMasters.equals(targetMasters));
+ } finally {
+ externalViewProvider.shutdown();
+ targetExternalViewProvider.shutdown();
}
- Assert.assertTrue(idealMasters.equals(targetMasters));
}
}
http://git-wip-us.apache.org/repos/asf/helix/blob/4511dbc6/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableSnapshot.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableSnapshot.java b/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableSnapshot.java
index d556b7a..118387c 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableSnapshot.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/spectator/TestRoutingTableSnapshot.java
@@ -80,47 +80,49 @@ public class TestRoutingTableSnapshot extends ZkIntegrationTestBase {
RoutingTableProvider routingTableProvider =
new RoutingTableProvider(_manager, PropertyType.EXTERNALVIEW);
- String db1 = "TestDB-1";
- _setupTool.addResourceToCluster(CLUSTER_NAME, db1, NUM_PARTITIONS, "MasterSlave",
- IdealState.RebalanceMode.FULL_AUTO.name());
- _setupTool.rebalanceStorageCluster(CLUSTER_NAME, db1, NUM_REPLICAS);
-
- Thread.sleep(200);
- HelixClusterVerifier clusterVerifier =
- new BestPossibleExternalViewVerifier.Builder(CLUSTER_NAME).setZkAddr(ZK_ADDR).build();
- Assert.assertTrue(clusterVerifier.verify());
-
- IdealState idealState1 = _setupTool.getClusterManagementTool().getResourceIdealState(
- CLUSTER_NAME, db1);
-
- RoutingTableSnapshot routingTableSnapshot = routingTableProvider.getRoutingTableSnapshot();
- validateMapping(idealState1, routingTableSnapshot);
-
- Assert.assertEquals(routingTableSnapshot.getInstanceConfigs().size(), NUM_NODES);
- Assert.assertEquals(routingTableSnapshot.getResources().size(), 1);
- Assert.assertEquals(routingTableSnapshot.getLiveInstances().size(), NUM_NODES);
-
- // add new DB and shutdown an instance
- String db2 = "TestDB-2";
- _setupTool.addResourceToCluster(CLUSTER_NAME, db2, NUM_PARTITIONS, "MasterSlave",
- IdealState.RebalanceMode.FULL_AUTO.name());
- _setupTool.rebalanceStorageCluster(CLUSTER_NAME, db2, NUM_REPLICAS);
-
- // shutdown an instance
- _participants[0].syncStop();
- Thread.sleep(200);
- Assert.assertTrue(clusterVerifier.verify());
-
- // the original snapshot should not change
- Assert.assertEquals(routingTableSnapshot.getInstanceConfigs().size(), NUM_NODES);
- Assert.assertEquals(routingTableSnapshot.getResources().size(), 1);
- Assert.assertEquals(routingTableSnapshot.getLiveInstances().size(), NUM_NODES);
-
- RoutingTableSnapshot newRoutingTableSnapshot = routingTableProvider.getRoutingTableSnapshot();
-
- Assert.assertEquals(newRoutingTableSnapshot.getInstanceConfigs().size(), NUM_NODES);
- Assert.assertEquals(newRoutingTableSnapshot.getResources().size(), 2);
- Assert.assertEquals(newRoutingTableSnapshot.getLiveInstances().size(), NUM_NODES - 1);
+ try {
+ String db1 = "TestDB-1";
+ _setupTool.addResourceToCluster(CLUSTER_NAME, db1, NUM_PARTITIONS, "MasterSlave", IdealState.RebalanceMode.FULL_AUTO.name());
+ _setupTool.rebalanceStorageCluster(CLUSTER_NAME, db1, NUM_REPLICAS);
+
+ Thread.sleep(200);
+ HelixClusterVerifier clusterVerifier =
+ new BestPossibleExternalViewVerifier.Builder(CLUSTER_NAME).setZkAddr(ZK_ADDR).build();
+ Assert.assertTrue(clusterVerifier.verify());
+
+ IdealState idealState1 =
+ _setupTool.getClusterManagementTool().getResourceIdealState(CLUSTER_NAME, db1);
+
+ RoutingTableSnapshot routingTableSnapshot = routingTableProvider.getRoutingTableSnapshot();
+ validateMapping(idealState1, routingTableSnapshot);
+
+ Assert.assertEquals(routingTableSnapshot.getInstanceConfigs().size(), NUM_NODES);
+ Assert.assertEquals(routingTableSnapshot.getResources().size(), 1);
+ Assert.assertEquals(routingTableSnapshot.getLiveInstances().size(), NUM_NODES);
+
+ // add new DB and shutdown an instance
+ String db2 = "TestDB-2";
+ _setupTool.addResourceToCluster(CLUSTER_NAME, db2, NUM_PARTITIONS, "MasterSlave", IdealState.RebalanceMode.FULL_AUTO.name());
+ _setupTool.rebalanceStorageCluster(CLUSTER_NAME, db2, NUM_REPLICAS);
+
+ // shutdown an instance
+ _participants[0].syncStop();
+ Thread.sleep(200);
+ Assert.assertTrue(clusterVerifier.verify());
+
+ // the original snapshot should not change
+ Assert.assertEquals(routingTableSnapshot.getInstanceConfigs().size(), NUM_NODES);
+ Assert.assertEquals(routingTableSnapshot.getResources().size(), 1);
+ Assert.assertEquals(routingTableSnapshot.getLiveInstances().size(), NUM_NODES);
+
+ RoutingTableSnapshot newRoutingTableSnapshot = routingTableProvider.getRoutingTableSnapshot();
+
+ Assert.assertEquals(newRoutingTableSnapshot.getInstanceConfigs().size(), NUM_NODES);
+ Assert.assertEquals(newRoutingTableSnapshot.getResources().size(), 2);
+ Assert.assertEquals(newRoutingTableSnapshot.getLiveInstances().size(), NUM_NODES - 1);
+ } finally {
+ routingTableProvider.shutdown();
+ }
}
private void validateMapping(IdealState idealState, RoutingTableSnapshot routingTableSnapshot) {