protected void versionTestGIISendsTombstones() {

    final int serverPort = AvailablePortHelper.getRandomAvailableTCPPort();

    // create replicated regions in VM 0 and 1, then perform concurrent ops
    // on the same key while creating the region in VM2. Afterward make
    // sure that all three regions are consistent

    final String name = getUniqueName() + "-CC";
    SerializableRunnable createRegion = new SerializableRunnable() {
      @Override
      public void run() {
        RegionFactory<?, ?> f = getCache().createRegionFactory(getRegionAttributes());
        CCRegion = (LocalRegion) f.create(name);
        if (VM.getVMId() == 0) {
          CacheServer bridge = CCRegion.getCache().addCacheServer();
          bridge.setPort(serverPort);
          try {
            bridge.start();
          } catch (IOException ex) {
            fail("While creating bridge", ex);
          }
        }
      }
    };

    SerializableRunnable asserter = new SerializableRunnable() {
      @Override
      public void run() {
        RegionEntry entry = CCRegion.getRegionEntry("object2");
        assertThat(entry).isNotNull();
        assertThat(entry.isTombstone()).isTrue();
      }
    };

    vm0.invoke("Create Region", createRegion);
    vm0.invoke("create some tombstones", () -> {
      CCRegion.put("object1", "value1");
      CCRegion.put("object2", "value2");
      CCRegion.put("object3", "value3");
      CCRegion.destroy("object2");
    });

    try {
      vm0.invoke("ensure tombstone has been received", asserter);
      vm1.invoke("Create Region", createRegion);
      vm1.invoke("ensure tombstone has been received", asserter);

    } finally {
      disconnectAllFromDS();
    }
  }
Clear all existing transaction listeners and install the given listener.
geode-dunit/src/main/java/org/apache/geode/cache30/MultiVMRegionTestCase.java