private void abortMaster(MiniWaspCluster cluster) { // Stop the master log("Aborting master"); cluster.abortMaster(0); cluster.waitOnMaster(0); log("Master has aborted"); }
@Test public void testOpenedEntityGroupHandlerOnMasterRestart() throws Exception { // Start the cluster log("Starting cluster"); TEST_UTIL.getConfiguration().setInt("wasp.master.assignment.timeoutmonitor.period", 2000); TEST_UTIL.getConfiguration().setInt("wasp.master.assignment.timeoutmonitor.timeout", 5000); TEST_UTIL.startMiniCluster(NUM_MASTERS, NUM_FServer); String tableName = "testOpenedEntityGroupHandlerOnMasterRestart"; MiniWaspCluster cluster = createEntityGroups(tableName); abortMaster(cluster); FServer entityGroupServer = cluster.getFServer(0); EntityGroup entityGroup = getEntityGroupBeingServed(cluster, entityGroupServer); // forcefully move a entityGroup to OPENED state in zk // Create a ZKW to use in the test zkw = WaspTestingUtility.createAndForceNodeToOpenedState( TEST_UTIL, entityGroup, entityGroupServer.getServerName()); // Start up a new master log("Starting up a new master"); cluster.startMaster().getMaster(); log("Waiting for master to be ready"); cluster.waitForActiveAndReadyMaster(); log("Master is ready"); // Failover should be completed, now wait for no RIT log("Waiting for no more RIT"); ZKAssign.blockUntilNoRIT(zkw); }
private MiniWaspCluster createEntityGroups(String tableName) throws InterruptedException, ZooKeeperConnectionException, IOException, KeeperException { MiniWaspCluster cluster = TEST_UTIL.getWaspCluster(); log("Waiting for active/ready master"); cluster.waitForActiveAndReadyMaster(); zkw = new ZooKeeperWatcher(TEST_UTIL.getConfiguration(), "testOpenedEntityGroupHandler", null); // Create a table with entityGroups byte[] table = Bytes.toBytes(tableName); byte[] family = Bytes.toBytes("family"); TEST_UTIL.createTable(table); // wait till the entityGroups are online log("Waiting for no more RIT"); ZKAssign.blockUntilNoRIT(zkw); return cluster; }