private void after(Description description) throws Throwable {

    if (!skipLocalDistributedSystemCleanup) {
      MemberStarterRule.disconnectDSIfAny();
    }

    // stop all the members in the order of clients, servers and locators
    List<VMProvider> vms = new ArrayList<>();
    vms.addAll(
        occupiedVMs.values().stream().filter(VMProvider::isClient).collect(Collectors.toSet()));
    vms.addAll(
        occupiedVMs.values().stream().filter(VMProvider::isServer).collect(Collectors.toSet()));
    vms.addAll(
        occupiedVMs.values().stream().filter(VMProvider::isLocator).collect(Collectors.toSet()));
    vms.forEach(VMProvider::stop);

    // delete any file under root dir
    Arrays.stream(getWorkingDirRoot().listFiles()).filter(File::isFile)
        .forEach(FileUtils::deleteQuietly);

    restoreSystemProperties.afterDistributedTest(description);

    // close suspect string at the end of tear down
    // any background thread can fill the dunit_suspect.log
    // after its been truncated if we do it before closing cache
    IgnoredException.removeAllExpectedExceptions();
    closeAndCheckForSuspects();
  }
This is only available in each Locator/Server VM, not in the controller (test) VM.
geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java