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 2018/11/30 17:50:12 UTC
[geode] branch develop updated: GEODE-6096: Cleanup dunit internals
(#2919)
This is an automated email from the ASF dual-hosted git repository.
klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 9918f9b GEODE-6096: Cleanup dunit internals (#2919)
9918f9b is described below
commit 9918f9b13621a6318346c795d127ba94d718953f
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Fri Nov 30 09:50:01 2018 -0800
GEODE-6096: Cleanup dunit internals (#2919)
* Move all dunit internals to test.dunit.internal package.
* Move VersionManager to test.version package.
* Move greplogs to test.greplogs package.
* Rename some classes to be more informative.
* Reduce public to package-protected where it's appropriate.
* Extract inner classes/interfaces to be top-level classes.
---
.../cli/commands/ConnectCommandAcceptanceTest.java | 2 +-
.../geode/test/junit/rules/GfshRuleTest.java | 2 +-
...omcatSessionBackwardsCompatibilityTestBase.java | 2 +-
.../distributed/DistributedLockBlackboardImpl.java | 2 +-
.../apache/geode/distributed/LocatorDUnitTest.java | 2 +-
.../geode/distributed/SystemAdminDUnitTest.java | 2 +-
.../alerting/AlertingServiceDistributedTest.java | 2 +-
...rtingServiceWithoutListenerDistributedTest.java | 2 +-
...overWithMixedVersionServersDistributedTest.java | 2 +-
.../CompressionRegionConfigDUnitTest.java | 2 +-
.../DistributedSystemMXBeanDistributedTest.java | 2 +-
...butedSystemMXBeanWithAlertsDistributedTest.java | 2 +-
...stemMXBeanWithNotificationsDistributedTest.java | 2 +-
.../geode/management/ManagementTestRule.java | 2 +-
.../apache/geode/security/ClientAuthDUnitTest.java | 2 +-
.../security/ClientAuthenticationDUnitTest.java | 2 +-
.../ClientAuthenticationPart2DUnitTest.java | 2 +-
.../security/ClientAuthenticationTestCase.java | 2 +-
...tAuthorizationLegacyConfigurationDUnitTest.java | 2 +-
...aAuthorizationUsingLegacySecurityDUnitTest.java | 2 +-
...onUsingLegacySecurityWithFailoverDUnitTest.java | 2 +-
.../DistributedSystemMXBeanIntegrationTest.java | 2 +-
.../internal/cache/TxCommitMessageBCTestBase.java | 2 +-
.../RollingUpgrade2DUnitTestBase.java | 4 +-
.../rollingupgrade/RollingUpgradeDUnitTest.java | 2 +-
...gradeHARegionNameOnDifferentServerVersions.java | 2 +-
.../RollingUpgradeNonHAFunction.java | 2 +-
.../rollingupgrade/RollingUpgradeTracePRQuery.java | 2 +-
.../RollingUpgradeVerifyXmlEntity.java | 2 +-
.../tier/sockets/ClientServerMiscBCDUnitTest.java | 2 +-
.../security/ClientAuthorizationCQDUnitTest.java | 2 +-
...tartupRuleCanSpecifyOlderVersionsDUnitTest.java | 2 +-
.../dunit/examples/BeforeClassExampleTest.java | 2 +-
geode-dunit/src/main/java/hydra/MethExecutor.java | 363 ---------------------
.../src/main/java/hydra/MethExecutorResult.java | 182 -----------
.../sockets/ClientServerMiscDUnitTestBase.java | 4 +-
.../security/ClientAuthorizationTestCase.java | 2 +-
.../java/org/apache/geode/test/dunit/DUnitEnv.java | 2 +-
.../java/org/apache/geode/test/dunit/Host.java | 4 +-
.../main/java/org/apache/geode/test/dunit/VM.java | 21 +-
.../{standalone => internal}/BounceResult.java | 2 +-
.../dunit/{standalone => internal}/ChildVM.java | 5 +-
.../geode/test/dunit/internal/DUnitHost.java | 119 +++++++
.../{standalone => internal}/DUnitLauncher.java | 174 +---------
.../dunit/internal/InternalBlackboardImpl.java | 2 -
.../dunit/internal/JUnit4DistributedTestCase.java | 1 -
.../apache/geode/test/dunit/internal/Master.java | 71 ++++
.../MasterRemote.java} | 25 +-
.../geode/test/dunit/internal/MethodInvoker.java | 255 +++++++++++++++
.../test/dunit/internal/MethodInvokerResult.java | 139 ++++++++
.../{standalone => internal}/ProcessHolder.java | 2 +-
.../{standalone => internal}/ProcessManager.java | 3 +-
.../{standalone => internal}/RemoteDUnitVM.java | 23 +-
.../{standalone => internal}/RemoteDUnitVMIF.java | 11 +-
.../StandAloneDUnitEnv.java | 4 +-
.../test/dunit/rules/AbstractDistributedRule.java | 2 +-
.../apache/geode/test/dunit/rules/CacheRule.java | 2 +-
.../geode/test/dunit/rules/ClusterStartupRule.java | 6 +-
.../test/dunit/rules/DistributedDiskDirRule.java | 2 +-
.../geode/test/dunit/rules/DistributedRule.java | 2 +-
.../DistributedUseJacksonForJsonPathRule.java | 2 +-
.../geode/test}/greplogs/ExpectedStrings.java | 2 +-
.../apache/geode/test}/greplogs/LogConsumer.java | 2 +-
.../test/dunit/internal/MethodInvokerTest.java} | 31 +-
.../geode/test/junit/rules/gfsh/GfshRule.java | 2 +-
.../standalone => version}/VersionManager.java | 2 +-
.../VersionManagerJUnitTest.java | 2 +-
.../LuceneSearchWithRollingUpgradeDUnit.java | 4 +-
...ateGatewaySenderMixedSiteOneCurrentSiteTwo.java | 2 +-
.../cache/wan/WANRollingUpgradeDUnitTest.java | 4 +-
...eEventProcessingMixedSiteOneCurrentSiteTwo.java | 2 +-
...adeEventProcessingOldSiteOneCurrentSiteTwo.java | 2 +-
...ipleReceiversDefinedInClusterConfiguration.java | 2 +-
...tReprocessedAfterCurrentSiteMemberFailover.java | 2 +-
...fterCurrentSiteMemberFailoverWithOldClient.java | 2 +-
...tsNotReprocessedAfterOldSiteMemberFailover.java | 2 +-
...eCacheServerProfileToMembersOlderThan1dot5.java | 2 +-
...ANRollingUpgradeVerifyGatewaySenderProfile.java | 2 +-
78 files changed, 722 insertions(+), 843 deletions(-)
diff --git a/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/cli/commands/ConnectCommandAcceptanceTest.java b/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/cli/commands/ConnectCommandAcceptanceTest.java
index 11bf876..fc2a3b8 100644
--- a/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/cli/commands/ConnectCommandAcceptanceTest.java
+++ b/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/cli/commands/ConnectCommandAcceptanceTest.java
@@ -26,11 +26,11 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.GfshTest;
import org.apache.geode.test.junit.rules.gfsh.GfshExecution;
import org.apache.geode.test.junit.rules.gfsh.GfshRule;
import org.apache.geode.test.junit.rules.gfsh.GfshScript;
+import org.apache.geode.test.version.VersionManager;
@Category(GfshTest.class)
public class ConnectCommandAcceptanceTest {
diff --git a/geode-assembly/src/test/java/org/apache/geode/test/junit/rules/GfshRuleTest.java b/geode-assembly/src/test/java/org/apache/geode/test/junit/rules/GfshRuleTest.java
index 6f28cae..ec887dc 100644
--- a/geode-assembly/src/test/java/org/apache/geode/test/junit/rules/GfshRuleTest.java
+++ b/geode-assembly/src/test/java/org/apache/geode/test/junit/rules/GfshRuleTest.java
@@ -23,9 +23,9 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.GfshTest;
import org.apache.geode.test.junit.rules.gfsh.GfshRule;
+import org.apache.geode.test.version.VersionManager;
@Category({GfshTest.class})
public class GfshRuleTest {
diff --git a/geode-assembly/src/upgradeTest/java/org/apache/geode/session/tests/TomcatSessionBackwardsCompatibilityTestBase.java b/geode-assembly/src/upgradeTest/java/org/apache/geode/session/tests/TomcatSessionBackwardsCompatibilityTestBase.java
index 5744e0b..f8a5356 100644
--- a/geode-assembly/src/upgradeTest/java/org/apache/geode/session/tests/TomcatSessionBackwardsCompatibilityTestBase.java
+++ b/geode-assembly/src/upgradeTest/java/org/apache/geode/session/tests/TomcatSessionBackwardsCompatibilityTestBase.java
@@ -34,10 +34,10 @@ import org.junit.runners.Parameterized;
import org.apache.geode.internal.AvailablePortHelper;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.BackwardCompatibilityTest;
import org.apache.geode.test.junit.rules.GfshCommandRule;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
/**
* This test iterates through the versions of Geode and executes session client compatibility with
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockBlackboardImpl.java b/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockBlackboardImpl.java
index 04f19a0..599c28e 100755
--- a/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockBlackboardImpl.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedLockBlackboardImpl.java
@@ -20,7 +20,7 @@ import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import org.apache.geode.internal.Assert;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
public class DistributedLockBlackboardImpl extends UnicastRemoteObject
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorDUnitTest.java
index 6095aad..c16349e 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorDUnitTest.java
@@ -94,8 +94,8 @@ import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.SerializableRunnable;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.Wait;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
import org.apache.geode.test.junit.categories.MembershipTest;
import org.apache.geode.util.test.TestUtil;
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/distributed/SystemAdminDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/distributed/SystemAdminDUnitTest.java
index 56a62f1..a516a5c 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/distributed/SystemAdminDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/distributed/SystemAdminDUnitTest.java
@@ -17,7 +17,7 @@ package org.apache.geode.distributed;
import static java.util.Arrays.asList;
import static org.apache.geode.test.dunit.Disconnect.disconnectFromDS;
import static org.apache.geode.test.dunit.DistributedTestUtils.getAllDistributedSystemProperties;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
+import static org.apache.geode.test.dunit.internal.DUnitLauncher.getDistributedSystemProperties;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.File;
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceDistributedTest.java
index 7fe2058..487a43f 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceDistributedTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceDistributedTest.java
@@ -35,7 +35,7 @@ import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
import static org.apache.geode.test.dunit.VM.getController;
import static org.apache.geode.test.dunit.VM.getVM;
import static org.apache.geode.test.dunit.VM.toArray;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
+import static org.apache.geode.test.dunit.internal.DUnitLauncher.getDistributedSystemProperties;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.ArgumentMatchers.isNull;
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceWithoutListenerDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceWithoutListenerDistributedTest.java
index c2bf009..4b6d21a 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceWithoutListenerDistributedTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceWithoutListenerDistributedTest.java
@@ -31,7 +31,7 @@ import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
import static org.apache.geode.test.dunit.VM.getController;
import static org.apache.geode.test.dunit.VM.getVM;
import static org.apache.geode.test.dunit.VM.toArray;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
+import static org.apache.geode.test.dunit.internal.DUnitLauncher.getDistributedSystemProperties;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verifyNoMoreInteractions;
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverWithMixedVersionServersDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverWithMixedVersionServersDistributedTest.java
index 3b72c2d..92b6a3a 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverWithMixedVersionServersDistributedTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ClientServerTransactionFailoverWithMixedVersionServersDistributedTest.java
@@ -56,9 +56,9 @@ import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.rules.CacheRule;
import org.apache.geode.test.dunit.rules.ClientCacheRule;
import org.apache.geode.test.dunit.rules.DistributedRule;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.rules.serializable.SerializableTemporaryFolder;
import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
+import org.apache.geode.test.version.VersionManager;
@SuppressWarnings("serial")
public class ClientServerTransactionFailoverWithMixedVersionServersDistributedTest
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/compression/CompressionRegionConfigDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/compression/CompressionRegionConfigDUnitTest.java
index 8fd193e..f307758 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/compression/CompressionRegionConfigDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/compression/CompressionRegionConfigDUnitTest.java
@@ -40,7 +40,7 @@ import org.apache.geode.test.dunit.SerializableRunnable;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.WaitCriterion;
import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
/**
* Sanity checks on a number of basic cluster configurations with compression turned on.
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanDistributedTest.java
index 21d99bf..0fa6ecc 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanDistributedTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanDistributedTest.java
@@ -23,7 +23,7 @@ import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberMBea
import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
import static org.apache.geode.test.dunit.VM.getVM;
import static org.apache.geode.test.dunit.VM.toArray;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
+import static org.apache.geode.test.dunit.internal.DUnitLauncher.getDistributedSystemProperties;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.Serializable;
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithAlertsDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithAlertsDistributedTest.java
index 67478b6..fb16425 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithAlertsDistributedTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithAlertsDistributedTest.java
@@ -33,7 +33,7 @@ import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
import static org.apache.geode.test.dunit.VM.getVM;
import static org.apache.geode.test.dunit.VM.toArray;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
+import static org.apache.geode.test.dunit.internal.DUnitLauncher.getDistributedSystemProperties;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.spy;
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java
index b7a581a..9527fd2 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java
@@ -28,7 +28,7 @@ import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
import static org.apache.geode.test.dunit.VM.getVM;
import static org.apache.geode.test.dunit.VM.toArray;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
+import static org.apache.geode.test.dunit.internal.DUnitLauncher.getDistributedSystemProperties;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.ArgumentMatchers.isNull;
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/ManagementTestRule.java b/geode-core/src/distributedTest/java/org/apache/geode/management/ManagementTestRule.java
index 80a861a..e40aac2 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/ManagementTestRule.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/ManagementTestRule.java
@@ -48,8 +48,8 @@ import org.apache.geode.management.internal.SystemManagementService;
import org.apache.geode.test.dunit.Invoke;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
/**
* Note: Overriding MethodRule is only way to get {@code Object target}
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthDUnitTest.java
index c750fb0..c52322f 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthDUnitTest.java
@@ -35,10 +35,10 @@ import org.apache.geode.cache.client.ServerOperationException;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.rules.ClientVM;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.SecurityTest;
import org.apache.geode.test.junit.rules.ServerStarterRule;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
@Category({SecurityTest.class})
@RunWith(Parameterized.class)
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationDUnitTest.java
index 4ee981e..9ae0f79 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationDUnitTest.java
@@ -23,9 +23,9 @@ import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.SecurityTest;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
/**
* Test for authentication from client to server. This tests for both valid and invalid
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationPart2DUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationPart2DUnitTest.java
index b808a9f..bdadf1b 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationPart2DUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationPart2DUnitTest.java
@@ -31,9 +31,9 @@ import org.junit.runners.Parameterized;
import org.apache.geode.internal.cache.tier.MessageType;
import org.apache.geode.internal.cache.tier.sockets.Message;
import org.apache.geode.internal.cache.tier.sockets.ServerConnection;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.SecurityTest;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
/**
* this class contains test methods that used to be in its superclass but that test started taking
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationTestCase.java b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationTestCase.java
index 0283d66..446daa9 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationTestCase.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthenticationTestCase.java
@@ -70,7 +70,7 @@ import org.apache.geode.security.generator.DummyCredentialGenerator;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public abstract class ClientAuthenticationTestCase extends JUnit4DistributedTestCase {
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthorizationLegacyConfigurationDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthorizationLegacyConfigurationDUnitTest.java
index d8caf8b..9a2ce36 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthorizationLegacyConfigurationDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientAuthorizationLegacyConfigurationDUnitTest.java
@@ -42,9 +42,9 @@ import org.apache.geode.security.templates.UserPasswordAuthInit;
import org.apache.geode.test.dunit.rules.ClientVM;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.SecurityTest;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
@Category({SecurityTest.class})
@RunWith(Parameterized.class)
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityDUnitTest.java
index 04c9f5e..32da834 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityDUnitTest.java
@@ -48,9 +48,9 @@ import org.apache.geode.security.templates.UsernamePrincipal;
import org.apache.geode.test.dunit.rules.ClientVM;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.SecurityTest;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
/**
* Tests for authorization from client to server for data puts and gets. For similar test in the
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest.java
index 593575c..f829c21 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest.java
@@ -55,9 +55,9 @@ import org.apache.geode.security.templates.UsernamePrincipal;
import org.apache.geode.test.dunit.rules.ClientVM;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.SecurityTest;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
/**
* This test class reproduces the tests present in
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/management/DistributedSystemMXBeanIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/management/DistributedSystemMXBeanIntegrationTest.java
index ed11dd1..d694c00 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/management/DistributedSystemMXBeanIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/management/DistributedSystemMXBeanIntegrationTest.java
@@ -32,7 +32,7 @@ import static org.apache.geode.management.internal.MBeanJMXAdapter.getDistribute
import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
import static org.apache.geode.test.dunit.NetworkUtils.getServerHostName;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
+import static org.apache.geode.test.dunit.internal.DUnitLauncher.getDistributedSystemProperties;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.spy;
diff --git a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/TxCommitMessageBCTestBase.java b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/TxCommitMessageBCTestBase.java
index 11a65a3..bf96829 100644
--- a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/TxCommitMessageBCTestBase.java
+++ b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/TxCommitMessageBCTestBase.java
@@ -48,9 +48,9 @@ import org.apache.geode.internal.Version;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.BackwardCompatibilityTest;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
/**
* This test class tests the communication pattern of a transaction for replicate and partition
diff --git a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTestBase.java b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTestBase.java
index 435f6d0..75fd7e9 100755
--- a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTestBase.java
+++ b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTestBase.java
@@ -95,12 +95,12 @@ import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.Invoke;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.DistributedRule;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
/**
* This test will not run properly in eclipse at this point due to having to bounce vms Currently,
diff --git a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeDUnitTest.java b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeDUnitTest.java
index 590bd8f..a5bfa5a 100644
--- a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeDUnitTest.java
+++ b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeDUnitTest.java
@@ -57,8 +57,8 @@ import org.apache.geode.test.dunit.LogWriterUtils;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
/**
* RollingUpgrade dunit tests are distributed among subclasses of RollingUpgradeDUnitTest to avoid
diff --git a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeHARegionNameOnDifferentServerVersions.java b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeHARegionNameOnDifferentServerVersions.java
index 9b465d9..1bd2788 100644
--- a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeHARegionNameOnDifferentServerVersions.java
+++ b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeHARegionNameOnDifferentServerVersions.java
@@ -26,7 +26,7 @@ import org.apache.geode.test.dunit.DistributedTestUtils;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class RollingUpgradeHARegionNameOnDifferentServerVersions
extends RollingUpgrade2DUnitTestBase {
diff --git a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeNonHAFunction.java b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeNonHAFunction.java
index 2fc56a4..2ce9794 100644
--- a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeNonHAFunction.java
+++ b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeNonHAFunction.java
@@ -40,7 +40,7 @@ import org.apache.geode.internal.Version;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class RollingUpgradeNonHAFunction extends RollingUpgrade2DUnitTestBase {
diff --git a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeTracePRQuery.java b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeTracePRQuery.java
index 87c3d72..4b1042b 100644
--- a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeTracePRQuery.java
+++ b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeTracePRQuery.java
@@ -29,7 +29,7 @@ import org.apache.geode.internal.Version;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class RollingUpgradeTracePRQuery extends RollingUpgrade2DUnitTestBase {
diff --git a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeVerifyXmlEntity.java b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeVerifyXmlEntity.java
index 77aba67..2aad309 100644
--- a/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeVerifyXmlEntity.java
+++ b/geode-core/src/upgradeTest/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeVerifyXmlEntity.java
@@ -28,7 +28,7 @@ import org.apache.geode.test.dunit.DistributedTestUtils;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class RollingUpgradeVerifyXmlEntity extends RollingUpgrade2DUnitTestBase {
diff --git a/geode-cq/src/upgradeTest/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscBCDUnitTest.java b/geode-cq/src/upgradeTest/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscBCDUnitTest.java
index 05383ab..ec2bce7 100755
--- a/geode-cq/src/upgradeTest/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscBCDUnitTest.java
+++ b/geode-cq/src/upgradeTest/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscBCDUnitTest.java
@@ -50,10 +50,10 @@ import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.BackwardCompatibilityTest;
import org.apache.geode.test.junit.categories.ClientServerTest;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
@Category({ClientServerTest.class, BackwardCompatibilityTest.class})
@RunWith(Parameterized.class)
diff --git a/geode-cq/src/upgradeTest/java/org/apache/geode/security/ClientAuthorizationCQDUnitTest.java b/geode-cq/src/upgradeTest/java/org/apache/geode/security/ClientAuthorizationCQDUnitTest.java
index a73738b..543152e 100644
--- a/geode-cq/src/upgradeTest/java/org/apache/geode/security/ClientAuthorizationCQDUnitTest.java
+++ b/geode-cq/src/upgradeTest/java/org/apache/geode/security/ClientAuthorizationCQDUnitTest.java
@@ -26,9 +26,9 @@ import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.apache.geode.cache.operations.OperationContext.OperationCode;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.categories.SecurityTest;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
/**
* Tests for authorization from client to server. This tests for authorization of all operations
diff --git a/geode-dunit/src/distributedTest/java/org/apache/geode/test/dunit/rules/tests/ClusterStartupRuleCanSpecifyOlderVersionsDUnitTest.java b/geode-dunit/src/distributedTest/java/org/apache/geode/test/dunit/rules/tests/ClusterStartupRuleCanSpecifyOlderVersionsDUnitTest.java
index e5cc88e..4e04513 100644
--- a/geode-dunit/src/distributedTest/java/org/apache/geode/test/dunit/rules/tests/ClusterStartupRuleCanSpecifyOlderVersionsDUnitTest.java
+++ b/geode-dunit/src/distributedTest/java/org/apache/geode/test/dunit/rules/tests/ClusterStartupRuleCanSpecifyOlderVersionsDUnitTest.java
@@ -28,8 +28,8 @@ import org.apache.geode.internal.GemFireVersion;
import org.apache.geode.test.dunit.rules.ClientVM;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
@RunWith(Parameterized.class)
diff --git a/geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/examples/BeforeClassExampleTest.java b/geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/examples/BeforeClassExampleTest.java
index c11ff4b..e9e3c4a 100644
--- a/geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/examples/BeforeClassExampleTest.java
+++ b/geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/examples/BeforeClassExampleTest.java
@@ -20,7 +20,7 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
public class BeforeClassExampleTest {
diff --git a/geode-dunit/src/main/java/hydra/MethExecutor.java b/geode-dunit/src/main/java/hydra/MethExecutor.java
deleted file mode 100644
index e70bbb6..0000000
--- a/geode-dunit/src/main/java/hydra/MethExecutor.java
+++ /dev/null
@@ -1,363 +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 hydra;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-
-import org.apache.geode.SystemFailure;
-
-/**
- *
- * A class specialized for executing (via reflection) the receiver/selector pairs found in
- * TestTasks.
- *
- */
-public class MethExecutor {
-
- // @todo lises add static args method
-
- /**
- * Helper method that searches a class (and its superclasses) for a method with the given name and
- * parameter types.
- *
- * @throws NoSuchMethodException If the method cannot be found
- */
- public static Method getMethod(Class c, String methodName, Class[] paramTypes)
- throws NoSuchMethodException {
-
- ArrayList matchingMethods = new ArrayList();
- for (Class q = c; q != null; q = q.getSuperclass()) {
- Method[] methods = q.getDeclaredMethods();
- NEXT_METHOD: for (int i = 0; i < methods.length; i++) {
- Method m = methods[i];
- if (!m.getName().equals(methodName)) {
- continue;
- }
-
- Class[] argTypes = m.getParameterTypes();
- if (argTypes.length != paramTypes.length) {
- continue;
- }
-
- for (int j = 0; j < argTypes.length; j++) {
- if (paramTypes[j] == null) {
- if (argTypes[j].isPrimitive()) {
- // this parameter is not ok, the parameter is a primative and the value is null
- continue NEXT_METHOD;
- } else {
- // this parameter is ok, the argument is an object and the value is null
- continue;
- }
- }
- if (!argTypes[j].isAssignableFrom(paramTypes[j])) {
- Class argType = argTypes[j];
- Class paramType = paramTypes[j];
-
- if (argType.isPrimitive()) {
- if ((argType.equals(boolean.class) && paramType.equals(Boolean.class))
- || (argType.equals(short.class) && paramType.equals(Short.class))
- || (argType.equals(int.class) && paramType.equals(Integer.class))
- || (argType.equals(long.class) && paramType.equals(Long.class))
- || (argType.equals(float.class) && paramType.equals(Float.class))
- || (argType.equals(double.class) && paramType.equals(Double.class))
- || (argType.equals(char.class) && paramType.equals(Character.class))
- || (argType.equals(byte.class) && paramType.equals(Byte.class)) || false) {
-
- // This parameter is okay, try the next arg
- continue;
- }
- }
- continue NEXT_METHOD;
- }
- }
-
- matchingMethods.add(m);
- }
-
- // We want to check to make sure there aren't two
- // ambiguous methods on the same class. But a subclass
- // can still override a method on a super class, so we'll stop
- // if we found a method on the subclass.
- if (matchingMethods.size() > 0) {
- break;
- }
- }
-
- if (matchingMethods.isEmpty()) {
- StringBuffer sb = new StringBuffer();
- sb.append("Could not find method ");
- sb.append(methodName);
- sb.append(" with ");
- sb.append(paramTypes.length);
- sb.append(" parameters [");
- for (int i = 0; i < paramTypes.length; i++) {
- String name = paramTypes[i] == null ? null : paramTypes[i].getName();
- sb.append(name);
- if (i < paramTypes.length - 1) {
- sb.append(", ");
- }
- }
- sb.append("] in class ");
- sb.append(c.getName());
- throw new NoSuchMethodException(sb.toString());
- }
- if (matchingMethods.size() > 1) {
- StringBuffer sb = new StringBuffer();
- sb.append("Method is ambiguous ");
- sb.append(methodName);
- sb.append(" with ");
- sb.append(paramTypes.length);
- sb.append(" parameters [");
- for (int i = 0; i < paramTypes.length; i++) {
- String name = paramTypes[i] == null ? null : paramTypes[i].getName();
- sb.append(name);
- if (i < paramTypes.length - 1) {
- sb.append(", ");
- }
- }
- sb.append("] in class ");
- sb.append(c.getName());
- sb.append(" methods=" + matchingMethods);
- throw new NoSuchMethodException(sb.toString());
- } else
- return (Method) matchingMethods.get(0);
- }
-
- /**
- *
- * Send the message "selector" to the class named "receiver". Return the result, including stack
- * trace (if any).
- *
- */
- public static MethExecutorResult execute(String receiver, String selector) {
- return execute(receiver, selector, null);
- }
-
- /**
- * Executes the given static method on the given class with the given arguments.
- */
- public static MethExecutorResult execute(String receiver, String selector, Object[] args) {
- try {
- // get the class
- Class receiverClass = Class.forName(receiver);
-
- // invoke the method
- Object res = null;
- try {
- Class[] paramTypes;
- if (args == null) {
- paramTypes = new Class[0];
-
- } else {
- paramTypes = new Class[args.length];
- for (int i = 0; i < args.length; i++) {
- if (args[i] == null) {
- paramTypes[i] = null;
-
- } else {
- paramTypes[i] = args[i].getClass();
- }
- }
- }
-
- Method theMethod = getMethod(receiverClass, selector, paramTypes);
- theMethod.setAccessible(true);
- res = theMethod.invoke(receiverClass, args);
- return new MethExecutorResult(res);
-
- } catch (InvocationTargetException invTargEx) {
- Throwable targEx = invTargEx.getTargetException();
- if (targEx == null) {
- return new MethExecutorResult(res);
-
- } else {
- return new MethExecutorResult(targEx);
- }
- }
-
- } catch (VirtualMachineError e) {
- SystemFailure.initiateFailure(e);
- throw e;
- } catch (Throwable t) {
- // String s = "While trying to invoke " + receiver + "." +
- // selector;
- // t = new HydraConfigException(s, t);
- return new MethExecutorResult(t);
- }
- }
-
- /**
- *
- * Send the message "selector" to the object "target". Return the result, including stack trace
- * (if any).
- *
- */
- public static MethExecutorResult executeObject(Object target, String selector) {
- return executeObject(target, selector, null);
- }
-
- /**
- * Executes the given instance method on the given object with the given arguments.
- */
- public static MethExecutorResult executeObject(Object target, String selector, Object[] args) {
- try {
- // get the class
- Class receiverClass = target.getClass();
-
- // invoke the method
- Object res = null;
- try {
- Class[] paramTypes;
- if (args == null) {
- paramTypes = new Class[0];
-
- } else {
- paramTypes = new Class[args.length];
- for (int i = 0; i < args.length; i++) {
- if (args[i] == null) {
- paramTypes[i] = Object.class;
-
- } else {
- paramTypes[i] = args[i].getClass();
- }
- }
- }
-
- Method theMethod = getMethod(receiverClass, selector, paramTypes);
- theMethod.setAccessible(true);
- res = theMethod.invoke(target, args);
- return new MethExecutorResult(res);
-
- } catch (InvocationTargetException invTargEx) {
- Throwable targEx = invTargEx.getTargetException();
- if (targEx == null) {
- return new MethExecutorResult(res);
-
- } else {
- return new MethExecutorResult(targEx);
- }
- }
-
- } catch (VirtualMachineError e) {
- SystemFailure.initiateFailure(e);
- throw e;
- } catch (Throwable t) {
- return new MethExecutorResult(t);
- }
- }
-
- /**
- *
- * Send the message "selector" to an instance of the class named "receiver". Return the result,
- * including stack trace (if any).
- *
- */
- public static MethExecutorResult executeInstance(String receiver, String selector) {
-
- try {
- // get the class
- Class receiverClass = Class.forName(receiver);
- Object target = receiverClass.newInstance();
-
- // invoke the method
- Object res = null;
- try {
- Method theMethod = getMethod(receiverClass, selector, new Class[0]);
- res = theMethod.invoke(target, new Object[0]);
- return new MethExecutorResult(res);
-
- } catch (InvocationTargetException invTargEx) {
- Throwable targEx = invTargEx.getTargetException();
- if (targEx == null) {
- return new MethExecutorResult(res);
- } else {
- return new MethExecutorResult(targEx);
- }
- }
-
- } catch (VirtualMachineError e) {
- SystemFailure.initiateFailure(e);
- throw e;
- } catch (Throwable t) {
- return new MethExecutorResult(t);
- }
- }
-
- /**
- *
- * Send the message "selector" to an instance of the class named "receiver". Return the result,
- * including stack trace (if any).
- *
- */
- public static MethExecutorResult executeInstance(String receiver, String selector, Class[] types,
- Object[] args) {
-
- try {
- // get the class
- Class receiverClass = Class.forName(receiver);
- Constructor init = receiverClass.getDeclaredConstructor(new Class[0]);
- init.setAccessible(true);
- Object target = init.newInstance(new Object[0]);
-
- // invoke the method
- Object res = null;
- try {
- Method theMethod = getMethod(receiverClass, selector, types);
- res = theMethod.invoke(target, args);
- return new MethExecutorResult(res);
-
- } catch (InvocationTargetException invTargEx) {
- Throwable targEx = invTargEx.getTargetException();
- if (targEx == null) {
- return new MethExecutorResult(res);
-
- } else {
- return new MethExecutorResult(targEx);
- }
- }
-
- } catch (VirtualMachineError e) {
- SystemFailure.initiateFailure(e);
- throw e;
- } catch (Throwable t) {
- return new MethExecutorResult(t);
- }
- }
-
- /**
- *
- * A small program for testing this class.
- *
- */
- public static String testMethod1() {
- return "The result is: " + System.currentTimeMillis();
- }
-
- public static String testMethod2() {
- throw new ArrayIndexOutOfBoundsException("frip");
- }
-
- public static void main(String[] args) {
- MethExecutorResult result = null;
- result = MethExecutor.execute("hydra.MethExecutor", "testMethod1");
- System.out.println(result.toString());
- result = MethExecutor.execute("hydra.MethExecutor", "testMethod2");
- System.out.println(result.toString());
- }
-}
diff --git a/geode-dunit/src/main/java/hydra/MethExecutorResult.java b/geode-dunit/src/main/java/hydra/MethExecutorResult.java
deleted file mode 100644
index 1adc765..0000000
--- a/geode-dunit/src/main/java/hydra/MethExecutorResult.java
+++ /dev/null
@@ -1,182 +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 hydra;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.io.StringWriter;
-
-/**
- *
- * The result of a MethExecutor execute method.
- *
- */
-public class MethExecutorResult implements Serializable {
-
- /**
- * A "result" object that indicates that an exception occurred while invoking the method
- */
- public static final Serializable EXCEPTION_OCCURRED = new Serializable() {
- public boolean equals(Object o) {
- // Allows instances to be compared across VMs
- return o != null && this.getClass().equals(o.getClass());
- }
-
- public int hashCode() {
- return this.getClass().hashCode();
- }
-
- public String toString() {
- return "EXCEPTION_OCCURRED";
- }
- };
-
- /**
- * A "exception" object that indicates that an exception could not be serialized.
- */
- public static final Throwable NONSERIALIZABLE_EXCEPTION = new Throwable() {
- public boolean equals(Object o) {
- // Allows instances to be compared across VMs
- return o != null && this.getClass().equals(o.getClass());
- }
-
- public int hashCode() {
- return this.getClass().hashCode();
- }
-
- public String toString() {
- return "NONSERIALIZABLE_EXCEPTION";
- }
- };
-
-
- //////////////////// Instance Methods ///////////////////////////
-
- /** The result of execution (may be an exception or error type) */
- private Object result;
-
- /** The exception that resulted from invoking the method */
- private Throwable exception;
-
- /** Type of the exception (if applicable) */
- private String exceptionClassName;
-
- /** Message of the exception (if applicable) */
- private String exceptionMessage;
-
- /** Stack trace information (if applicable) */
- private String stackTrace;
-
- public MethExecutorResult() {
- this.result = null;
- }
-
- public MethExecutorResult(Object result) {
- this.result = result;
- }
-
- /**
- * This constructor is invoked when invoking a method resulted in an exception being thrown. The
- * "result" is set to {@link #EXCEPTION_OCCURRED}. If the exception could not be serialized,
- * {@link #getException()} will return IOException with the exception stack as the message.
- */
- public MethExecutorResult(Throwable thr) {
- this.result = EXCEPTION_OCCURRED;
- this.exceptionClassName = thr.getClass().getName();
- this.exceptionMessage = thr.getMessage();
-
- StringWriter sw = new StringWriter();
-
- thr.printStackTrace(new PrintWriter(sw, true));
- this.stackTrace = sw.toString();
-
- try {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(baos);
- oos.writeObject(thr);
- this.exception = thr;
-
- } catch (IOException ex) {
- sw = new StringWriter();
- ex.printStackTrace(new PrintWriter(sw, true));
- this.exception = new IOException(sw.toString());
- }
- }
-
- public String toString() {
- StringBuffer s = new StringBuffer();
- s.append(this.getResult());
- s.append("\n");
- if (this.getStackTrace() != null) {
- s.append(this.getStackTrace());
- }
- return s.toString();
- }
-
- /**
- * Returns the result of the method call. If an exception was thrown during the method call,
- * {@link #EXCEPTION_OCCURRED} is returned.
- *
- * @see #exceptionOccurred()
- */
- public Object getResult() {
- return this.result;
- }
-
- /**
- * Returns the name of the exception class of the exception that was thrown while invoking a
- * method. If no exception was thrown, <code>null</code> is returned.
- */
- public String getExceptionClassName() {
- return this.exceptionClassName;
- }
-
- /**
- * Returns the message of the exception that was thrown while invoking a method. If no exception
- * was thrown, <code>null</code> is returned.
- */
- public String getExceptionMessage() {
- return this.exceptionMessage;
- }
-
- /**
- * Returns the stack trace of the exception that was thrown while invoking a method. If no
- * exception was thrown, <code>null</code> is returned.
- */
- public String getStackTrace() {
- return this.stackTrace;
- }
-
- /**
- * Returns the exception that was thrown while invoking a method. If the exception could not be
- * serialized, then {@link #NONSERIALIZABLE_EXCEPTION} is returned. If no exception was thrown,
- * <code>null</code> is returned.
- */
- public Throwable getException() {
- return this.exception;
- }
-
- /**
- * Returns whether or not an exception occurred while invoking the method
- */
- public boolean exceptionOccurred() {
- return EXCEPTION_OCCURRED.equals(this.result);
- }
-
-}
diff --git a/geode-dunit/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscDUnitTestBase.java b/geode-dunit/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscDUnitTestBase.java
index fae7104..4911add 100755
--- a/geode-dunit/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscDUnitTestBase.java
+++ b/geode-dunit/src/main/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscDUnitTestBase.java
@@ -86,9 +86,9 @@ import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.Wait;
import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.junit.categories.ClientServerTest;
+import org.apache.geode.test.version.VersionManager;
/**
* Tests client server corner cases between Region and Pool
diff --git a/geode-dunit/src/main/java/org/apache/geode/security/ClientAuthorizationTestCase.java b/geode-dunit/src/main/java/org/apache/geode/security/ClientAuthorizationTestCase.java
index aae3a4a..161449c 100644
--- a/geode-dunit/src/main/java/org/apache/geode/security/ClientAuthorizationTestCase.java
+++ b/geode-dunit/src/main/java/org/apache/geode/security/ClientAuthorizationTestCase.java
@@ -90,7 +90,7 @@ import org.apache.geode.test.dunit.WaitCriterion;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.DistributedRule;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
/**
* Base class for tests for authorization from client to server. It contains utility functions for
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/DUnitEnv.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/DUnitEnv.java
index 85fd14a..86880e7 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/DUnitEnv.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/DUnitEnv.java
@@ -18,7 +18,7 @@ import java.io.File;
import java.rmi.RemoteException;
import java.util.Properties;
-import org.apache.geode.test.dunit.standalone.BounceResult;
+import org.apache.geode.test.dunit.internal.BounceResult;
/**
* This class provides an abstraction over the environment that is used to run dunit. This will
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/Host.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/Host.java
index 18f17c3..be99201 100755
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/Host.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/Host.java
@@ -18,8 +18,8 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
-import org.apache.geode.test.dunit.standalone.RemoteDUnitVMIF;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.dunit.internal.RemoteDUnitVMIF;
+import org.apache.geode.test.version.VersionManager;
/**
* This class represents a host on which a remote method may be invoked. It provides access to the
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/VM.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/VM.java
index 32643ec..572d058 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/VM.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/VM.java
@@ -14,7 +14,7 @@
*/
package org.apache.geode.test.dunit;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.NUM_VMS;
+import static org.apache.geode.test.dunit.internal.DUnitLauncher.NUM_VMS;
import java.io.File;
import java.io.PrintWriter;
@@ -24,13 +24,12 @@ import java.rmi.RemoteException;
import java.util.List;
import java.util.concurrent.Callable;
-import hydra.MethExecutorResult;
-
import org.apache.geode.internal.process.ProcessUtils;
-import org.apache.geode.test.dunit.standalone.BounceResult;
-import org.apache.geode.test.dunit.standalone.RemoteDUnitVMIF;
-import org.apache.geode.test.dunit.standalone.StandAloneDUnitEnv;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.dunit.internal.BounceResult;
+import org.apache.geode.test.dunit.internal.MethodInvokerResult;
+import org.apache.geode.test.dunit.internal.RemoteDUnitVMIF;
+import org.apache.geode.test.dunit.internal.StandAloneDUnitEnv;
+import org.apache.geode.test.version.VersionManager;
/**
* This class represents a Java Virtual Machine that runs in a DistributedTest.
@@ -240,7 +239,7 @@ public class VM implements Serializable {
new IllegalStateException("VM not available: " + this));
}
- MethExecutorResult result = execute(targetClass, methodName, args);
+ MethodInvokerResult result = execute(targetClass, methodName, args);
if (!result.exceptionOccurred()) {
return (V) result.getResult();
@@ -423,7 +422,7 @@ public class VM implements Serializable {
new IllegalStateException("VM not available: " + this));
}
- MethExecutorResult result = execute(targetObject, methodName, args);
+ MethodInvokerResult result = execute(targetObject, methodName, args);
if (!result.exceptionOccurred()) {
return (V) result.getResult();
@@ -517,7 +516,7 @@ public class VM implements Serializable {
+ (VersionManager.isCurrentVersion(version) ? "" : (" with version " + version));
}
- private MethExecutorResult execute(final Class<?> targetClass, final String methodName,
+ private MethodInvokerResult execute(final Class<?> targetClass, final String methodName,
final Object[] args) {
try {
return client.executeMethodOnClass(targetClass.getName(), methodName, args);
@@ -526,7 +525,7 @@ public class VM implements Serializable {
}
}
- private MethExecutorResult execute(final Object targetObject, final String methodName,
+ private MethodInvokerResult execute(final Object targetObject, final String methodName,
final Object[] args) {
try {
if (args == null) {
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/BounceResult.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/BounceResult.java
similarity index 95%
copy from geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/BounceResult.java
copy to geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/BounceResult.java
index 754af47..95ae4a6 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/BounceResult.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/BounceResult.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.dunit.internal;
public class BounceResult {
private final int newId;
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ChildVM.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/ChildVM.java
similarity index 93%
rename from geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ChildVM.java
rename to geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/ChildVM.java
index fe3277b..c5cb336 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ChildVM.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/ChildVM.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.dunit.internal;
import java.rmi.Naming;
@@ -22,8 +22,7 @@ import org.apache.geode.internal.ExitCode;
import org.apache.geode.internal.OSProcess;
import org.apache.geode.internal.Version;
import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher.MasterRemote;
+import org.apache.geode.test.version.VersionManager;
public class ChildVM {
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitHost.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitHost.java
new file mode 100644
index 0000000..947a055
--- /dev/null
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitHost.java
@@ -0,0 +1,119 @@
+/*
+ * 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 org.apache.geode.test.dunit.internal;
+
+import java.io.IOException;
+import java.rmi.AccessException;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.rmi.registry.Registry;
+
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.version.VersionManager;
+
+class DUnitHost extends Host {
+ private static final long serialVersionUID = -8034165624503666383L;
+
+ /**
+ * VM ID for the VM to use for the debugger.
+ */
+ private static final int DEBUGGING_VM_NUM = -1;
+
+ private final transient VM debuggingVM;
+
+ private transient ProcessManager processManager;
+
+ public DUnitHost(String hostName, ProcessManager processManager) throws RemoteException {
+ super(hostName);
+ this.debuggingVM = new VM(this, -1, new RemoteDUnitVM());
+ this.processManager = processManager;
+ }
+
+ public void init(Registry registry, int numVMs)
+ throws AccessException, RemoteException, NotBoundException, InterruptedException {
+ for (int i = 0; i < numVMs; i++) {
+ RemoteDUnitVMIF remote = processManager.getStub(i);
+ addVM(i, remote);
+ }
+
+ addLocator(DUnitLauncher.LOCATOR_VM_NUM, processManager.getStub(DUnitLauncher.LOCATOR_VM_NUM));
+
+ addHost(this);
+ }
+
+ /**
+ * Retrieves one of this host's VMs based on the specified VM ID. This will not bounce VM to a
+ * different version. It will only get the current running VM or launch a new one if not already
+ * launched.
+ *
+ * @param n ID of the requested VM; a value of <code>-1</code> will return the controller VM,
+ * which may be useful for debugging.
+ * @return VM for the requested VM ID.
+ */
+ @Override
+ public VM getVM(int n) {
+ if (n < getVMCount() && n != DEBUGGING_VM_NUM) {
+ VM current = super.getVM(n);
+ return getVM(current.getVersion(), n);
+ } else {
+ return getVM(VersionManager.CURRENT_VERSION, n);
+ }
+ }
+
+ @Override
+ public VM getVM(String version, int n) {
+ if (n == DEBUGGING_VM_NUM) {
+ // for ease of debugging, pass -1 to get the local VM
+ return debuggingVM;
+ }
+
+ if (n < getVMCount()) {
+ VM current = super.getVM(n);
+ if (!current.getVersion().equals(version)) {
+ System.out.println(
+ "Bouncing VM" + n + " from version " + current.getVersion() + " to " + version);
+ current.bounce(version);
+ }
+ return current;
+ }
+
+ int oldVMCount = getVMCount();
+ if (n >= oldVMCount) {
+ // If we don't have a VM with that number, dynamically create it.
+ try {
+ // first fill in any gaps, to keep the superclass, Host, happy
+ for (int i = oldVMCount; i < n; i++) {
+ processManager.launchVM(i);
+ }
+ processManager.waitForVMs(DUnitLauncher.STARTUP_TIMEOUT);
+
+ for (int i = oldVMCount; i < n; i++) {
+ addVM(i, processManager.getStub(i));
+ }
+
+ // now create the one we really want
+ processManager.launchVM(version, n, false);
+ processManager.waitForVMs(DUnitLauncher.STARTUP_TIMEOUT);
+ addVM(n, processManager.getStub(n));
+
+ } catch (IOException | InterruptedException | NotBoundException e) {
+ throw new RuntimeException("Could not dynamically launch vm + " + n, e);
+ }
+ }
+
+ return super.getVM(n);
+ }
+}
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitLauncher.java
similarity index 73%
rename from geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java
rename to geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitLauncher.java
index 45bb9a3..0303bc4 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitLauncher.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.dunit.internal;
import static org.apache.geode.distributed.ConfigurationProperties.DISABLE_AUTO_RECONNECT;
import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION;
@@ -35,20 +35,13 @@ import java.net.InetAddress;
import java.net.URISyntaxException;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
-import java.rmi.AccessException;
import java.rmi.AlreadyBoundException;
import java.rmi.NotBoundException;
-import java.rmi.Remote;
-import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
-import java.rmi.server.UnicastRemoteObject;
import java.util.List;
import java.util.Properties;
-import batterytest.greplogs.ExpectedStrings;
-import batterytest.greplogs.LogConsumer;
-import hydra.MethExecutorResult;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.LoggerContext;
@@ -66,8 +59,8 @@ import org.apache.geode.internal.logging.Configuration;
import org.apache.geode.test.dunit.DUnitEnv;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.SerializableCallable;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
+import org.apache.geode.test.greplogs.ExpectedStrings;
+import org.apache.geode.test.greplogs.LogConsumer;
/**
* A class to build a fake test configuration and launch some DUnit VMS.
@@ -101,18 +94,13 @@ public class DUnitLauncher {
public static int NUM_VMS = 4;
/**
- * VM ID for the VM to use for the debugger.
- */
- private static final int DEBUGGING_VM_NUM = -1;
-
- /**
* VM ID for the VM to use for the locator.
*/
- private static final int LOCATOR_VM_NUM = -2;
+ static final int LOCATOR_VM_NUM = -2;
static final long STARTUP_TIMEOUT = 120 * 1000;
- private static final String STARTUP_TIMEOUT_MESSAGE =
- "VMs did not start up within " + (STARTUP_TIMEOUT / 1000) + " seconds";
+ static final String STARTUP_TIMEOUT_MESSAGE =
+ "VMs did not start up within " + STARTUP_TIMEOUT / 1000 + " seconds";
private static final String SUSPECT_FILENAME = "dunit_suspect.log";
private static File DUNIT_SUSPECT_FILE;
@@ -310,7 +298,7 @@ public class DUnitLauncher {
RemoteDUnitVMIF remote = (RemoteDUnitVMIF) registry.lookup("vm" + LOCATOR_VM_NUM);
final File locatorLogFile =
LOCATOR_LOG_TO_DISK ? new File("locator-" + locatorPort + ".log") : new File("");
- MethExecutorResult result = remote.executeMethodOnObject(new SerializableCallable() {
+ MethodInvokerResult result = remote.executeMethodOnObject(new SerializableCallable() {
public Object call() throws IOException {
Properties p = getDistributedSystemProperties();
// I never want this locator to end up starting a jmx manager
@@ -418,152 +406,4 @@ public class DUnitLauncher {
}
- public interface MasterRemote extends Remote {
- public int getLocatorPort() throws RemoteException;
-
- public void signalVMReady() throws RemoteException;
-
- public void ping() throws RemoteException;
-
- public BounceResult bounce(int pid) throws RemoteException;
-
- public BounceResult bounce(String version, int pid, boolean force) throws RemoteException;
- }
-
- public static class Master extends UnicastRemoteObject implements MasterRemote {
- private static final long serialVersionUID = 1178600200232603119L;
-
- private final Registry registry;
- private final ProcessManager processManager;
-
-
- public Master(Registry registry, ProcessManager processManager) throws RemoteException {
- this.processManager = processManager;
- this.registry = registry;
- }
-
- public int getLocatorPort() throws RemoteException {
- return locatorPort;
- }
-
- public synchronized void signalVMReady() {
- processManager.signalVMReady();
- }
-
- public void ping() {
- // do nothing
- }
-
- @Override
- public BounceResult bounce(int pid) {
- return bounce(VersionManager.CURRENT_VERSION, pid, false);
- }
-
- @Override
- public BounceResult bounce(String version, int pid, boolean force) {
- processManager.bounce(version, pid, force);
-
- try {
- if (!processManager.waitForVMs(STARTUP_TIMEOUT)) {
- throw new RuntimeException(STARTUP_TIMEOUT_MESSAGE);
- }
- RemoteDUnitVMIF remote =
- (RemoteDUnitVMIF) registry.lookup(VM.getVMName(VersionManager.CURRENT_VERSION, pid));
- return new BounceResult(pid, remote);
- } catch (RemoteException | NotBoundException e) {
- throw new RuntimeException("could not lookup name", e);
- } catch (InterruptedException e) {
- throw new RuntimeException("Failed waiting for VM", e);
- }
- }
- }
-
- private static class DUnitHost extends Host {
- private static final long serialVersionUID = -8034165624503666383L;
-
- private final transient VM debuggingVM;
-
- private transient ProcessManager processManager;
-
- public DUnitHost(String hostName, ProcessManager processManager) throws RemoteException {
- super(hostName);
- this.debuggingVM = new VM(this, -1, new RemoteDUnitVM());
- this.processManager = processManager;
- }
-
- public void init(Registry registry, int numVMs)
- throws AccessException, RemoteException, NotBoundException, InterruptedException {
- for (int i = 0; i < numVMs; i++) {
- RemoteDUnitVMIF remote = processManager.getStub(i);
- addVM(i, remote);
- }
-
- addLocator(LOCATOR_VM_NUM, processManager.getStub(LOCATOR_VM_NUM));
-
- addHost(this);
- }
-
- /**
- * Retrieves one of this host's VMs based on the specified VM ID. This will not bounce VM to a
- * different version. It will only get the current running VM or launch a new one if not already
- * launched.
- *
- * @param n ID of the requested VM; a value of <code>-1</code> will return the controller VM,
- * which may be useful for debugging.
- * @return VM for the requested VM ID.
- */
- @Override
- public VM getVM(int n) {
- if (n < getVMCount() && n != DEBUGGING_VM_NUM) {
- VM current = super.getVM(n);
- return getVM(current.getVersion(), n);
- } else {
- return getVM(VersionManager.CURRENT_VERSION, n);
- }
- }
-
- @Override
- public VM getVM(String version, int n) {
- if (n == DEBUGGING_VM_NUM) {
- // for ease of debugging, pass -1 to get the local VM
- return debuggingVM;
- }
-
- if (n < getVMCount()) {
- VM current = super.getVM(n);
- if (!current.getVersion().equals(version)) {
- System.out.println(
- "Bouncing VM" + n + " from version " + current.getVersion() + " to " + version);
- current.bounce(version);
- }
- return current;
- }
-
- int oldVMCount = getVMCount();
- if (n >= oldVMCount) {
- // If we don't have a VM with that number, dynamically create it.
- try {
- // first fill in any gaps, to keep the superclass, Host, happy
- for (int i = oldVMCount; i < n; i++) {
- processManager.launchVM(i);
- }
- processManager.waitForVMs(STARTUP_TIMEOUT);
-
- for (int i = oldVMCount; i < n; i++) {
- addVM(i, processManager.getStub(i));
- }
-
- // now create the one we really want
- processManager.launchVM(version, n, false);
- processManager.waitForVMs(STARTUP_TIMEOUT);
- addVM(n, processManager.getStub(n));
-
- } catch (IOException | InterruptedException | NotBoundException e) {
- throw new RuntimeException("Could not dynamically launch vm + " + n, e);
- }
- }
-
- return super.getVM(n);
- }
- }
}
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/InternalBlackboardImpl.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/InternalBlackboardImpl.java
index 3519440..86da376 100755
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/InternalBlackboardImpl.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/InternalBlackboardImpl.java
@@ -23,8 +23,6 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
-
public class InternalBlackboardImpl extends UnicastRemoteObject implements InternalBlackboard {
public static InternalBlackboard blackboard;
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java
index 74281ca..8c64555 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/JUnit4DistributedTestCase.java
@@ -58,7 +58,6 @@ import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.DistributedRule;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
/**
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/Master.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/Master.java
new file mode 100644
index 0000000..fab8539
--- /dev/null
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/Master.java
@@ -0,0 +1,71 @@
+/*
+ * 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 org.apache.geode.test.dunit.internal;
+
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.rmi.registry.Registry;
+import java.rmi.server.UnicastRemoteObject;
+
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.version.VersionManager;
+
+public class Master extends UnicastRemoteObject implements MasterRemote {
+ private static final long serialVersionUID = 1178600200232603119L;
+
+ private final Registry registry;
+ private final ProcessManager processManager;
+
+
+ public Master(Registry registry, ProcessManager processManager) throws RemoteException {
+ this.processManager = processManager;
+ this.registry = registry;
+ }
+
+ public int getLocatorPort() throws RemoteException {
+ return DUnitLauncher.locatorPort;
+ }
+
+ public synchronized void signalVMReady() {
+ processManager.signalVMReady();
+ }
+
+ public void ping() {
+ // do nothing
+ }
+
+ @Override
+ public BounceResult bounce(int pid) {
+ return bounce(VersionManager.CURRENT_VERSION, pid, false);
+ }
+
+ @Override
+ public BounceResult bounce(String version, int pid, boolean force) {
+ processManager.bounce(version, pid, force);
+
+ try {
+ if (!processManager.waitForVMs(DUnitLauncher.STARTUP_TIMEOUT)) {
+ throw new RuntimeException(DUnitLauncher.STARTUP_TIMEOUT_MESSAGE);
+ }
+ RemoteDUnitVMIF remote =
+ (RemoteDUnitVMIF) registry.lookup(VM.getVMName(VersionManager.CURRENT_VERSION, pid));
+ return new BounceResult(pid, remote);
+ } catch (RemoteException | NotBoundException e) {
+ throw new RuntimeException("could not lookup name", e);
+ } catch (InterruptedException e) {
+ throw new RuntimeException("Failed waiting for VM", e);
+ }
+ }
+}
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/BounceResult.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/MasterRemote.java
similarity index 65%
rename from geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/BounceResult.java
rename to geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/MasterRemote.java
index 754af47..f613f7e 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/BounceResult.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/MasterRemote.java
@@ -12,23 +12,20 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.dunit.internal;
-public class BounceResult {
- private final int newId;
- private final RemoteDUnitVMIF newClient;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
- public BounceResult(int newId, RemoteDUnitVMIF newClient) {
- this.newId = newId;
- this.newClient = newClient;
- }
+public interface MasterRemote extends Remote {
- public int getNewId() {
- return newId;
- }
+ int getLocatorPort() throws RemoteException;
- public RemoteDUnitVMIF getNewClient() {
- return newClient;
- }
+ void signalVMReady() throws RemoteException;
+ void ping() throws RemoteException;
+
+ BounceResult bounce(int pid) throws RemoteException;
+
+ BounceResult bounce(String version, int pid, boolean force) throws RemoteException;
}
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/MethodInvoker.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/MethodInvoker.java
new file mode 100644
index 0000000..0d0997c
--- /dev/null
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/MethodInvoker.java
@@ -0,0 +1,255 @@
+/*
+ * 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 org.apache.geode.test.dunit.internal;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.geode.SystemFailure;
+
+/**
+ * A class specialized for invoking methods via reflection.
+ */
+class MethodInvoker {
+
+ /**
+ * Invoke the method "methodName" on the class named "target". Return the result, including stack
+ * trace (if any).
+ */
+ static MethodInvokerResult execute(String target, String methodName) {
+ return execute(target, methodName, null);
+ }
+
+ /**
+ * Executes the given static method on the given class with the given parameters.
+ */
+ static MethodInvokerResult execute(String target, String methodName, Object[] parameters) {
+ try {
+ // get the class
+ Class targetClass = Class.forName(target);
+
+ // invoke the method
+ try {
+ Class[] paramTypes;
+ if (parameters == null) {
+ paramTypes = new Class[0];
+
+ } else {
+ paramTypes = new Class[parameters.length];
+ for (int i = 0; i < parameters.length; i++) {
+ if (parameters[i] == null) {
+ paramTypes[i] = null;
+
+ } else {
+ paramTypes[i] = parameters[i].getClass();
+ }
+ }
+ }
+
+ Method method = getMethod(targetClass, methodName, paramTypes);
+ method.setAccessible(true);
+ Object result = method.invoke(targetClass, parameters);
+ return new MethodInvokerResult(result);
+
+ } catch (InvocationTargetException e) {
+ Throwable targetException = e.getTargetException();
+ if (targetException == null) {
+ return new MethodInvokerResult(null);
+
+ } else {
+ return new MethodInvokerResult(targetException);
+ }
+ }
+
+ } catch (VirtualMachineError e) {
+ SystemFailure.initiateFailure(e);
+ throw e;
+
+ } catch (Throwable t) {
+ return new MethodInvokerResult(t);
+ }
+ }
+
+ /**
+ * Send the message "methodName" to the object "target". Return the result, including stack trace
+ * (if any).
+ */
+ static MethodInvokerResult executeObject(Object target, String methodName) {
+ return executeObject(target, methodName, null);
+ }
+
+ /**
+ * Executes the given instance method on the given object with the given arguments.
+ */
+ static MethodInvokerResult executeObject(Object target, String methodName, Object[] arguments) {
+ try {
+ // get the class
+ Class receiverClass = target.getClass();
+
+ // invoke the method
+ try {
+ Class[] paramTypes;
+ if (arguments == null) {
+ paramTypes = new Class[0];
+
+ } else {
+ paramTypes = new Class[arguments.length];
+ for (int i = 0; i < arguments.length; i++) {
+ if (arguments[i] == null) {
+ paramTypes[i] = Object.class;
+
+ } else {
+ paramTypes[i] = arguments[i].getClass();
+ }
+ }
+ }
+
+ Method method = getMethod(receiverClass, methodName, paramTypes);
+ method.setAccessible(true);
+ Object result = method.invoke(target, arguments);
+ return new MethodInvokerResult(result);
+
+ } catch (InvocationTargetException e) {
+ Throwable targetException = e.getTargetException();
+ if (targetException == null) {
+ return new MethodInvokerResult(null);
+
+ } else {
+ return new MethodInvokerResult(targetException);
+ }
+ }
+
+ } catch (VirtualMachineError e) {
+ SystemFailure.initiateFailure(e);
+ throw e;
+
+ } catch (Throwable t) {
+ return new MethodInvokerResult(t);
+ }
+ }
+
+ /**
+ * Helper method that searches a class (and its superclasses) for a method with the given name and
+ * parameter types.
+ *
+ * @throws NoSuchMethodException If the method cannot be found
+ */
+ private static Method getMethod(Class targetClass, String methodName, Class[] parameterTypes)
+ throws NoSuchMethodException {
+ List<Method> matchingMethods = new ArrayList<>();
+ for (Class theClass = targetClass; theClass != null; theClass = theClass.getSuperclass()) {
+ Method[] methods = theClass.getDeclaredMethods();
+
+ NEXT_METHOD:
+
+ for (Method method : methods) {
+ if (!method.getName().equals(methodName)) {
+ continue;
+ }
+
+ Class[] methodParameterTypes = method.getParameterTypes();
+ if (methodParameterTypes.length != parameterTypes.length) {
+ continue;
+ }
+
+ for (int j = 0; j < methodParameterTypes.length; j++) {
+ if (parameterTypes[j] == null) {
+ if (methodParameterTypes[j].isPrimitive()) {
+ // this parameter is not ok, the parameter is a primitive and the value is null
+ continue NEXT_METHOD;
+ } else {
+ // this parameter is ok, the argument is an object and the value is null
+ continue;
+ }
+ }
+ if (!methodParameterTypes[j].isAssignableFrom(parameterTypes[j])) {
+ Class methodParameterType = methodParameterTypes[j];
+ Class parameterType = parameterTypes[j];
+
+ if (methodParameterType.isPrimitive()) {
+ if (methodParameterType.equals(boolean.class) && parameterType.equals(Boolean.class)
+ || methodParameterType.equals(short.class) && parameterType.equals(Short.class)
+ || methodParameterType.equals(int.class) && parameterType.equals(Integer.class)
+ || methodParameterType.equals(long.class) && parameterType.equals(Long.class)
+ || methodParameterType.equals(float.class) && parameterType.equals(Float.class)
+ || methodParameterType.equals(double.class) && parameterType.equals(Double.class)
+ || methodParameterType.equals(char.class) && parameterType.equals(Character.class)
+ || methodParameterType.equals(byte.class) && parameterType.equals(Byte.class)) {
+
+ // This parameter is okay, try the next one
+ continue;
+ }
+ }
+ continue NEXT_METHOD;
+ }
+ }
+
+ matchingMethods.add(method);
+ }
+
+ // We want to check to make sure there aren't two
+ // ambiguous methods on the same class. But a subclass
+ // can still override a method on a super class, so we'll stop
+ // if we found a method on the subclass.
+ if (matchingMethods.size() > 0) {
+ break;
+ }
+ }
+
+ if (matchingMethods.isEmpty()) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Could not find method ");
+ sb.append(methodName);
+ sb.append(" with ");
+ sb.append(parameterTypes.length);
+ sb.append(" parameters [");
+ for (int i = 0; i < parameterTypes.length; i++) {
+ String name = parameterTypes[i] == null ? null : parameterTypes[i].getName();
+ sb.append(name);
+ if (i < parameterTypes.length - 1) {
+ sb.append(", ");
+ }
+ }
+ sb.append("] in class ");
+ sb.append(targetClass.getName());
+ throw new NoSuchMethodException(sb.toString());
+ }
+
+ if (matchingMethods.size() > 1) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Method is ambiguous ");
+ sb.append(methodName);
+ sb.append(" with ");
+ sb.append(parameterTypes.length);
+ sb.append(" parameters [");
+ for (int i = 0; i < parameterTypes.length; i++) {
+ String name = parameterTypes[i] == null ? null : parameterTypes[i].getName();
+ sb.append(name);
+ if (i < parameterTypes.length - 1) {
+ sb.append(", ");
+ }
+ }
+ sb.append("] in class ");
+ sb.append(targetClass.getName());
+ sb.append(" methods=").append(matchingMethods);
+ throw new NoSuchMethodException(sb.toString());
+
+ } else {
+ return matchingMethods.get(0);
+ }
+ }
+}
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/MethodInvokerResult.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/MethodInvokerResult.java
new file mode 100644
index 0000000..9c488f8
--- /dev/null
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/MethodInvokerResult.java
@@ -0,0 +1,139 @@
+/*
+ * 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 org.apache.geode.test.dunit.internal;
+
+import static java.lang.System.lineSeparator;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.PrintWriter;
+import java.io.Serializable;
+import java.io.StringWriter;
+
+/**
+ * The result of a {@link MethodInvoker} method invocation.
+ */
+public class MethodInvokerResult implements Serializable {
+
+ /**
+ * A "result" object that indicates that an exception occurred while invoking the method
+ */
+ public static final Serializable EXCEPTION_OCCURRED = new Serializable() {
+
+ @Override
+ public boolean equals(Object obj) {
+ // Allows instances to be compared across VMs
+ return obj != null && getClass().equals(obj.getClass());
+ }
+
+ @Override
+ public int hashCode() {
+ return getClass().hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return "EXCEPTION_OCCURRED";
+ }
+ };
+
+ /** The result of execution (may be an exception or error type) */
+ private final Object result;
+
+ /** The exception that resulted from invoking the method */
+ private final Throwable exception;
+
+ /** Stack trace information (if applicable) */
+ private String stackTrace;
+
+ MethodInvokerResult(Object result) {
+ this.result = result;
+ exception = null;
+ }
+
+ /**
+ * This constructor is invoked when invoking a method resulted in an exception being thrown. The
+ * "result" is set to {@link #EXCEPTION_OCCURRED}. If the exception could not be serialized,
+ * {@link #getException()} will return IOException with the exception stack as the message.
+ */
+ MethodInvokerResult(Throwable throwable) {
+ result = EXCEPTION_OCCURRED;
+ exception = checkSerializable(throwable);
+ stackTrace = toStackTrace(throwable);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(getResult());
+ sb.append(lineSeparator());
+ if (getStackTrace() != null) {
+ sb.append(getStackTrace());
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Returns the result of the method call. If an exception was thrown during the method call,
+ * {@link #EXCEPTION_OCCURRED} is returned.
+ *
+ * @see #exceptionOccurred()
+ */
+ public Object getResult() {
+ return result;
+ }
+
+ /**
+ * Returns the stack trace of the exception that was thrown while invoking a method. If no
+ * exception was thrown, <code>null</code> is returned.
+ */
+ public String getStackTrace() {
+ return stackTrace;
+ }
+
+ /**
+ * Returns the exception that was thrown while invoking a method. If no exception was thrown,
+ * <code>null</code> is returned.
+ */
+ public Throwable getException() {
+ return exception;
+ }
+
+ /**
+ * Returns whether or not an exception occurred while invoking the method
+ */
+ public boolean exceptionOccurred() {
+ return EXCEPTION_OCCURRED.equals(result);
+ }
+
+ private static String toStackTrace(Throwable throwable) {
+ StringWriter sw = new StringWriter();
+ throwable.printStackTrace(new PrintWriter(sw, true));
+ return sw.toString();
+ }
+
+ private static Throwable checkSerializable(Throwable throwable) {
+ try (ObjectOutputStream oos = new ObjectOutputStream(new ByteArrayOutputStream())) {
+ oos.writeObject(throwable);
+ return throwable;
+
+ } catch (IOException e) {
+ StringWriter sw = new StringWriter();
+ e.printStackTrace(new PrintWriter(sw, true));
+ return new IOException(sw.toString());
+ }
+ }
+}
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ProcessHolder.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/ProcessHolder.java
similarity index 96%
rename from geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ProcessHolder.java
rename to geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/ProcessHolder.java
index ebc0530..15d022a 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ProcessHolder.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/ProcessHolder.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.dunit.internal;
import java.io.InputStream;
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ProcessManager.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/ProcessManager.java
similarity index 99%
rename from geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
rename to geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/ProcessManager.java
index 8b7ecc8..b3ddb32 100755
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/ProcessManager.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.dunit.internal;
import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_NETWORK_PARTITION_DETECTION;
import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
@@ -42,6 +42,7 @@ import org.apache.geode.distributed.ConfigurationProperties;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.version.VersionManager;
public class ProcessManager {
private int namingPort;
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/RemoteDUnitVM.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/RemoteDUnitVM.java
similarity index 82%
rename from geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/RemoteDUnitVM.java
rename to geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/RemoteDUnitVM.java
index d02ce74..46b7f86 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/RemoteDUnitVM.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/RemoteDUnitVM.java
@@ -12,14 +12,12 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.dunit.internal;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.concurrent.TimeUnit;
-import hydra.MethExecutor;
-import hydra.MethExecutorResult;
import org.apache.logging.log4j.Logger;
import org.apache.geode.internal.logging.LogService;
@@ -41,10 +39,10 @@ public class RemoteDUnitVM extends UnicastRemoteObject implements RemoteDUnitVMI
* @return the result of method execution
*/
@Override
- public MethExecutorResult executeMethodOnObject(Object target, String methodName) {
+ public MethodInvokerResult executeMethodOnObject(Object target, String methodName) {
String name = target.getClass().getName() + '.' + methodName + " on object: " + target;
long start = start(name);
- MethExecutorResult result = MethExecutor.executeObject(target, methodName);
+ MethodInvokerResult result = MethodInvoker.executeObject(target, methodName);
logDelta(name, start, result);
return result;
}
@@ -54,7 +52,7 @@ public class RemoteDUnitVM extends UnicastRemoteObject implements RemoteDUnitVMI
return System.nanoTime();
}
- private void logDelta(String name, long start, MethExecutorResult result) {
+ private void logDelta(String name, long start, MethodInvokerResult result) {
long delta = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start);
logger.info("Got result: {} from {} (took {} ms)", result, name, delta);
}
@@ -63,11 +61,12 @@ public class RemoteDUnitVM extends UnicastRemoteObject implements RemoteDUnitVMI
* Executes a given instance method on a given object with the given arguments.
*/
@Override
- public MethExecutorResult executeMethodOnObject(Object target, String methodName, Object[] args) {
+ public MethodInvokerResult executeMethodOnObject(Object target, String methodName,
+ Object[] args) {
String name = target.getClass().getName() + '.' + methodName
+ (args != null ? " with " + args.length + " args" : "") + " on object: " + target;
long start = start(name);
- MethExecutorResult result = MethExecutor.executeObject(target, methodName, args);
+ MethodInvokerResult result = MethodInvoker.executeObject(target, methodName, args);
logDelta(name, start, result);
return result;
}
@@ -81,10 +80,10 @@ public class RemoteDUnitVM extends UnicastRemoteObject implements RemoteDUnitVMI
* @param methodName the name of the method to execute
* @return the result of method execution
*/
- public MethExecutorResult executeMethodOnClass(String className, String methodName) {
+ public MethodInvokerResult executeMethodOnClass(String className, String methodName) {
String name = className + '.' + methodName;
long start = start(name);
- MethExecutorResult result = MethExecutor.execute(className, methodName);
+ MethodInvokerResult result = MethodInvoker.execute(className, methodName);
logDelta(name, start, result);
return result;
@@ -94,12 +93,12 @@ public class RemoteDUnitVM extends UnicastRemoteObject implements RemoteDUnitVMI
* Executes a given static method in a given class with the given arguments.
*/
@Override
- public MethExecutorResult executeMethodOnClass(String className, String methodName,
+ public MethodInvokerResult executeMethodOnClass(String className, String methodName,
Object[] args) {
String name =
className + '.' + methodName + (args != null ? " with " + args.length + " args" : "");
long start = start(name);
- MethExecutorResult result = MethExecutor.execute(className, methodName, args);
+ MethodInvokerResult result = MethodInvoker.execute(className, methodName, args);
logDelta(name, start, result);
return result;
}
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/RemoteDUnitVMIF.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/RemoteDUnitVMIF.java
similarity index 73%
rename from geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/RemoteDUnitVMIF.java
rename to geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/RemoteDUnitVMIF.java
index 9db6b06..b46d215 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/RemoteDUnitVMIF.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/RemoteDUnitVMIF.java
@@ -12,21 +12,20 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.dunit.internal;
import java.rmi.Remote;
import java.rmi.RemoteException;
-import hydra.MethExecutorResult;
-
public interface RemoteDUnitVMIF extends Remote {
- MethExecutorResult executeMethodOnObject(Object target, String methodName) throws RemoteException;
+ MethodInvokerResult executeMethodOnObject(Object target, String methodName)
+ throws RemoteException;
- MethExecutorResult executeMethodOnObject(Object target, String methodName, Object[] args)
+ MethodInvokerResult executeMethodOnObject(Object target, String methodName, Object[] args)
throws RemoteException;
- MethExecutorResult executeMethodOnClass(String className, String methodName, Object[] args)
+ MethodInvokerResult executeMethodOnClass(String className, String methodName, Object[] args)
throws RemoteException;
void shutDownVM() throws RemoteException;
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/StandAloneDUnitEnv.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/StandAloneDUnitEnv.java
similarity index 94%
rename from geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/StandAloneDUnitEnv.java
rename to geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/StandAloneDUnitEnv.java
index e8920a5..2e32ebb 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/standalone/StandAloneDUnitEnv.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/StandAloneDUnitEnv.java
@@ -12,14 +12,14 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.dunit.internal;
import java.io.File;
import java.rmi.RemoteException;
import java.util.Properties;
import org.apache.geode.test.dunit.DUnitEnv;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher.MasterRemote;
+import org.apache.geode.test.version.VersionManager;
public class StandAloneDUnitEnv extends DUnitEnv {
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/AbstractDistributedRule.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/AbstractDistributedRule.java
index 3d13c70..46bd45d 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/AbstractDistributedRule.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/AbstractDistributedRule.java
@@ -21,7 +21,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.junit.rules.serializable.SerializableStatement;
import org.apache.geode.test.junit.rules.serializable.SerializableTestRule;
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/CacheRule.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/CacheRule.java
index 4169932..ca631f3 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/CacheRule.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/CacheRule.java
@@ -16,7 +16,7 @@ package org.apache.geode.test.dunit.rules;
import static org.apache.geode.test.dunit.Disconnect.disconnectAllFromDS;
import static org.apache.geode.test.dunit.VM.DEFAULT_VM_COUNT;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
+import static org.apache.geode.test.dunit.internal.DUnitLauncher.getDistributedSystemProperties;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java
index 0687cc6..a8a5746 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java
@@ -18,7 +18,7 @@ package org.apache.geode.test.dunit.rules;
import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
import static org.apache.geode.test.dunit.Host.getHost;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.NUM_VMS;
+import static org.apache.geode.test.dunit.internal.DUnitLauncher.NUM_VMS;
import java.io.File;
import java.io.Serializable;
@@ -44,8 +44,7 @@ import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.RMIException;
import org.apache.geode.test.dunit.SerializableConsumerIF;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.junit.rules.ClientCacheRule;
import org.apache.geode.test.junit.rules.Locator;
import org.apache.geode.test.junit.rules.LocatorStarterRule;
@@ -54,6 +53,7 @@ import org.apache.geode.test.junit.rules.MemberStarterRule;
import org.apache.geode.test.junit.rules.Server;
import org.apache.geode.test.junit.rules.ServerStarterRule;
import org.apache.geode.test.junit.rules.VMProvider;
+import org.apache.geode.test.version.VersionManager;
/**
* A rule to help you start locators and servers or clients inside of a
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedDiskDirRule.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedDiskDirRule.java
index f4cbd03..61ce9c4 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedDiskDirRule.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedDiskDirRule.java
@@ -31,7 +31,7 @@ import org.junit.rules.TestName;
import org.junit.runner.Description;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.junit.rules.DiskDirRule;
import org.apache.geode.test.junit.rules.serializable.SerializableTemporaryFolder;
import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedRule.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedRule.java
index 8b315cb..76f7338 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedRule.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedRule.java
@@ -43,7 +43,7 @@ import org.apache.geode.internal.net.SocketCreatorFactory;
import org.apache.geode.management.internal.cli.LogWrapper;
import org.apache.geode.pdx.internal.TypeRegistry;
import org.apache.geode.test.dunit.IgnoredException;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.junit.rules.serializable.SerializableExternalResource;
/**
diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedUseJacksonForJsonPathRule.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedUseJacksonForJsonPathRule.java
index ca81b2c..afa42ea 100644
--- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedUseJacksonForJsonPathRule.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/rules/DistributedUseJacksonForJsonPathRule.java
@@ -17,7 +17,7 @@ package org.apache.geode.test.dunit.rules;
import static org.apache.geode.test.dunit.VM.getVMCount;
import static org.assertj.core.api.Assertions.assertThat;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.junit.rules.UseJacksonForJsonPathRule;
public class DistributedUseJacksonForJsonPathRule extends UseJacksonForJsonPathRule {
diff --git a/geode-dunit/src/main/java/batterytest/greplogs/ExpectedStrings.java b/geode-dunit/src/main/java/org/apache/geode/test/greplogs/ExpectedStrings.java
similarity index 99%
rename from geode-dunit/src/main/java/batterytest/greplogs/ExpectedStrings.java
rename to geode-dunit/src/main/java/org/apache/geode/test/greplogs/ExpectedStrings.java
index 7c1eb68..325a1ea 100644
--- a/geode-dunit/src/main/java/batterytest/greplogs/ExpectedStrings.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/greplogs/ExpectedStrings.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package batterytest.greplogs;
+package org.apache.geode.test.greplogs;
import java.util.ArrayList;
import java.util.List;
diff --git a/geode-dunit/src/main/java/batterytest/greplogs/LogConsumer.java b/geode-dunit/src/main/java/org/apache/geode/test/greplogs/LogConsumer.java
similarity index 99%
rename from geode-dunit/src/main/java/batterytest/greplogs/LogConsumer.java
rename to geode-dunit/src/main/java/org/apache/geode/test/greplogs/LogConsumer.java
index 2c382a7..c3e32e3 100644
--- a/geode-dunit/src/main/java/batterytest/greplogs/LogConsumer.java
+++ b/geode-dunit/src/main/java/org/apache/geode/test/greplogs/LogConsumer.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package batterytest.greplogs;
+package org.apache.geode.test.greplogs;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/examples/BeforeClassExampleTest.java b/geode-dunit/src/test/java/org/apache/geode/test/dunit/internal/MethodInvokerTest.java
similarity index 51%
copy from geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/examples/BeforeClassExampleTest.java
copy to geode-dunit/src/test/java/org/apache/geode/test/dunit/internal/MethodInvokerTest.java
index c11ff4b..9360ceb 100644
--- a/geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/examples/BeforeClassExampleTest.java
+++ b/geode-dunit/src/test/java/org/apache/geode/test/dunit/internal/MethodInvokerTest.java
@@ -12,26 +12,35 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.examples;
+package org.apache.geode.test.dunit.internal;
import static org.assertj.core.api.Assertions.assertThat;
-import org.junit.BeforeClass;
import org.junit.Test;
-import org.apache.geode.test.dunit.Host;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
+/**
+ * Unit tests for {@link MethodInvoker}. Extracted from {@link MethodInvoker}.
+ */
+@SuppressWarnings("unused")
+public class MethodInvokerTest {
+ @Test
+ public void invokesMethodWithReturn() {
+ MethodInvokerResult result = MethodInvoker.execute(getClass().getName(), "methodWithReturn");
+ assertThat(result.getResult()).isInstanceOf(String.class);
+ }
-public class BeforeClassExampleTest {
+ @Test
+ public void invokesMethodThatThrows() {
+ MethodInvokerResult result = MethodInvoker.execute(getClass().getName(), "methodThatThrows");
+ assertThat(result.getException()).isInstanceOf(ArrayIndexOutOfBoundsException.class);
+ }
- @BeforeClass
- public static void initializeDUnit() throws Exception {
- DUnitLauncher.launchIfNeeded();
+ public static String methodWithReturn() {
+ return "The result is: " + System.currentTimeMillis();
}
- @Test
- public void shouldHaveFourOrMoreDUnitVMsByDefault() throws Exception {
- assertThat(Host.getHost(0).getVMCount()).isGreaterThanOrEqualTo(4);
+ public static String methodThatThrows() {
+ throw new ArrayIndexOutOfBoundsException("frip");
}
}
diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/GfshRule.java b/geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/GfshRule.java
index 4f152de..d911bf3 100644
--- a/geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/GfshRule.java
+++ b/geode-junit/src/main/java/org/apache/geode/test/junit/rules/gfsh/GfshRule.java
@@ -29,8 +29,8 @@ import java.util.stream.Collectors;
import org.junit.rules.ExternalResource;
import org.junit.rules.TemporaryFolder;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.rules.RequiresGeodeHome;
+import org.apache.geode.test.version.VersionManager;
/**
* The {@code GfshRule} allows a test to execute Gfsh commands via the actual (fully-assembled) gfsh
diff --git a/geode-junit/src/main/java/org/apache/geode/test/dunit/standalone/VersionManager.java b/geode-junit/src/main/java/org/apache/geode/test/version/VersionManager.java
similarity index 99%
rename from geode-junit/src/main/java/org/apache/geode/test/dunit/standalone/VersionManager.java
rename to geode-junit/src/main/java/org/apache/geode/test/version/VersionManager.java
index d7c5598..c335d6e 100755
--- a/geode-junit/src/main/java/org/apache/geode/test/dunit/standalone/VersionManager.java
+++ b/geode-junit/src/main/java/org/apache/geode/test/version/VersionManager.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.version;
import java.io.IOException;
import java.io.InputStream;
diff --git a/geode-junit/src/test/java/org/apache/geode/test/dunit/standalone/VersionManagerJUnitTest.java b/geode-junit/src/test/java/org/apache/geode/test/version/VersionManagerJUnitTest.java
similarity index 97%
rename from geode-junit/src/test/java/org/apache/geode/test/dunit/standalone/VersionManagerJUnitTest.java
rename to geode-junit/src/test/java/org/apache/geode/test/version/VersionManagerJUnitTest.java
index 1abbe11..90c2bb3 100755
--- a/geode-junit/src/test/java/org/apache/geode/test/dunit/standalone/VersionManagerJUnitTest.java
+++ b/geode-junit/src/test/java/org/apache/geode/test/version/VersionManagerJUnitTest.java
@@ -12,7 +12,7 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.test.dunit.standalone;
+package org.apache.geode.test.version;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/geode-lucene/src/upgradeTest/java/org/apache/geode/cache/lucene/LuceneSearchWithRollingUpgradeDUnit.java b/geode-lucene/src/upgradeTest/java/org/apache/geode/cache/lucene/LuceneSearchWithRollingUpgradeDUnit.java
index 0cbdf0a..6b81709 100644
--- a/geode-lucene/src/upgradeTest/java/org/apache/geode/cache/lucene/LuceneSearchWithRollingUpgradeDUnit.java
+++ b/geode-lucene/src/upgradeTest/java/org/apache/geode/cache/lucene/LuceneSearchWithRollingUpgradeDUnit.java
@@ -57,10 +57,10 @@ import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.Invoke;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
@RunWith(Parameterized.class)
@Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeCreateGatewaySenderMixedSiteOneCurrentSiteTwo.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeCreateGatewaySenderMixedSiteOneCurrentSiteTwo.java
index eaac52c..703f028 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeCreateGatewaySenderMixedSiteOneCurrentSiteTwo.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeCreateGatewaySenderMixedSiteOneCurrentSiteTwo.java
@@ -26,8 +26,8 @@ import org.apache.geode.test.dunit.DistributedTestUtils;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
import org.apache.geode.test.junit.rules.GfshCommandRule;
+import org.apache.geode.test.version.VersionManager;
public class WANRollingUpgradeCreateGatewaySenderMixedSiteOneCurrentSiteTwo
extends WANRollingUpgradeDUnitTest {
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeDUnitTest.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeDUnitTest.java
index cc2e7ff..848d507 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeDUnitTest.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeDUnitTest.java
@@ -60,11 +60,11 @@ import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
-import org.apache.geode.test.dunit.standalone.DUnitLauncher;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.dunit.internal.DUnitLauncher;
import org.apache.geode.test.junit.categories.WanTest;
import org.apache.geode.test.junit.rules.GfshCommandRule;
import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.apache.geode.test.version.VersionManager;
@SuppressWarnings("ConstantConditions")
@Category(WanTest.class)
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingMixedSiteOneCurrentSiteTwo.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingMixedSiteOneCurrentSiteTwo.java
index 181d1fe..9c0ba9b 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingMixedSiteOneCurrentSiteTwo.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingMixedSiteOneCurrentSiteTwo.java
@@ -26,7 +26,7 @@ import org.apache.geode.test.dunit.DistributedTestUtils;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class WANRollingUpgradeEventProcessingMixedSiteOneCurrentSiteTwo
extends WANRollingUpgradeDUnitTest {
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingOldSiteOneCurrentSiteTwo.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingOldSiteOneCurrentSiteTwo.java
index 2b71c4d..3868b0f 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingOldSiteOneCurrentSiteTwo.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingOldSiteOneCurrentSiteTwo.java
@@ -26,7 +26,7 @@ import org.apache.geode.test.dunit.DistributedTestUtils;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class WANRollingUpgradeEventProcessingOldSiteOneCurrentSiteTwo
extends WANRollingUpgradeDUnitTest {
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeMultipleReceiversDefinedInClusterConfiguration.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeMultipleReceiversDefinedInClusterConfiguration.java
index 306b97b..24ca251 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeMultipleReceiversDefinedInClusterConfiguration.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeMultipleReceiversDefinedInClusterConfiguration.java
@@ -46,7 +46,7 @@ import org.apache.geode.test.dunit.DistributedTestUtils;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class WANRollingUpgradeMultipleReceiversDefinedInClusterConfiguration
extends WANRollingUpgradeDUnitTest {
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterCurrentSiteMemberFailover.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterCurrentSiteMemberFailover.java
index 5f6c5b3..4a10e31 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterCurrentSiteMemberFailover.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterCurrentSiteMemberFailover.java
@@ -25,7 +25,7 @@ import org.apache.geode.test.dunit.DistributedTestUtils;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class WANRollingUpgradeSecondaryEventsNotReprocessedAfterCurrentSiteMemberFailover
extends WANRollingUpgradeDUnitTest {
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterCurrentSiteMemberFailoverWithOldClient.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterCurrentSiteMemberFailoverWithOldClient.java
index 0763af6..68e29d2 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterCurrentSiteMemberFailoverWithOldClient.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterCurrentSiteMemberFailoverWithOldClient.java
@@ -25,7 +25,7 @@ import org.apache.geode.test.dunit.DistributedTestUtils;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class WANRollingUpgradeSecondaryEventsNotReprocessedAfterCurrentSiteMemberFailoverWithOldClient
extends WANRollingUpgradeDUnitTest {
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterOldSiteMemberFailover.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterOldSiteMemberFailover.java
index c5f7a22..a0318d1 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterOldSiteMemberFailover.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeSecondaryEventsNotReprocessedAfterOldSiteMemberFailover.java
@@ -25,7 +25,7 @@ import org.apache.geode.test.dunit.DistributedTestUtils;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class WANRollingUpgradeSecondaryEventsNotReprocessedAfterOldSiteMemberFailover
extends WANRollingUpgradeDUnitTest {
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeVerifyGatewayReceiverDoesNotSendRemoveCacheServerProfileToMembersOlderThan1dot5.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeVerifyGatewayReceiverDoesNotSendRemoveCacheServerProfileToMembersOlderThan1dot5.java
index 756ad10..34a9bc9 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeVerifyGatewayReceiverDoesNotSendRemoveCacheServerProfileToMembersOlderThan1dot5.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeVerifyGatewayReceiverDoesNotSendRemoveCacheServerProfileToMembersOlderThan1dot5.java
@@ -26,7 +26,7 @@ import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class WANRollingUpgradeVerifyGatewayReceiverDoesNotSendRemoveCacheServerProfileToMembersOlderThan1dot5
extends WANRollingUpgradeDUnitTest {
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeVerifyGatewaySenderProfile.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeVerifyGatewaySenderProfile.java
index f6fa588..2aaae6c 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeVerifyGatewaySenderProfile.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeVerifyGatewaySenderProfile.java
@@ -27,7 +27,7 @@ import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.NetworkUtils;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.version.VersionManager;
public class WANRollingUpgradeVerifyGatewaySenderProfile extends WANRollingUpgradeDUnitTest {
@Test