@Test
  public void testDelete() throws Exception {
    ColumnFamilyDescriptor cfd = ColumnFamilyDescriptorBuilder.newBuilder(c0).setMinVersions(3)
      .setMaxVersions(1000).setTimeToLive(1).setKeepDeletedCells(KeepDeletedCells.FALSE).build();

    TableDescriptor htd = TableDescriptorBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
      .setColumnFamily(cfd).build();

    HRegion region = hbu.createLocalHRegion(htd, null, null);

    // 2s in the past
    long ts = EnvironmentEdgeManager.currentTime() - 2000;

    try {
      Put p = new Put(T1, ts - 2);
      p.addColumn(c0, c0, T1);
      region.put(p);

      p = new Put(T1, ts - 1);
      p.addColumn(c0, c0, T2);
      region.put(p);

      p = new Put(T1, ts);
      p.addColumn(c0, c0, T3);
      region.put(p);

      Delete d = new Delete(T1, ts - 1);
      region.delete(d);

      Get g = new Get(T1);
      g.readAllVersions();
      Result r = region.get(g); // this'll use ScanWildcardColumnTracker
      checkResult(r, c0, T3);

      g = new Get(T1);
      g.readAllVersions();
      g.addColumn(c0, c0);
      r = region.get(g); // this'll use ExplicitColumnTracker
      checkResult(r, c0, T3);

      // now flush/compact
      region.flush(true);
      region.compact(true);

      // try again
      g = new Get(T1);
      g.readAllVersions();
      r = region.get(g); // this'll use ScanWildcardColumnTracker
      checkResult(r, c0, T3);

      g = new Get(T1);
      g.readAllVersions();
      g.addColumn(c0, c0);
      r = region.get(g); // this'll use ExplicitColumnTracker
      checkResult(r, c0, T3);
    } finally {
      HBaseTestingUtil.closeRegionAndWAL(region);
    }
  }
Make sure the Deletes behave as expected with minimum versions
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMinVersions.java