public ClientVM startClientVM(int index, VmConfiguration vmConfiguration,
      SerializableConsumerIF<ClientCacheRule> clientCacheRuleSetUp) throws Exception {
    VM client = getVM(index, vmConfiguration);
    Exception error = client.invoke(() -> {
      clientCacheRule = new ClientCacheRule();
      try {
        clientCacheRuleSetUp.accept(clientCacheRule);
        clientCacheRule.createCache();
        return null;
      } catch (Exception e) {
        return e;
      }
    });
    if (error != null) {
      throw error;
    }
    ClientVM clientVM = new ClientVM(client);
    occupiedVMs.put(index, clientVM);
    return clientVM;
  }
In some weird situations you may not want to do local DS cleanup as that lifecyle is deferred
elsewhere - see {@code LocatorCleanupEventListener} and any test that uses {@code
PlainLocatorContextLoader} or {@code LocatorWithSecurityManagerContextLoader}

@param skipLocalDistributedSystemCleanup whether to do local DS cleanup
geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java