private int createServerRegion(VM vm, final String regionName, final boolean replicatedRegion,
      Scope regionScope) {
    SerializableCallable createRegion = new SerializableCallable() {
      @Override
      public Object call() throws Exception {
        // TombstoneService.VERBOSE = true;
        AttributesFactory af = new AttributesFactory();
        if (replicatedRegion) {
          af.setScope(regionScope);
          af.setDataPolicy(DataPolicy.REPLICATE);
        } else {
          af.setDataPolicy(DataPolicy.PARTITION);
          af.setPartitionAttributes(
              (new PartitionAttributesFactory()).setTotalNumBuckets(2).create());
        }
        af.setConcurrencyChecksEnabled(true);
        TestRegion = (LocalRegion) createRootRegion(regionName, af.create());

        CacheServer server = getCache().addCacheServer();
        int port = AvailablePortHelper.getRandomAvailableTCPPort();
        server.setPort(port);
        server.start();
        return port;
      }
    };

    return (Integer) vm.invoke(createRegion);
  }
test that distributed GC messages are properly cleaned out of durable client HA queues
geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientServerCCEDUnitTest.java