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
commit 71d1d8a29a90f98f1017cb3714151b8acc22b8c6 Author: Kirk Lund <[email protected]> AuthorDate: Wed Mar 14 14:49:59 2018 -0700 GEODE-4789: add VM count constructor to ClusterStartupRule Any DUnit test that uses more than 4 VMs should always specify the total VM count via the ClusterStartupRule constructor so that "bundled" Rules such as DistributedRestoreSystemProperties which has a before that needs to know about all the VMs can be setup properly. --- .../geode/test/dunit/rules/ClusterStartupRule.java | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java index cf27041..31cd483 100644 --- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java +++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java @@ -13,12 +13,12 @@ * the License. * */ - package org.apache.geode.test.dunit.rules; import static org.apache.geode.distributed.ConfigurationProperties.GROUPS; import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_CLIENT_AUTH_INIT; import static org.apache.geode.test.dunit.Host.getHost; +import static org.apache.geode.test.dunit.standalone.DUnitLauncher.NUM_VMS; import java.io.File; import java.io.Serializable; @@ -38,6 +38,7 @@ import org.apache.geode.cache.server.CacheServer; import org.apache.geode.distributed.internal.InternalLocator; import org.apache.geode.internal.cache.InternalCache; import org.apache.geode.security.templates.UserPasswordAuthInit; +import org.apache.geode.test.dunit.Host; import org.apache.geode.test.dunit.VM; import org.apache.geode.test.dunit.standalone.DUnitLauncher; import org.apache.geode.test.dunit.standalone.VersionManager; @@ -50,12 +51,15 @@ import org.apache.geode.test.junit.rules.Server; import org.apache.geode.test.junit.rules.ServerStarterRule; import org.apache.geode.test.junit.rules.VMProvider; - /** * A rule to help you start locators and servers inside of a * <a href="https://cwiki.apache.org/confluence/display/GEODE/Distributed-Unit-Tests">DUnit * test</a>. This rule will start Servers and Locators inside of the four remote {@link VM}s created * by the DUnit framework. + * + * <p> + * If you use this Rule in any test that uses more than the default of 4 VMs in DUnit, then + * you must specify the total number of VMs via the {@link #ClusterStartupRule(int)} constructor. */ public class ClusterStartupRule extends ExternalResource implements Serializable { /** @@ -76,7 +80,9 @@ public class ClusterStartupRule extends ExternalResource implements Serializable return ((ServerStarterRule) memberStarter).getServer(); } - private DistributedRestoreSystemProperties restoreSystemProperties = + private final int vmCount; + + private final DistributedRestoreSystemProperties restoreSystemProperties = new DistributedRestoreSystemProperties(); private Map<Integer, VMProvider> occupiedVMs; @@ -84,6 +90,11 @@ public class ClusterStartupRule extends ExternalResource implements Serializable private boolean logFile = false; public ClusterStartupRule() { + this(NUM_VMS); + } + + public ClusterStartupRule(final int vmCount) { + this.vmCount = vmCount; DUnitLauncher.launchIfNeeded(); } @@ -101,6 +112,9 @@ public class ClusterStartupRule extends ExternalResource implements Serializable @Override protected void before() throws Throwable { + for (int i = 0; i < vmCount; i++) { + Host.getHost(0).getVM(i); + } restoreSystemProperties.before(); occupiedVMs = new HashMap<>(); } -- To stop receiving notification emails like this one, please contact [email protected].
