You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/05/02 18:58:46 UTC
[11/12] incubator-geode git commit: Fixing tests
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherIntegrationTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherIntegrationTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherIntegrationTestCase.java
new file mode 100755
index 0000000..34c36da
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherIntegrationTestCase.java
@@ -0,0 +1,254 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.distributed;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.apache.logging.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.contrib.java.lang.system.RestoreSystemProperties;
+import org.junit.rules.TestName;
+
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
+import com.gemstone.gemfire.internal.FileUtil;
+import com.gemstone.gemfire.internal.lang.StringUtils;
+import com.gemstone.gemfire.internal.logging.LogService;
+import com.gemstone.gemfire.internal.process.PidUnavailableException;
+import com.gemstone.gemfire.internal.process.ProcessUtils;
+import com.gemstone.gemfire.internal.process.ProcessStreamReader.InputListener;
+import com.gemstone.gemfire.internal.util.IOUtils;
+import com.gemstone.gemfire.internal.util.StopWatch;
+
+/**
+ * @since 8.0
+ */
+public abstract class AbstractLauncherIntegrationTestCase {
+ protected static final Logger logger = LogService.getLogger();
+
+ protected static final int WAIT_FOR_PROCESS_TO_DIE_TIMEOUT = 5 * 60 * 1000; // 5 minutes
+ protected static final int TIMEOUT_MILLISECONDS = WAIT_FOR_PROCESS_TO_DIE_TIMEOUT;
+ protected static final int WAIT_FOR_FILE_CREATION_TIMEOUT = 10*1000;
+ protected static final int WAIT_FOR_FILE_DELETION_TIMEOUT = 10*1000;
+ protected static final int WAIT_FOR_MBEAN_TIMEOUT = 10*1000;
+ protected static final int INTERVAL = 100;
+ protected static final int INTERVAL_MILLISECONDS = INTERVAL;
+
+ private static final String EXPECTED_EXCEPTION_ADD = "<ExpectedException action=add>{}</ExpectedException>";
+ private static final String EXPECTED_EXCEPTION_REMOVE = "<ExpectedException action=remove>{}</ExpectedException>";
+ private static final String EXPECTED_EXCEPTION_MBEAN_NOT_REGISTERED = "MBean Not Registered In GemFire Domain";
+
+ protected volatile ServerSocket socket;
+
+ protected volatile File pidFile;
+ protected volatile File stopRequestFile;
+ protected volatile File statusRequestFile;
+ protected volatile File statusFile;
+
+ @Rule
+ public TestName testName= new TestName();
+
+ @Rule
+ public RestoreSystemProperties restoreSystemProperties = new RestoreSystemProperties();
+
+ @Before
+ public final void setUpAbstractLauncherIntegrationTestCase() throws Exception {
+ System.setProperty("gemfire." + DistributionConfig.MCAST_PORT_NAME, Integer.toString(0));
+ logger.info(EXPECTED_EXCEPTION_ADD, EXPECTED_EXCEPTION_MBEAN_NOT_REGISTERED);
+ }
+
+ @After
+ public final void tearDownAbstractLauncherIntegrationTestCase() throws Exception {
+ logger.info(EXPECTED_EXCEPTION_REMOVE, EXPECTED_EXCEPTION_MBEAN_NOT_REGISTERED);
+ if (this.socket != null) {
+ this.socket.close();
+ this.socket = null;
+ }
+ delete(this.pidFile); this.pidFile = null;
+ delete(this.stopRequestFile); this.stopRequestFile = null;
+ delete(this.statusRequestFile); this.statusRequestFile = null;
+ delete(this.statusFile); this.statusFile = null;
+ }
+
+ protected void delete(final File file) throws Exception {
+ assertEventuallyTrue("deleting " + file, new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ if (file == null) {
+ return true;
+ }
+ try {
+ FileUtil.delete(file);
+ } catch (IOException e) {
+ }
+ return !file.exists();
+ }
+ }, WAIT_FOR_FILE_DELETION_TIMEOUT, INTERVAL);
+ }
+
+ protected void waitForPidToStop(final int pid, boolean throwOnTimeout) throws Exception {
+ assertEventuallyFalse("Process never died", new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return ProcessUtils.isProcessAlive(pid);
+ }
+ }, WAIT_FOR_PROCESS_TO_DIE_TIMEOUT, INTERVAL);
+ }
+
+ protected void waitForPidToStop(final int pid) throws Exception {
+ waitForPidToStop(pid, true);
+ }
+
+ protected void waitForFileToDelete(final File file, boolean throwOnTimeout) throws Exception {
+ if (file == null) {
+ return;
+ }
+ assertEventuallyTrue("waiting for file " + file + " to delete", new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return !file.exists();
+ }
+ }, WAIT_FOR_FILE_DELETION_TIMEOUT, INTERVAL);
+ }
+
+ protected void waitForFileToDelete(final File file) throws Exception {
+ waitForFileToDelete(file, true);
+ }
+
+ protected static int getPid() throws PidUnavailableException {
+ return ProcessUtils.identifyPid();
+ }
+
+ protected InputListener createLoggingListener(final String name, final String header) {
+ return new InputListener() {
+ @Override
+ public void notifyInputLine(String line) {
+ logger.info(new StringBuilder("[").append(header).append("]").append(line).toString());
+ }
+ @Override
+ public String toString() {
+ return name;
+ }
+ };
+ }
+
+ protected InputListener createCollectionListener(final String name, final String header, final List<String> lines) {
+ return new InputListener() {
+ @Override
+ public void notifyInputLine(String line) {
+ lines.add(line);
+ }
+ @Override
+ public String toString() {
+ return name;
+ }
+ };
+ }
+
+ protected InputListener createExpectedListener(final String name, final String header, final String expected, final AtomicBoolean atomic) {
+ return new InputListener() {
+ @Override
+ public void notifyInputLine(String line) {
+ if (line.contains(expected)) {
+ atomic.set(true);
+ }
+ }
+ @Override
+ public String toString() {
+ return name;
+ }
+ };
+ }
+
+ protected void writeGemfireProperties(final Properties gemfireProperties, final File gemfirePropertiesFile) throws IOException {
+ if (!gemfirePropertiesFile.exists()) {
+ gemfireProperties.store(new FileWriter(gemfirePropertiesFile), "Configuration settings for the GemFire Server");
+ }
+ }
+
+ protected int readPid(final File pidFile) throws IOException {
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new FileReader(pidFile));
+ return Integer.parseInt(StringUtils.trim(reader.readLine()));
+ }
+ finally {
+ IOUtils.close(reader);
+ }
+ }
+
+ protected void writePid(final File pidFile, final int pid) throws IOException {
+ FileWriter writer = new FileWriter(pidFile);
+ writer.write(String.valueOf(pid));
+ writer.write("\n");
+ writer.flush();
+ writer.close();
+ }
+
+ protected void waitForFileToExist(final File file, boolean throwOnTimeout) throws Exception {
+ assertEventuallyTrue("waiting for file " + file + " to exist", new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return file.exists();
+ }
+ }, WAIT_FOR_FILE_CREATION_TIMEOUT, INTERVAL);
+ }
+
+ protected void waitForFileToExist(final File file) throws Exception {
+ waitForFileToExist(file, true);
+ }
+
+ protected String getUniqueName() {
+ return getClass().getSimpleName() + "_" + testName.getMethodName();
+ }
+
+ protected static void assertEventuallyTrue(final String message, final Callable<Boolean> callable, final int timeout, final int interval) throws Exception {
+ boolean done = false;
+ for (StopWatch time = new StopWatch(true); !done && time.elapsedTimeMillis() < timeout; done = (callable.call())) {
+ Thread.sleep(interval);
+ }
+ assertTrue(message, done);
+ }
+
+ protected static void assertEventuallyFalse(final String message, final Callable<Boolean> callable, final int timeout, final int interval) throws Exception {
+ boolean done = false;
+ for (StopWatch time = new StopWatch(true); !done && time.elapsedTimeMillis() < timeout; done = (!callable.call())) {
+ Thread.sleep(interval);
+ }
+ assertTrue(message, done);
+ }
+
+ protected static void disconnectFromDS() {
+ InternalDistributedSystem ids = InternalDistributedSystem.getConnectedInstance();
+ if (ids != null) {
+ ids.disconnect();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherJUnitTest.java
deleted file mode 100644
index f5867d4..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherJUnitTest.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.distributed;
-
-import static org.junit.Assert.*;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-
-import com.gemstone.gemfire.distributed.internal.DistributionConfig;
-import com.gemstone.gemfire.internal.lang.StringUtils;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-/**
- * The AbstractLauncherJUnitTest class is a test suite of unit tests testing the contract and functionality
- * of the AbstractLauncher class.
- * <p/>
- * @see com.gemstone.gemfire.distributed.AbstractLauncher
- * @see org.junit.Assert
- * @see org.junit.Test
- * @since 7.0
- */
-@Category(UnitTest.class)
-public class AbstractLauncherJUnitTest {
-
- protected AbstractLauncher<?> createAbstractLauncher(final String memberName, final String memberId) {
- return new FakeServiceLauncher(memberName, memberId);
- }
-
- @Test
- public void testIsAttachAPINotFound() {
- final AbstractLauncher<?> launcher = createAbstractLauncher("012", "TestMember");
-
- assertTrue(launcher.isAttachAPINotFound(new NoClassDefFoundError(
- "Exception in thread \"main\" java.lang.NoClassDefFoundError: com/sun/tools/attach/AttachNotSupportedException")));
- assertTrue(launcher.isAttachAPINotFound(new ClassNotFoundException(
- "Caused by: java.lang.ClassNotFoundException: com.sun.tools.attach.AttachNotSupportedException")));
- assertTrue(launcher.isAttachAPINotFound(new NoClassDefFoundError(
- "Exception in thread \"main\" java.lang.NoClassDefFoundError: com/ibm/tools/attach/AgentNotSupportedException")));
- assertTrue(launcher.isAttachAPINotFound(new ClassNotFoundException(
- "Caused by: java.lang.ClassNotFoundException: com.ibm.tools.attach.AgentNotSupportedException")));
- assertFalse(launcher.isAttachAPINotFound(new IllegalArgumentException(
- "Caused by: java.lang.ClassNotFoundException: com.sun.tools.attach.AttachNotSupportedException")));
- assertFalse(launcher.isAttachAPINotFound(new IllegalStateException(
- "Caused by: java.lang.ClassNotFoundException: com.ibm.tools.attach.AgentNotSupportedException")));
- assertFalse(launcher.isAttachAPINotFound(new NoClassDefFoundError(
- "Exception in thread \"main\" java.lang.NoClassDefFoundError: com/companyx/app/service/MyServiceClass")));
- assertFalse(launcher.isAttachAPINotFound(new ClassNotFoundException(
- "Caused by: java.lang.ClassNotFoundException: com.companyx.app.attach.NutsNotAttachedException")));
- }
-
- @Test
- public void testIsSet() {
- final Properties properties = new Properties();
-
- assertFalse(properties.containsKey(DistributionConfig.NAME_NAME));
- assertFalse(AbstractLauncher.isSet(properties, DistributionConfig.NAME_NAME));
-
- properties.setProperty(DistributionConfig.NAME_NAME, "");
-
- assertTrue(properties.containsKey(DistributionConfig.NAME_NAME));
- assertFalse(AbstractLauncher.isSet(properties, DistributionConfig.NAME_NAME));
-
- properties.setProperty(DistributionConfig.NAME_NAME, " ");
-
- assertTrue(properties.containsKey(DistributionConfig.NAME_NAME));
- assertFalse(AbstractLauncher.isSet(properties, DistributionConfig.NAME_NAME));
-
- properties.setProperty(DistributionConfig.NAME_NAME, "memberOne");
-
- assertTrue(AbstractLauncher.isSet(properties, DistributionConfig.NAME_NAME));
- assertFalse(AbstractLauncher.isSet(properties, "NaMe"));
- }
-
- @Test
- public void testLoadGemFirePropertiesWithNullURL() {
- final Properties properties = AbstractLauncher.loadGemFireProperties(null);
- assertNotNull(properties);
- assertTrue(properties.isEmpty());
- }
-
- @Test
- public void testLoadGemFirePropertiesWithNonExistingURL() throws MalformedURLException {
- final Properties properties = AbstractLauncher.loadGemFireProperties(new URL("file:///path/to/non_existing/gemfire.properties"));
- assertNotNull(properties);
- assertTrue(properties.isEmpty());
- }
-
- @Test
- public void testGetDistributedSystemProperties() {
- AbstractLauncher<?> launcher = createAbstractLauncher("memberOne", "1");
-
- assertNotNull(launcher);
- assertEquals("1", launcher.getMemberId());
- assertEquals("memberOne", launcher.getMemberName());
-
- Properties distributedSystemProperties = launcher.getDistributedSystemProperties();
-
- assertNotNull(distributedSystemProperties);
- assertTrue(distributedSystemProperties.containsKey(DistributionConfig.NAME_NAME));
- assertEquals("memberOne", distributedSystemProperties.getProperty(DistributionConfig.NAME_NAME));
-
- launcher = createAbstractLauncher(null, "22");
-
- assertNotNull(launcher);
- assertEquals("22", launcher.getMemberId());
- assertNull(launcher.getMemberName());
-
- distributedSystemProperties = launcher.getDistributedSystemProperties();
-
- assertNotNull(distributedSystemProperties);
- assertFalse(distributedSystemProperties.containsKey(DistributionConfig.NAME_NAME));
-
- launcher = createAbstractLauncher(StringUtils.EMPTY_STRING, "333");
-
- assertNotNull(launcher);
- assertEquals("333", launcher.getMemberId());
- assertEquals(StringUtils.EMPTY_STRING, launcher.getMemberName());
-
- distributedSystemProperties = launcher.getDistributedSystemProperties();
-
- assertNotNull(distributedSystemProperties);
- assertFalse(distributedSystemProperties.containsKey(DistributionConfig.NAME_NAME));
-
- launcher = createAbstractLauncher(" ", "4444");
-
- assertNotNull(launcher);
- assertEquals("4444", launcher.getMemberId());
- assertEquals(" ", launcher.getMemberName());
-
- distributedSystemProperties = launcher.getDistributedSystemProperties();
-
- assertNotNull(distributedSystemProperties);
- assertFalse(distributedSystemProperties.containsKey(DistributionConfig.NAME_NAME));
- }
-
- @Test
- public void testGetDistributedSystemPropertiesWithDefaults() {
- AbstractLauncher<?> launcher = createAbstractLauncher("TestMember", "123");
-
- assertNotNull(launcher);
- assertEquals("123", launcher.getMemberId());
- assertEquals("TestMember", launcher.getMemberName());
-
- Properties defaults = new Properties();
-
- defaults.setProperty("testKey", "testValue");
-
- Properties distributedSystemProperties = launcher.getDistributedSystemProperties(defaults);
-
- assertNotNull(distributedSystemProperties);
- assertEquals(launcher.getMemberName(), distributedSystemProperties.getProperty(DistributionConfig.NAME_NAME));
- assertEquals("testValue", distributedSystemProperties.getProperty("testKey"));
- }
-
- @Test
- public void testGetMember() {
- AbstractLauncher<?> launcher = createAbstractLauncher("memberOne", "123");
-
- assertNotNull(launcher);
- assertEquals("123", launcher.getMemberId());
- assertEquals("memberOne", launcher.getMemberName());
- assertEquals("memberOne", launcher.getMember());
-
- launcher = createAbstractLauncher(null, "123");
-
- assertNotNull(launcher);
- assertEquals("123", launcher.getMemberId());
- assertNull(launcher.getMemberName());
- assertEquals("123", launcher.getMember());
-
- launcher = createAbstractLauncher(StringUtils.EMPTY_STRING, "123");
-
- assertNotNull(launcher);
- assertEquals("123", launcher.getMemberId());
- assertEquals(StringUtils.EMPTY_STRING, launcher.getMemberName());
- assertEquals("123", launcher.getMember());
-
- launcher = createAbstractLauncher(" ", "123");
-
- assertNotNull(launcher);
- assertEquals("123", launcher.getMemberId());
- assertEquals(" ", launcher.getMemberName());
- assertEquals("123", launcher.getMember());
-
- launcher = createAbstractLauncher(null, StringUtils.EMPTY_STRING);
-
- assertNotNull(launcher);
- assertEquals(StringUtils.EMPTY_STRING, launcher.getMemberId());
- assertNull(launcher.getMemberName());
- assertNull(launcher.getMember());
-
- launcher = createAbstractLauncher(null, " ");
-
- assertNotNull(launcher);
- assertEquals(" ", launcher.getMemberId());
- assertNull(launcher.getMemberName());
- assertNull(launcher.getMember());
- }
-
- @Test
- public void testAbstractLauncherServiceStateToDaysHoursMinutesSeconds() {
- assertEquals("", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(null));
- assertEquals("0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(0l));
- assertEquals("1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(1000l));
- assertEquals("1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(1999l));
- assertEquals("2 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(2001l));
- assertEquals("45 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(45000l));
- assertEquals("1 minute 0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 1000l));
- assertEquals("1 minute 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(61 * 1000l));
- assertEquals("1 minute 30 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(90 * 1000l));
- assertEquals("2 minutes 0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(120 * 1000l));
- assertEquals("2 minutes 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(121 * 1000l));
- assertEquals("2 minutes 15 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(135 * 1000l));
- assertEquals("1 hour 0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 60 * 1000l));
- assertEquals("1 hour 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 60 * 1000l + 1000l));
- assertEquals("1 hour 15 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 60 * 1000l + 15000l));
- assertEquals("1 hour 1 minute 0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 61 * 1000l));
- assertEquals("1 hour 1 minute 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 61 * 1000l + 1000l));
- assertEquals("1 hour 1 minute 45 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 61 * 1000l + 45000l));
- assertEquals("1 hour 2 minutes 0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 62 * 1000l));
- assertEquals("1 hour 5 minutes 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 65 * 1000l + 1000l));
- assertEquals("1 hour 5 minutes 10 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 65 * 1000l + 10000l));
- assertEquals("1 hour 59 minutes 11 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 119 * 1000l + 11000l));
- assertEquals("1 day 1 hour 1 minute 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(
- TimeUnit.DAYS.toMillis(1) + TimeUnit.HOURS.toMillis(1) + TimeUnit.MINUTES.toMillis(1) + TimeUnit.SECONDS.toMillis(1)));
- assertEquals("1 day 5 hours 15 minutes 45 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(
- TimeUnit.DAYS.toMillis(1) + TimeUnit.HOURS.toMillis(5) + TimeUnit.MINUTES.toMillis(15) + TimeUnit.SECONDS.toMillis(45)));
- assertEquals("2 days 1 hour 30 minutes 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(
- TimeUnit.DAYS.toMillis(2) + TimeUnit.HOURS.toMillis(1) + TimeUnit.MINUTES.toMillis(30) + TimeUnit.SECONDS.toMillis(1)));
- }
-
- protected static final class FakeServiceLauncher extends AbstractLauncher<String> {
-
- private final String memberId;
- private final String memberName;
-
- public FakeServiceLauncher(final String memberName, final String memberId) {
- this.memberId = memberId;
- this.memberName = memberName;
- }
-
- @Override
- boolean isAttachAPIOnClasspath() {
- return false;
- }
-
- @Override
- public String getLogFileName() {
- throw new UnsupportedOperationException("Not Implemented!");
- }
-
- @Override
- public String getMemberId() {
- return memberId;
- }
-
- @Override
- public String getMemberName() {
- return memberName;
- }
-
- @Override
- public Integer getPid() {
- throw new UnsupportedOperationException("Not Implemented!");
- }
-
- @Override
- public String getServiceName() {
- return "TestService";
- }
-
- @Override
- public void run() {
- throw new UnsupportedOperationException("Not Implemented!");
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherJUnitTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherJUnitTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherJUnitTestCase.java
deleted file mode 100755
index 77961e0..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherJUnitTestCase.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.distributed;
-
-import static org.junit.Assert.assertTrue;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.util.List;
-import java.util.Properties;
-import java.util.concurrent.Callable;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.contrib.java.lang.system.RestoreSystemProperties;
-import org.junit.rules.TestName;
-
-import com.gemstone.gemfire.distributed.internal.DistributionConfig;
-import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
-import com.gemstone.gemfire.internal.FileUtil;
-import com.gemstone.gemfire.internal.lang.StringUtils;
-import com.gemstone.gemfire.internal.logging.LogService;
-import com.gemstone.gemfire.internal.process.PidUnavailableException;
-import com.gemstone.gemfire.internal.process.ProcessUtils;
-import com.gemstone.gemfire.internal.process.ProcessStreamReader.InputListener;
-import com.gemstone.gemfire.internal.util.IOUtils;
-import com.gemstone.gemfire.internal.util.StopWatch;
-
-/**
- * @since 8.0
- */
-public abstract class AbstractLauncherJUnitTestCase {
- protected static final Logger logger = LogService.getLogger();
-
- protected static final int WAIT_FOR_PROCESS_TO_DIE_TIMEOUT = 5 * 60 * 1000; // 5 minutes
- protected static final int TIMEOUT_MILLISECONDS = WAIT_FOR_PROCESS_TO_DIE_TIMEOUT;
- protected static final int WAIT_FOR_FILE_CREATION_TIMEOUT = 10*1000;
- protected static final int WAIT_FOR_FILE_DELETION_TIMEOUT = 10*1000;
- protected static final int WAIT_FOR_MBEAN_TIMEOUT = 10*1000;
- protected static final int INTERVAL = 100;
- protected static final int INTERVAL_MILLISECONDS = INTERVAL;
-
- private static final String EXPECTED_EXCEPTION_ADD = "<ExpectedException action=add>{}</ExpectedException>";
- private static final String EXPECTED_EXCEPTION_REMOVE = "<ExpectedException action=remove>{}</ExpectedException>";
- private static final String EXPECTED_EXCEPTION_MBEAN_NOT_REGISTERED = "MBean Not Registered In GemFire Domain";
-
- protected volatile ServerSocket socket;
-
- protected volatile File pidFile;
- protected volatile File stopRequestFile;
- protected volatile File statusRequestFile;
- protected volatile File statusFile;
-
- @Rule
- public TestName testName= new TestName();
-
- @Rule
- public RestoreSystemProperties restoreSystemProperties = new RestoreSystemProperties();
-
- @Before
- public final void setUpLauncherTest() throws Exception {
- System.setProperty("gemfire." + DistributionConfig.MCAST_PORT_NAME, Integer.toString(0));
- logger.info(EXPECTED_EXCEPTION_ADD, EXPECTED_EXCEPTION_MBEAN_NOT_REGISTERED);
- }
-
- @After
- public final void tearDownLauncherTest() throws Exception {
- logger.info(EXPECTED_EXCEPTION_REMOVE, EXPECTED_EXCEPTION_MBEAN_NOT_REGISTERED);
- if (this.socket != null) {
- this.socket.close();
- this.socket = null;
- }
- delete(this.pidFile); this.pidFile = null;
- delete(this.stopRequestFile); this.stopRequestFile = null;
- delete(this.statusRequestFile); this.statusRequestFile = null;
- delete(this.statusFile); this.statusFile = null;
- }
-
- protected void delete(final File file) throws Exception {
- assertEventuallyTrue("deleting " + file, new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- if (file == null) {
- return true;
- }
- try {
- FileUtil.delete(file);
- } catch (IOException e) {
- }
- return !file.exists();
- }
- }, WAIT_FOR_FILE_DELETION_TIMEOUT, INTERVAL);
- }
-
- protected void waitForPidToStop(final int pid, boolean throwOnTimeout) throws Exception {
- assertEventuallyFalse("Process never died", new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- return ProcessUtils.isProcessAlive(pid);
- }
- }, WAIT_FOR_PROCESS_TO_DIE_TIMEOUT, INTERVAL);
- }
-
- protected void waitForPidToStop(final int pid) throws Exception {
- waitForPidToStop(pid, true);
- }
-
- protected void waitForFileToDelete(final File file, boolean throwOnTimeout) throws Exception {
- if (file == null) {
- return;
- }
- assertEventuallyTrue("waiting for file " + file + " to delete", new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- return !file.exists();
- }
- }, WAIT_FOR_FILE_DELETION_TIMEOUT, INTERVAL);
- }
-
- protected void waitForFileToDelete(final File file) throws Exception {
- waitForFileToDelete(file, true);
- }
-
- protected static int getPid() throws PidUnavailableException {
- return ProcessUtils.identifyPid();
- }
-
- protected InputListener createLoggingListener(final String name, final String header) {
- return new InputListener() {
- @Override
- public void notifyInputLine(String line) {
- logger.info(new StringBuilder("[").append(header).append("]").append(line).toString());
- }
- @Override
- public String toString() {
- return name;
- }
- };
- }
-
- protected InputListener createCollectionListener(final String name, final String header, final List<String> lines) {
- return new InputListener() {
- @Override
- public void notifyInputLine(String line) {
- lines.add(line);
- }
- @Override
- public String toString() {
- return name;
- }
- };
- }
-
- protected InputListener createExpectedListener(final String name, final String header, final String expected, final AtomicBoolean atomic) {
- return new InputListener() {
- @Override
- public void notifyInputLine(String line) {
- if (line.contains(expected)) {
- atomic.set(true);
- }
- }
- @Override
- public String toString() {
- return name;
- }
- };
- }
-
- protected void writeGemfireProperties(final Properties gemfireProperties, final File gemfirePropertiesFile) throws IOException {
- if (!gemfirePropertiesFile.exists()) {
- gemfireProperties.store(new FileWriter(gemfirePropertiesFile), "Configuration settings for the GemFire Server");
- }
- }
-
- protected int readPid(final File pidFile) throws IOException {
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new FileReader(pidFile));
- return Integer.parseInt(StringUtils.trim(reader.readLine()));
- }
- finally {
- IOUtils.close(reader);
- }
- }
-
- protected void writePid(final File pidFile, final int pid) throws IOException {
- FileWriter writer = new FileWriter(pidFile);
- writer.write(String.valueOf(pid));
- writer.write("\n");
- writer.flush();
- writer.close();
- }
-
- protected void waitForFileToExist(final File file, boolean throwOnTimeout) throws Exception {
- assertEventuallyTrue("waiting for file " + file + " to exist", new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- return file.exists();
- }
- }, WAIT_FOR_FILE_CREATION_TIMEOUT, INTERVAL);
- }
-
- protected void waitForFileToExist(final File file) throws Exception {
- waitForFileToExist(file, true);
- }
-
- protected String getUniqueName() {
- return getClass().getSimpleName() + "_" + testName.getMethodName();
- }
-
- protected static void assertEventuallyTrue(final String message, final Callable<Boolean> callable, final int timeout, final int interval) throws Exception {
- boolean done = false;
- for (StopWatch time = new StopWatch(true); !done && time.elapsedTimeMillis() < timeout; done = (callable.call())) {
- Thread.sleep(interval);
- }
- assertTrue(message, done);
- }
-
- protected static void assertEventuallyFalse(final String message, final Callable<Boolean> callable, final int timeout, final int interval) throws Exception {
- boolean done = false;
- for (StopWatch time = new StopWatch(true); !done && time.elapsedTimeMillis() < timeout; done = (!callable.call())) {
- Thread.sleep(interval);
- }
- assertTrue(message, done);
- }
-
- protected static void disconnectFromDS() {
- InternalDistributedSystem ids = InternalDistributedSystem.getConnectedInstance();
- if (ids != null) {
- ids.disconnect();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherServiceStatusJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherServiceStatusJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherServiceStatusJUnitTest.java
deleted file mode 100755
index ca24a4e..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherServiceStatusJUnitTest.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.distributed;
-
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.management.ManagementFactory;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Arrays;
-import java.util.List;
-
-import com.gemstone.gemfire.distributed.AbstractLauncherServiceStatusJUnitTest.TestLauncher.TestState;
-import com.gemstone.gemfire.internal.GemFireVersion;
-import com.gemstone.gemfire.internal.process.PidUnavailableException;
-import com.gemstone.gemfire.internal.process.ProcessUtils;
-import com.gemstone.gemfire.management.internal.cli.json.GfJsonArray;
-import com.gemstone.gemfire.management.internal.cli.json.GfJsonException;
-import com.gemstone.gemfire.management.internal.cli.json.GfJsonObject;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-/**
- * Tests marshaling of ServiceStatus to and from JSON.
- *
- * @since 7.0
- */
-@Category(UnitTest.class)
-public class AbstractLauncherServiceStatusJUnitTest {
-
- private static final String SERVICE_NAME = "Test";
- private static final InetAddress HOST = getLocalHost();
- private static final int PORT = 12345;
- private static final String NAME = AbstractLauncherServiceStatusJUnitTest.class.getSimpleName();
- private static final int PID = identifyPid();
- private static final long UPTIME = 123456789;
- private static final String WORKING_DIRECTORY = identifyWorkingDirectory();
- private static final List<String> JVM_ARGUMENTS = ManagementFactory.getRuntimeMXBean().getInputArguments();
- private static final String CLASSPATH = ManagementFactory.getRuntimeMXBean().getClassPath();
- private static final String GEMFIRE_VERSION = GemFireVersion.getGemFireVersion();
- private static final String JAVA_VERSION = System.getProperty("java.version");
-
- private TestLauncher launcher;
-
- @Before
- public void setUp() {
- this.launcher = new TestLauncher(HOST, PORT, NAME);
- }
-
- @Test
- public void testMarshallingTestStatusToAndFromJson() {
- final TestState status = this.launcher.status();
- final String json = status.toJson();
- validateJson(status, json);
- validateStatus(status, TestState.fromJson(json));
- }
-
- private void validateStatus(final TestState expected, final TestState actual) {
- assertEquals(expected.getClasspath(), actual.getClasspath());
- assertEquals(expected.getGemFireVersion(), actual.getGemFireVersion());
- assertEquals(expected.getJavaVersion(), actual.getJavaVersion());
- assertEquals(expected.getJvmArguments(), actual.getJvmArguments());
- assertEquals(expected.getPid(), actual.getPid());
- assertEquals(expected.getStatus(), actual.getStatus());
- assertEquals(expected.getTimestamp(), actual.getTimestamp());
- assertEquals(expected.getUptime(), actual.getUptime());
- assertEquals(expected.getWorkingDirectory(), actual.getWorkingDirectory());
- assertEquals(expected.getHost(), actual.getHost());
- assertEquals(expected.getPort(), actual.getPort());
- assertEquals(expected.getMemberName(), actual.getMemberName());
- }
-
- private void validateJson(final TestState expected, final String json) {
- final TestState actual = TestState.fromJson(json);
- validateStatus(expected, actual);
- }
-
- private static int identifyPid() {
- try {
- return ProcessUtils.identifyPid();
- }
- catch (PidUnavailableException e) {
- return 0;
- }
- }
-
- private static String identifyWorkingDirectory() {
- try {
- return new File(System.getProperty("user.dir")).getCanonicalPath();
- }
- catch (IOException e) {
- return new File(System.getProperty("user.dir")).getAbsolutePath();
- }
- }
-
- private static InetAddress getLocalHost() {
- try {
- return InetAddress.getLocalHost();
- }
- catch (UnknownHostException e) {
- return null;
- }
- }
-
- static class TestLauncher extends AbstractLauncher<String> {
-
- private final InetAddress bindAddress;
- private final int port;
- private final String memberName;
- private final File logFile;
-
- TestLauncher(InetAddress bindAddress,
- int port,
- String memberName) {
- this.bindAddress = bindAddress;
- this.port = port;
- this.memberName = memberName;
- this.logFile = new File(memberName + ".log");
- }
-
- public TestState status() {
- return new TestState(Status.ONLINE,
- null,
- System.currentTimeMillis(),
- getId(),
- PID,
- UPTIME,
- WORKING_DIRECTORY,
- JVM_ARGUMENTS,
- CLASSPATH,
- GEMFIRE_VERSION,
- JAVA_VERSION,
- getLogFileName(),
- getBindAddressAsString(),
- getPortAsString(),
- NAME);
- }
-
- @Override
- public void run() {
- }
-
- public String getId() {
- return getServiceName() + "@" + getBindAddress() + "[" + getPort() + "]";
- }
-
- @Override
- public String getLogFileName() {
- try {
- return this.logFile.getCanonicalPath();
- }
- catch (IOException e) {
- return this.logFile.getAbsolutePath();
- }
- }
-
- @Override
- public String getMemberName() {
- return this.memberName;
- }
-
- @Override
- public Integer getPid() {
- return null;
- }
-
- @Override
- public String getServiceName() {
- return SERVICE_NAME;
- }
-
- InetAddress getBindAddress() {
- return this.bindAddress;
- }
-
- String getBindAddressAsString() {
- return this.bindAddress.getCanonicalHostName();
- }
-
- int getPort() {
- return this.port;
- }
-
- String getPortAsString() {
- return String.valueOf(getPort());
- }
-
- public static class TestState extends ServiceState<String> {
-
- protected static TestState fromJson(final String json) {
- try {
- final GfJsonObject gfJsonObject = new GfJsonObject(json);
-
- final Status status = Status.valueOfDescription(gfJsonObject.getString(JSON_STATUS));
- final List<String> jvmArguments =
- Arrays.asList(GfJsonArray.toStringArray(gfJsonObject.getJSONArray(JSON_JVMARGUMENTS)));
-
- return new TestState(status,
- gfJsonObject.getString(JSON_STATUSMESSAGE),
- gfJsonObject.getLong(JSON_TIMESTAMP),
- gfJsonObject.getString(JSON_LOCATION),
- gfJsonObject.getInt(JSON_PID),
- gfJsonObject.getLong(JSON_UPTIME),
- gfJsonObject.getString(JSON_WORKINGDIRECTORY),
- jvmArguments,
- gfJsonObject.getString(JSON_CLASSPATH),
- gfJsonObject.getString(JSON_GEMFIREVERSION),
- gfJsonObject.getString(JSON_JAVAVERSION),
- gfJsonObject.getString(JSON_LOGFILE),
- gfJsonObject.getString(JSON_HOST),
- gfJsonObject.getString(JSON_PORT),
- gfJsonObject.getString(JSON_MEMBERNAME));
- }
- catch (GfJsonException e) {
- throw new IllegalArgumentException("Unable to create TestState from JSON: " + json);
- }
- }
-
- protected TestState(final Status status,
- final String statusMessage,
- final long timestamp,
- final String location,
- final Integer pid,
- final Long uptime,
- final String workingDirectory,
- final List<String> jvmArguments,
- final String classpath,
- final String gemfireVersion,
- final String javaVersion,
- final String logFile,
- final String host,
- final String port,
- final String name) {
- super(status, statusMessage, timestamp, location, pid, uptime, workingDirectory, jvmArguments, classpath,
- gemfireVersion, javaVersion, logFile, host, port, name);
- }
-
- @Override
- protected String getServiceName() {
- return SERVICE_NAME;
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherServiceStatusTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherServiceStatusTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherServiceStatusTest.java
new file mode 100755
index 0000000..a0c381e
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherServiceStatusTest.java
@@ -0,0 +1,264 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.distributed;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Arrays;
+import java.util.List;
+
+import com.gemstone.gemfire.distributed.AbstractLauncherServiceStatusTest.TestLauncher.TestState;
+import com.gemstone.gemfire.internal.GemFireVersion;
+import com.gemstone.gemfire.internal.process.PidUnavailableException;
+import com.gemstone.gemfire.internal.process.ProcessUtils;
+import com.gemstone.gemfire.management.internal.cli.json.GfJsonArray;
+import com.gemstone.gemfire.management.internal.cli.json.GfJsonException;
+import com.gemstone.gemfire.management.internal.cli.json.GfJsonObject;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+/**
+ * Tests marshaling of ServiceStatus to and from JSON.
+ *
+ * @since 7.0
+ */
+@Category(UnitTest.class)
+public class AbstractLauncherServiceStatusTest {
+
+ private static final String SERVICE_NAME = "Test";
+ private static final InetAddress HOST = getLocalHost();
+ private static final int PORT = 12345;
+ private static final String NAME = AbstractLauncherServiceStatusTest.class.getSimpleName();
+ private static final int PID = identifyPid();
+ private static final long UPTIME = 123456789;
+ private static final String WORKING_DIRECTORY = identifyWorkingDirectory();
+ private static final List<String> JVM_ARGUMENTS = ManagementFactory.getRuntimeMXBean().getInputArguments();
+ private static final String CLASSPATH = ManagementFactory.getRuntimeMXBean().getClassPath();
+ private static final String GEMFIRE_VERSION = GemFireVersion.getGemFireVersion();
+ private static final String JAVA_VERSION = System.getProperty("java.version");
+
+ private TestLauncher launcher;
+
+ @Before
+ public void setUp() {
+ this.launcher = new TestLauncher(HOST, PORT, NAME);
+ }
+
+ @Test
+ public void testMarshallingTestStatusToAndFromJson() {
+ final TestState status = this.launcher.status();
+ final String json = status.toJson();
+ validateJson(status, json);
+ validateStatus(status, TestState.fromJson(json));
+ }
+
+ private void validateStatus(final TestState expected, final TestState actual) {
+ assertEquals(expected.getClasspath(), actual.getClasspath());
+ assertEquals(expected.getGemFireVersion(), actual.getGemFireVersion());
+ assertEquals(expected.getJavaVersion(), actual.getJavaVersion());
+ assertEquals(expected.getJvmArguments(), actual.getJvmArguments());
+ assertEquals(expected.getPid(), actual.getPid());
+ assertEquals(expected.getStatus(), actual.getStatus());
+ assertEquals(expected.getTimestamp(), actual.getTimestamp());
+ assertEquals(expected.getUptime(), actual.getUptime());
+ assertEquals(expected.getWorkingDirectory(), actual.getWorkingDirectory());
+ assertEquals(expected.getHost(), actual.getHost());
+ assertEquals(expected.getPort(), actual.getPort());
+ assertEquals(expected.getMemberName(), actual.getMemberName());
+ }
+
+ private void validateJson(final TestState expected, final String json) {
+ final TestState actual = TestState.fromJson(json);
+ validateStatus(expected, actual);
+ }
+
+ private static int identifyPid() {
+ try {
+ return ProcessUtils.identifyPid();
+ }
+ catch (PidUnavailableException e) {
+ return 0;
+ }
+ }
+
+ private static String identifyWorkingDirectory() {
+ try {
+ return new File(System.getProperty("user.dir")).getCanonicalPath();
+ }
+ catch (IOException e) {
+ return new File(System.getProperty("user.dir")).getAbsolutePath();
+ }
+ }
+
+ private static InetAddress getLocalHost() {
+ try {
+ return InetAddress.getLocalHost();
+ }
+ catch (UnknownHostException e) {
+ return null;
+ }
+ }
+
+ static class TestLauncher extends AbstractLauncher<String> {
+
+ private final InetAddress bindAddress;
+ private final int port;
+ private final String memberName;
+ private final File logFile;
+
+ TestLauncher(InetAddress bindAddress,
+ int port,
+ String memberName) {
+ this.bindAddress = bindAddress;
+ this.port = port;
+ this.memberName = memberName;
+ this.logFile = new File(memberName + ".log");
+ }
+
+ public TestState status() {
+ return new TestState(Status.ONLINE,
+ null,
+ System.currentTimeMillis(),
+ getId(),
+ PID,
+ UPTIME,
+ WORKING_DIRECTORY,
+ JVM_ARGUMENTS,
+ CLASSPATH,
+ GEMFIRE_VERSION,
+ JAVA_VERSION,
+ getLogFileName(),
+ getBindAddressAsString(),
+ getPortAsString(),
+ NAME);
+ }
+
+ @Override
+ public void run() {
+ }
+
+ public String getId() {
+ return getServiceName() + "@" + getBindAddress() + "[" + getPort() + "]";
+ }
+
+ @Override
+ public String getLogFileName() {
+ try {
+ return this.logFile.getCanonicalPath();
+ }
+ catch (IOException e) {
+ return this.logFile.getAbsolutePath();
+ }
+ }
+
+ @Override
+ public String getMemberName() {
+ return this.memberName;
+ }
+
+ @Override
+ public Integer getPid() {
+ return null;
+ }
+
+ @Override
+ public String getServiceName() {
+ return SERVICE_NAME;
+ }
+
+ InetAddress getBindAddress() {
+ return this.bindAddress;
+ }
+
+ String getBindAddressAsString() {
+ return this.bindAddress.getCanonicalHostName();
+ }
+
+ int getPort() {
+ return this.port;
+ }
+
+ String getPortAsString() {
+ return String.valueOf(getPort());
+ }
+
+ public static class TestState extends ServiceState<String> {
+
+ protected static TestState fromJson(final String json) {
+ try {
+ final GfJsonObject gfJsonObject = new GfJsonObject(json);
+
+ final Status status = Status.valueOfDescription(gfJsonObject.getString(JSON_STATUS));
+ final List<String> jvmArguments =
+ Arrays.asList(GfJsonArray.toStringArray(gfJsonObject.getJSONArray(JSON_JVMARGUMENTS)));
+
+ return new TestState(status,
+ gfJsonObject.getString(JSON_STATUSMESSAGE),
+ gfJsonObject.getLong(JSON_TIMESTAMP),
+ gfJsonObject.getString(JSON_LOCATION),
+ gfJsonObject.getInt(JSON_PID),
+ gfJsonObject.getLong(JSON_UPTIME),
+ gfJsonObject.getString(JSON_WORKINGDIRECTORY),
+ jvmArguments,
+ gfJsonObject.getString(JSON_CLASSPATH),
+ gfJsonObject.getString(JSON_GEMFIREVERSION),
+ gfJsonObject.getString(JSON_JAVAVERSION),
+ gfJsonObject.getString(JSON_LOGFILE),
+ gfJsonObject.getString(JSON_HOST),
+ gfJsonObject.getString(JSON_PORT),
+ gfJsonObject.getString(JSON_MEMBERNAME));
+ }
+ catch (GfJsonException e) {
+ throw new IllegalArgumentException("Unable to create TestState from JSON: " + json);
+ }
+ }
+
+ protected TestState(final Status status,
+ final String statusMessage,
+ final long timestamp,
+ final String location,
+ final Integer pid,
+ final Long uptime,
+ final String workingDirectory,
+ final List<String> jvmArguments,
+ final String classpath,
+ final String gemfireVersion,
+ final String javaVersion,
+ final String logFile,
+ final String host,
+ final String port,
+ final String name) {
+ super(status, statusMessage, timestamp, location, pid, uptime, workingDirectory, jvmArguments, classpath,
+ gemfireVersion, javaVersion, logFile, host, port, name);
+ }
+
+ @Override
+ protected String getServiceName() {
+ return SERVICE_NAME;
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherTest.java
new file mode 100644
index 0000000..02bfa00
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLauncherTest.java
@@ -0,0 +1,298 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.distributed;
+
+import static org.junit.Assert.*;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.internal.lang.StringUtils;
+import com.gemstone.gemfire.test.junit.categories.UnitTest;
+
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+/**
+ * The AbstractLauncherTest class is a test suite of unit tests testing the contract and functionality
+ * of the AbstractLauncher class.
+ * <p/>
+ * @see com.gemstone.gemfire.distributed.AbstractLauncher
+ * @see org.junit.Assert
+ * @see org.junit.Test
+ * @since 7.0
+ */
+@Category(UnitTest.class)
+public class AbstractLauncherTest {
+
+ protected AbstractLauncher<?> createAbstractLauncher(final String memberName, final String memberId) {
+ return new FakeServiceLauncher(memberName, memberId);
+ }
+
+ @Test
+ public void testIsAttachAPINotFound() {
+ final AbstractLauncher<?> launcher = createAbstractLauncher("012", "TestMember");
+
+ assertTrue(launcher.isAttachAPINotFound(new NoClassDefFoundError(
+ "Exception in thread \"main\" java.lang.NoClassDefFoundError: com/sun/tools/attach/AttachNotSupportedException")));
+ assertTrue(launcher.isAttachAPINotFound(new ClassNotFoundException(
+ "Caused by: java.lang.ClassNotFoundException: com.sun.tools.attach.AttachNotSupportedException")));
+ assertTrue(launcher.isAttachAPINotFound(new NoClassDefFoundError(
+ "Exception in thread \"main\" java.lang.NoClassDefFoundError: com/ibm/tools/attach/AgentNotSupportedException")));
+ assertTrue(launcher.isAttachAPINotFound(new ClassNotFoundException(
+ "Caused by: java.lang.ClassNotFoundException: com.ibm.tools.attach.AgentNotSupportedException")));
+ assertFalse(launcher.isAttachAPINotFound(new IllegalArgumentException(
+ "Caused by: java.lang.ClassNotFoundException: com.sun.tools.attach.AttachNotSupportedException")));
+ assertFalse(launcher.isAttachAPINotFound(new IllegalStateException(
+ "Caused by: java.lang.ClassNotFoundException: com.ibm.tools.attach.AgentNotSupportedException")));
+ assertFalse(launcher.isAttachAPINotFound(new NoClassDefFoundError(
+ "Exception in thread \"main\" java.lang.NoClassDefFoundError: com/companyx/app/service/MyServiceClass")));
+ assertFalse(launcher.isAttachAPINotFound(new ClassNotFoundException(
+ "Caused by: java.lang.ClassNotFoundException: com.companyx.app.attach.NutsNotAttachedException")));
+ }
+
+ @Test
+ public void testIsSet() {
+ final Properties properties = new Properties();
+
+ assertFalse(properties.containsKey(DistributionConfig.NAME_NAME));
+ assertFalse(AbstractLauncher.isSet(properties, DistributionConfig.NAME_NAME));
+
+ properties.setProperty(DistributionConfig.NAME_NAME, "");
+
+ assertTrue(properties.containsKey(DistributionConfig.NAME_NAME));
+ assertFalse(AbstractLauncher.isSet(properties, DistributionConfig.NAME_NAME));
+
+ properties.setProperty(DistributionConfig.NAME_NAME, " ");
+
+ assertTrue(properties.containsKey(DistributionConfig.NAME_NAME));
+ assertFalse(AbstractLauncher.isSet(properties, DistributionConfig.NAME_NAME));
+
+ properties.setProperty(DistributionConfig.NAME_NAME, "memberOne");
+
+ assertTrue(AbstractLauncher.isSet(properties, DistributionConfig.NAME_NAME));
+ assertFalse(AbstractLauncher.isSet(properties, "NaMe"));
+ }
+
+ @Test
+ public void testLoadGemFirePropertiesWithNullURL() {
+ final Properties properties = AbstractLauncher.loadGemFireProperties(null);
+ assertNotNull(properties);
+ assertTrue(properties.isEmpty());
+ }
+
+ @Test
+ public void testLoadGemFirePropertiesWithNonExistingURL() throws MalformedURLException {
+ final Properties properties = AbstractLauncher.loadGemFireProperties(new URL("file:///path/to/non_existing/gemfire.properties"));
+ assertNotNull(properties);
+ assertTrue(properties.isEmpty());
+ }
+
+ @Test
+ public void testGetDistributedSystemProperties() {
+ AbstractLauncher<?> launcher = createAbstractLauncher("memberOne", "1");
+
+ assertNotNull(launcher);
+ assertEquals("1", launcher.getMemberId());
+ assertEquals("memberOne", launcher.getMemberName());
+
+ Properties distributedSystemProperties = launcher.getDistributedSystemProperties();
+
+ assertNotNull(distributedSystemProperties);
+ assertTrue(distributedSystemProperties.containsKey(DistributionConfig.NAME_NAME));
+ assertEquals("memberOne", distributedSystemProperties.getProperty(DistributionConfig.NAME_NAME));
+
+ launcher = createAbstractLauncher(null, "22");
+
+ assertNotNull(launcher);
+ assertEquals("22", launcher.getMemberId());
+ assertNull(launcher.getMemberName());
+
+ distributedSystemProperties = launcher.getDistributedSystemProperties();
+
+ assertNotNull(distributedSystemProperties);
+ assertFalse(distributedSystemProperties.containsKey(DistributionConfig.NAME_NAME));
+
+ launcher = createAbstractLauncher(StringUtils.EMPTY_STRING, "333");
+
+ assertNotNull(launcher);
+ assertEquals("333", launcher.getMemberId());
+ assertEquals(StringUtils.EMPTY_STRING, launcher.getMemberName());
+
+ distributedSystemProperties = launcher.getDistributedSystemProperties();
+
+ assertNotNull(distributedSystemProperties);
+ assertFalse(distributedSystemProperties.containsKey(DistributionConfig.NAME_NAME));
+
+ launcher = createAbstractLauncher(" ", "4444");
+
+ assertNotNull(launcher);
+ assertEquals("4444", launcher.getMemberId());
+ assertEquals(" ", launcher.getMemberName());
+
+ distributedSystemProperties = launcher.getDistributedSystemProperties();
+
+ assertNotNull(distributedSystemProperties);
+ assertFalse(distributedSystemProperties.containsKey(DistributionConfig.NAME_NAME));
+ }
+
+ @Test
+ public void testGetDistributedSystemPropertiesWithDefaults() {
+ AbstractLauncher<?> launcher = createAbstractLauncher("TestMember", "123");
+
+ assertNotNull(launcher);
+ assertEquals("123", launcher.getMemberId());
+ assertEquals("TestMember", launcher.getMemberName());
+
+ Properties defaults = new Properties();
+
+ defaults.setProperty("testKey", "testValue");
+
+ Properties distributedSystemProperties = launcher.getDistributedSystemProperties(defaults);
+
+ assertNotNull(distributedSystemProperties);
+ assertEquals(launcher.getMemberName(), distributedSystemProperties.getProperty(DistributionConfig.NAME_NAME));
+ assertEquals("testValue", distributedSystemProperties.getProperty("testKey"));
+ }
+
+ @Test
+ public void testGetMember() {
+ AbstractLauncher<?> launcher = createAbstractLauncher("memberOne", "123");
+
+ assertNotNull(launcher);
+ assertEquals("123", launcher.getMemberId());
+ assertEquals("memberOne", launcher.getMemberName());
+ assertEquals("memberOne", launcher.getMember());
+
+ launcher = createAbstractLauncher(null, "123");
+
+ assertNotNull(launcher);
+ assertEquals("123", launcher.getMemberId());
+ assertNull(launcher.getMemberName());
+ assertEquals("123", launcher.getMember());
+
+ launcher = createAbstractLauncher(StringUtils.EMPTY_STRING, "123");
+
+ assertNotNull(launcher);
+ assertEquals("123", launcher.getMemberId());
+ assertEquals(StringUtils.EMPTY_STRING, launcher.getMemberName());
+ assertEquals("123", launcher.getMember());
+
+ launcher = createAbstractLauncher(" ", "123");
+
+ assertNotNull(launcher);
+ assertEquals("123", launcher.getMemberId());
+ assertEquals(" ", launcher.getMemberName());
+ assertEquals("123", launcher.getMember());
+
+ launcher = createAbstractLauncher(null, StringUtils.EMPTY_STRING);
+
+ assertNotNull(launcher);
+ assertEquals(StringUtils.EMPTY_STRING, launcher.getMemberId());
+ assertNull(launcher.getMemberName());
+ assertNull(launcher.getMember());
+
+ launcher = createAbstractLauncher(null, " ");
+
+ assertNotNull(launcher);
+ assertEquals(" ", launcher.getMemberId());
+ assertNull(launcher.getMemberName());
+ assertNull(launcher.getMember());
+ }
+
+ @Test
+ public void testAbstractLauncherServiceStateToDaysHoursMinutesSeconds() {
+ assertEquals("", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(null));
+ assertEquals("0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(0l));
+ assertEquals("1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(1000l));
+ assertEquals("1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(1999l));
+ assertEquals("2 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(2001l));
+ assertEquals("45 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(45000l));
+ assertEquals("1 minute 0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 1000l));
+ assertEquals("1 minute 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(61 * 1000l));
+ assertEquals("1 minute 30 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(90 * 1000l));
+ assertEquals("2 minutes 0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(120 * 1000l));
+ assertEquals("2 minutes 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(121 * 1000l));
+ assertEquals("2 minutes 15 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(135 * 1000l));
+ assertEquals("1 hour 0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 60 * 1000l));
+ assertEquals("1 hour 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 60 * 1000l + 1000l));
+ assertEquals("1 hour 15 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 60 * 1000l + 15000l));
+ assertEquals("1 hour 1 minute 0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 61 * 1000l));
+ assertEquals("1 hour 1 minute 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 61 * 1000l + 1000l));
+ assertEquals("1 hour 1 minute 45 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 61 * 1000l + 45000l));
+ assertEquals("1 hour 2 minutes 0 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 62 * 1000l));
+ assertEquals("1 hour 5 minutes 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 65 * 1000l + 1000l));
+ assertEquals("1 hour 5 minutes 10 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 65 * 1000l + 10000l));
+ assertEquals("1 hour 59 minutes 11 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(60 * 119 * 1000l + 11000l));
+ assertEquals("1 day 1 hour 1 minute 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(
+ TimeUnit.DAYS.toMillis(1) + TimeUnit.HOURS.toMillis(1) + TimeUnit.MINUTES.toMillis(1) + TimeUnit.SECONDS.toMillis(1)));
+ assertEquals("1 day 5 hours 15 minutes 45 seconds", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(
+ TimeUnit.DAYS.toMillis(1) + TimeUnit.HOURS.toMillis(5) + TimeUnit.MINUTES.toMillis(15) + TimeUnit.SECONDS.toMillis(45)));
+ assertEquals("2 days 1 hour 30 minutes 1 second", AbstractLauncher.ServiceState.toDaysHoursMinutesSeconds(
+ TimeUnit.DAYS.toMillis(2) + TimeUnit.HOURS.toMillis(1) + TimeUnit.MINUTES.toMillis(30) + TimeUnit.SECONDS.toMillis(1)));
+ }
+
+ protected static final class FakeServiceLauncher extends AbstractLauncher<String> {
+
+ private final String memberId;
+ private final String memberName;
+
+ public FakeServiceLauncher(final String memberName, final String memberId) {
+ this.memberId = memberId;
+ this.memberName = memberName;
+ }
+
+ @Override
+ boolean isAttachAPIOnClasspath() {
+ return false;
+ }
+
+ @Override
+ public String getLogFileName() {
+ throw new UnsupportedOperationException("Not Implemented!");
+ }
+
+ @Override
+ public String getMemberId() {
+ return memberId;
+ }
+
+ @Override
+ public String getMemberName() {
+ return memberName;
+ }
+
+ @Override
+ public Integer getPid() {
+ throw new UnsupportedOperationException("Not Implemented!");
+ }
+
+ @Override
+ public String getServiceName() {
+ return "TestService";
+ }
+
+ @Override
+ public void run() {
+ throw new UnsupportedOperationException("Not Implemented!");
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLocatorLauncherIntegrationTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLocatorLauncherIntegrationTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLocatorLauncherIntegrationTestCase.java
new file mode 100755
index 0000000..93c18d1
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLocatorLauncherIntegrationTestCase.java
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.distributed;
+
+import java.util.concurrent.Callable;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.ErrorCollector;
+import org.junit.rules.TemporaryFolder;
+
+import com.gemstone.gemfire.distributed.AbstractLauncher.Status;
+import com.gemstone.gemfire.distributed.LocatorLauncher.Builder;
+import com.gemstone.gemfire.distributed.LocatorLauncher.LocatorState;
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.internal.DistributionLocator;
+
+/**
+ * @since 8.0
+ */
+public abstract class AbstractLocatorLauncherIntegrationTestCase extends AbstractLauncherIntegrationTestCase {
+
+ protected volatile int locatorPort;
+ protected volatile LocatorLauncher launcher;
+
+ @Rule
+ public ErrorCollector errorCollector = new ErrorCollector();
+
+ @Rule
+ public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+ @Before
+ public final void setUpAbstractLocatorLauncherIntegrationTestCase() throws Exception {
+ final int port = AvailablePortHelper.getRandomAvailableTCPPort();
+ System.setProperty(DistributionLocator.TEST_OVERRIDE_DEFAULT_PORT_PROPERTY, String.valueOf(port));
+ this.locatorPort = port;
+ }
+
+ @After
+ public final void tearDownAbstractLocatorLauncherIntegrationTestCase() throws Exception {
+ this.locatorPort = 0;
+ if (this.launcher != null) {
+ this.launcher.stop();
+ this.launcher = null;
+ }
+ }
+
+ protected void waitForLocatorToStart(final LocatorLauncher launcher, int timeout, int interval, boolean throwOnTimeout) throws Exception {
+ assertEventuallyTrue("waiting for process to start: " + launcher.status(), new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ try {
+ final LocatorState LocatorState = launcher.status();
+ return (LocatorState != null && Status.ONLINE.equals(LocatorState.getStatus()));
+ }
+ catch (RuntimeException e) {
+ return false;
+ }
+ }
+ }, timeout, interval);
+ }
+
+ protected void waitForLocatorToStart(final LocatorLauncher launcher, int timeout, boolean throwOnTimeout) throws Exception {
+ waitForLocatorToStart(launcher, timeout, INTERVAL_MILLISECONDS, throwOnTimeout);
+ }
+
+ protected void waitForLocatorToStart(final LocatorLauncher launcher, boolean throwOnTimeout) throws Exception {
+ waitForLocatorToStart(launcher, TIMEOUT_MILLISECONDS, INTERVAL_MILLISECONDS, throwOnTimeout);
+ }
+
+ protected void waitForLocatorToStart(final LocatorLauncher launcher) throws Exception {
+ waitForLocatorToStart(launcher, TIMEOUT_MILLISECONDS, INTERVAL_MILLISECONDS, true);
+ }
+
+ protected static void waitForLocatorToStart(int port, int timeout, int interval, boolean throwOnTimeout) throws Exception {
+ final LocatorLauncher locatorLauncher = new Builder().setPort(port).build();
+ assertEventuallyTrue("Waiting for Locator in other process to start.", new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ try {
+ final LocatorState locatorState = locatorLauncher.status();
+ return (locatorState != null && Status.ONLINE.equals(locatorState.getStatus()));
+ }
+ catch (RuntimeException e) {
+ return false;
+ }
+ }
+ }, timeout, interval);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLocatorLauncherJUnitTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLocatorLauncherJUnitTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLocatorLauncherJUnitTestCase.java
deleted file mode 100755
index 62c4d86..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractLocatorLauncherJUnitTestCase.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.distributed;
-
-import java.util.concurrent.Callable;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.rules.ErrorCollector;
-import org.junit.rules.TemporaryFolder;
-
-import com.gemstone.gemfire.distributed.AbstractLauncher.Status;
-import com.gemstone.gemfire.distributed.LocatorLauncher.Builder;
-import com.gemstone.gemfire.distributed.LocatorLauncher.LocatorState;
-import com.gemstone.gemfire.internal.AvailablePortHelper;
-import com.gemstone.gemfire.internal.DistributionLocator;
-
-/**
- * @since 8.0
- */
-public abstract class AbstractLocatorLauncherJUnitTestCase extends AbstractLauncherJUnitTestCase {
-
- protected volatile int locatorPort;
- protected volatile LocatorLauncher launcher;
-
- @Rule
- public ErrorCollector errorCollector = new ErrorCollector();
-
- @Rule
- public TemporaryFolder temporaryFolder = new TemporaryFolder();
-
- @Before
- public final void setUpLocatorLauncherTest() throws Exception {
- final int port = AvailablePortHelper.getRandomAvailableTCPPort();
- System.setProperty(DistributionLocator.TEST_OVERRIDE_DEFAULT_PORT_PROPERTY, String.valueOf(port));
- this.locatorPort = port;
- }
-
- @After
- public final void tearDownLocatorLauncherTest() throws Exception {
- this.locatorPort = 0;
- if (this.launcher != null) {
- this.launcher.stop();
- this.launcher = null;
- }
- }
-
- protected void waitForLocatorToStart(final LocatorLauncher launcher, int timeout, int interval, boolean throwOnTimeout) throws Exception {
- assertEventuallyTrue("waiting for process to start: " + launcher.status(), new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- try {
- final LocatorState LocatorState = launcher.status();
- return (LocatorState != null && Status.ONLINE.equals(LocatorState.getStatus()));
- }
- catch (RuntimeException e) {
- return false;
- }
- }
- }, timeout, interval);
- }
-
- protected void waitForLocatorToStart(final LocatorLauncher launcher, int timeout, boolean throwOnTimeout) throws Exception {
- waitForLocatorToStart(launcher, timeout, INTERVAL_MILLISECONDS, throwOnTimeout);
- }
-
- protected void waitForLocatorToStart(final LocatorLauncher launcher, boolean throwOnTimeout) throws Exception {
- waitForLocatorToStart(launcher, TIMEOUT_MILLISECONDS, INTERVAL_MILLISECONDS, throwOnTimeout);
- }
-
- protected void waitForLocatorToStart(final LocatorLauncher launcher) throws Exception {
- waitForLocatorToStart(launcher, TIMEOUT_MILLISECONDS, INTERVAL_MILLISECONDS, true);
- }
-
- protected static void waitForLocatorToStart(int port, int timeout, int interval, boolean throwOnTimeout) throws Exception {
- final LocatorLauncher locatorLauncher = new Builder().setPort(port).build();
- assertEventuallyTrue("Waiting for Locator in other process to start.", new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- try {
- final LocatorState locatorState = locatorLauncher.status();
- return (locatorState != null && Status.ONLINE.equals(locatorState.getStatus()));
- }
- catch (RuntimeException e) {
- return false;
- }
- }
- }, timeout, interval);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractServerLauncherIntegrationTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractServerLauncherIntegrationTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractServerLauncherIntegrationTestCase.java
new file mode 100755
index 0000000..bbb170c
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractServerLauncherIntegrationTestCase.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gemstone.gemfire.distributed;
+
+import static org.junit.Assert.*;
+
+import java.util.concurrent.Callable;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.ErrorCollector;
+import org.junit.rules.TemporaryFolder;
+
+import com.gemstone.gemfire.distributed.AbstractLauncher.Status;
+import com.gemstone.gemfire.distributed.ServerLauncher.ServerState;
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.internal.cache.AbstractCacheServer;
+
+/**
+ * @since 8.0
+ */
+public abstract class AbstractServerLauncherIntegrationTestCase extends AbstractLauncherIntegrationTestCase {
+
+ protected volatile int serverPort;
+ protected volatile ServerLauncher launcher;
+
+ @Rule
+ public ErrorCollector errorCollector= new ErrorCollector();
+
+ @Rule
+ public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+ @Before
+ public final void setUpServerLauncherTest() throws Exception {
+ System.setProperty("gemfire." + DistributionConfig.MCAST_PORT_NAME, Integer.toString(0));
+ final int port = AvailablePortHelper.getRandomAvailableTCPPort();
+ System.setProperty(AbstractCacheServer.TEST_OVERRIDE_DEFAULT_PORT_PROPERTY, String.valueOf(port));
+ this.serverPort = port;
+ }
+
+ @After
+ public final void tearDownServerLauncherTest() throws Exception {
+ this.serverPort = 0;
+ if (this.launcher != null) {
+ this.launcher.stop();
+ this.launcher = null;
+ }
+ }
+
+ protected void waitForServerToStart(final ServerLauncher launcher, int timeout, int interval, boolean throwOnTimeout) throws Exception {
+ assertEventuallyTrue("waiting for local Server to start: " + launcher.status(), new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ try {
+ final ServerState serverState = launcher.status();
+ assertNotNull(serverState);
+ return Status.ONLINE.equals(serverState.getStatus());
+ }
+ catch (RuntimeException e) {
+ return false;
+ }
+ }
+ }, timeout, interval);
+ }
+
+ protected void waitForServerToStart(final ServerLauncher launcher, boolean throwOnTimeout) throws Exception {
+ waitForServerToStart(launcher, TIMEOUT_MILLISECONDS, INTERVAL_MILLISECONDS, throwOnTimeout);
+ }
+
+ protected void waitForServerToStart(final ServerLauncher launcher, int timeout, boolean throwOnTimeout) throws Exception {
+ waitForServerToStart(launcher, timeout, INTERVAL_MILLISECONDS, throwOnTimeout);
+ }
+
+ protected void waitForServerToStart(final ServerLauncher launcher) throws Exception {
+ waitForServerToStart(launcher, TIMEOUT_MILLISECONDS, INTERVAL_MILLISECONDS, true);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractServerLauncherJUnitTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractServerLauncherJUnitTestCase.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractServerLauncherJUnitTestCase.java
deleted file mode 100755
index 0ee3e7c..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/AbstractServerLauncherJUnitTestCase.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.distributed;
-
-import static org.junit.Assert.*;
-
-import java.util.concurrent.Callable;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.rules.ErrorCollector;
-import org.junit.rules.TemporaryFolder;
-
-import com.gemstone.gemfire.distributed.AbstractLauncher.Status;
-import com.gemstone.gemfire.distributed.ServerLauncher.ServerState;
-import com.gemstone.gemfire.distributed.internal.DistributionConfig;
-import com.gemstone.gemfire.internal.AvailablePortHelper;
-import com.gemstone.gemfire.internal.cache.AbstractCacheServer;
-
-/**
- * @since 8.0
- */
-public abstract class AbstractServerLauncherJUnitTestCase extends AbstractLauncherJUnitTestCase {
-
- protected volatile int serverPort;
- protected volatile ServerLauncher launcher;
-
- @Rule
- public ErrorCollector errorCollector= new ErrorCollector();
-
- @Rule
- public TemporaryFolder temporaryFolder = new TemporaryFolder();
-
- @Before
- public final void setUpServerLauncherTest() throws Exception {
- System.setProperty("gemfire." + DistributionConfig.MCAST_PORT_NAME, Integer.toString(0));
- final int port = AvailablePortHelper.getRandomAvailableTCPPort();
- System.setProperty(AbstractCacheServer.TEST_OVERRIDE_DEFAULT_PORT_PROPERTY, String.valueOf(port));
- this.serverPort = port;
- }
-
- @After
- public final void tearDownServerLauncherTest() throws Exception {
- this.serverPort = 0;
- if (this.launcher != null) {
- this.launcher.stop();
- this.launcher = null;
- }
- }
-
- protected void waitForServerToStart(final ServerLauncher launcher, int timeout, int interval, boolean throwOnTimeout) throws Exception {
- assertEventuallyTrue("waiting for local Server to start: " + launcher.status(), new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- try {
- final ServerState serverState = launcher.status();
- assertNotNull(serverState);
- return Status.ONLINE.equals(serverState.getStatus());
- }
- catch (RuntimeException e) {
- return false;
- }
- }
- }, timeout, interval);
- }
-
- protected void waitForServerToStart(final ServerLauncher launcher, boolean throwOnTimeout) throws Exception {
- waitForServerToStart(launcher, TIMEOUT_MILLISECONDS, INTERVAL_MILLISECONDS, throwOnTimeout);
- }
-
- protected void waitForServerToStart(final ServerLauncher launcher, int timeout, boolean throwOnTimeout) throws Exception {
- waitForServerToStart(launcher, timeout, INTERVAL_MILLISECONDS, throwOnTimeout);
- }
-
- protected void waitForServerToStart(final ServerLauncher launcher) throws Exception {
- waitForServerToStart(launcher, TIMEOUT_MILLISECONDS, INTERVAL_MILLISECONDS, true);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedTestSuite.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedTestSuite.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedTestSuite.java
deleted file mode 100755
index 58b8d2a..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedTestSuite.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gemstone.gemfire.distributed;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
- DistributedMemberDUnitTest.class,
- DistributedSystemDUnitTest.class,
- LocatorDUnitTest.class,
- RoleDUnitTest.class,
- SystemAdminDUnitTest.class
-})
-/**
- * Suite of tests for distributed membership dunit tests.
- *
- */
-public class DistributedTestSuite {
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/cd02af01/geode-core/src/test/java/com/gemstone/gemfire/distributed/HostedLocatorsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/HostedLocatorsDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/HostedLocatorsDUnitTest.java
index a5b07ee..2b067d0 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/HostedLocatorsDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/HostedLocatorsDUnitTest.java
@@ -39,7 +39,7 @@ import com.gemstone.gemfire.test.dunit.SerializableCallable;
import com.gemstone.gemfire.test.dunit.SerializableRunnable;
/**
- * Extracted from LocatorLauncherLocalJUnitTest.
+ * Extracted from LocatorLauncherLocalIntegrationTest.
*
* @since 8.0
*/