@BeforeClass
  public static void setupZookeeperServers() throws Exception {
    Random random = new Random();
    File tempDir = Files.createTempDirectory("helixClusterManager-" + random.nextInt(1000)).toFile();
    String tempDirPath = tempDir.getAbsolutePath();
    tempDir.deleteOnExit();
    int port = 2300;
    byte dcId = (byte) 0;
    for (String dcName : dcs) {
      dcsToZkInfo.put(dcName, new com.github.ambry.utils.TestUtils.ZkInfo(tempDirPath, dcName, dcId++, port, true));
      zookeeperServerPorts.add(port);
      port++;
    }
  }
Test {@link HelixClusterChangeHandler} to verify its behavior is expected when handling cluster changes.
ambry-clustermap/src/test/java/com/github/ambry/clustermap/ClusterChangeHandlerTest.java