@Override
    public boolean preScannerNext(final ObserverContext<? extends RegionCoprocessorEnvironment> e,
      final InternalScanner s, final List<Result> results, final int limit, final boolean hasMore)
      throws IOException {
      // this will slow down a certain next operation if the conditions are met. The slowness
      // will allow the call to go to a replica
      countOfNext.incrementAndGet();
      if (countOfNext.get() == 0 || countOfNext.get() == 4) {
        slowdownCode(e);
      }
      return true;
    }
Test Bulk Load and MR on a distributed cluster. It starts an MR job that creates linked chains
The format of rows is like this: Row Key -> Long L:<< Chain Id >> -> Row Key of the next link in
the chain S:<< Chain Id >> -> The step in the chain that his link is. D:<< Chain Id >> -> Random
Data. All chains start on row 0. All rk's are > 0. After creating the linked lists they are
walked over using a TableMapper based Mapreduce Job. There are a few options exposed:
hbase.IntegrationTestBulkLoad.chainLength The number of rows that will be part of each and every
chain. hbase.IntegrationTestBulkLoad.numMaps The number of mappers that will be run. Each mapper
creates on linked list chain. hbase.IntegrationTestBulkLoad.numImportRounds How many jobs will be
run to create linked lists. hbase.IntegrationTestBulkLoad.tableName The name of the table.
hbase.IntegrationTestBulkLoad.replicaCount How many region replicas to configure for the table
under test.
hbase-it/src/test/java/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java