You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by sa...@apache.org on 2016/05/24 18:54:18 UTC

[37/55] [abbrv] incubator-geode git commit: GEODE-1369: change ConfigCommandsDUnitTest to use TemporaryFolder

GEODE-1369: change ConfigCommandsDUnitTest to use TemporaryFolder

* use TemporaryFolder for all disk files
* re-enable testAlterUpdatesSharedConfig (might be a FlakyTest) -- was disabled for TRAC #52204 but it passes
* use static imports


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/f93c87f1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/f93c87f1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/f93c87f1

Branch: refs/heads/feature/GEODE-1153
Commit: f93c87f13b4bf1bda67d994587d1299163694772
Parents: c8ca8a0
Author: Kirk Lund <kl...@apache.org>
Authored: Tue May 10 11:03:09 2016 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Tue May 10 11:03:09 2016 -0700

----------------------------------------------------------------------
 .../cli/commands/ConfigCommandsDUnitTest.java   | 319 ++++++++++---------
 1 file changed, 171 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f93c87f1/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ConfigCommandsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ConfigCommandsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ConfigCommandsDUnitTest.java
index c342142..1d861c6 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ConfigCommandsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/ConfigCommandsDUnitTest.java
@@ -16,10 +16,13 @@
  */
 package com.gemstone.gemfire.management.internal.cli.commands;
 
+import static com.gemstone.gemfire.distributed.internal.DistributionConfig.*;
+import static com.gemstone.gemfire.internal.AvailablePort.*;
+import static com.gemstone.gemfire.internal.AvailablePortHelper.*;
 import static com.gemstone.gemfire.test.dunit.Assert.*;
-import static com.gemstone.gemfire.test.dunit.Invoke.*;
 import static com.gemstone.gemfire.test.dunit.LogWriterUtils.*;
 import static com.gemstone.gemfire.test.dunit.Wait.*;
+import static org.apache.commons.io.FileUtils.*;
 
 import java.io.File;
 import java.io.FileReader;
@@ -32,6 +35,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
 
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
 import com.gemstone.gemfire.cache.Cache;
 import com.gemstone.gemfire.cache.server.CacheServer;
 import com.gemstone.gemfire.distributed.Locator;
@@ -39,9 +45,6 @@ import com.gemstone.gemfire.distributed.internal.DistributionConfig;
 import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
 import com.gemstone.gemfire.distributed.internal.InternalLocator;
 import com.gemstone.gemfire.distributed.internal.SharedConfiguration;
-import com.gemstone.gemfire.internal.AvailablePort;
-import com.gemstone.gemfire.internal.AvailablePortHelper;
-import com.gemstone.gemfire.internal.FileUtil;
 import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
 import com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlGenerator;
 import com.gemstone.gemfire.internal.logging.LogWriterImpl;
@@ -58,10 +61,6 @@ import com.gemstone.gemfire.test.dunit.VM;
 import com.gemstone.gemfire.test.dunit.WaitCriterion;
 import com.gemstone.gemfire.test.junit.categories.DistributedTest;
 
-import org.apache.commons.io.FileUtils;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
 /**
  * Dunit class for testing GemFire config commands : export config
  *
@@ -71,110 +70,113 @@ import org.junit.experimental.categories.Category;
 @SuppressWarnings("serial")
 public class ConfigCommandsDUnitTest extends CliCommandTestBase {
 
-  File managerConfigFile = new File("Manager-cache.xml");
-  File managerPropsFile = new File("Manager-gf.properties");
-  File vm1ConfigFile = new File("VM1-cache.xml");
-  File vm1PropsFile = new File("VM1-gf.properties");
-  File vm2ConfigFile = new File("VM2-cache.xml");
-  File vm2PropsFile = new File("VM2-gf.properties");
-  File shellConfigFile = new File("Shell-cache.xml");
-  File shellPropsFile = new File("Shell-gf.properties");
-  File subDir = new File("ConfigCommandsDUnitTestSubDir");
-  File subManagerConfigFile = new File(subDir, managerConfigFile.getName());
+  private File managerConfigFile;
+  private File managerPropsFile;
+  private File vm1ConfigFile;
+  private File vm1PropsFile;
+  private File vm2ConfigFile;
+  private File vm2PropsFile;
+  private File shellConfigFile;
+  private File shellPropsFile;
+  private File subDir;
+  private File subManagerConfigFile;
 
   @Override
-  protected void preTearDownCliCommandTestBase() throws Exception {
-    deleteTestFiles();
-    invokeInEveryVM(new SerializableRunnable() {
-
-      @Override
-      public void run() {
-        try {
-          deleteTestFiles();
-        } catch (IOException e) {
-          fail("error", e);
-        }
-      }
-    });
+  protected final void postSetUpCliCommandTestBase() throws Exception {
+    this.managerConfigFile = this.temporaryFolder.newFile("Manager-cache.xml");
+    this.managerPropsFile = this.temporaryFolder.newFile("Manager-gf.properties");
+    this.vm1ConfigFile = this.temporaryFolder.newFile("VM1-cache.xml");
+    this.vm1PropsFile = this.temporaryFolder.newFile("VM1-gf.properties");
+    this.vm2ConfigFile = this.temporaryFolder.newFile("VM2-cache.xml");
+    this.vm2PropsFile = this.temporaryFolder.newFile("VM2-gf.properties");
+    this.shellConfigFile = this.temporaryFolder.newFile("Shell-cache.xml");
+    this.shellPropsFile = this.temporaryFolder.newFile("Shell-gf.properties");
+    this.subDir = this.temporaryFolder.newFolder(getName());
+    this.subManagerConfigFile = new File(this.subDir, this.managerConfigFile.getName());
   }
 
   @Test
-  public void testDescribeConfig() throws ClassNotFoundException, IOException {
+  public void testDescribeConfig() throws Exception {
     setUpJmxManagerOnVm0ThenConnect(null);
     final String controllerName = "Member2";
 
-    /***
+    /*
      * Create properties for the controller VM
      */
     final Properties localProps = new Properties();
-    localProps.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
-    localProps.setProperty(DistributionConfig.LOG_LEVEL_NAME, "info");
-    localProps.setProperty(DistributionConfig.STATISTIC_SAMPLING_ENABLED_NAME, "true");
-    localProps.setProperty(DistributionConfig.ENABLE_TIME_STATISTICS_NAME, "true");
-    localProps.setProperty(DistributionConfig.NAME_NAME, controllerName);
-    localProps.setProperty(DistributionConfig.GROUPS_NAME, "G1");
+    localProps.setProperty(MCAST_PORT_NAME, "0");
+    localProps.setProperty(LOG_LEVEL_NAME, "info");
+    localProps.setProperty(STATISTIC_SAMPLING_ENABLED_NAME, "true");
+    localProps.setProperty(ENABLE_TIME_STATISTICS_NAME, "true");
+    localProps.setProperty(NAME_NAME, controllerName);
+    localProps.setProperty(GROUPS_NAME, "G1");
     getSystem(localProps);
     Cache cache = getCache();
-    int ports[] = AvailablePortHelper.getRandomAvailableTCPPorts(1);
+
+    int ports[] = getRandomAvailableTCPPorts(1);
     CacheServer cs = getCache().addCacheServer();
     cs.setPort(ports[0]);
     cs.setMaxThreads(10);
     cs.setMaxConnections(9);
     cs.start();
+    try {
 
-    RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean();
-    List<String> jvmArgs = runtimeBean.getInputArguments();
+      RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean();
+      List<String> jvmArgs = runtimeBean.getInputArguments();
 
-    getLogWriter().info("#SB Actual JVM Args : ");
+      getLogWriter().info("#SB Actual JVM Args : ");
 
-    for (String jvmArg : jvmArgs) {
-      getLogWriter().info("#SB JVM " + jvmArg);
-    }
+      for (String jvmArg : jvmArgs) {
+        getLogWriter().info("#SB JVM " + jvmArg);
+      }
 
-    InternalDistributedSystem system = (InternalDistributedSystem) cache.getDistributedSystem();
-    DistributionConfig config = system.getConfig();
-    config.setArchiveFileSizeLimit(1000);
+      InternalDistributedSystem system = (InternalDistributedSystem) cache.getDistributedSystem();
+      DistributionConfig config = system.getConfig();
+      config.setArchiveFileSizeLimit(1000);
 
-    String command = CliStrings.DESCRIBE_CONFIG + " --member=" + controllerName;
-    CommandProcessor cmdProcessor = new CommandProcessor();
-    cmdProcessor.createCommandStatement(command, Collections.EMPTY_MAP).process();
+      String command = CliStrings.DESCRIBE_CONFIG + " --member=" + controllerName;
+      CommandProcessor cmdProcessor = new CommandProcessor();
+      cmdProcessor.createCommandStatement(command, Collections.EMPTY_MAP).process();
 
-    CommandResult cmdResult = executeCommand(command);
+      CommandResult cmdResult = executeCommand(command);
 
-    String resultStr = commandResultToString(cmdResult);
-    getLogWriter().info("#SB Hiding the defaults\n" + resultStr);
+      String resultStr = commandResultToString(cmdResult);
+      getLogWriter().info("#SB Hiding the defaults\n" + resultStr);
 
-    assertEquals(true, cmdResult.getStatus().equals(Status.OK));
-    assertEquals(true, resultStr.contains("G1"));
-    assertEquals(true, resultStr.contains(controllerName));
-    assertEquals(true, resultStr.contains("archive-file-size-limit"));
-    assertEquals(true, !resultStr.contains("copy-on-read"));
+      assertEquals(true, cmdResult.getStatus().equals(Status.OK));
+      assertEquals(true, resultStr.contains("G1"));
+      assertEquals(true, resultStr.contains(controllerName));
+      assertEquals(true, resultStr.contains("archive-file-size-limit"));
+      assertEquals(true, !resultStr.contains("copy-on-read"));
 
-    cmdResult = executeCommand(command + " --" + CliStrings.DESCRIBE_CONFIG__HIDE__DEFAULTS + "=false");
-    resultStr = commandResultToString(cmdResult);
-    getLogWriter().info("#SB No hiding of defaults\n" + resultStr);
+      cmdResult = executeCommand(command + " --" + CliStrings.DESCRIBE_CONFIG__HIDE__DEFAULTS + "=false");
+      resultStr = commandResultToString(cmdResult);
 
-    assertEquals(true, cmdResult.getStatus().equals(Status.OK));
-    assertEquals(true, resultStr.contains("is-server"));
-    assertEquals(true, resultStr.contains(controllerName));
-    assertEquals(true, resultStr.contains("copy-on-read"));
+      getLogWriter().info("#SB No hiding of defaults\n" + resultStr);
+
+      assertEquals(true, cmdResult.getStatus().equals(Status.OK));
+      assertEquals(true, resultStr.contains("is-server"));
+      assertEquals(true, resultStr.contains(controllerName));
+      assertEquals(true, resultStr.contains("copy-on-read"));
 
-    cs.stop();
+    } finally {
+      cs.stop();
+    }
   }
 
   @Test
-  public void testExportConfig() throws IOException {
+  public void testExportConfig() throws Exception {
     Properties localProps = new Properties();
-    localProps.setProperty(DistributionConfig.NAME_NAME, "Manager");
-    localProps.setProperty(DistributionConfig.GROUPS_NAME, "Group1");
+    localProps.setProperty(NAME_NAME, "Manager");
+    localProps.setProperty(GROUPS_NAME, "Group1");
     setUpJmxManagerOnVm0ThenConnect(localProps);
 
     // Create a cache in another VM (VM1)
     Host.getHost(0).getVM(1).invoke(new SerializableRunnable() {
       public void run() {
         Properties localProps = new Properties();
-        localProps.setProperty(DistributionConfig.NAME_NAME, "VM1");
-        localProps.setProperty(DistributionConfig.GROUPS_NAME, "Group2");
+        localProps.setProperty(NAME_NAME, "VM1");
+        localProps.setProperty(GROUPS_NAME, "Group2");
         getSystem(localProps);
         getCache();
       }
@@ -184,8 +186,8 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
     Host.getHost(0).getVM(2).invoke(new SerializableRunnable() {
       public void run() {
         Properties localProps = new Properties();
-        localProps.setProperty(DistributionConfig.NAME_NAME, "VM2");
-        localProps.setProperty(DistributionConfig.GROUPS_NAME, "Group2");
+        localProps.setProperty(NAME_NAME, "VM2");
+        localProps.setProperty(GROUPS_NAME, "Group2");
         getSystem(localProps);
         getCache();
       }
@@ -193,47 +195,47 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
 
     // Create a cache in the local VM
     localProps = new Properties();
-    localProps.setProperty(DistributionConfig.NAME_NAME, "Shell");
+    localProps.setProperty(NAME_NAME, "Shell");
     getSystem(localProps);
     Cache cache = getCache();
 
     // Test export config for all members
     deleteTestFiles();
-    CommandResult cmdResult = executeCommand("export config");
+    CommandResult cmdResult = executeCommand("export config --dir=" + this.temporaryFolder.getRoot().getAbsolutePath());
     assertEquals(Result.Status.OK, cmdResult.getStatus());
 
-    assertTrue(this.managerConfigFile.exists());
-    assertTrue(this.managerPropsFile.exists());
-    assertTrue(this.vm1ConfigFile.exists());
-    assertTrue(this.vm1PropsFile.exists());
-    assertTrue(this.vm2ConfigFile.exists());
-    assertTrue(this.vm2PropsFile.exists());
-    assertTrue(this.shellConfigFile.exists());
-    assertTrue(this.shellPropsFile.exists());
+    assertTrue(this.managerConfigFile + " should exist", this.managerConfigFile.exists());
+    assertTrue(this.managerPropsFile + " should exist", this.managerPropsFile.exists());
+    assertTrue(this.vm1ConfigFile + " should exist", this.vm1ConfigFile.exists());
+    assertTrue(this.vm1PropsFile + " should exist", this.vm1PropsFile.exists());
+    assertTrue(this.vm2ConfigFile + " should exist", this.vm2ConfigFile.exists());
+    assertTrue(this.vm2PropsFile + " should exist", this.vm2PropsFile.exists());
+    assertTrue(this.shellConfigFile + " should exist", this.shellConfigFile.exists());
+    assertTrue(this.shellPropsFile + " should exist", this.shellPropsFile.exists());
 
     // Test exporting member
     deleteTestFiles();
-    cmdResult = executeCommand("export config --member=Manager");
+    cmdResult = executeCommand("export config --member=Manager --dir=" + this.temporaryFolder.getRoot().getAbsolutePath());
     assertEquals(Result.Status.OK, cmdResult.getStatus());
 
-    assertTrue(this.managerConfigFile.exists());
-    assertFalse(this.vm1ConfigFile.exists());
-    assertFalse(this.vm2ConfigFile.exists());
-    assertFalse(this.shellConfigFile.exists());
+    assertTrue(this.managerConfigFile + " should exist", this.managerConfigFile.exists());
+    assertFalse(this.vm1ConfigFile + " should not exist", this.vm1ConfigFile.exists());
+    assertFalse(this.vm2ConfigFile + " should not exist", this.vm2ConfigFile.exists());
+    assertFalse(this.shellConfigFile + " should not exist", this.shellConfigFile.exists());
 
     // Test exporting group
     deleteTestFiles();
-    cmdResult = executeCommand("export config --group=Group2");
+    cmdResult = executeCommand("export config --group=Group2 --dir=" + this.temporaryFolder.getRoot().getAbsolutePath());
     assertEquals(Result.Status.OK, cmdResult.getStatus());
 
-    assertFalse(this.managerConfigFile.exists());
-    assertTrue(this.vm1ConfigFile.exists());
-    assertTrue(this.vm2ConfigFile.exists());
-    assertFalse(this.shellConfigFile.exists());
+    assertFalse(this.managerConfigFile + " should not exist", this.managerConfigFile.exists());
+    assertTrue(this.vm1ConfigFile + " should exist", this.vm1ConfigFile.exists());
+    assertTrue(this.vm2ConfigFile + " should exist", this.vm2ConfigFile.exists());
+    assertFalse(this.shellConfigFile + " should not exist", this.shellConfigFile.exists());
 
     // Test export to directory
     deleteTestFiles();
-    cmdResult = executeCommand("export config --dir=" + subDir.getAbsolutePath());
+    cmdResult = executeCommand("export config --dir=" + this.subDir.getAbsolutePath());
     assertEquals(Result.Status.OK, cmdResult.getStatus());
 
     assertFalse(this.managerConfigFile.exists());
@@ -246,30 +248,32 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
     String configToMatch = stringWriter.toString();
 
     deleteTestFiles();
-    cmdResult = executeCommand("export config --member=Shell");
+    cmdResult = executeCommand("export config --member=Shell --dir=" + this.temporaryFolder.getRoot().getAbsolutePath());
     assertEquals(Result.Status.OK, cmdResult.getStatus());
 
     char[] fileContents = new char[configToMatch.length()];
-    try {
-      FileReader reader = new FileReader(shellConfigFile);
-      reader.read(fileContents);
-    } catch (Exception ex) {
-      fail("Unable to read file contents for comparison", ex);
-    }
+    FileReader reader = new FileReader(this.shellConfigFile);
+    reader.read(fileContents);
 
     assertEquals(configToMatch, new String(fileContents));
   }
 
   @Test
-  public void testAlterRuntimeConfig() throws ClassNotFoundException, IOException {
+  public void testAlterRuntimeConfig() throws Exception {
     final String controller = "controller";
+    String directory = this.temporaryFolder.newFolder(controller).getAbsolutePath();
+    String statFilePath = new File(directory, "stat.gfs").getAbsolutePath();
+
     setUpJmxManagerOnVm0ThenConnect(null);
+
     Properties localProps = new Properties();
-    localProps.setProperty(DistributionConfig.NAME_NAME, controller);
-    localProps.setProperty(DistributionConfig.LOG_LEVEL_NAME, "error");
+    localProps.setProperty(NAME_NAME, controller);
+    localProps.setProperty(LOG_LEVEL_NAME, "error");
     getSystem(localProps);
+
     final GemFireCacheImpl cache = (GemFireCacheImpl) getCache();
     final DistributionConfig config = cache.getSystem().getConfig();
+
     CommandStringBuilder csb = new CommandStringBuilder(CliStrings.ALTER_RUNTIME_CONFIG);
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__MEMBER, controller);
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__LOG__LEVEL, "info");
@@ -277,13 +281,16 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__ARCHIVE__DISK__SPACE__LIMIT, "32");
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__ARCHIVE__FILE__SIZE__LIMIT, "49");
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__STATISTIC__SAMPLE__RATE, "2000");
-    csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__STATISTIC__ARCHIVE__FILE, "stat.gfs");
+    csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__STATISTIC__ARCHIVE__FILE, statFilePath);
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__STATISTIC__SAMPLING__ENABLED, "true");
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__LOG__DISK__SPACE__LIMIT, "10");
+
     CommandResult cmdResult = executeCommand(csb.getCommandString());
     String resultString = commandResultToString(cmdResult);
+
     getLogWriter().info("Result\n");
     getLogWriter().info(resultString);
+
     assertEquals(true, cmdResult.getStatus().equals(Status.OK));
     assertEquals(LogWriterImpl.INFO_LEVEL, config.getLogLevel());
     assertEquals(50, config.getLogFileSizeLimit());
@@ -293,27 +300,29 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
     assertEquals(true, config.getStatisticSamplingEnabled());
     assertEquals(10, config.getLogDiskSpaceLimit());
 
-
     CommandProcessor commandProcessor = new CommandProcessor();
     Result result = commandProcessor.createCommandStatement("alter runtime", Collections.EMPTY_MAP).process();
   }
 
   @Test
-  public void testAlterRuntimeConfigRandom() {
+  public void testAlterRuntimeConfigRandom() throws Exception {
     final String member1 = "VM1";
     final String controller = "controller";
+
     setUpJmxManagerOnVm0ThenConnect(null);
+
     Properties localProps = new Properties();
-    localProps.setProperty(DistributionConfig.NAME_NAME, controller);
-    localProps.setProperty(DistributionConfig.LOG_LEVEL_NAME, "error");
+    localProps.setProperty(NAME_NAME, controller);
+    localProps.setProperty(LOG_LEVEL_NAME, "error");
     getSystem(localProps);
+
     final GemFireCacheImpl cache = (GemFireCacheImpl) getCache();
     final DistributionConfig config = cache.getSystem().getConfig();
 
     Host.getHost(0).getVM(1).invoke(new SerializableRunnable() {
       public void run() {
         Properties localProps = new Properties();
-        localProps.setProperty(DistributionConfig.NAME_NAME, member1);
+        localProps.setProperty(NAME_NAME, member1);
         getSystem(localProps);
         Cache cache = getCache();
       }
@@ -322,8 +331,10 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
     CommandStringBuilder csb = new CommandStringBuilder(CliStrings.ALTER_RUNTIME_CONFIG);
     CommandResult cmdResult = executeCommand(csb.getCommandString());
     String resultAsString = commandResultToString(cmdResult);
+
     getLogWriter().info("#SB Result\n");
     getLogWriter().info(resultAsString);
+
     assertEquals(true, cmdResult.getStatus().equals(Status.ERROR));
     assertTrue(resultAsString.contains(CliStrings.ALTER_RUNTIME_CONFIG__RELEVANT__OPTION__MESSAGE));
 
@@ -331,45 +342,56 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__LOG__DISK__SPACE__LIMIT, "2000000000");
     cmdResult = executeCommand(csb.getCommandString());
     resultAsString = commandResultToString(cmdResult);
+
     getLogWriter().info("#SB Result\n");
     getLogWriter().info(resultAsString);
-    assertEquals(true, cmdResult.getStatus().equals(Status.ERROR));
 
+    assertEquals(true, cmdResult.getStatus().equals(Status.ERROR));
   }
 
   @Test
-  public void testAlterRuntimeConfigOnAllMembers() {
+  public void testAlterRuntimeConfigOnAllMembers() throws Exception {
     final String member1 = "VM1";
     final String controller = "controller";
+
+    String controllerDirectory = this.temporaryFolder.newFolder(controller).getAbsolutePath();
+    String controllerStatFilePath = new File(controllerDirectory, "stat.gfs").getAbsolutePath();
+
     setUpJmxManagerOnVm0ThenConnect(null);
+
     Properties localProps = new Properties();
-    localProps.setProperty(DistributionConfig.NAME_NAME, controller);
-    localProps.setProperty(DistributionConfig.LOG_LEVEL_NAME, "error");
+    localProps.setProperty(NAME_NAME, controller);
+    localProps.setProperty(LOG_LEVEL_NAME, "error");
     getSystem(localProps);
+
     final GemFireCacheImpl cache = (GemFireCacheImpl) getCache();
     final DistributionConfig config = cache.getSystem().getConfig();
 
     Host.getHost(0).getVM(1).invoke(new SerializableRunnable() {
       public void run() {
         Properties localProps = new Properties();
-        localProps.setProperty(DistributionConfig.NAME_NAME, member1);
+        localProps.setProperty(NAME_NAME, member1);
         getSystem(localProps);
         Cache cache = getCache();
       }
     });
+
     CommandStringBuilder csb = new CommandStringBuilder(CliStrings.ALTER_RUNTIME_CONFIG);
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__LOG__LEVEL, "info");
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__LOG__FILE__SIZE__LIMIT, "50");
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__ARCHIVE__DISK__SPACE__LIMIT, "32");
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__ARCHIVE__FILE__SIZE__LIMIT, "49");
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__STATISTIC__SAMPLE__RATE, "2000");
-    csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__STATISTIC__ARCHIVE__FILE, "stat.gfs");
+    csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__STATISTIC__ARCHIVE__FILE, controllerStatFilePath);
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__STATISTIC__SAMPLING__ENABLED, "true");
     csb.addOption(CliStrings.ALTER_RUNTIME_CONFIG__LOG__DISK__SPACE__LIMIT, "10");
+
     CommandResult cmdResult = executeCommand(csb.getCommandString());
     String resultString = commandResultToString(cmdResult);
+
     getLogWriter().info("#SB Result\n");
     getLogWriter().info(resultString);
+
     assertEquals(true, cmdResult.getStatus().equals(Status.OK));
     assertEquals(LogWriterImpl.INFO_LEVEL, config.getLogLevel());
     assertEquals(50, config.getLogFileSizeLimit());
@@ -384,7 +406,8 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
     Host.getHost(0).getVM(1).invoke(new SerializableRunnable() {
       public void run() {
         GemFireCacheImpl cacheVM1 = (GemFireCacheImpl) getCache();
-        final DistributionConfig configVM1 = cacheVM1.getSystem().getConfig();
+        DistributionConfig configVM1 = cacheVM1.getSystem().getConfig();
+
         assertEquals(LogWriterImpl.INFO_LEVEL, configVM1.getLogLevel());
         assertEquals(50, configVM1.getLogFileSizeLimit());
         assertEquals(49, configVM1.getArchiveFileSizeLimit());
@@ -399,51 +422,51 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
 
   /**
    * Asserts that altering the runtime config correctly updates the shared configuration.
-   * <p>
-   * Disabled: this test frequently fails during unit test runs. See ticket #52204
    */
-  public void disabledtestAlterUpdatesSharedConfig() {
-    disconnectAllFromDS();
-
-    final String groupName = "testAlterRuntimeConfigSharedConfigGroup";
+  @Test
+  public void testAlterUpdatesSharedConfig() throws Exception {
+    final String groupName = getName();
 
     // Start the Locator and wait for shared configuration to be available
-    final int locatorPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+    final int locatorPort = getRandomAvailablePort(SOCKET);
+    final String locatorDirectory = this.temporaryFolder.newFolder("Locator").getAbsolutePath();
+
     Host.getHost(0).getVM(3).invoke(new SerializableRunnable() {
       @Override
       public void run() {
+        final File locatorLogFile = new File(locatorDirectory, "locator-" + locatorPort + ".log");
 
-        final File locatorLogFile = new File("locator-" + locatorPort + ".log");
         final Properties locatorProps = new Properties();
-        locatorProps.setProperty(DistributionConfig.NAME_NAME, "Locator");
-        locatorProps.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
-        locatorProps.setProperty(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
+        locatorProps.setProperty(NAME_NAME, "Locator");
+        locatorProps.setProperty(MCAST_PORT_NAME, "0");
+        locatorProps.setProperty(ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
+        locatorProps.setProperty(CLUSTER_CONFIGURATION_DIR, locatorDirectory);
+
         try {
-          final InternalLocator locator = (InternalLocator) Locator.startLocatorAndDS(locatorPort, locatorLogFile, null,
-              locatorProps);
+          final InternalLocator locator = (InternalLocator) Locator.startLocatorAndDS(locatorPort, locatorLogFile, null, locatorProps);
 
           WaitCriterion wc = new WaitCriterion() {
             @Override
             public boolean done() {
               return locator.isSharedConfigurationRunning();
             }
-
             @Override
             public String description() {
               return "Waiting for shared configuration to be started";
             }
           };
           waitForCriterion(wc, 5000, 500, true);
-        } catch (IOException ioex) {
-          fail("Unable to create a locator with a shared configuration");
+
+        } catch (IOException e) {
+          fail("Unable to create a locator with a shared configuration", e);
         }
       }
     });
 
     // Start the default manager
     Properties managerProps = new Properties();
-    managerProps.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
-    managerProps.setProperty(DistributionConfig.LOCATORS_NAME, "localhost:" + locatorPort);
+    managerProps.setProperty(MCAST_PORT_NAME, "0");
+    managerProps.setProperty(LOCATORS_NAME, "localhost:" + locatorPort);
     setUpJmxManagerOnVm0ThenConnect(managerProps);
 
     // Create a cache in VM 1
@@ -451,18 +474,15 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
     vm.invoke(new SerializableCallable() {
       @Override
       public Object call() throws Exception {
-        //Make sure no previous shared config is screwing up this test.
-        FileUtil.delete(new File("ConfigDiskDir_Locator"));
-        FileUtil.delete(new File("cluster_config"));
         Properties localProps = new Properties();
-        localProps.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
-        localProps.setProperty(DistributionConfig.LOCATORS_NAME, "localhost:" + locatorPort);
-        localProps.setProperty(DistributionConfig.LOG_LEVEL_NAME, "error");
-        localProps.setProperty(DistributionConfig.GROUPS_NAME, groupName);
+        localProps.setProperty(MCAST_PORT_NAME, "0");
+        localProps.setProperty(LOCATORS_NAME, "localhost:" + locatorPort);
+        localProps.setProperty(LOG_LEVEL_NAME, "error");
+        localProps.setProperty(GROUPS_NAME, groupName);
         getSystem(localProps);
 
         assertNotNull(getCache());
-        assertEquals("error", basicGetSystem().getConfig().getAttribute(DistributionConfig.LOG_LEVEL_NAME));
+        assertEquals("error", basicGetSystem().getConfig().getAttribute(LOG_LEVEL_NAME));
         return null;
       }
     });
@@ -472,6 +492,7 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
     commandStringBuilder.addOption(CliStrings.ALTER_RUNTIME_CONFIG__GROUP, groupName);
     commandStringBuilder.addOption(CliStrings.ALTER_RUNTIME_CONFIG__LOG__LEVEL, "fine");
     CommandResult cmdResult = executeCommand(commandStringBuilder.toString());
+
     assertEquals(Result.Status.OK, cmdResult.getStatus());
 
     // Make sure the shared config was updated
@@ -479,13 +500,15 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
       @Override
       public void run() {
         SharedConfiguration sharedConfig = ((InternalLocator) Locator.getLocator()).getSharedConfiguration();
-        Properties gemfireProperties;
+        Properties gemfireProperties = null;
+
         try {
           gemfireProperties = sharedConfig.getConfiguration(groupName).getGemfireProperties();
-          assertEquals("fine", gemfireProperties.get(DistributionConfig.LOG_LEVEL_NAME));
         } catch (Exception e) {
           fail("Error occurred in cluster configuration service", e);
         }
+
+        assertEquals("fine", gemfireProperties.get(LOG_LEVEL_NAME));
       }
     });
   }
@@ -500,6 +523,6 @@ public class ConfigCommandsDUnitTest extends CliCommandTestBase {
     this.shellConfigFile.delete();
     this.shellPropsFile.delete();
 
-    FileUtils.deleteDirectory(this.subDir);
+    deleteDirectory(this.subDir);
   }
 }