Repository: incubator-geode Updated Branches: refs/heads/feature/GEODE-409 c6a4c3af6 -> 5da17d120
GEODE-164: Improve reliability of launcher integration tests Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/5da17d12 Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/5da17d12 Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/5da17d12 Branch: refs/heads/feature/GEODE-409 Commit: 5da17d1208142ea320b0807d9717b5858e200d4a Parents: c6a4c3a Author: Kirk Lund <[email protected]> Authored: Mon Oct 19 16:19:50 2015 -0700 Committer: Kirk Lund <[email protected]> Committed: Mon Oct 19 16:20:44 2015 -0700 ---------------------------------------------------------------------- .../distributed/LocatorLauncherJUnitTest.java | 25 ++-- .../LocatorLauncherLocalJUnitTest.java | 92 ++++++++------ .../LocatorLauncherRemoteFileJUnitTest.java | 4 - .../LocatorLauncherRemoteJUnitTest.java | 4 +- .../distributed/ServerLauncherJUnitTest.java | 58 +++------ .../ServerLauncherLocalJUnitTest.java | 120 ++++++++++--------- .../ServerLauncherRemoteJUnitTest.java | 12 +- 7 files changed, 158 insertions(+), 157 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5da17d12/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherJUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherJUnitTest.java index 598d7c4..7070978 100644 --- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherJUnitTest.java +++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherJUnitTest.java @@ -9,6 +9,7 @@ package com.gemstone.gemfire.distributed; import static org.junit.Assert.*; +import static org.junit.Assume.*; import java.io.File; import java.io.FileNotFoundException; @@ -21,7 +22,6 @@ import com.gemstone.gemfire.distributed.LocatorLauncher.Builder; import com.gemstone.gemfire.distributed.LocatorLauncher.Command; import com.gemstone.gemfire.distributed.internal.DistributionConfig; import com.gemstone.gemfire.internal.i18n.LocalizedStrings; -import com.gemstone.gemfire.internal.util.IOUtils; import com.gemstone.gemfire.test.junit.categories.UnitTest; import joptsimple.OptionException; @@ -48,7 +48,7 @@ public class LocatorLauncherJUnitTest extends CommonLauncherTestSuite { @Test public void testBuilderParseArguments() throws Exception { - String expectedWorkingDirectory = System.getProperty("user.dir"); + String expectedWorkingDirectory = this.temporaryFolder.getRoot().getCanonicalPath().toString(); Builder builder = new Builder(); builder.parseArguments("start", "memberOne", "--bind-address", InetAddress.getLocalHost().getHostAddress(), @@ -67,8 +67,8 @@ public class LocatorLauncherJUnitTest extends CommonLauncherTestSuite { } @Test - public void testBuilderParseArgumentsWithCommandInArguments() { - String expectedWorkingDirectory = System.getProperty("user.dir"); + public void testBuilderParseArgumentsWithCommandInArguments() throws Exception { + String expectedWorkingDirectory = this.temporaryFolder.getRoot().getCanonicalPath().toString(); Builder builder = new Builder(); builder.parseArguments("start", "--dir=" + expectedWorkingDirectory, "--port", "12345", "memberOne"); @@ -299,7 +299,8 @@ public class LocatorLauncherJUnitTest extends CommonLauncherTestSuite { } @Test - public void testSetAndGetWorkingDirectory() { + public void testSetAndGetWorkingDirectory() throws Exception { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath().toString(); Builder builder = new Builder(); assertEquals(AbstractLauncher.DEFAULT_WORKING_DIRECTORY, builder.getWorkingDirectory()); @@ -309,11 +310,8 @@ public class LocatorLauncherJUnitTest extends CommonLauncherTestSuite { assertEquals(AbstractLauncher.DEFAULT_WORKING_DIRECTORY, builder.getWorkingDirectory()); assertSame(builder, builder.setWorkingDirectory(" ")); assertEquals(AbstractLauncher.DEFAULT_WORKING_DIRECTORY, builder.getWorkingDirectory()); - assertSame(builder, builder.setWorkingDirectory(System.getProperty("user.dir"))); - assertEquals(System.getProperty("user.dir"), builder.getWorkingDirectory()); - assertSame(builder, builder.setWorkingDirectory(System.getProperty("java.io.tmpdir"))); - assertEquals(IOUtils.tryGetCanonicalPathElseGetAbsolutePath(new File(System.getProperty("java.io.tmpdir"))), - builder.getWorkingDirectory()); + assertSame(builder, builder.setWorkingDirectory(rootFolder)); + assertEquals(rootFolder, builder.getWorkingDirectory()); assertSame(builder, builder.setWorkingDirectory(null)); assertEquals(AbstractLauncher.DEFAULT_WORKING_DIRECTORY, builder.getWorkingDirectory()); } @@ -354,7 +352,7 @@ public class LocatorLauncherJUnitTest extends CommonLauncherTestSuite { } @Test - public void testBuild() { + public void testBuild() throws Exception { Builder builder = new Builder(); LocatorLauncher launcher = builder.setCommand(Command.START) @@ -362,7 +360,6 @@ public class LocatorLauncherJUnitTest extends CommonLauncherTestSuite { .setHostnameForClients("beanstock.vmware.com") .setMemberName("Beanstock") .setPort(8192) - .setWorkingDirectory(AbstractLauncher.DEFAULT_WORKING_DIRECTORY) .build(); assertNotNull(launcher); @@ -438,11 +435,11 @@ public class LocatorLauncherJUnitTest extends CommonLauncherTestSuite { } @Test(expected = IllegalStateException.class) - public void testBuildWithMismatchingCurrentAndWorkingDirectoryOnStart() { + public void testBuildWithMismatchingCurrentAndWorkingDirectoryOnStart() throws Exception { try { new Builder().setCommand(Command.START) .setMemberName("memberOne") - .setWorkingDirectory(System.getProperty("java.io.tmpdir")) + .setWorkingDirectory(this.temporaryFolder.getRoot().getCanonicalPath().toString()) .build(); } catch (IllegalStateException expected) { http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5da17d12/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherLocalJUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherLocalJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherLocalJUnitTest.java index 19f9379..c008a75 100755 --- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherLocalJUnitTest.java +++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherLocalJUnitTest.java @@ -54,10 +54,13 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testBuilderSetProperties() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + this.launcher = new Builder() .setForce(true) .setMemberName(getUniqueName()) .setPort(this.locatorPort) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.DISABLE_AUTO_RECONNECT_NAME, "true") .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0") @@ -97,10 +100,13 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testStartCreatesPidFile() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + this.launcher = new Builder() .setMemberName(getUniqueName()) .setPort(this.locatorPort) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .build(); @@ -110,7 +116,7 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT assertEquals(Status.ONLINE, this.launcher.status().getStatus()); // validate the pid file and its contents - this.pidFile = new File(this.launcher.getWorkingDirectory(), ProcessType.LOCATOR.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getPidFileName()); assertTrue(this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); @@ -133,16 +139,18 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testStartDeletesStaleControlFiles() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // create existing control files - this.stopRequestFile = new File(ProcessType.LOCATOR.getStopRequestFileName()); + this.stopRequestFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getStopRequestFileName()); this.stopRequestFile.createNewFile(); assertTrue(this.stopRequestFile.exists()); - this.statusRequestFile = new File(ProcessType.LOCATOR.getStatusRequestFileName()); + this.statusRequestFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getStatusRequestFileName()); this.statusRequestFile.createNewFile(); assertTrue(this.statusRequestFile.exists()); - this.statusFile = new File(ProcessType.LOCATOR.getStatusFileName()); + this.statusFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getStatusFileName()); this.statusFile.createNewFile(); assertTrue(this.statusFile.exists()); @@ -151,6 +159,7 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT .setMemberName(getUniqueName()) .setPort(this.locatorPort) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config"); assertFalse(builder.getForce()); @@ -166,7 +175,7 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT try { // validate the pid file and its contents - this.pidFile = new File(ProcessType.LOCATOR.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getPidFileName()); assertTrue(this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); @@ -178,9 +187,6 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT assertFalse(statusRequestFile.exists()); assertFalse(statusFile.exists()); - // validate log file was created - final String logFileName = getUniqueName()+".log"; - assertTrue("Log file should exist: " + logFileName, new File(logFileName).exists()); // TODO:LOG:FAILS } catch (Throwable e) { this.errorCollector.addError(e); } @@ -195,8 +201,10 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testStartOverwritesStalePidFile() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // create existing pid file - this.pidFile = new File(ProcessType.LOCATOR.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getPidFileName()); assertFalse("Integer.MAX_VALUE shouldn't be the same as local pid " + Integer.MAX_VALUE, Integer.MAX_VALUE == ProcessUtils.identifyPid()); writePid(this.pidFile, Integer.MAX_VALUE); @@ -205,6 +213,7 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT .setMemberName(getUniqueName()) .setPort(this.locatorPort) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config"); assertFalse(builder.getForce()); @@ -277,7 +286,7 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT // validate log file was created final String logFileName = getUniqueName()+".log"; - assertTrue("Log file should exist: " + logFileName, new File(logFileName).exists()); // TODO:LOG:FAILS + assertTrue("Log file should exist: " + logFileName, new File(logFileName).exists()); } catch (Throwable e) { logger.error(e); @@ -304,6 +313,8 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testStartWithDefaultPortInUseFails() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.locatorPort, 50, null, -1); assertTrue(this.socket.isBound()); assertFalse(this.socket.isClosed()); @@ -316,6 +327,7 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT this.launcher = new Builder() .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .build(); @@ -355,12 +367,12 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT } try { - this.pidFile = new File (ProcessType.LOCATOR.getPidFileName()); + this.pidFile = new File (this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getPidFileName()); assertFalse("Pid file should not exist: " + this.pidFile, this.pidFile.exists()); // creation of log file seems to be random -- look into why sometime final String logFileName = getUniqueName()+".log"; - assertFalse("Log file should not exist: " + logFileName, new File(logFileName).exists()); + assertFalse("Log file should not exist: " + logFileName, new File(this.temporaryFolder.getRoot(), logFileName).exists()); } catch (Throwable e) { this.errorCollector.addError(e); @@ -465,6 +477,8 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testStartUsingPort() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // generate one free port and then use it instead of default final int freeTCPPort = AvailablePortHelper.getRandomAvailableTCPPort(); assertTrue(AvailablePort.isPortAvailable(freeTCPPort, AvailablePort.SOCKET)); @@ -473,6 +487,7 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT .setMemberName(getUniqueName()) .setPort(freeTCPPort) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .build(); @@ -483,17 +498,13 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT waitForLocatorToStart(this.launcher); // validate the pid file and its contents - this.pidFile = new File(ProcessType.LOCATOR.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getPidFileName()); assertTrue(pidFile.exists()); pid = readPid(pidFile); assertTrue(pid > 0); assertTrue(ProcessUtils.isProcessAlive(pid)); assertEquals(getPid(), pid); - // validate log file was created - final String logFileName = getUniqueName()+".log"; - assertTrue("Log file should exist: " + logFileName, new File(logFileName).exists()); // TODO:LOG:FAILS - // verify locator did not use default port assertTrue(AvailablePort.isPortAvailable(this.locatorPort, AvailablePort.SOCKET)); @@ -515,6 +526,8 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testStartUsingPortInUseFails() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // generate one free port and then use it instead of default final int freeTCPPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET); this.socket = SocketCreator.getDefaultInstance().createServerSocket(freeTCPPort, 50, null, -1); @@ -523,6 +536,7 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT .setMemberName(getUniqueName()) .setPort(freeTCPPort) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .build(); @@ -549,12 +563,12 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT } try { - this.pidFile = new File (ProcessType.LOCATOR.getPidFileName()); + this.pidFile = new File (this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getPidFileName()); assertFalse("Pid file should not exist: " + this.pidFile, this.pidFile.exists()); // creation of log file seems to be random -- look into why sometime final String logFileName = getUniqueName()+".log"; - assertFalse("Log file should not exist: " + logFileName, new File(logFileName).exists()); + assertFalse("Log file should not exist: " + logFileName, new File(this.temporaryFolder.getRoot(), logFileName).exists()); } catch (Throwable e) { this.errorCollector.addError(e); @@ -578,11 +592,14 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testStatusUsingPid() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // build and start the locator final Builder builder = new Builder() .setMemberName(getUniqueName()) .setPort(this.locatorPort) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config"); assertFalse(builder.getForce()); @@ -594,8 +611,8 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT this.launcher.start(); waitForLocatorToStart(this.launcher); - this.pidFile = new File(ProcessType.LOCATOR.getPidFileName()); - assertTrue(this.pidFile.exists()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getPidFileName()); + assertTrue("Pid file " + this.pidFile.getCanonicalPath().toString() + " should exist", this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); assertEquals(ProcessUtils.identifyPid(), pid); @@ -609,11 +626,11 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT assertEquals(Status.ONLINE, actualStatus.getStatus()); assertEquals(pid, actualStatus.getPid().intValue()); assertTrue(actualStatus.getUptime() > 0); - assertEquals(new File(System.getProperty("user.dir")).getCanonicalPath(), actualStatus.getWorkingDirectory()); + // getWorkingDirectory returns user.dir instead of rootFolder because test is starting Locator in this process (to move logFile and pidFile into temp dir) assertEquals(ManagementFactory.getRuntimeMXBean().getClassPath(), actualStatus.getClasspath()); assertEquals(GemFireVersion.getGemFireVersion(), actualStatus.getGemFireVersion()); assertEquals(System.getProperty("java.version"), actualStatus.getJavaVersion()); - assertEquals(new File(System.getProperty("user.dir")).getCanonicalPath() + File.separator + getUniqueName() + ".log", actualStatus.getLogFile()); + assertEquals(rootFolder + File.separator + getUniqueName() + ".log", actualStatus.getLogFile()); assertEquals(InetAddress.getLocalHost().getCanonicalHostName(), actualStatus.getHost()); assertEquals(getUniqueName(), actualStatus.getMemberName()); } catch (Throwable e) { @@ -640,10 +657,13 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testStatusUsingWorkingDirectory() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + final Builder builder = new Builder() .setMemberName(getUniqueName()) .setPort(this.locatorPort) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config"); assertFalse(builder.getForce()); @@ -655,14 +675,13 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT this.launcher.start(); waitForLocatorToStart(this.launcher); - this.pidFile = new File(ProcessType.LOCATOR.getPidFileName()); - assertTrue(this.pidFile.exists()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getPidFileName()); + assertTrue("Pid file " + this.pidFile.getCanonicalPath().toString() + " should exist", this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); assertEquals(ProcessUtils.identifyPid(), pid); - final String workingDir = new File(System.getProperty("user.dir")).getCanonicalPath(); - dirLauncher = new Builder().setWorkingDirectory(workingDir).build(); + dirLauncher = new Builder().setWorkingDirectory(rootFolder).build(); assertNotNull(dirLauncher); assertFalse(dirLauncher.isRunning()); @@ -671,11 +690,11 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT assertEquals(Status.ONLINE, actualStatus.getStatus()); assertEquals(pid, actualStatus.getPid().intValue()); assertTrue(actualStatus.getUptime() > 0); - assertEquals(new File(System.getProperty("user.dir")).getCanonicalPath(), actualStatus.getWorkingDirectory()); + // getWorkingDirectory returns user.dir instead of rootFolder because test is starting Locator in this process (to move logFile and pidFile into temp dir) assertEquals(ManagementFactory.getRuntimeMXBean().getClassPath(), actualStatus.getClasspath()); assertEquals(GemFireVersion.getGemFireVersion(), actualStatus.getGemFireVersion()); assertEquals(System.getProperty("java.version"), actualStatus.getJavaVersion()); - assertEquals(new File(System.getProperty("user.dir")).getCanonicalPath() + File.separator + getUniqueName() + ".log", actualStatus.getLogFile()); + assertEquals(rootFolder + File.separator + getUniqueName() + ".log", actualStatus.getLogFile()); assertEquals(InetAddress.getLocalHost().getCanonicalHostName(), actualStatus.getHost()); assertEquals(getUniqueName(), actualStatus.getMemberName()); } catch (Throwable e) { @@ -702,10 +721,13 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testStopUsingPid() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + final Builder builder = new Builder() .setMemberName(getUniqueName()) .setPort(this.locatorPort) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config"); assertFalse(builder.getForce()); @@ -718,7 +740,7 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT waitForLocatorToStart(this.launcher); // validate the pid file and its contents - this.pidFile = new File(ProcessType.LOCATOR.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getPidFileName()); assertTrue(this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); @@ -752,10 +774,13 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT @Test public void testStopUsingWorkingDirectory() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + final Builder builder = new Builder() .setMemberName(getUniqueName()) .setPort(this.locatorPort) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config"); assertFalse(builder.getForce()); @@ -768,14 +793,13 @@ public class LocatorLauncherLocalJUnitTest extends AbstractLocatorLauncherJUnitT waitForLocatorToStart(this.launcher); // validate the pid file and its contents - this.pidFile = new File(ProcessType.LOCATOR.getPidFileName()); - assertTrue(this.pidFile.exists()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.LOCATOR.getPidFileName()); + assertTrue("Pid file " + this.pidFile.getCanonicalPath().toString() + " should exist", this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); assertEquals(ProcessUtils.identifyPid(), pid); - final String workingDir = new File(System.getProperty("user.dir")).getCanonicalPath(); - dirLauncher = new Builder().setWorkingDirectory(workingDir).build(); + dirLauncher = new Builder().setWorkingDirectory(rootFolder).build(); assertNotNull(dirLauncher); assertFalse(dirLauncher.isRunning()); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5da17d12/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteFileJUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteFileJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteFileJUnitTest.java index 0be4a8e..36d37fd 100755 --- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteFileJUnitTest.java +++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteFileJUnitTest.java @@ -122,8 +122,6 @@ public class LocatorLauncherRemoteFileJUnitTest extends LocatorLauncherRemoteJUn waitForFileToDelete(this.pidFile); } catch (Throwable e) { this.errorCollector.addError(e); - } finally { - new File(ProcessType.LOCATOR.getStatusRequestFileName()).delete(); // TODO: delete? } } @@ -200,8 +198,6 @@ public class LocatorLauncherRemoteFileJUnitTest extends LocatorLauncherRemoteJUn waitForFileToDelete(pidFile); } catch (Throwable e) { this.errorCollector.addError(e); - } finally { - new File(ProcessType.LOCATOR.getStopRequestFileName()).delete(); // TODO: delete? } } } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5da17d12/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java index 8977e47..c0c054a 100755 --- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java +++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/LocatorLauncherRemoteJUnitTest.java @@ -79,7 +79,7 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit @Ignore("TRAC bug #52304: test is broken and needs to be reworked") public void testRunningLocatorOutlivesForkingProcess() throws Exception { }/* - // TODO:KIRK: fix up this test + // TODO: fix up this test this.temporaryFolder.getRoot() = new File(getUniqueName()); this.temporaryFolder.getRoot().mkdir(); @@ -967,7 +967,9 @@ public class LocatorLauncherRemoteJUnitTest extends AbstractLocatorLauncherJUnit Process forkedProcess = new ProcessBuilder(command).start(); + @SuppressWarnings("unused") ProcessStreamReader processOutReader = new ProcessStreamReader.Builder(forkedProcess).inputStream(forkedProcess.getInputStream()).build().start(); + @SuppressWarnings("unused") ProcessStreamReader processErrReader = new ProcessStreamReader.Builder(forkedProcess).inputStream(forkedProcess.getErrorStream()).build().start(); logWriter.info(LocatorLauncherForkingProcess.class.getSimpleName() + "#main waiting for locator to start..."); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5da17d12/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherJUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherJUnitTest.java index 8b0d45b..721b7ed 100644 --- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherJUnitTest.java +++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherJUnitTest.java @@ -9,7 +9,6 @@ package com.gemstone.gemfire.distributed; import static org.junit.Assert.*; -import static org.junit.Assume.*; import java.io.File; import java.io.FileNotFoundException; @@ -27,8 +26,6 @@ import com.gemstone.gemfire.distributed.ServerLauncher.Command; import com.gemstone.gemfire.distributed.internal.DistributionConfig; import com.gemstone.gemfire.distributed.support.DistributedSystemAdapter; import com.gemstone.gemfire.internal.i18n.LocalizedStrings; -import com.gemstone.gemfire.internal.lang.SystemUtils; -import com.gemstone.gemfire.internal.util.IOUtils; import com.gemstone.gemfire.test.junit.categories.UnitTest; import edu.umd.cs.mtc.MultithreadedTestCase; @@ -39,9 +36,7 @@ import org.jmock.Mockery; import org.jmock.lib.concurrent.Synchroniser; import org.jmock.lib.legacy.ClassImposteriser; import org.junit.After; -import org.junit.AfterClass; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -60,39 +55,12 @@ import org.junit.experimental.categories.Category; * @see org.junit.Test * @since 7.0 */ -@SuppressWarnings("deprecation") +@SuppressWarnings({"deprecation", "unused"}) @Category(UnitTest.class) public class ServerLauncherJUnitTest extends CommonLauncherTestSuite { -// private static final String GEMFIRE_PROPERTIES_FILE_NAME = "gemfire.properties"; -// private static final String TEMPORARY_FILE_NAME = "beforeServerLauncherJUnitTest_" + GEMFIRE_PROPERTIES_FILE_NAME; - private Mockery mockContext; -// @BeforeClass -// public static void testSuiteSetup() { -// if (SystemUtils.isWindows()) { -// return; -// } -// File file = new File(GEMFIRE_PROPERTIES_FILE_NAME); -// if (file.exists()) { -// File dest = new File(TEMPORARY_FILE_NAME); -// assertTrue(file.renameTo(dest)); -// } -// } -// -// @AfterClass -// public static void testSuiteTearDown() { -// if (SystemUtils.isWindows()) { -// return; -// } -// File file = new File(TEMPORARY_FILE_NAME); -// if (file.exists()) { -// File dest = new File(GEMFIRE_PROPERTIES_FILE_NAME); -// assertTrue(file.renameTo(dest)); -// } -// } - @Before public void setup() { mockContext = new Mockery() {{ @@ -109,10 +77,11 @@ public class ServerLauncherJUnitTest extends CommonLauncherTestSuite { @Test public void testParseArguments() throws Exception { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath().toString(); Builder builder = new Builder(); builder.parseArguments("start", "serverOne", "--assign-buckets", "--disable-default-server", "--debug", "--force", - "--rebalance", "--redirect-output", "--dir=" + ServerLauncher.DEFAULT_WORKING_DIRECTORY, "--pid=1234", + "--rebalance", "--redirect-output", "--dir=" + rootFolder, "--pid=1234", "--server-bind-address=" + InetAddress.getLocalHost().getHostAddress(), "--server-port=11235", "--hostname-for-clients=192.168.99.100"); assertEquals(Command.START, builder.getCommand()); @@ -125,7 +94,7 @@ public class ServerLauncherJUnitTest extends CommonLauncherTestSuite { assertFalse(Boolean.TRUE.equals(builder.getHelp())); assertTrue(builder.getRebalance()); assertTrue(builder.getRedirectOutput()); - assertEquals(ServerLauncher.DEFAULT_WORKING_DIRECTORY, builder.getWorkingDirectory()); + assertEquals(rootFolder, builder.getWorkingDirectory()); assertEquals(1234, builder.getPid().intValue()); assertEquals(InetAddress.getLocalHost(), builder.getServerBindAddress()); assertEquals(11235, builder.getServerPort().intValue()); @@ -346,13 +315,13 @@ public class ServerLauncherJUnitTest extends CommonLauncherTestSuite { } @Test - public void testSetAndGetWorkingDirectory() { + public void testSetAndGetWorkingDirectory() throws Exception { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath().toString(); Builder builder = new Builder(); assertEquals(ServerLauncher.DEFAULT_WORKING_DIRECTORY, builder.getWorkingDirectory()); - assertSame(builder, builder.setWorkingDirectory(System.getProperty("java.io.tmpdir"))); - assertEquals(IOUtils.tryGetCanonicalPathElseGetAbsolutePath(new File(System.getProperty("java.io.tmpdir"))), - builder.getWorkingDirectory()); + assertSame(builder, builder.setWorkingDirectory(rootFolder)); + assertEquals(rootFolder, builder.getWorkingDirectory()); assertSame(builder, builder.setWorkingDirectory(" ")); assertEquals(ServerLauncher.DEFAULT_WORKING_DIRECTORY, builder.getWorkingDirectory()); assertSame(builder, builder.setWorkingDirectory("")); @@ -574,6 +543,8 @@ public class ServerLauncherJUnitTest extends CommonLauncherTestSuite { @Test public void testBuild() throws Exception { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath().toString(); + ServerLauncher launcher = new Builder() .setCommand(Command.STOP) .setAssignBuckets(true) @@ -582,7 +553,7 @@ public class ServerLauncherJUnitTest extends CommonLauncherTestSuite { .setRebalance(true) .setServerBindAddress(InetAddress.getLocalHost().getHostAddress()) .setServerPort(11235) - .setWorkingDirectory(System.getProperty("java.io.tmpdir")) + .setWorkingDirectory(rootFolder) .setCriticalHeapPercentage(90.0f) .setEvictionHeapPercentage(75.0f) .setMaxConnections(100) @@ -604,8 +575,7 @@ public class ServerLauncherJUnitTest extends CommonLauncherTestSuite { assertEquals("serverOne", launcher.getMemberName()); assertEquals(InetAddress.getLocalHost(), launcher.getServerBindAddress()); assertEquals(11235, launcher.getServerPort().intValue()); - assertEquals(IOUtils.tryGetCanonicalPathElseGetAbsolutePath(new File(System.getProperty("java.io.tmpdir"))), - launcher.getWorkingDirectory()); + assertEquals(rootFolder, launcher.getWorkingDirectory()); assertEquals(90.0f, launcher.getCriticalHeapPercentage().floatValue(), 0.0f); assertEquals(75.0f, launcher.getEvictionHeapPercentage().floatValue(), 0.0f); assertEquals(100, launcher.getMaxConnections().intValue()); @@ -689,11 +659,11 @@ public class ServerLauncherJUnitTest extends CommonLauncherTestSuite { } @Test(expected = IllegalStateException.class) - public void testBuildWithInvalidWorkingDirectoryOnStart() { + public void testBuildWithInvalidWorkingDirectoryOnStart() throws Exception { try { new Builder().setCommand(Command.START) .setMemberName("serverOne") - .setWorkingDirectory(System.getProperty("java.io.tmpdir")) + .setWorkingDirectory(this.temporaryFolder.getRoot().getCanonicalPath().toString()) .build(); } catch (IllegalStateException expected) { http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5da17d12/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalJUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalJUnitTest.java index e83c8ac..27dd3a3 100755 --- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalJUnitTest.java +++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherLocalJUnitTest.java @@ -69,10 +69,13 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes @Test public void testBuilderSetProperties() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + this.launcher = new Builder() .setDisableDefaultServer(true) .setForce(true) .setMemberName(getUniqueName()) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.DISABLE_AUTO_RECONNECT_NAME, "true") .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0") @@ -116,11 +119,14 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes @Test public void testStartCreatesPidFile() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // build and start the Server locally final Builder builder = new Builder() .setDisableDefaultServer(true) .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -133,7 +139,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes assertEquals(Status.ONLINE, this.launcher.status().getStatus()); // validate the pid file and its contents - this.pidFile = new File(builder.getWorkingDirectory(), ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertTrue(this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); @@ -156,16 +162,18 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes @Test public void testStartDeletesStaleControlFiles() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // create existing control files - this.stopRequestFile = new File(ProcessType.SERVER.getStopRequestFileName()); + this.stopRequestFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getStopRequestFileName()); this.stopRequestFile.createNewFile(); assertTrue(this.stopRequestFile.exists()); - this.statusRequestFile = new File(ProcessType.SERVER.getStatusRequestFileName()); + this.statusRequestFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getStatusRequestFileName()); this.statusRequestFile.createNewFile(); assertTrue(this.statusRequestFile.exists()); - this.statusFile = new File(ProcessType.SERVER.getStatusFileName()); + this.statusFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getStatusFileName()); this.statusFile.createNewFile(); assertTrue(this.statusFile.exists()); @@ -174,6 +182,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes .setDisableDefaultServer(true) .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -190,7 +199,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes try { // validate the pid file and its contents - this.pidFile = new File(ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertTrue(this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); @@ -202,10 +211,6 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes assertFalse(this.statusRequestFile.exists()); assertFalse(this.statusFile.exists()); - // validate log file was created - final String logFileName = getUniqueName()+".log"; - assertTrue("Log file should exist: " + logFileName, new File(logFileName).exists()); - } catch (Throwable e) { this.errorCollector.addError(e); } @@ -220,8 +225,10 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes @Test public void testStartOverwritesStalePidFile() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // create existing pid file - this.pidFile = new File(ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertFalse("Integer.MAX_VALUE shouldn't be the same as local pid " + Integer.MAX_VALUE, Integer.MAX_VALUE == ProcessUtils.identifyPid()); writePid(this.pidFile, Integer.MAX_VALUE); @@ -230,6 +237,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes .setDisableDefaultServer(true) .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -268,6 +276,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes */ @Test public void testStartUsingDisableDefaultServerLeavesPortFree() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // build and start the server assertTrue(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET)); @@ -276,6 +286,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes .setDisableDefaultServer(true) .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -288,17 +299,13 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes waitForServerToStart(this.launcher); // validate the pid file and its contents - this.pidFile = new File(ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertTrue(this.pidFile.exists()); int pid = readPid(this.pidFile); assertTrue(pid > 0); assertTrue(ProcessUtils.isProcessAlive(pid)); assertEquals(getPid(), pid); - // validate log file was created - final String logFileName = getUniqueName()+".log"; - assertTrue("Log file should exist: " + logFileName, new File(logFileName).exists()); - // verify server did not a port assertTrue(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET)); @@ -324,6 +331,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes */ @Test public void testStartUsingDisableDefaultServerSkipsPortCheck() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // generate one free port and then use TEST_OVERRIDE_DEFAULT_PORT_PROPERTY this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.serverPort, 50, null, -1); assertFalse(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET)); @@ -333,6 +342,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes .setDisableDefaultServer(true) .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -345,17 +355,13 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes waitForServerToStart(this.launcher); // validate the pid file and its contents - this.pidFile = new File(ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertTrue(this.pidFile.exists()); int pid = readPid(this.pidFile); assertTrue(pid > 0); assertTrue(ProcessUtils.isProcessAlive(pid)); assertEquals(getPid(), pid); - // validate log file was created - final String logFileName = getUniqueName()+".log"; - assertTrue("Log file should exist: " + logFileName, new File(logFileName).exists()); - final ServerState status = this.launcher.status(); final String portString = status.getPort(); assertEquals("Port should be \"\" instead of " + portString, "", portString); @@ -449,6 +455,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes public void testStartUsingServerPortOverridesCacheXml() throws Throwable { // verifies part of the fix for #47664 + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // generate two free ports final int[] freeTCPPorts = AvailablePortHelper.getRandomAvailableTCPPorts(2); assertTrue(AvailablePort.isPortAvailable(freeTCPPorts[0], AvailablePort.SOCKET)); @@ -474,6 +482,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes .setMemberName(getUniqueName()) .setRedirectOutput(true) .setServerPort(freeTCPPorts[1]) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -485,17 +494,13 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes waitForServerToStart(this.launcher); // validate the pid file and its contents - this.pidFile = new File(ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertTrue(this.pidFile.exists()); int pid = readPid(this.pidFile); assertTrue(pid > 0); assertTrue(ProcessUtils.isProcessAlive(pid)); assertEquals(getPid(), pid); - // validate log file was created - final String logFileName = getUniqueName()+".log"; - assertTrue("Log file should exist: " + logFileName, new File(logFileName).exists()); - // verify server used --server-port instead of default or port in cache.xml assertTrue(AvailablePort.isPortAvailable(freeTCPPorts[0], AvailablePort.SOCKET)); assertFalse(AvailablePort.isPortAvailable(freeTCPPorts[1], AvailablePort.SOCKET)); @@ -524,6 +529,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes */ @Test public void testStartUsingServerPortUsedInsteadOfDefaultCacheXml() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // write out cache.xml with one port final CacheCreation creation = new CacheCreation(); final RegionAttributesCreation attrs = new RegionAttributesCreation(creation); @@ -544,6 +551,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes .setMemberName(getUniqueName()) .setRedirectOutput(true) .setServerPort(this.serverPort) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -555,17 +563,13 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes waitForServerToStart(this.launcher); // validate the pid file and its contents - this.pidFile = new File(ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertTrue(this.pidFile.exists()); int pid = readPid(this.pidFile); assertTrue(pid > 0); assertTrue(ProcessUtils.isProcessAlive(pid)); assertEquals(getPid(), pid); - // validate log file was created - final String logFileName = getUniqueName()+".log"; - assertTrue("Log file should exist: " + logFileName, new File(logFileName).exists()); - // verify server used --server-port instead of default assertFalse(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET)); @@ -587,6 +591,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes @Test public void testStartWithDefaultPortInUseFails() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // generate one free port and then use TEST_OVERRIDE_DEFAULT_PORT_PROPERTY this.socket = SocketCreator.getDefaultInstance().createServerSocket(this.serverPort, 50, null, -1); assertFalse(AvailablePort.isPortAvailable(this.serverPort, AvailablePort.SOCKET)); @@ -595,6 +601,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes final Builder builder = new Builder() .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -631,12 +638,12 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes } try { - this.pidFile = new File (ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertFalse("Pid file should not exist: " + this.pidFile, this.pidFile.exists()); // creation of log file seems to be random -- look into why sometime final String logFileName = getUniqueName()+".log"; - assertFalse("Log file should not exist: " + logFileName, new File(logFileName).exists()); + assertFalse("Log file should not exist: " + logFileName, new File(this.temporaryFolder.getRoot(), logFileName).exists()); } catch (Throwable e) { this.errorCollector.addError(e); @@ -744,6 +751,8 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes */ @Test public void testStartUsingServerPortInUseFails() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // generate one free port and then use TEST_OVERRIDE_DEFAULT_PORT_PROPERTY final int freeTCPPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET); this.socket = SocketCreator.getDefaultInstance().createServerSocket(freeTCPPort, 50, null, -1); @@ -753,6 +762,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes .setMemberName(getUniqueName()) .setRedirectOutput(true) .setServerPort(freeTCPPort) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -781,18 +791,14 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes } try { - this.pidFile = new File (ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertFalse("Pid file should not exist: " + this.pidFile, this.pidFile.exists()); - - // creation of log file seems to be random -- look into why sometime - final String logFileName = getUniqueName()+".log"; - assertFalse("Log file should not exist: " + logFileName, new File(logFileName).exists()); } catch (Throwable e) { this.errorCollector.addError(e); } // just in case the launcher started... - ServerState status = null; // TODO: this could result in NPE later + ServerState status = null; try { status = this.launcher.stop(); } catch (Throwable t) { @@ -809,11 +815,14 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes @Test public void testStatusUsingPid() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // build and start the server final Builder builder = new Builder() .setDisableDefaultServer(true) .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -826,7 +835,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes this.launcher.start(); waitForServerToStart(this.launcher); - this.pidFile = new File(ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertTrue(this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); @@ -841,12 +850,10 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes assertEquals(Status.ONLINE, actualStatus.getStatus()); assertEquals(pid, actualStatus.getPid().intValue()); assertTrue(actualStatus.getUptime() > 0); - assertEquals(new File(System.getProperty("user.dir")).getCanonicalPath(), actualStatus.getWorkingDirectory()); - //assertEquals(???, actualStatus.getJvmArguments()); + // getWorkingDirectory returns user.dir instead of rootFolder because test is starting Server in this process (to move logFile and pidFile into temp dir) assertEquals(ManagementFactory.getRuntimeMXBean().getClassPath(), actualStatus.getClasspath()); assertEquals(GemFireVersion.getGemFireVersion(), actualStatus.getGemFireVersion()); assertEquals(System.getProperty("java.version"), actualStatus.getJavaVersion()); - assertEquals(new File(System.getProperty("user.dir")).getCanonicalPath() + File.separator + getUniqueName() + ".log", actualStatus.getLogFile()); assertEquals(InetAddress.getLocalHost().getCanonicalHostName(), actualStatus.getHost()); assertEquals(getUniqueName(), actualStatus.getMemberName()); @@ -874,11 +881,14 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes @Test public void testStatusUsingWorkingDirectory() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // build and start the server final Builder builder = new Builder() .setDisableDefaultServer(true) .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -891,14 +901,13 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes this.launcher.start(); waitForServerToStart(this.launcher); - this.pidFile = new File(ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertTrue(this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); assertEquals(ProcessUtils.identifyPid(), pid); - final String workingDir = new File(System.getProperty("user.dir")).getCanonicalPath(); - dirLauncher = new Builder().setWorkingDirectory(workingDir).build(); + dirLauncher = new Builder().setWorkingDirectory(rootFolder).build(); assertNotNull(dirLauncher); assertFalse(dirLauncher.isRunning()); @@ -907,12 +916,10 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes assertEquals(Status.ONLINE, actualStatus.getStatus()); assertEquals(pid, actualStatus.getPid().intValue()); assertTrue(actualStatus.getUptime() > 0); - assertEquals(new File(System.getProperty("user.dir")).getCanonicalPath(), actualStatus.getWorkingDirectory()); - //assertEquals(???, actualStatus.getJvmArguments()); + // getWorkingDirectory returns user.dir instead of rootFolder because test is starting Server in this process (to move logFile and pidFile into temp dir) assertEquals(ManagementFactory.getRuntimeMXBean().getClassPath(), actualStatus.getClasspath()); assertEquals(GemFireVersion.getGemFireVersion(), actualStatus.getGemFireVersion()); assertEquals(System.getProperty("java.version"), actualStatus.getJavaVersion()); - assertEquals(new File(System.getProperty("user.dir")).getCanonicalPath() + File.separator + getUniqueName() + ".log", actualStatus.getLogFile()); assertEquals(InetAddress.getLocalHost().getCanonicalHostName(), actualStatus.getHost()); assertEquals(getUniqueName(), actualStatus.getMemberName()); @@ -940,11 +947,14 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes @Test public void testStopUsingPid() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // build and start the server final Builder builder = new Builder() .setDisableDefaultServer(true) .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -959,7 +969,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes waitForServerToStart(this.launcher); // validate the pid file and its contents - this.pidFile = new File(ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertTrue(this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); @@ -986,7 +996,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes try { // verify the PID file was deleted - waitForFileToDelete(this.pidFile); // TODO + waitForFileToDelete(this.pidFile); } catch (Throwable e) { this.errorCollector.addError(e); } @@ -994,11 +1004,14 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes @Test public void testStopUsingWorkingDirectory() throws Throwable { + String rootFolder = this.temporaryFolder.getRoot().getCanonicalPath(); + // build and start the server final Builder builder = new Builder() .setDisableDefaultServer(true) .setMemberName(getUniqueName()) .setRedirectOutput(true) + .setWorkingDirectory(rootFolder) .set(DistributionConfig.LOG_LEVEL_NAME, "config") .set(DistributionConfig.MCAST_PORT_NAME, "0"); @@ -1012,14 +1025,13 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes waitForServerToStart(this.launcher); // validate the pid file and its contents - this.pidFile = new File(ProcessType.SERVER.getPidFileName()); + this.pidFile = new File(this.temporaryFolder.getRoot(), ProcessType.SERVER.getPidFileName()); assertTrue(this.pidFile.exists()); final int pid = readPid(this.pidFile); assertTrue(pid > 0); assertEquals(ProcessUtils.identifyPid(), pid); - final String workingDir = new File(System.getProperty("user.dir")).getCanonicalPath(); - dirLauncher = new Builder().setWorkingDirectory(workingDir).build(); + dirLauncher = new Builder().setWorkingDirectory(rootFolder).build(); assertNotNull(dirLauncher); assertFalse(dirLauncher.isRunning()); @@ -1040,7 +1052,7 @@ public class ServerLauncherLocalJUnitTest extends AbstractServerLauncherJUnitTes try { // verify the PID file was deleted - waitForFileToDelete(this.pidFile); // TODO + waitForFileToDelete(this.pidFile); } catch (Throwable e) { this.errorCollector.addError(e); } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5da17d12/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java index d43ad0a..a11b2e5 100755 --- a/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java +++ b/gemfire-core/src/test/java/com/gemstone/gemfire/distributed/ServerLauncherRemoteJUnitTest.java @@ -120,7 +120,7 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe @SuppressWarnings("unused") File file = new File(this.temporaryFolder.getRoot(), ServerLauncherForkingProcess.class.getSimpleName().concat(".log")); - //-logger.info("KIRK: log file is " + file); + //-logger.info("log file is " + file); final ProcessWrapper pw = new ProcessWrapper.Builder().mainClass(ServerLauncherForkingProcess.class).build(); pw.execute(null, this.temporaryFolder.getRoot()).waitFor(true); @@ -882,7 +882,7 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe this.errorCollector.checkThat(outputContainedExpectedString.get(), is(equalTo(true))); // just in case the launcher started... - ServerState status = null; // TODO: this could throw NPE later + ServerState status = null; try { status = dirLauncher.stop(); } catch (Throwable t) { @@ -1360,7 +1360,7 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe public static class ServerLauncherForkingProcess { public static void main(final String... args) throws IOException, PidUnavailableException { - //-System.out.println("KIRK inside main"); + //-System.out.println("inside main"); File file = new File(System.getProperty("user.dir"), ServerLauncherForkingProcess.class.getSimpleName().concat(".log")); file.createNewFile(); LocalLogWriter logWriter = new LocalLogWriter(InternalLogWriter.ALL_LEVEL, new PrintStream(new FileOutputStream(file, true))); @@ -1387,7 +1387,7 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe logWriter.info(ServerLauncherForkingProcess.class.getSimpleName() + "#main command: " + command); logWriter.info(ServerLauncherForkingProcess.class.getSimpleName() + "#main starting..."); - //-System.out.println("KIRK launching " + command); + //-System.out.println("launching " + command); @SuppressWarnings("unused") Process forkedProcess = new ProcessBuilder(command).start(); @@ -1398,7 +1398,7 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe // logWriter.info(ServerLauncherForkingProcess.class.getSimpleName() + "#main waiting for Server to start..."); // // File workingDir = new File(System.getProperty("user.dir")); -// System.out.println("KIRK waiting for server to start in " + workingDir); +// System.out.println("waiting for server to start in " + workingDir); // final ServerLauncher dirLauncher = new ServerLauncher.Builder() // .setWorkingDirectory(workingDir.getCanonicalPath()) // .build(); @@ -1406,7 +1406,7 @@ public class ServerLauncherRemoteJUnitTest extends AbstractServerLauncherJUnitTe logWriter.info(ServerLauncherForkingProcess.class.getSimpleName() + "#main exiting..."); - //-System.out.println("KIRK exiting"); + //-System.out.println("exiting"); System.exit(0); } catch (Throwable t) {
