private int createServerRegion(VM vm, int locatorPort, String regionName, int dsid) {
    SerializableCallableIF<Integer> createRegion = () -> {
      Properties properties = new Properties();
      properties.setProperty(LOCATORS, "localhost[" + locatorPort + "]");
      properties.setProperty(ConfigurationProperties.DISTRIBUTED_SYSTEM_ID, Integer.toString(dsid));
      Cache cache = getCache(properties);
      cache.createRegionFactory(RegionShortcut.REPLICATE).create(regionName);
      CacheServer cacheServer = cache.addCacheServer();
      cacheServer.setPort(0);
      cacheServer.start();
      return cacheServer.getPort();
    };

    return vm.invoke(createRegion);
  }
Create the two sites (A and B) the client.

The client has two regions
- regionA = connected using poolA to serverA
- regionB = connected using poolB to serverB
geode-core/src/distributedTest/java/org/apache/geode/pdx/PdxMultiClusterClientServerDUnitTest.java