protected void assertScan(final HRegion r, final byte[] fs, final byte[] firstValue)
    throws IOException {
    byte[][] families = { fs };
    Scan scan = new Scan();
    for (int i = 0; i < families.length; i++)
      scan.addFamily(families[i]);
    try (InternalScanner s = r.getScanner(scan)) {
      List<Cell> curVals = new ArrayList<>();
      boolean first = true;
      OUTER_LOOP: while (s.next(curVals)) {
        for (Cell kv : curVals) {
          byte[] val = CellUtil.cloneValue(kv);
          byte[] curval = val;
          if (first) {
            first = false;
            assertTrue(Bytes.compareTo(curval, firstValue) == 0);
          } else {
            // Not asserting anything. Might as well break.
            break OUTER_LOOP;
          }
        }
      }
    }
  }
For this test,the spied {@link AsyncFSWAL} can not work properly because of a Mockito defect
that can not deal with classes which have a field of an inner class. See discussions in
HBASE-15536.When we reuse the code of {@link AsyncFSWAL} for {@link FSHLog}, this test could
not work for {@link FSHLog} also.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java