@Override
    @SuppressWarnings("ReturnValueIgnored")
    boolean testRow(final long i, final long startTime) throws IOException, InterruptedException {
      byte[] row = generateRow(i);
      Put put = new Put(row);
      for (int family = 0; family < opts.families; family++) {
        byte[] familyName = Bytes.toBytes(FAMILY_NAME_BASE + family);
        for (int column = 0; column < opts.columns; column++) {
          byte[] qualifier = column == 0 ? COLUMN_ZERO : Bytes.toBytes("" + column);
          byte[] value = generateData(getValueLength());
          if (opts.useTags) {
            byte[] tag = generateData(TAG_LENGTH);
            Tag[] tags = new Tag[opts.noOfTags];
            for (int n = 0; n < opts.noOfTags; n++) {
              Tag t = new ArrayBackedTag((byte) n, tag);
              tags[n] = t;
            }
            KeyValue kv =
              new KeyValue(row, familyName, qualifier, HConstants.LATEST_TIMESTAMP, value, tags);
            put.add(kv);
            updateValueSize(kv.getValueLength());
          } else {
            put.addColumn(familyName, qualifier, value);
            updateValueSize(value.length);
          }
        }
      }
      put.setDurability(opts.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL);
      try {
        table.put(put).get();
        if (opts.multiPut > 0) {
          this.puts.add(put);
          if (this.puts.size() == opts.multiPut) {
            this.table.put(puts).stream().map(f -> AsyncRandomReadTest.propagate(f::get));
            this.puts.clear();
          } else {
            return false;
          }
        } else {
          table.put(put).get();
        }
      } catch (ExecutionException e) {
        throw new IOException(e);
      }
      return true;
    }
Test for individual row.
@param i Row index.
@return true if the row was sent to server and need to record metrics. False if not, multiGet
        and multiPut e.g., the rows are sent to server only if enough gets/puts are gathered.
hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/PerformanceEvaluation.java