@BeforeClass
  public static void setUp() throws Exception {
    // Set RegionServer class and use default values for other options.
    StartTestingClusterOption option =
      StartTestingClusterOption.builder().rsClass(DelayedRegionServer.class).build();
    UTIL.startMiniCluster(option);
    UTIL.getAdmin().createTable(TableDescriptorBuilder.newBuilder(TABLE_NAME)
      .setColumnFamily(ColumnFamilyDescriptorBuilder.of(FAMILY)).build());

    Configuration conf = new Configuration(UTIL.getConfiguration());
    conf.setLong(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, 500);
    conf.setLong(HConstants.HBASE_CLIENT_META_OPERATION_TIMEOUT, 500);
    conf.setLong(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, 500);
    conf.setLong(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 1);
    CONN = ConnectionFactory.createConnection(conf);
    TABLE = CONN.getTable(TABLE_NAME);
  }
These tests verify that the RPC timeouts ('hbase.client.operation.timeout' and
'hbase.client.scanner.timeout.period') work correctly using a modified Region Server which
injects delays to get, scan and mutate operations.
<p/>
When 'hbase.client.operation.timeout' is set and client operation is not completed in time the
client will retry the operation 'hbase.client.retries.number' times. After that
{@link SocketTimeoutException} will be thrown.
<p/>
Using 'hbase.client.scanner.timeout.period' configuration property similar behavior can be
specified for scan related operations such as openScanner(), next(). If that times out
{@link RetriesExhaustedException} will be thrown.
hbase-server/src/test/java/org/apache/hadoop/hbase/TestClientOperationTimeout.java