void configureSites(String totalBucketNum, boolean addColocatedRegion)
      throws Exception {

    Properties props = new Properties();
    props.setProperty(DISTRIBUTED_SYSTEM_ID, DISTRIBUTED_SYSTEM_ID_SITE1);
    MemberVM locatorSite1 = clusterStartupRule.startLocatorVM(1, props);

    props.setProperty(DISTRIBUTED_SYSTEM_ID, DISTRIBUTED_SYSTEM_ID_SITE2);
    props.setProperty(REMOTE_LOCATORS, "localhost[" + locatorSite1.getPort() + "]");
    locatorSite2 = clusterStartupRule.startLocatorVM(2, props);

    // start servers for site #2
    server1Site2 = clusterStartupRule.startServerVM(3, locatorSite2.getPort());
    server2Site2 = clusterStartupRule.startServerVM(4, locatorSite2.getPort());
    server3Site2 = clusterStartupRule.startServerVM(5, locatorSite2.getPort());

    // create parallel gateway-sender on site #2
    connectGfshToSite(locatorSite2);
    String command = new CommandStringBuilder(CliStrings.CREATE_GATEWAYSENDER)
        .addOption(CliStrings.CREATE_GATEWAYSENDER__ID, "ln")
        .addOption(CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID, "1")
        .addOption(CliStrings.CREATE_GATEWAYSENDER__PARALLEL, "true")
        .getCommandString();
    gfsh.executeAndAssertThat(command).statusIsSuccess();

    server1Site2.invoke(() -> verifySenderState("ln", true, false));
    server2Site2.invoke(() -> verifySenderState("ln", true, false));
    server3Site2.invoke(() -> verifySenderState("ln", true, false));

    locatorSite2.invoke(
        () -> validateGatewaySenderMXBeanProxy(getMember(server1Site2.getVM()), "ln", true, false));
    locatorSite2.invoke(
        () -> validateGatewaySenderMXBeanProxy(getMember(server2Site2.getVM()), "ln", true, false));
    locatorSite2.invoke(
        () -> validateGatewaySenderMXBeanProxy(getMember(server3Site2.getVM()), "ln", true, false));

    // create partition region on site #2
    CommandStringBuilder csb = new CommandStringBuilder(CliStrings.CREATE_REGION);
    csb.addOption(CliStrings.CREATE_REGION__REGION, REGION_NAME);
    csb.addOption(CliStrings.CREATE_REGION__REGIONSHORTCUT, "PARTITION");
    csb.addOption(CliStrings.CREATE_REGION__GATEWAYSENDERID, "ln");
    csb.addOption(CliStrings.CREATE_REGION__REDUNDANTCOPIES, "1");
    csb.addOption(CliStrings.CREATE_REGION__TOTALNUMBUCKETS, totalBucketNum);
    gfsh.executeAndAssertThat(csb.toString()).statusIsSuccess();

    if (addColocatedRegion) {
      csb = new CommandStringBuilder(CliStrings.CREATE_REGION);
      csb.addOption(CliStrings.CREATE_REGION__REGION, REGION_COLOCATED);
      csb.addOption(CliStrings.CREATE_REGION__REGIONSHORTCUT, "PARTITION");
      csb.addOption(CliStrings.CREATE_REGION__GATEWAYSENDERID, "ln");
      csb.addOption(CliStrings.CREATE_REGION__REDUNDANTCOPIES, "1");
      csb.addOption(CliStrings.CREATE_REGION__TOTALNUMBUCKETS, totalBucketNum);
      csb.addOption(CliStrings.CREATE_REGION__COLOCATEDWITH, REGION_NAME);
      gfsh.executeAndAssertThat(csb.toString()).statusIsSuccess();
    }

    // Start client
    clientSite2 =
        clusterStartupRule.startClientVM(6, c -> c.withLocatorConnection(locatorSite2.getPort()));
    clientSite2.invoke(() -> {
      ClusterStartupRule.clientCacheRule.createProxyRegion(REGION_NAME);
      if (addColocatedRegion) {
        ClusterStartupRule.clientCacheRule.createProxyRegion(REGION_COLOCATED);
      }
    });
  }
Checks that the bucketToTempQueueMap for a partitioned region
that holds events for buckets that are not available locally, is empty.
geode-wan/src/distributedTest/java/org/apache/geode/internal/cache/wan/parallel/ParallelGatewaySenderAndCQDurableClientDUnitTest.java