You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/12/12 22:36:44 UTC
[41/46] geode git commit: Convert from ManagementTestCase to
ManagementTestRule
Convert from ManagementTestCase to ManagementTestRule
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/c3586a96
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/c3586a96
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/c3586a96
Branch: refs/heads/feature/GEODE-1930
Commit: c3586a96fb339d46a6a6261cc38e21633b6a2749
Parents: b042271
Author: Kirk Lund <kl...@apache.org>
Authored: Mon Oct 31 13:45:28 2016 -0700
Committer: Kirk Lund <kl...@apache.org>
Committed: Mon Nov 28 10:57:41 2016 -0800
----------------------------------------------------------------------
.../RestAPIsAndInterOpsDUnitTest.java | 110 +-
geode-core/build.gradle | 1 +
.../org/apache/geode/management/JVMMetrics.java | 3 +-
.../org/apache/geode/management/OSMetrics.java | 5 +-
.../internal/SystemManagementService.java | 2 +-
.../DistributedLockServiceDUnitTest.java | 18 +-
.../cache/ConnectDisconnectDUnitTest.java | 26 +-
...gionBucketCreationDistributionDUnitTest.java | 10 +-
.../cache/locks/TXLockServiceDUnitTest.java | 18 +-
.../management/CacheManagementDUnitTest.java | 987 +++++-----
.../management/ClientHealthStatsDUnitTest.java | 559 +++---
.../management/CompositeTypeTestDUnitTest.java | 189 +-
.../management/DLockManagementDUnitTest.java | 520 ++----
.../management/DiskManagementDUnitTest.java | 789 +++-----
.../management/DistributedSystemDUnitTest.java | 952 +++-------
.../geode/management/JMXMBeanDUnitTest.java | 2 +-
.../management/LocatorManagementDUnitTest.java | 417 ++---
.../geode/management/ManagementTestBase.java | 545 ++----
.../geode/management/ManagementTestRule.java | 430 +++++
.../org/apache/geode/management/Manager.java | 31 +
.../org/apache/geode/management/Member.java | 31 +
.../management/OffHeapManagementDUnitTest.java | 373 ++--
.../geode/management/QueryDataDUnitTest.java | 1202 +++++-------
.../management/RegionManagementDUnitTest.java | 1754 ++++++++----------
.../stats/DistributedSystemStatsDUnitTest.java | 104 +-
.../QueryDataFunctionApplyLimitClauseTest.java | 12 +-
.../internal/pulse/TestClientIdsDUnitTest.java | 88 +-
.../pulse/TestSubscriptionsDUnitTest.java | 292 +--
.../geode/test/dunit/AsyncInvocation.java | 63 +-
.../org/apache/geode/test/dunit/Invoke.java | 6 +-
.../java/org/apache/geode/test/dunit/VM.java | 7 +-
.../java/org/apache/geode/test/dunit/Wait.java | 2 +
.../cache/internal/JUnit4CacheTestCase.java | 5 +
.../internal/JUnit4DistributedTestCase.java | 4 +-
.../dunit/rules/DistributedDisconnectRule.java | 4 +-
.../DistributedRestoreSystemProperties.java | 4 +-
.../geode/test/dunit/rules/DistributedRule.java | 68 +
.../test/dunit/rules/DistributedRunRules.java | 76 +
.../test/dunit/rules/DistributedStatement.java | 76 +
.../test/dunit/rules/DistributedTestRule.java | 192 ++
.../DistributedUseJacksonForJsonPathRule.java | 51 +
.../dunit/rules/DistributedWrapperRule.java | 52 +
.../geode/test/dunit/rules/RemoteInvoker.java | 16 +-
.../apache/geode/test/dunit/rules/WhichVMs.java | 58 +
.../rules/tests/DistributedTestRuleTest.java | 54 +
.../test/dunit/standalone/DUnitLauncher.java | 70 +-
geode-junit/build.gradle | 1 +
.../junit/rules/UseJacksonForJsonPathRule.java | 128 ++
.../SerializableExternalResource.java | 25 +-
.../serializable/SerializableStatement.java | 27 +
.../management/LuceneManagementDUnitTest.java | 32 +-
gradle/dependency-versions.properties | 3 +-
52 files changed, 4838 insertions(+), 5656 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/c3586a96/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/controllers/RestAPIsAndInterOpsDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/controllers/RestAPIsAndInterOpsDUnitTest.java b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/controllers/RestAPIsAndInterOpsDUnitTest.java
index c90a7a4..b989206 100644
--- a/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/controllers/RestAPIsAndInterOpsDUnitTest.java
+++ b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/controllers/RestAPIsAndInterOpsDUnitTest.java
@@ -65,7 +65,6 @@ import org.apache.geode.distributed.DistributedSystem;
import org.apache.geode.internal.AvailablePort;
import org.apache.geode.internal.AvailablePortHelper;
import org.apache.geode.internal.cache.GemFireCacheImpl;
-import org.apache.geode.management.ManagementTestBase;
import org.apache.geode.pdx.PdxInstance;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.NetworkUtils;
@@ -78,55 +77,51 @@ import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactor
*
* @since GemFire 8.0
*/
-
@Category(DistributedTest.class)
@RunWith(Parameterized.class)
@Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
+@SuppressWarnings("serial")
public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase {
- private static final long serialVersionUID = -254776154266339226L;
-
- @Parameterized.Parameter
- public String urlContext;
-
- @Parameterized.Parameters
- public static Collection<String> data() {
- return Arrays.asList("/geode", "/gemfire-api");
- }
-
- private ManagementTestBase helper;
-
public static final String PEOPLE_REGION_NAME = "People";
- // private static RestTemplate restTemplate;
-
- private static final String findAllPeopleQuery =
- "/queries?id=findAllPeople&q=SELECT%20*%20FROM%20/People";
- private static final String findPeopleByGenderQuery =
- "/queries?id=filterByGender&q=SELECT%20*%20from%20/People%20where%20gender=$1";
- private static final String findPeopleByLastNameQuery =
- "/queries?id=filterByLastName&q=SELECT%20*%20from%20/People%20where%20lastName=$1";
-
- private static final String[] PARAM_QUERY_IDS_ARRAY =
- {"findAllPeople", "filterByGender", "filterByLastName"};
-
- final static String QUERY_ARGS =
- "[" + "{" + "\"@type\": \"string\"," + "\"@value\": \"Patel\"" + "}" + "]";
-
- final static String PERSON_AS_JSON_CAS = "{" + "\"@old\" :" + "{"
- + "\"@type\": \"org.apache.geode.rest.internal.web.controllers.Person\"," + "\"id\": 101,"
- + " \"firstName\": \"Mithali\"," + " \"middleName\": \"Dorai\"," + " \"lastName\": \"Raj\","
- + " \"birthDate\": \"12/04/1982\"," + "\"gender\": \"FEMALE\"" + "}," + "\"@new\" :" + "{"
- + "\"@type\": \"org.apache.geode.rest.internal.web.controllers.Person\"," + "\"id\": 1101,"
- + " \"firstName\": \"Virat\"," + " \"middleName\": \"Premkumar\","
- + " \"lastName\": \"Kohli\"," + " \"birthDate\": \"08/11/1988\"," + "\"gender\": \"MALE\""
- + "}" + "}";
-
- final static String PERSON_AS_JSON_REPLACE =
- "{" + "\"@type\": \"org.apache.geode.rest.internal.web.controllers.Person\"," + "\"id\": 501,"
- + " \"firstName\": \"Barack\"," + " \"middleName\": \"Hussein\","
- + " \"lastName\": \"Obama\"," + " \"birthDate\": \"04/08/1961\"," + "\"gender\": \"MALE\""
- + "}";
+ private static final String findAllPeopleQuery = "/queries?id=findAllPeople&q=SELECT%20*%20FROM%20/People";
+ private static final String findPeopleByGenderQuery = "/queries?id=filterByGender&q=SELECT%20*%20from%20/People%20where%20gender=$1";
+ private static final String findPeopleByLastNameQuery = "/queries?id=filterByLastName&q=SELECT%20*%20from%20/People%20where%20lastName=$1";
+
+ private static final String[] PARAM_QUERY_IDS_ARRAY = { "findAllPeople",
+ "filterByGender", "filterByLastName" };
+
+ final static String QUERY_ARGS = "["
+ + "{"
+ + "\"@type\": \"string\","
+ + "\"@value\": \"Patel\""
+ + "}"
+ + "]";
+
+ final static String PERSON_AS_JSON_CAS = "{"
+ + "\"@old\" :"
+ + "{"
+ + "\"@type\": \"org.apache.geode.rest.internal.web.controllers.Person\","
+ + "\"id\": 101," + " \"firstName\": \"Mithali\","
+ + " \"middleName\": \"Dorai\"," + " \"lastName\": \"Raj\","
+ + " \"birthDate\": \"12/04/1982\"," + "\"gender\": \"FEMALE\""
+ + "},"
+ + "\"@new\" :"
+ + "{"
+ + "\"@type\": \"org.apache.geode.rest.internal.web.controllers.Person\","
+ + "\"id\": 1101," + " \"firstName\": \"Virat\","
+ + " \"middleName\": \"Premkumar\"," + " \"lastName\": \"Kohli\","
+ + " \"birthDate\": \"08/11/1988\"," + "\"gender\": \"MALE\""
+ + "}"
+ + "}";
+
+ final static String PERSON_AS_JSON_REPLACE = "{"
+ + "\"@type\": \"org.apache.geode.rest.internal.web.controllers.Person\","
+ + "\"id\": 501," + " \"firstName\": \"Barack\","
+ + " \"middleName\": \"Hussein\"," + " \"lastName\": \"Obama\","
+ + " \"birthDate\": \"04/08/1961\"," + "\"gender\": \"MALE\""
+ + "}";
private static final String PERSON_LIST_AS_JSON = "[" + "{"
+ "\"@type\": \"org.apache.geode.rest.internal.web.controllers.Person\"," + "\"id\": 3,"
@@ -161,23 +156,12 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase {
+ " \"lastName\": \"Patel\"," + " \"birthDate\": \"23/08/2012\"," + "\"gender\": \"MALE\""
+ "}" + "]";
- public RestAPIsAndInterOpsDUnitTest() {
- super();
- this.helper = new ManagementTestBase() {
- {
- }
- };
-
- }
-
- @Override
- public final void preSetUp() throws Exception {
- disconnectAllFromDS();
- }
+ @Parameterized.Parameter
+ public String urlContext;
- @Override
- protected final void postTearDownLocatorTestBase() throws Exception {
- disconnectAllFromDS();
+ @Parameterized.Parameters
+ public static Collection<String> data() {
+ return Arrays.asList("/geode", "/gemfire-api");
}
public String startBridgeServerWithRestService(final String hostName, final String[] groups,
@@ -828,14 +812,6 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase {
// Querying
doQueryOpsUsingRestApis(restEndpoint);
-
- // stop the client and make sure the bridge server notifies
- // stopBridgeMemberVM(client);
- helper.closeCache(locator);
- helper.closeCache(manager);
- helper.closeCache(server);
- helper.closeCache(client);
-
}
private void createClientCache(final String host, final int port) throws Exception {
http://git-wip-us.apache.org/repos/asf/geode/blob/c3586a96/geode-core/build.gradle
----------------------------------------------------------------------
diff --git a/geode-core/build.gradle b/geode-core/build.gradle
index 067bafc..383e071 100755
--- a/geode-core/build.gradle
+++ b/geode-core/build.gradle
@@ -114,6 +114,7 @@ dependencies {
// Test Dependencies
// External
+ testCompile 'com.jayway.jsonpath:json-path-assert:' + project.'json-path-assert.version'
testCompile 'org.apache.bcel:bcel:' + project.'bcel.version'
testRuntime 'org.apache.derby:derby:' + project.'derby.version'
testCompile 'org.mockito:mockito-core:' + project.'mockito-core.version'
http://git-wip-us.apache.org/repos/asf/geode/blob/c3586a96/geode-core/src/main/java/org/apache/geode/management/JVMMetrics.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/JVMMetrics.java b/geode-core/src/main/java/org/apache/geode/management/JVMMetrics.java
index 127592a..388c8f6 100644
--- a/geode-core/src/main/java/org/apache/geode/management/JVMMetrics.java
+++ b/geode-core/src/main/java/org/apache/geode/management/JVMMetrics.java
@@ -15,6 +15,7 @@
package org.apache.geode.management;
import java.beans.ConstructorProperties;
+import java.io.Serializable;
import org.apache.geode.cache.Region;
@@ -25,7 +26,7 @@ import org.apache.geode.cache.Region;
* @since GemFire 7.0
*
*/
-public class JVMMetrics {
+public class JVMMetrics implements Serializable {
/**
* Number of GCs performed
http://git-wip-us.apache.org/repos/asf/geode/blob/c3586a96/geode-core/src/main/java/org/apache/geode/management/OSMetrics.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/OSMetrics.java b/geode-core/src/main/java/org/apache/geode/management/OSMetrics.java
index d90c8be..e6f27a7 100644
--- a/geode-core/src/main/java/org/apache/geode/management/OSMetrics.java
+++ b/geode-core/src/main/java/org/apache/geode/management/OSMetrics.java
@@ -15,6 +15,7 @@
package org.apache.geode.management;
import java.beans.ConstructorProperties;
+import java.io.Serializable;
/**
* Composite data type used to distribute metrics for the operating system hosting a member of the
@@ -23,8 +24,8 @@ import java.beans.ConstructorProperties;
* @since GemFire 7.0
*
*/
-public class OSMetrics {
-
+public class OSMetrics implements Serializable {
+
/**
* Maximum number file descriptor which can be opened
*/
http://git-wip-us.apache.org/repos/asf/geode/blob/c3586a96/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java b/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java
index cb75591..0d243c7 100755
--- a/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/SystemManagementService.java
@@ -350,7 +350,7 @@ public final class SystemManagementService extends BaseManagementService {
}
- public <T> T getMBeanProxy(ObjectName objectName, Class<T> interfaceClass) {
+ public <T> T getMBeanProxy(ObjectName objectName, Class<T> interfaceClass) { // TODO: this is too generic
if (!isStartedAndOpen()) {
return null;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/c3586a96/geode-core/src/test/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java b/geode-core/src/test/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java
index 277c604..7b2dd18 100755
--- a/geode-core/src/test/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/DistributedLockServiceDUnitTest.java
@@ -98,15 +98,15 @@ public class DistributedLockServiceDUnitTest extends JUnit4DistributedTestCase {
@Override
public final void preTearDown() throws Exception {
Invoke.invokeInEveryVM(() -> destroyAllDLockServices());
- // invokeInEveryVM(DistributedLockServiceDUnitTest.class,
- // "remoteDumpAllDLockServices");
-
- // InternalDistributedLockService.destroyAll();
-
- // // Disconnects the DistributedSystem in every VM - since
- // // each test randomly chooses whether shared memory is used
- // disconnectAllFromDS();
-
+// invokeInEveryVMAndController(DistributedLockServiceDUnitTest.class,
+// "remoteDumpAllDLockServices");
+
+ //InternalDistributedLockService.destroyAll();
+
+// // Disconnects the DistributedSystem in every VM - since
+// // each test randomly chooses whether shared memory is used
+// disconnectAllFromDS();
+
this.lockGrantor = null;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/c3586a96/geode-core/src/test/java/org/apache/geode/internal/cache/ConnectDisconnectDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/ConnectDisconnectDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/ConnectDisconnectDUnitTest.java
index de63433..2213700 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/ConnectDisconnectDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/ConnectDisconnectDUnitTest.java
@@ -40,19 +40,19 @@ public class ConnectDisconnectDUnitTest extends JUnit4CacheTestCase {
// see bugs #50785 and #46438
@Test
public void testManyConnectsAndDisconnects() throws Throwable {
- // invokeInEveryVM(new SerializableRunnable() {
- //
- // @Override
- // public void run() {
- // Log.setLogWriterLevel("info");
- // }
- // });
-
- // uncomment these lines to use stand-alone locators
- // int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(4);
- // setLocatorPorts(ports);
-
- for (int i = 0; i < 20; i++) {
+// invokeInEveryVMAndController(new SerializableRunnable() {
+//
+// @Override
+// public void run() {
+// Log.setLogWriterLevel("info");
+// }
+// });
+
+// uncomment these lines to use stand-alone locators
+// int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(4);
+// setLocatorPorts(ports);
+
+ for(int i = 0; i < 20; i++) {
LogWriterUtils.getLogWriter().info("Test run: " + i);
runOnce();
tearDown();
http://git-wip-us.apache.org/repos/asf/geode/blob/c3586a96/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionBucketCreationDistributionDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionBucketCreationDistributionDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionBucketCreationDistributionDUnitTest.java
index ed23f2a..0cb6693 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionBucketCreationDistributionDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/PartitionedRegionBucketCreationDistributionDUnitTest.java
@@ -443,12 +443,10 @@ public class PartitionedRegionBucketCreationDistributionDUnitTest
}
});
- // final int bucketPerHost = (int) Math.ceil(((double) maxBuckets / Host.getHostCount()));
-
- // invokeInEveryVM(new SerializableRunnable("") {
- //
- // }
-
+// invokeInEveryVMAndController(new SerializableRunnable("") {
+//
+// }
+
}
/**
http://git-wip-us.apache.org/repos/asf/geode/blob/c3586a96/geode-core/src/test/java/org/apache/geode/internal/cache/locks/TXLockServiceDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/locks/TXLockServiceDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/locks/TXLockServiceDUnitTest.java
index 14267a4..a40de8b 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/locks/TXLockServiceDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/locks/TXLockServiceDUnitTest.java
@@ -89,11 +89,12 @@ public class TXLockServiceDUnitTest extends JUnit4DistributedTestCase {
@Override
public final void preTearDown() throws Exception {
- // invokeInEveryVM(TXLockServiceDUnitTest.class,
- // "remoteDumpAllDLockServices");
-
- Invoke.invokeInEveryVM(TXLockServiceDUnitTest.class, "destroyServices");
-
+// invokeInEveryVMAndController(TXLockServiceDUnitTest.class,
+// "remoteDumpAllDLockServices");
+
+ Invoke.invokeInEveryVM(TXLockServiceDUnitTest.class,
+ "destroyServices");
+
destroyServices();
// // Disconnects the DistributedSystem in every VM - since
@@ -113,10 +114,9 @@ public class TXLockServiceDUnitTest extends JUnit4DistributedTestCase {
@Test
public void testGetAndDestroy() {
forEachVMInvoke("checkGetAndDestroy", new Object[] {});
- /*
- * invokeInEveryVM(TXLockServiceDUnitTest.class, "destroyServices");
- * forEachVMInvoke("checkGetAndDestroy", new Object[] {});
- */
+ /*invokeInEveryVMAndController(TXLockServiceDUnitTest.class,
+ "destroyServices");
+ forEachVMInvoke("checkGetAndDestroy", new Object[] {});*/
}
@Test
http://git-wip-us.apache.org/repos/asf/geode/blob/c3586a96/geode-core/src/test/java/org/apache/geode/management/CacheManagementDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/CacheManagementDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/CacheManagementDUnitTest.java
index 680579d..a40bfd1 100644
--- a/geode-core/src/test/java/org/apache/geode/management/CacheManagementDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/CacheManagementDUnitTest.java
@@ -14,11 +14,14 @@
*/
package org.apache.geode.management;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
import static com.jayway.awaitility.Awaitility.*;
+import static java.util.concurrent.TimeUnit.*;
+import static org.apache.geode.distributed.ConfigurationProperties.*;
+import static org.assertj.core.api.Assertions.*;
import static org.hamcrest.Matchers.*;
-import static org.junit.Assert.*;
+import java.io.Serializable;
+import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -26,13 +29,16 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import javax.management.InstanceNotFoundException;
+
import javax.management.JMException;
import javax.management.Notification;
import javax.management.NotificationListener;
import javax.management.ObjectName;
+import com.jayway.awaitility.Awaitility;
+import com.jayway.awaitility.core.ConditionFactory;
+import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -43,57 +49,69 @@ import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.management.internal.LocalManager;
import org.apache.geode.management.internal.MBeanJMXAdapter;
import org.apache.geode.management.internal.ManagementConstants;
import org.apache.geode.management.internal.NotificationHub.NotificationHubListener;
import org.apache.geode.management.internal.SystemManagementService;
-import org.apache.geode.test.dunit.AsyncInvocation;
-import org.apache.geode.test.dunit.LogWriterUtils;
-import org.apache.geode.test.dunit.SerializableRunnable;
+import org.apache.geode.test.dunit.Invoke;
import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.Wait;
-import org.apache.geode.test.dunit.WaitCriterion;
import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.rules.serializable.SerializableTemporaryFolder;
+import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
/**
* This class checks and verifies various data and operations exposed through MemberMXBean
* interface.
* <p>
- * Goal of the Test : MemberMBean gets created once cache is created. Data like config data and
- * stats are of proper value To check proper federation of MemberMBean including remote ops and
- * remote data access
+ * <p>Goal of the Test : MemberMBean gets created once cache is created. Data like
+ * config data and stats are of proper value To check proper federation of
+ * MemberMBean including remote ops and remote data access
+ * <p>
+ * <p>This test is a mess and needs to be rewritten.
*/
@Category(DistributedTest.class)
-public class CacheManagementDUnitTest extends ManagementTestBase {
+@SuppressWarnings({ "serial", "unused" })
+public class CacheManagementDUnitTest implements Serializable {
+
+ /** used in memberVMs */
+ private static final String NOTIFICATION_REGION_NAME = "NotifTestRegion_";
+
+ /** used in managerVM */
+ private static final List<Notification> notifications = new ArrayList<>();
+
+ @Manager
+ private VM managerVM;
+
+ @Member
+ private VM[] memberVMs;
- private final String VERIFY_CONFIG_METHOD = "verifyConfigData";
+ @Rule
+ public ManagementTestRule managementTestRule = ManagementTestRule.builder().build();
- private final String VERIFY_REMOTE_CONFIG_METHOD = "verifyConfigDataRemote";
+ @Rule
+ public SerializableTemporaryFolder temporaryFolder = new SerializableTemporaryFolder();
- static final List<Notification> notifList = new ArrayList<Notification>();
+ @Rule
+ public SerializableTestName testName = new SerializableTestName();
- // This must be bigger than the dunit ack-wait-threshold for the revoke
- // tests. The command line is setting the ack-wait-threshold to be
- // 60 seconds.
- private static final int MAX_WAIT = 70 * 1000;
+ @Before
+ public void before() throws Exception {
+ this.managerVM.invoke(() -> notifications.clear());
+ }
@Test
public void testGemFireConfigData() throws Exception {
- initManagement(false);
-
- Map<DistributedMember, DistributionConfig> configMap =
- new HashMap<DistributedMember, DistributionConfig>();
- for (VM vm : getManagedNodeList()) {
- Map<DistributedMember, DistributionConfig> configMapMember =
- (Map<DistributedMember, DistributionConfig>) vm.invoke(CacheManagementDUnitTest.class,
- VERIFY_CONFIG_METHOD);
+ this.managementTestRule.createMembers();
+ this.managementTestRule.createManagers();
+
+ Map<DistributedMember, DistributionConfig> configMap = new HashMap<>();
+ for (VM memberVM : this.memberVMs) {
+ Map<DistributedMember, DistributionConfig> configMapMember = memberVM.invoke(() -> verifyConfigData());
configMap.putAll(configMapMember);
}
- Object[] args = new Object[1];
- args[0] = configMap;
- getManagingNode().invoke(CacheManagementDUnitTest.class, VERIFY_REMOTE_CONFIG_METHOD, args);
+ this.managerVM.invoke(() -> verifyConfigDataRemote(configMap));
}
/**
@@ -101,30 +119,34 @@ public class CacheManagementDUnitTest extends ManagementTestBase {
*/
@Test
public void testMemberMBeanOperations() throws Exception {
- initManagement(false);
+ int i = 1;
+ for (VM memberVM : this.memberVMs) {
+ Properties props = new Properties();
+ props.setProperty(LOG_FILE, this.temporaryFolder.newFile(this.testName.getMethodName() + "-VM" + i + ".log").getAbsolutePath());
+ this.managementTestRule.createMember(memberVM, props);
+ i++;
+ }
- for (VM vm : managedNodeList) {
+ this.managementTestRule.createManagers();
- // Do some operations to fill the logs
+ for (VM memberVM : this.memberVMs) {
+ String logMessage = "This line should be in the log";
+ memberVM.invoke(() -> this.managementTestRule.getCache().getLogger().info(logMessage));
- createLocalRegion(vm, "testRegion");
+ String log = memberVM.invoke(() -> fetchLog(30));
+ assertThat(log).isNotNull();
+ assertThat(log).contains(logMessage);
- String log = (String) vm.invoke(() -> CacheManagementDUnitTest.fetchLog());
- assertNotNull(log);
- LogWriterUtils.getLogWriter()
- .info("<ExpectedString> Log Of Member is " + log.toString() + "</ExpectedString> ");
+ JVMMetrics jvmMetrics = memberVM.invoke(() -> fetchJVMMetrics());
- vm.invoke(() -> CacheManagementDUnitTest.fetchJVMMetrics());
+ OSMetrics osMetrics = memberVM.invoke(() -> fetchOSMetrics());
- vm.invoke(() -> CacheManagementDUnitTest.fetchOSMetrics());
+ // TODO: need assertions
- vm.invoke(() -> CacheManagementDUnitTest.shutDownMember());
+ memberVM.invoke(() -> shutDownMember());
}
- VM managingNode = getManagingNode();
- Object[] args = new Object[1];
- args[0] = 1;// Only locator member wont be shutdown
- managingNode.invoke(CacheManagementDUnitTest.class, "assertExpectedMembers", args);
+ this.managerVM.invoke(() -> verifyExpectedMembers(0));
}
/**
@@ -132,270 +154,254 @@ public class CacheManagementDUnitTest extends ManagementTestBase {
*/
@Test
public void testMemberMBeanOpsRemote() throws Exception {
- initManagement(false);
- getManagingNode().invoke(() -> CacheManagementDUnitTest.invokeRemoteOps());
+ this.managementTestRule.createMembers();
+ this.managementTestRule.createManagers();
+ this.managerVM.invoke(() -> invokeRemoteMemberMXBeanOps());
}
/**
- * Creates and starts a manager. Multiple Managers
+ * Creates and starts a managerVM.
+ * Multiple Managers
*/
@Test
public void testManager() throws Exception {
- List<VM> managedNodeList = getManagedNodeList();
- VM node1 = managedNodeList.get(0);
- VM node2 = managedNodeList.get(1);
- VM node3 = managedNodeList.get(2);
- VM managingNode = getManagingNode();
+ this.managementTestRule.createMember(this.memberVMs[0]);
+ this.managementTestRule.createMember(this.memberVMs[1]);
- createCache(node1);
- createCache(node2);
- createManagementCache(node3);
+ this.managementTestRule.createManager(this.memberVMs[2], false);
- // Only creates a cache in Managing Node
- // Does not start the manager
- createManagementCache(managingNode);
+ this.managementTestRule.createManager(this.managerVM, false);
- node3.invoke(() -> CacheManagementDUnitTest.startManager());
+ this.memberVMs[2].invoke(() -> startManager());
- // Now start Managing node manager. System will have two Managers now which
+ // Now start Managing node managerVM. System will have two Managers now which
// should be OK
- DistributedMember member = getMember(node3);
- startManagingNode(managingNode);
- checkManagerView(managingNode, member);
- stopManagingNode(managingNode);
+ DistributedMember member = this.managementTestRule.getDistributedMember(this.memberVMs[2]);
+ this.managementTestRule.startManager(this.managerVM);
+
+ verifyManagerStarted(this.managerVM, member);
+ this.managementTestRule.stopManager(this.managerVM);
}
/**
- * Creates and starts a manager. Multiple Managers
+ * Creates and starts a managerVM.
+ * Multiple Managers
*/
@Test
public void testManagerShutdown() throws Exception {
- List<VM> managedNodeList = getManagedNodeList();
- VM node1 = managedNodeList.get(0);
- VM node2 = managedNodeList.get(1);
- VM node3 = managedNodeList.get(2);
- VM managingNode = getManagingNode();
+ this.managementTestRule.createMember(this.memberVMs[0]);
+ this.managementTestRule.createMember(this.memberVMs[1]);
+ this.managementTestRule.createMember(this.memberVMs[2]);
- createCache(node1);
- createCache(node2);
- createCache(node3);
+ this.managementTestRule.createManager(this.managerVM, false);
+ this.managementTestRule.startManager(this.managerVM);
- // Only creates a cache in Managing Node
- // Does not start the manager
- createManagementCache(managingNode);
+ verifyManagerStarted(this.managerVM, this.managementTestRule.getDistributedMember(this.memberVMs[0]));
- startManagingNode(managingNode);
- DistributedMember member = getMember(managingNode);
- checkManagerView(managingNode, member);
- stopManagingNode(managingNode);
- checkNonManagerView(managingNode);
+ this.managementTestRule.stopManager(this.managerVM);
+ verifyManagerStopped(this.managerVM, this.memberVMs.length);
}
@Test
- public void testServiceCloseManagedNode() throws Exception {
- List<VM> managedNodeList = getManagedNodeList();
- VM node1 = managedNodeList.get(0);
- VM node2 = managedNodeList.get(1);
- VM node3 = managedNodeList.get(2);
- VM managingNode = getManagingNode();
+ public void closeCacheShouldStopLocalManager() throws Exception {
+ this.managementTestRule.createMember(this.memberVMs[0]);
+ this.managementTestRule.createMember(this.memberVMs[1]);
- createCache(node1);
- createCache(node2);
- createManagementCache(node3);
+ this.managementTestRule.createManager(this.memberVMs[2], false);
// Only creates a cache in Managing Node
- // Does not start the manager
- createManagementCache(managingNode);
-
- node3.invoke(() -> CacheManagementDUnitTest.startManager());
-
- closeCache(node3);
- validateServiceResource(node3);
+ // Does not start the managerVM
+ this.managementTestRule.createManager(this.managerVM, false);
+
+ this.memberVMs[2].invoke(() -> startManager());
+
+ this.memberVMs[2].invoke(() -> {
+ SystemManagementService service = this.managementTestRule.getSystemManagementService();
+ LocalManager localManager = service.getLocalManager();
+ this.managementTestRule.getCache().close();
+ assertThat(localManager.isRunning()).isFalse();
+ assertThat(service.isManager()).isFalse();
+ assertThat(service.getLocalManager()).isNull();
+ });
}
@Test
public void testGetMBean() throws Exception {
- List<VM> managedNodeList = getManagedNodeList();
- VM node1 = managedNodeList.get(0);
- VM node2 = managedNodeList.get(1);
- VM node3 = managedNodeList.get(2);
- VM managingNode = getManagingNode();
-
- createCache(node1);
- createCache(node2);
- createCache(node3);
+ this.managementTestRule.createMember(this.memberVMs[0]);
+ this.managementTestRule.createMember(this.memberVMs[1]);
+ this.managementTestRule.createMember(this.memberVMs[2]);
- createManagementCache(managingNode);
+ this.managementTestRule.createManager(this.managerVM, false);
- startManagingNode(managingNode);
+ this.managementTestRule.startManager(this.managerVM);
- checkGetMBean(managingNode);
+ verifyGetMBeanInstance(this.managerVM);
}
@Test
public void testQueryMBeans() throws Exception {
- List<VM> managedNodeList = getManagedNodeList();
- VM node1 = managedNodeList.get(0);
- VM node2 = managedNodeList.get(1);
- VM node3 = managedNodeList.get(2);
- VM managingNode = getManagingNode();
+ this.managementTestRule.createMember(this.memberVMs[0]);
+ this.managementTestRule.createMember(this.memberVMs[1]);
+ this.managementTestRule.createMember(this.memberVMs[2]);
- createCache(node1);
- createCache(node2);
- createCache(node3);
+ this.managementTestRule.createManager(this.managerVM, false);
- createManagementCache(managingNode);
+ this.managementTestRule.startManager(this.managerVM);
- startManagingNode(managingNode);
-
- checkQueryMBeans(managingNode);
+ verifyQueryMBeans(this.managerVM);
}
- protected void checkQueryMBeans(final VM vm) {
- SerializableRunnable validateServiceResource = new SerializableRunnable("Check Query MBeans") {
- public void run() {
- GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
+ @Test
+ public void testNotification() throws Exception {
+ // Step : 1 : Create Managed Node Caches
+ this.managementTestRule.createMember(this.memberVMs[0]);
+ this.managementTestRule.createMember(this.memberVMs[1]);
+ this.managementTestRule.createMember(this.memberVMs[2]);
- Set<DistributedMember> otherMembers =
- cache.getDistributionManager().getOtherNormalDistributionManagerIds();
+ // Step : 2 : Create Managing Node Cache, start managerVM, add a notification
+ // handler to DistributedSystemMXBean
+ this.managementTestRule.createManager(this.managerVM, false);
+ this.managementTestRule.startManager(this.managerVM);
+ attachListenerToDistributedSystemMXBean(this.managerVM);
- Set<ObjectName> superSet = new HashSet<ObjectName>();
+ // Step : 3 : Verify Notification count, notification region sizes
+ verifyNotificationsAndRegionSize(this.memberVMs[0], this.memberVMs[1], this.memberVMs[2], this.managerVM);
+ }
- for (DistributedMember member : otherMembers) {
+ @Test
+ public void testNotificationManagingNodeFirst() throws Exception {
+ // Step : 1 : Create Managing Node Cache, start managerVM, add a notification
+ // handler to DistributedSystemMXBean
+ this.managementTestRule.createManager(this.managerVM, false);
+ this.managementTestRule.startManager(this.managerVM);
- ObjectName memberMBeanName = managementService.getMemberMBeanName(member);
+ attachListenerToDistributedSystemMXBean(this.managerVM);
- waitForProxy(memberMBeanName, MemberMXBean.class);
- Set<ObjectName> names = managementService.queryMBeanNames(member);
- superSet.addAll(names);
- assertTrue(names.contains(memberMBeanName));
+ // Step : 2 : Create Managed Node Caches
+ this.managementTestRule.createMember(this.memberVMs[0]);
+ this.managementTestRule.createMember(this.memberVMs[1]);
+ this.managementTestRule.createMember(this.memberVMs[2]);
- }
+ // Step : 3 : Verify Notification count, notification region sizes
+ verifyNotificationsAndRegionSize(this.memberVMs[0], this.memberVMs[1], this.memberVMs[2], this.managerVM);
+ }
- Set<ObjectName> names =
- managementService.queryMBeanNames(cache.getDistributedSystem().getDistributedMember());
- assertTrue(!superSet.contains(names));
- }
- };
- vm.invoke(validateServiceResource);
+ @Test
+ public void testRedundancyZone() throws Exception {
+ String redundancyZone = "ARMY_ZONE";
+ Properties props = new Properties();
+ props.setProperty(REDUNDANCY_ZONE, redundancyZone);
+
+ this.managementTestRule.createMember(this.memberVMs[0], props);
+
+ this.memberVMs[0].invoke("verifyRedundancyZone", () -> {
+ ManagementService service = this.managementTestRule.getExistingManagementService();
+ MemberMXBean memberMXBean = service.getMemberMXBean();
+ assertThat(memberMXBean.getRedundancyZone()).isEqualTo(redundancyZone);
+ });
}
- protected void checkGetMBean(final VM vm) {
- SerializableRunnable validateServiceResource = new SerializableRunnable("Check Get MBean") {
- public void run() {
- GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
- Set<DistributedMember> otherMembers =
- cache.getDistributionManager().getOtherNormalDistributionManagerIds();
+ private void verifyQueryMBeans(final VM vm) {
+ vm.invoke("validateQueryMBeans", () -> {
+ ManagementService service = this.managementTestRule.getManagementService();
+ Set<DistributedMember> otherMembers = this.managementTestRule.getOtherNormalMembers();
+ Set<ObjectName> superSet = new HashSet<>();
- for (DistributedMember member : otherMembers) {
+ for (DistributedMember member : otherMembers) {
+ ObjectName memberMBeanName = service.getMemberMBeanName(member);
- ObjectName memberMBeanName = managementService.getMemberMBeanName(member);
+ awaitMemberMXBeanProxy(member);
- waitForProxy(memberMBeanName, MemberMXBean.class);
+ Set<ObjectName> objectNames = service.queryMBeanNames(member);
+ superSet.addAll(objectNames);
+ assertThat(objectNames.contains(memberMBeanName)).isTrue();
+ }
- MemberMXBean bean =
- managementService.getMBeanInstance(memberMBeanName, MemberMXBean.class);
- assertNotNull(bean);
- }
+ Set<ObjectName> names = service.queryMBeanNames(this.managementTestRule.getDistributedMember());
+ ObjectName[] arrayOfNames = names.toArray(new ObjectName[names.size()]);
+
+ assertThat(superSet).doesNotContain(arrayOfNames); // TODO: what value does this method have?
+ });
+ }
+
+ private void verifyGetMBeanInstance(final VM vm) {
+ vm.invoke("verifyGetMBeanInstance", () -> {
+ ManagementService service = this.managementTestRule.getManagementService();
+ Set<DistributedMember> otherMembers = this.managementTestRule.getOtherNormalMembers();
+
+ for (DistributedMember member : otherMembers) {
+ ObjectName memberMBeanName = service.getMemberMBeanName(member);
- DistributedMember thisMember = cache.getDistributedSystem().getDistributedMember();
- ObjectName memberMBeanName = managementService.getMemberMBeanName(thisMember);
- MemberMXBean bean = managementService.getMBeanInstance(memberMBeanName, MemberMXBean.class);
- assertNotNull(bean);
+ awaitMemberMXBeanProxy(member);
+ MemberMXBean memberMXBean = service.getMBeanInstance(memberMBeanName, MemberMXBean.class);
+ assertThat(memberMXBean).isNotNull();
}
- };
- vm.invoke(validateServiceResource);
+
+ DistributedMember distributedMember = this.managementTestRule.getDistributedMember();
+ ObjectName memberMBeanName = service.getMemberMBeanName(distributedMember);
+ MemberMXBean memberMXBean = service.getMBeanInstance(memberMBeanName, MemberMXBean.class);
+ assertThat(memberMXBean).isNotNull();
+ });
}
- protected void validateServiceResource(final VM vm) {
- SerializableRunnable validateServiceResource =
- new SerializableRunnable("Valideate Management Service Resource") {
- public void run() {
+ private void verifyManagerStarted(final VM managerVM, final DistributedMember otherMember) {
+ managerVM.invoke("verifyManagerStarted", () -> {
+ SystemManagementService service = this.managementTestRule.getSystemManagementService();
+ assertThat(service.isManager()).isTrue();
- GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
- assertNull(cache);
- assertFalse(managementService.isManager());
+ assertThat(service.getLocalManager().isRunning()).isTrue();
- SystemManagementService service = (SystemManagementService) managementService;
- assertNull(service.getLocalManager());
- }
- };
- vm.invoke(validateServiceResource);
- }
+ assertThat(service.getLocalManager().getFederationSheduler().isShutdown()).isFalse();
- /**
- * Creates a Distributed Region
- */
- protected AsyncInvocation checkManagerView(final VM vm, final DistributedMember oneManager) {
- SerializableRunnable createRegion = new SerializableRunnable("Check Manager View") {
- public void run() {
-
- GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
- SystemManagementService service = (SystemManagementService) getManagementService();
- ObjectName memberMBeanName = service.getMemberMBeanName(oneManager);
- MemberMXBean bean = service.getMBeanProxy(memberMBeanName, MemberMXBean.class);
- assertNotNull(bean);
- // Ensure Data getting federated from Managing node
- long t1 = bean.getMemberUpTime();
- try {
- this.wait(ManagementConstants.REFRESH_TIME * 3);
- } catch (InterruptedException e) {
- fail("interrupted");
- }
- long t2 = bean.getMemberUpTime();
+ ObjectName memberMBeanName = service.getMemberMBeanName(otherMember);
- assertTrue(t2 > t1);
+ await().until(() -> assertThat(service.getMBeanProxy(memberMBeanName, MemberMXBean.class)).isNotNull());
+ MemberMXBean memberMXBean = service.getMBeanProxy(memberMBeanName, MemberMXBean.class);
- }
- };
- return vm.invokeAsync(createRegion);
+ //Ensure Data getting federated from Managing node
+ long start = memberMXBean.getMemberUpTime();
+ await().until(() -> assertThat(memberMXBean.getMemberUpTime()).isGreaterThan(start));
+ });
}
/**
* Add any Manager clean up asserts here
*/
- protected void checkNonManagerView(final VM vm) {
- SerializableRunnable checkNonManagerView = new SerializableRunnable("Check Non Manager View") {
- public void run() {
-
- GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
- assertNotNull(cache);
- assertFalse(managementService.isManager());
-
- SystemManagementService service = (SystemManagementService) managementService;
- assertTrue(service.getLocalManager().isRunning());
- assertFalse(service.getLocalManager().getFederationSheduler().isShutdown());
-
- // Check for Proxies
- Set<DistributedMember> otherMembers =
- cache.getDistributionManager().getOtherNormalDistributionManagerIds();
- assertTrue(otherMembers.size() > 0);
- for (DistributedMember member : otherMembers) {
- Set<ObjectName> proxyNames =
- service.getFederatingManager().getProxyFactory().findAllProxies(member);
- assertTrue(proxyNames.isEmpty());
- ObjectName proxyMBeanName = service.getMemberMBeanName(member);
- assertFalse(MBeanJMXAdapter.mbeanServer.isRegistered(proxyMBeanName));
- }
+ private void verifyManagerStopped(final VM managerVM, final int otherMembersCount) {
+ managerVM.invoke("verifyManagerStopped", () -> {
+ SystemManagementService service = this.managementTestRule.getSystemManagementService();
+
+ assertThat(service.isManager()).isFalse();
+ assertThat(service.getLocalManager().isRunning()).isTrue();
+ assertThat(service.getLocalManager().getFederationSheduler().isShutdown()).isFalse();
+
+ // Check for Proxies
+ Set<DistributedMember> otherMembers = this.managementTestRule.getOtherNormalMembers();
+ assertThat(otherMembers).hasSize(otherMembersCount);
+
+ for (DistributedMember member : otherMembers) {
+ Set<ObjectName> proxyNames = service.getFederatingManager().getProxyFactory().findAllProxies(member);
+ assertThat(proxyNames).isEmpty();
+ ObjectName proxyMBeanName = service.getMemberMBeanName(member);
+ assertThat(MBeanJMXAdapter.mbeanServer.isRegistered(proxyMBeanName)).isFalse();
}
- };
- vm.invoke(checkNonManagerView);
+ });
}
- public static Map<DistributedMember, DistributionConfig> verifyConfigData() {
- GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
- ManagementService service = getManagementService();
- DistributionConfig config =
- ((InternalDistributedSystem) cache.getDistributedSystem()).getConfig();
+ private Map<DistributedMember, DistributionConfig> verifyConfigData() {
+ ManagementService service = this.managementTestRule.getManagementService();
+ InternalDistributedSystem ids = (InternalDistributedSystem) this.managementTestRule.getCache().getDistributedSystem();
+ DistributionConfig config = ids.getConfig();
+
MemberMXBean bean = service.getMemberMXBean();
GemFireProperties data = bean.listGemFireProperties();
- assertConfigEquals(config, data);
- Map<DistributedMember, DistributionConfig> configMap =
- new HashMap<DistributedMember, DistributionConfig>();
- configMap.put(cache.getMyId(), config);
+ verifyGemFirePropertiesData(config, data);
+
+ Map<DistributedMember, DistributionConfig> configMap = new HashMap<>();
+ configMap.put(ids.getDistributedMember(), config);
return configMap;
}
@@ -403,398 +409,253 @@ public class CacheManagementDUnitTest extends ManagementTestBase {
* This is to check whether the config data has been propagated to the Managing node properly or
* not.
*/
- public static void verifyConfigDataRemote(Map<DistributedMember, DistributionConfig> configMap)
- throws Exception {
- GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
- Set<DistributedMember> otherMemberSet =
- cache.getDistributionManager().getOtherNormalDistributionManagerIds();
-
- for (DistributedMember member : otherMemberSet) {
- MemberMXBean bean = MBeanUtil.getMemberMbeanProxy(member);
- GemFireProperties data = bean.listGemFireProperties();
+ private void verifyConfigDataRemote(final Map<DistributedMember, DistributionConfig> configMap) throws Exception {
+ Set<DistributedMember> otherMembers = this.managementTestRule.getOtherNormalMembers();
+
+ for (DistributedMember member : otherMembers) {
+ MemberMXBean memberMXBean = awaitMemberMXBeanProxy(member);
+
+ GemFireProperties data = memberMXBean.listGemFireProperties();
DistributionConfig config = configMap.get(member);
- assertConfigEquals(config, data);
+ verifyGemFirePropertiesData(config, data);
}
}
/**
* Asserts that distribution config and gemfireProperty composite types hold the same values
*/
- public static void assertConfigEquals(DistributionConfig config, GemFireProperties data) {
+ private void verifyGemFirePropertiesData(final DistributionConfig config, final GemFireProperties data) {
+ assertThat(data.getMemberName()).isEqualTo(config.getName());
- assertEquals(data.getMemberName(), config.getName());
// **TODO **
String memberGroups = null;
- assertEquals(data.getMcastPort(), config.getMcastPort());
- assertEquals(data.getMcastAddress(), config.getMcastAddress().getHostAddress());
- assertEquals(data.getBindAddress(), config.getBindAddress());
- assertEquals(data.getTcpPort(), config.getTcpPort());
- assertEquals(removeVMDir(data.getCacheXMLFile()),
- removeVMDir(config.getCacheXmlFile().getAbsolutePath()));
+ assertThat(data.getMcastPort()).isEqualTo(config.getMcastPort());
+ assertThat(data.getMcastAddress()).isEqualTo(config.getMcastAddress().getHostAddress());
+ assertThat(data.getBindAddress()).isEqualTo(config.getBindAddress());
+ assertThat(data.getTcpPort()).isEqualTo(config.getTcpPort());
+ assertThat(removeVMDir(data.getCacheXMLFile())).isEqualTo(removeVMDir(config.getCacheXmlFile().getAbsolutePath()));
+
// **TODO **
- assertEquals(data.getMcastTTL(), config.getMcastTtl());
- assertEquals(data.getServerBindAddress(), config.getServerBindAddress());
- assertEquals(data.getLocators(), config.getLocators());
- // The start locator may contain a directory
- assertEquals(removeVMDir(data.getStartLocator()), removeVMDir(config.getStartLocator()));
- assertEquals(removeVMDir(data.getLogFile()),
- removeVMDir(config.getLogFile().getAbsolutePath()));
- assertEquals(data.getLogLevel(), config.getLogLevel());
- assertEquals(data.isStatisticSamplingEnabled(), config.getStatisticSamplingEnabled());
- assertEquals(removeVMDir(data.getStatisticArchiveFile()),
- removeVMDir(config.getStatisticArchiveFile().getAbsolutePath()));
+ assertThat(data.getMcastTTL()).isEqualTo(config.getMcastTtl());
+ assertThat(data.getServerBindAddress()).isEqualTo(config.getServerBindAddress());
+ assertThat(data.getLocators()).isEqualTo(config.getLocators());
+
+ //The start locator may contain a directory
+ assertThat(removeVMDir(data.getStartLocator())).isEqualTo(removeVMDir(config.getStartLocator()));
+ assertThat(removeVMDir(data.getLogFile())).isEqualTo(removeVMDir(config.getLogFile().getAbsolutePath()));
+ assertThat(data.getLogLevel()).isEqualTo(config.getLogLevel());
+ assertThat(data.isStatisticSamplingEnabled()).isEqualTo(config.getStatisticSamplingEnabled());
+ assertThat(removeVMDir(data.getStatisticArchiveFile())).isEqualTo(removeVMDir(config.getStatisticArchiveFile().getAbsolutePath()));
+
// ** TODO **
String includeFile = null;
- assertEquals(data.getAckWaitThreshold(), config.getAckWaitThreshold());
- assertEquals(data.getAckSevereAlertThreshold(), config.getAckSevereAlertThreshold());
- assertEquals(data.getArchiveFileSizeLimit(), config.getArchiveFileSizeLimit());
- assertEquals(data.getArchiveDiskSpaceLimit(), config.getArchiveDiskSpaceLimit());
- assertEquals(data.getLogFileSizeLimit(), config.getLogFileSizeLimit());
- assertEquals(data.getLogDiskSpaceLimit(), config.getLogDiskSpaceLimit());
- assertEquals(data.isClusterSSLEnabled(), config.getClusterSSLEnabled());
-
- assertEquals(data.getClusterSSLCiphers(), config.getClusterSSLCiphers());
- assertEquals(data.getClusterSSLProtocols(), config.getClusterSSLProtocols());
- assertEquals(data.isClusterSSLRequireAuthentication(),
- config.getClusterSSLRequireAuthentication());
- assertEquals(data.getSocketLeaseTime(), config.getSocketLeaseTime());
- assertEquals(data.getSocketBufferSize(), config.getSocketBufferSize());
- assertEquals(data.getMcastSendBufferSize(), config.getMcastSendBufferSize());
- assertEquals(data.getMcastRecvBufferSize(), config.getMcastRecvBufferSize());
- assertEquals(data.getMcastByteAllowance(), config.getMcastFlowControl().getByteAllowance());
- assertEquals(data.getMcastRechargeThreshold(),
- config.getMcastFlowControl().getRechargeThreshold(), 0);
- assertEquals(data.getMcastRechargeBlockMs(), config.getMcastFlowControl().getRechargeBlockMs());
- assertEquals(data.getUdpFragmentSize(), config.getUdpFragmentSize());
- assertEquals(data.getUdpSendBufferSize(), config.getUdpSendBufferSize());
- assertEquals(data.getUdpRecvBufferSize(), config.getUdpRecvBufferSize());
- assertEquals(data.isDisableTcp(), config.getDisableTcp());
- assertEquals(data.isEnableTimeStatistics(), config.getEnableTimeStatistics());
- assertEquals(data.isEnableNetworkPartitionDetection(),
- config.getEnableNetworkPartitionDetection());
- assertEquals(data.getMemberTimeout(), config.getMemberTimeout());
-
- int[] configPortRange = config.getMembershipPortRange();
- int[] dataPortRange = data.getMembershipPortRange();
-
- assertEquals(dataPortRange.length, configPortRange.length);
- for (int i = 0; i < dataPortRange.length; i++) {
- assertEquals(dataPortRange[i], configPortRange[i]);
- }
- assertEquals(data.isConserveSockets(), config.getConserveSockets());
- assertEquals(data.getRoles(), config.getRoles());
- assertEquals(data.getMaxWaitTimeForReconnect(), config.getMaxWaitTimeForReconnect());
- assertEquals(data.getMaxNumReconnectTries(), config.getMaxNumReconnectTries());
- assertEquals(data.getAsyncDistributionTimeout(), config.getAsyncDistributionTimeout());
- assertEquals(data.getAsyncQueueTimeout(), config.getAsyncQueueTimeout());
- assertEquals(data.getAsyncMaxQueueSize(), config.getAsyncMaxQueueSize());
- assertEquals(data.getClientConflation(), config.getClientConflation());
- assertEquals(data.getDurableClientId(), config.getDurableClientId());
- assertEquals(data.getDurableClientTimeout(), config.getDurableClientTimeout());
- assertEquals(data.getSecurityClientAuthInit(), config.getSecurityClientAuthInit());
- assertEquals(data.getSecurityClientAuthenticator(), config.getSecurityClientAuthenticator());
- assertEquals(data.getSecurityClientDHAlgo(), config.getSecurityClientDHAlgo());
- assertEquals(data.getSecurityPeerAuthInit(), config.getSecurityPeerAuthInit());
- assertEquals(data.getSecurityClientAuthenticator(), config.getSecurityPeerAuthenticator());
- assertEquals(data.getSecurityClientAccessor(), config.getSecurityClientAccessor());
- assertEquals(data.getSecurityClientAccessorPP(), config.getSecurityClientAccessorPP());
- assertEquals(data.getSecurityLogLevel(), config.getSecurityLogLevel());
- assertEquals(removeVMDir(data.getSecurityLogFile()),
- removeVMDir(config.getSecurityLogFile().getAbsolutePath()));
- assertEquals(data.getSecurityPeerMembershipTimeout(),
- config.getSecurityPeerMembershipTimeout());
- assertEquals(data.isRemoveUnresponsiveClient(), config.getRemoveUnresponsiveClient());
- assertEquals(data.isDeltaPropagation(), config.getDeltaPropagation());
- assertEquals(data.getRedundancyZone(), config.getRedundancyZone());
- assertEquals(data.isEnforceUniqueHost(), config.getEnforceUniqueHost());
- assertEquals(data.getStatisticSampleRate(), config.getStatisticSampleRate());
+ assertThat(data.getAckWaitThreshold()).isEqualTo(config.getAckWaitThreshold());
+ assertThat(data.getAckSevereAlertThreshold()).isEqualTo(config.getAckSevereAlertThreshold());
+ assertThat(data.getArchiveFileSizeLimit()).isEqualTo(config.getArchiveFileSizeLimit());
+ assertThat(data.getArchiveDiskSpaceLimit()).isEqualTo(config.getArchiveDiskSpaceLimit());
+ assertThat(data.getLogFileSizeLimit()).isEqualTo(config.getLogFileSizeLimit());
+ assertThat(data.getLogDiskSpaceLimit()).isEqualTo(config.getLogDiskSpaceLimit());
+ assertThat(data.isClusterSSLEnabled()).isEqualTo(config.getClusterSSLEnabled());
+
+ assertThat(data.getClusterSSLCiphers()).isEqualTo(config.getClusterSSLCiphers());
+ assertThat(data.getClusterSSLProtocols()).isEqualTo(config.getClusterSSLProtocols());
+ assertThat(data.isClusterSSLRequireAuthentication()).isEqualTo(config.getClusterSSLRequireAuthentication());
+ assertThat(data.getSocketLeaseTime()).isEqualTo(config.getSocketLeaseTime());
+ assertThat(data.getSocketBufferSize()).isEqualTo(config.getSocketBufferSize());
+ assertThat(data.getMcastSendBufferSize()).isEqualTo(config.getMcastSendBufferSize());
+ assertThat(data.getMcastRecvBufferSize()).isEqualTo(config.getMcastRecvBufferSize());
+ assertThat(data.getMcastByteAllowance()).isEqualTo(config.getMcastFlowControl().getByteAllowance());
+ assertThat(data.getMcastRechargeThreshold()).isEqualTo(config.getMcastFlowControl().getRechargeThreshold());
+ assertThat(data.getMcastRechargeBlockMs()).isEqualTo(config.getMcastFlowControl().getRechargeBlockMs());
+ assertThat(data.getUdpFragmentSize()).isEqualTo(config.getUdpFragmentSize());
+ assertThat(data.getUdpSendBufferSize()).isEqualTo(config.getUdpSendBufferSize());
+ assertThat(data.getUdpRecvBufferSize()).isEqualTo(config.getUdpRecvBufferSize());
+ assertThat(data.isDisableTcp()).isEqualTo(config.getDisableTcp());
+ assertThat(data.isEnableTimeStatistics()).isEqualTo(config.getEnableTimeStatistics());
+ assertThat(data.isEnableNetworkPartitionDetection()).isEqualTo(config.getEnableNetworkPartitionDetection());
+ assertThat(data.getMemberTimeout()).isEqualTo(config.getMemberTimeout());
+
+ assertThat(data.getMembershipPortRange()).containsExactly(config.getMembershipPortRange());
+
+ assertThat(data.isConserveSockets()).isEqualTo(config.getConserveSockets());
+ assertThat(data.getRoles()).isEqualTo(config.getRoles());
+ assertThat(data.getMaxWaitTimeForReconnect()).isEqualTo(config.getMaxWaitTimeForReconnect());
+ assertThat(data.getMaxNumReconnectTries()).isEqualTo(config.getMaxNumReconnectTries());
+ assertThat(data.getAsyncDistributionTimeout()).isEqualTo(config.getAsyncDistributionTimeout());
+ assertThat(data.getAsyncMaxQueueSize()).isEqualTo(config.getAsyncMaxQueueSize());
+ assertThat(data.getClientConflation()).isEqualTo(config.getClientConflation());
+ assertThat(data.getDurableClientId()).isEqualTo(config.getDurableClientId());
+ assertThat(data.getDurableClientTimeout()).isEqualTo(config.getDurableClientTimeout());
+ assertThat(data.getSecurityClientAuthInit()).isEqualTo(config.getSecurityClientAuthInit());
+ assertThat(data.getSecurityClientAuthenticator()).isEqualTo(config.getSecurityClientAuthenticator());
+ assertThat(data.getSecurityClientDHAlgo()).isEqualTo(config.getSecurityClientDHAlgo());
+ assertThat(data.getSecurityPeerAuthInit()).isEqualTo(config.getSecurityPeerAuthInit());
+ assertThat(data.getSecurityClientAuthenticator()).isEqualTo(config.getSecurityPeerAuthenticator());
+ assertThat(data.getSecurityClientAccessor()).isEqualTo(config.getSecurityClientAccessor());
+ assertThat(data.getSecurityClientAccessorPP()).isEqualTo(config.getSecurityClientAccessorPP());
+ assertThat(data.getSecurityLogLevel()).isEqualTo(config.getSecurityLogLevel());
+ assertThat(removeVMDir(data.getSecurityLogFile())).isEqualTo(removeVMDir(config.getSecurityLogFile().getAbsolutePath()));
+ assertThat(data.getSecurityPeerMembershipTimeout()).isEqualTo(config.getSecurityPeerMembershipTimeout());
+ assertThat(data.isRemoveUnresponsiveClient()).isEqualTo(config.getRemoveUnresponsiveClient());
+ assertThat(data.isDeltaPropagation()).isEqualTo(config.getDeltaPropagation());
+ assertThat(data.getRedundancyZone()).isEqualTo(config.getRedundancyZone());
+ assertThat(data.isEnforceUniqueHost()).isEqualTo(config.getEnforceUniqueHost());
+ assertThat(data.getStatisticSampleRate()).isEqualTo(config.getStatisticSampleRate());
}
private static String removeVMDir(String string) {
return string.replaceAll("vm.", "");
}
- public static void startManager() {
- MemberMXBean bean = getManagementService().getMemberMXBean();
- // When the cache is created if jmx-manager is true then we create the manager.
- // So it may already exist when we get here.
- if (!bean.isManagerCreated()) {
- if (!bean.createManager()) {
- fail("Could not create Manager");
- } else if (!bean.isManagerCreated()) {
- fail("Should have been a manager after createManager returned true.");
- }
+ private void startManager() throws JMException {
+ ManagementService service = this.managementTestRule.getManagementService();
+ MemberMXBean memberMXBean = service.getMemberMXBean();
+ if (memberMXBean.isManagerCreated()) {
+ return;
}
- ManagerMXBean mngrBean = getManagementService().getManagerMXBean();
- try {
- mngrBean.start();
- } catch (JMException e) {
- fail("Could not start Manager " + e);
- }
- assertTrue(mngrBean.isRunning());
- assertTrue(getManagementService().isManager());
- assertTrue(bean.isManager());
- }
-
- public static void isManager() {
- MemberMXBean bean = getManagementService().getMemberMXBean();
- if (bean.createManager()) {
- ManagerMXBean mngrBean = getManagementService().getManagerMXBean();
- try {
- mngrBean.start();
- } catch (JMException e) {
- fail("Could not start Manager " + e);
- }
- } else {
- fail(" Could not create Manager");
- }
- }
- public static String fetchLog() {
- MemberMXBean bean = getManagementService().getMemberMXBean();
- String log = bean.showLog(30);
- return log;
- }
-
- public static void fetchJVMMetrics() {
- MemberMXBean bean = getManagementService().getMemberMXBean();
- JVMMetrics metrics = bean.showJVMMetrics();
+ // TODO: cleanup this mess
+ // When the cache is created if jmx-managerVM is true then we create the managerVM.
+ // So it may already exist when we get here.
- LogWriterUtils.getLogWriter()
- .info("<ExpectedString> JVMMetrics is " + metrics.toString() + "</ExpectedString> ");
- }
+ assertThat(memberMXBean.createManager()).isTrue();
+ assertThat(memberMXBean.isManagerCreated()).isTrue();
- public static void fetchOSMetrics() {
- MemberMXBean bean = getManagementService().getMemberMXBean();
- OSMetrics metrics = bean.showOSMetrics();
+ ManagerMXBean managerMXBean = service.getManagerMXBean();
+ managerMXBean.start();
- LogWriterUtils.getLogWriter()
- .info("<ExpectedString> OSMetrics is " + metrics.toString() + "</ExpectedString> ");
+ assertThat(managerMXBean.isRunning()).isTrue();
+ assertThat(memberMXBean.isManager()).isTrue();
+ assertThat(service.isManager()).isTrue();
}
- public static void shutDownMember() {
- MemberMXBean bean = getManagementService().getMemberMXBean();
- bean.shutDownMember();
+ private String fetchLog(final int numberOfLines) {
+ ManagementService service = this.managementTestRule.getManagementService();
+ MemberMXBean memberMXBean = service.getMemberMXBean();
+ return memberMXBean.showLog(numberOfLines);
}
- public static void assertExpectedMembers(int expectedMemberCount) {
- Wait.waitForCriterion(new WaitCriterion() {
- public String description() {
- return "Waiting all nodes to shutDown";
- }
-
- public boolean done() {
- GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
- Set<DistributedMember> setOfOtherMembers =
- cache.getDistributedSystem().getAllOtherMembers();
- boolean done = (setOfOtherMembers != null && setOfOtherMembers.size() == 1);
- return done;
- }
-
- }, MAX_WAIT, 500, true);
+ private JVMMetrics fetchJVMMetrics() {
+ ManagementService service = this.managementTestRule.getManagementService();
+ MemberMXBean memberMXBean = service.getMemberMXBean();
+ JVMMetrics metrics = memberMXBean.showJVMMetrics();
+ return metrics;
}
- public static void invokeRemoteOps() throws Exception {
- GemFireCacheImpl cache = GemFireCacheImpl.getInstance();
- Set<DistributedMember> otherMemberSet =
- cache.getDistributionManager().getOtherNormalDistributionManagerIds();
-
- for (DistributedMember member : otherMemberSet) {
- MemberMXBean bean = MBeanUtil.getMemberMbeanProxy(member);
- JVMMetrics metrics = bean.showJVMMetrics();
+ private OSMetrics fetchOSMetrics() {
+ ManagementService service = this.managementTestRule.getManagementService();
+ MemberMXBean memberMXBean = service.getMemberMXBean();
+ OSMetrics metrics = memberMXBean.showOSMetrics();
+ return metrics;
+ }
- LogWriterUtils.getLogWriter()
- .info("<ExpectedString> JVMMetrics is " + metrics.toString() + "</ExpectedString> ");
- LogWriterUtils.getLogWriter()
- .info("<ExpectedString> OSMetrics is " + metrics.toString() + "</ExpectedString> ");
+ private void shutDownMember() {
+ ManagementService service = this.managementTestRule.getManagementService();
+ MemberMXBean memberMXBean = service.getMemberMXBean();
+ memberMXBean.shutDownMember();
+ }
- LogWriterUtils.getLogWriter()
- .info("<ExpectedString> Boolean Data Check " + bean.isManager() + "</ExpectedString> ");
- }
+ private void verifyExpectedMembers(final int otherMembersCount) {
+ String alias = "awaiting " + this.managementTestRule.getOtherNormalMembers() + " to have size " + otherMembersCount;
+ await(alias).until(() -> assertThat(this.managementTestRule.getOtherNormalMembers()).hasSize(otherMembersCount));
}
- @Test
- public void testNotification() throws Exception {
- List<VM> managedNodeList = getManagedNodeList();
- VM node1 = managedNodeList.get(0);
- VM node2 = managedNodeList.get(1);
- VM node3 = managedNodeList.get(2);
- VM managingNode = getManagingNode();
+ private void invokeRemoteMemberMXBeanOps() throws Exception {
+ Set<DistributedMember> otherMembers = this.managementTestRule.getOtherNormalMembers();
- // Step : 1 : Create Managed Node Caches
- createCache(node1);
- createCache(node2);
- createCache(node3);
+ for (DistributedMember member : otherMembers) {
+ MemberMXBean memberMXBean = awaitMemberMXBeanProxy(member);
- // Step : 2 : Create Managing Node Cache, start manager, add a notification
- // handler to DistributedSystemMXBean
- createManagementCache(managingNode);
- startManagingNode(managingNode);
- attchListenerToDSMBean(managingNode);
+ JVMMetrics metrics = memberMXBean.showJVMMetrics();
- // Step : 3 : Verify Notification count, notification region sizes
- countNotificationsAndCheckRegionSize(node1, node2, node3, managingNode);
- }
+ String value = metrics.toString();
+ boolean isManager = memberMXBean.isManager();
- @Test
- public void testNotificationManagingNodeFirst() throws Exception {
- List<VM> managedNodeList = getManagedNodeList();
- VM node1 = managedNodeList.get(0);
- VM node2 = managedNodeList.get(1);
- VM node3 = managedNodeList.get(2);
- VM managingNode = getManagingNode();
-
- // Step : 1 : Create Managing Node Cache, start manager, add a notification
- // handler to DistributedSystemMXBean
- createManagementCache(managingNode);
- startManagingNode(managingNode);
- attchListenerToDSMBean(managingNode);
-
- // Step : 2 : Create Managed Node Caches
- createCache(node1);
- createCache(node2);
- createCache(node3);
+ // TODO: need assertions
- // Step : 3 : Verify Notification count, notification region sizes
- countNotificationsAndCheckRegionSize(node1, node2, node3, managingNode);
+ //("<ExpectedString> JVMMetrics is " + metrics.toString() + "</ExpectedString> ");
+ //("<ExpectedString> OSMetrics is " + metrics.toString() + "</ExpectedString> ");
+ //("<ExpectedString> Boolean Data Check " + bean.isManager() + "</ExpectedString> ");
+ }
}
- @Test
- public void testRedundancyZone() throws Exception {
- List<VM> managedNodeList = getManagedNodeList();
- VM node1 = managedNodeList.get(0);
- VM node2 = managedNodeList.get(1);
- VM node3 = managedNodeList.get(2);
- Properties props = new Properties();
- props.setProperty(REDUNDANCY_ZONE, "ARMY_ZONE");
+ private void attachListenerToDistributedSystemMXBean(final VM managerVM) {
+ managerVM.invoke("attachListenerToDistributedSystemMXBean", () -> {
+ ManagementService service = this.managementTestRule.getManagementService();
+ assertThat(service.isManager()).isTrue();
- createCache(node1, props);
-
- node1.invoke(new SerializableRunnable("Assert Redundancy Zone") {
+ NotificationListener listener = (final Notification notification, final Object handback) -> {
+ if (notification.getType().equals(JMXNotificationType.REGION_CREATED)) {
+ notifications.add(notification);
+ }
+ };
- public void run() {
- ManagementService service = ManagementService.getExistingManagementService(getCache());
- MemberMXBean bean = service.getMemberMXBean();
- assertEquals("ARMY_ZONE", bean.getRedundancyZone());
- }
+ ManagementFactory.getPlatformMBeanServer().addNotificationListener(MBeanJMXAdapter.getDistributedSystemName(), listener, null, null);
});
}
- protected void attchListenerToDSMBean(final VM vm) {
- SerializableRunnable attchListenerToDSMBean =
- new SerializableRunnable("Attach Listener to DS MBean") {
- public void run() {
- assertTrue(managementService.isManager());
- DistributedSystemMXBean dsMBean = managementService.getDistributedSystemMXBean();
-
- // First clear the notification list
- notifList.clear();
-
- NotificationListener nt = new NotificationListener() {
- @Override
- public void handleNotification(Notification notification, Object handback) {
- if (notification.getType().equals(JMXNotificationType.REGION_CREATED)) {
- notifList.add(notification);
- }
- }
- };
-
- try {
- mbeanServer.addNotificationListener(MBeanJMXAdapter.getDistributedSystemName(), nt,
- null, null);
- } catch (InstanceNotFoundException e) {
- throw new AssertionError("Failed With Exception ", e);
- }
-
- }
- };
- vm.invoke(attchListenerToDSMBean);
- }
-
- public void waitForManagerToRegisterListener() {
- SystemManagementService service = (SystemManagementService) getManagementService();
- final Map<ObjectName, NotificationHubListener> hubMap =
- service.getNotificationHub().getListenerObjectMap();
-
- Wait.waitForCriterion(new WaitCriterion() {
- public String description() {
- return "Waiting for manager to register the listener";
- }
-
- public boolean done() {
- boolean done = (1 == hubMap.size());
- return done;
- }
+ private void verifyNotificationsAndRegionSize(final VM memberVM1, final VM memberVM2, final VM memberVM3, final VM managerVM) {
+ DistributedMember member1 = this.managementTestRule.getDistributedMember(memberVM1);
+ DistributedMember member2 = this.managementTestRule.getDistributedMember(memberVM2);
+ DistributedMember member3 = this.managementTestRule.getDistributedMember(memberVM3);
- }, MAX_WAIT, 500, true);
- }
+ String memberId1 = MBeanJMXAdapter.getUniqueIDForMember(member1);
+ String memberId2 = MBeanJMXAdapter.getUniqueIDForMember(member2);
+ String memberId3 = MBeanJMXAdapter.getUniqueIDForMember(member3);
- public void countNotificationsAndCheckRegionSize(VM node1, VM node2, VM node3, VM managingNode) {
+ memberVM1.invoke("createNotificationRegion", () -> createNotificationRegion(memberId1));
+ memberVM2.invoke("createNotificationRegion", () -> createNotificationRegion(memberId2));
+ memberVM3.invoke("createNotificationRegion", () -> createNotificationRegion(memberId3));
- DistributedMember member1 = getMember(node1);
- DistributedMember member2 = getMember(node2);
- DistributedMember member3 = getMember(node3);
+ managerVM.invoke("verify notifications size", () -> {
+ await().until(() -> assertThat(notifications.size()).isEqualTo(45));
- final String appender1 = MBeanJMXAdapter.getUniqueIDForMember(member1);
- final String appender2 = MBeanJMXAdapter.getUniqueIDForMember(member2);
- final String appender3 = MBeanJMXAdapter.getUniqueIDForMember(member3);
+ Cache cache = this.managementTestRule.getCache();
- node1.invoke("Create Regions", () -> createNotifTestRegion(appender1));
- node2.invoke("Create Regions", () -> createNotifTestRegion(appender2));
- node3.invoke("Create Regions", () -> createNotifTestRegion(appender3));
+ Region region1 = cache.getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + memberId1);
+ Region region2 = cache.getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + memberId2);
+ Region region3 = cache.getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + memberId3);
- managingNode.invoke(new SerializableRunnable("Validate Notification Count") {
+ // Even though we got 15 notification only 10 should be there due to
+ // eviction attributes set in notification region
- public void run() {
+ await().until(() -> assertThat(region1).hasSize(10));
+ await().until(() -> assertThat(region2).hasSize(10));
+ await().until(() -> assertThat(region3).hasSize(10));
+ });
+ }
- Wait.waitForCriterion(new WaitCriterion() {
- public String description() {
- return "Waiting for all the RegionCreated notification to reach the manager "
- + notifList.size();
- }
+ private void createNotificationRegion(final String memberId) {
+ SystemManagementService service = this.managementTestRule.getSystemManagementService();
+ Map<ObjectName, NotificationHubListener> notificationHubListenerMap = service.getNotificationHub().getListenerObjectMap();
- public boolean done() {
- boolean done = (45 == notifList.size());
- return done;
- }
+ await().until(() -> assertThat(notificationHubListenerMap.size()).isEqualTo(1));
- }, MAX_WAIT, 500, true);
+ RegionFactory regionFactory = this.managementTestRule.getCache().createRegionFactory(RegionShortcut.REPLICATE);
+ for (int i = 1; i <= 15; i++) {
+ regionFactory.create(NOTIFICATION_REGION_NAME + i);
+ }
+ Region region = this.managementTestRule.getCache().getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + memberId);
- assertEquals(45, notifList.size());
- Cache cache = getCache();
- SystemManagementService service = (SystemManagementService) getManagementService();
+ assertThat(region).isEmpty();
+ }
- Region member1NotifRegion =
- cache.getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + appender1);
- Region member2NotifRegion =
- cache.getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + appender2);
- Region member3NotifRegion =
- cache.getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + appender3);
+ private MemberMXBean awaitMemberMXBeanProxy(final DistributedMember member) {
+ SystemManagementService service = this.managementTestRule.getSystemManagementService();
+ ObjectName objectName = service.getMemberMBeanName(member);
- // Even though we got 15 notification only 10 should be there due to
- // eviction attributes set in notification region
-
- waitAtMost(5, TimeUnit.SECONDS).untilCall(to(member1NotifRegion).size(), equalTo(10));
- waitAtMost(5, TimeUnit.SECONDS).untilCall(to(member2NotifRegion).size(), equalTo(10));
- waitAtMost(5, TimeUnit.SECONDS).untilCall(to(member3NotifRegion).size(), equalTo(10));
- }
- });
+ String alias = "awaiting MemberMXBean proxy for " + member;
+ await(alias).until(() -> assertThat(service.getMBeanProxy(objectName, MemberMXBean.class)).isNotNull());
+ return service.getMBeanProxy(objectName, MemberMXBean.class);
}
- private void createNotifTestRegion(final String appender1) {
- Cache cache = getCache();
-
- waitForManagerToRegisterListener();
- RegionFactory rf = cache.createRegionFactory(RegionShortcut.REPLICATE);
- for (int i = 1; i <= 15; i++) {
- rf.create("NotifTestRegion_" + i);
- }
- Region member1NotifRegion =
- cache.getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + appender1);
-
- assertEquals(0, member1NotifRegion.size());
+ private ConditionFactory await() {
+ return Awaitility.await().atMost(2, MINUTES);
}
+ private ConditionFactory await(final String alias) {
+ return Awaitility.await(alias).atMost(2, MINUTES);
+ }
}