@Test
  public void testMixedPutDelete() throws Exception {
    List<WALEntry> entries = new ArrayList<>(BATCH_SIZE / 2);
    List<ExtendedCell> cells = new ArrayList<>();
    for (int i = 0; i < BATCH_SIZE / 2; i++) {
      entries.add(createEntry(TABLE_NAME1, i, KeyValue.Type.Put, cells));
    }
    SINK.replicateEntries(entries, PrivateCellUtil.createExtendedCellScanner(cells),
      replicationClusterId, baseNamespaceDir, hfileArchiveDir);

    entries = new ArrayList<>(BATCH_SIZE);
    cells = new ArrayList<>();
    for (int i = 0; i < BATCH_SIZE; i++) {
      entries.add(createEntry(TABLE_NAME1, i,
        i % 2 != 0 ? KeyValue.Type.Put : KeyValue.Type.DeleteColumn, cells));
    }

    SINK.replicateEntries(entries, PrivateCellUtil.createExtendedCellScanner(cells.iterator()),
      replicationClusterId, baseNamespaceDir, hfileArchiveDir);
    Scan scan = new Scan();
    ResultScanner scanRes = table1.getScanner(scan);
    assertEquals(BATCH_SIZE / 2, scanRes.next(BATCH_SIZE).length);
  }
Insert a mix of puts and deletes
hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestReplicationSink.java