@Override
    public int run(String[] args) throws Exception {
      source = new ClusterID(getConf(), sourceClusterIdString);
      sink = new ClusterID(getConf(), sinkClusterIdString);

      if (!noReplicationSetup) {
        setupTablesAndReplication();
      }
      long expectedNumNodes = 0;
      for (int i = 0; i < numIterations; i++) {
        LOG.info("Starting iteration = " + i);

        expectedNumNodes += numMappers * numNodes;

        runGenerator();
        waitForReplication();
        runVerify(expectedNumNodes);
      }

      /**
       * we are always returning 0 because exceptions are thrown when there is an error in the
       * verification step.
       */
      return 0;
    }
The main test runner This test has 4 steps: 1: setupTablesAndReplication 2: generate the data
into the source cluster 3: wait for replication to propagate 4: verify that the data is
available in the sink cluster
@param args should be empty
@return 0 on success
@throws Exception on an error
hbase-it/src/test/java/org/apache/hadoop/hbase/test/IntegrationTestReplication.java