@Override
 @AfterMethod
 public void afterTest() {
   try {
     rebalancing.destroy();
   } finally {
     super.afterTest();
   }
 }
 @BeforeClass
 protected void bootstrap() throws Exception {
   super.bootstrapBeforeClass();
 }
 @AfterClass(alwaysRun = true)
 protected void teardownAfterClass() throws Exception {
   super.teardownAfterClass();
 }
 /**
  * Before Rebalancing: Machine1: GSC1{ P1,P2,P3,P4 } , GSC2{ B5,B6 } , GSC3{ B7,B8 } Machine2:
  * GSC4{ P5,P6,P7 } , GSC5{ P8,B1,B2 }, GSC6{ B3,B4 }
  *
  * <p>After Rebalancing: Machine1: GSC1{ P2,P3,P4 } , GSC2{ B1,B5,B6 } , GSC3{ B7,B8 } Machine2:
  * GSC4{ P5,P6,P7 } , GSC5{ P8,P1,B2 }, GSC6{ B3,B4 }
  *
  * <p>After Restart primary: Machine1: GSC1{ P2,P3,P4 } , GSC2{ B1,P5,B6 } , GSC3{ B7,B8 }
  * Machine2: GSC4{ B5,P6,P7 } , GSC5{ P8,P1,B2 } , GSC6{ B3,B4 }
  *
  * @throws InterruptedException
  * @throws TimeoutException
  */
 @BeforeMethod
 public void beforeTest() {
   super.beforeTestInit();
   rebalancing = new RebalancingSlaEnforcement();
   rebalancing.enableTracing();
 }