Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 22A43200BAF for ; Mon, 31 Oct 2016 21:55:58 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 21437160B05; Mon, 31 Oct 2016 20:55:58 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id C3930160B09 for ; Mon, 31 Oct 2016 21:55:55 +0100 (CET) Received: (qmail 78791 invoked by uid 500); 31 Oct 2016 20:55:54 -0000 Mailing-List: contact commits-help@geode.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@geode.incubator.apache.org Delivered-To: mailing list commits@geode.incubator.apache.org Received: (qmail 78682 invoked by uid 99); 31 Oct 2016 20:55:54 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 31 Oct 2016 20:55:54 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 3C7E9CB680 for ; Mon, 31 Oct 2016 20:55:54 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -6.219 X-Spam-Level: X-Spam-Status: No, score=-6.219 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-2.999] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id RHlmGtI0FHBV for ; Mon, 31 Oct 2016 20:55:48 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with SMTP id 3F49A60DF7 for ; Mon, 31 Oct 2016 20:55:44 +0000 (UTC) Received: (qmail 75333 invoked by uid 99); 31 Oct 2016 20:55:42 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 31 Oct 2016 20:55:42 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id A2A57E9437; Mon, 31 Oct 2016 20:55:42 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: klund@apache.org To: commits@geode.incubator.apache.org Date: Mon, 31 Oct 2016 20:56:30 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [50/50] [abbrv] incubator-geode git commit: Convert from ManagementTestCase to ManagementTestRule archived-at: Mon, 31 Oct 2016 20:55:58 -0000 Convert from ManagementTestCase to ManagementTestRule Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/24f496df Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/24f496df Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/24f496df Branch: refs/heads/feature/GEODE-1930 Commit: 24f496df4ab628dc95b931000733269869fdf117 Parents: 56917a2 Author: Kirk Lund Authored: Mon Oct 31 13:45:28 2016 -0700 Committer: Kirk Lund Committed: Mon Oct 31 13:55:09 2016 -0700 ---------------------------------------------------------------------- .../RestAPIsAndInterOpsDUnitTest.java | 43 +- geode-core/build.gradle | 1 + .../org/apache/geode/management/JVMMetrics.java | 3 +- .../org/apache/geode/management/OSMetrics.java | 3 +- .../internal/SystemManagementService.java | 2 +- .../DistributedLockServiceDUnitTest.java | 2 +- .../cache/ConnectDisconnectDUnitTest.java | 2 +- ...gionBucketCreationDistributionDUnitTest.java | 2 +- .../cache/locks/TXLockServiceDUnitTest.java | 4 +- .../management/CacheManagementDUnitTest.java | 937 ++++----- .../management/ClientHealthStatsDUnitTest.java | 597 +++--- .../management/CompositeTypeTestDUnitTest.java | 202 +- .../management/DLockManagementDUnitTest.java | 549 ++---- .../management/DiskManagementDUnitTest.java | 821 +++----- .../management/DistributedSystemDUnitTest.java | 1038 ++++------ .../geode/management/JMXMBeanDUnitTest.java | 2 +- .../management/LocatorManagementDUnitTest.java | 429 ++-- .../geode/management/ManagementTestBase.java | 577 ++---- .../geode/management/ManagementTestRule.java | 430 ++++ .../org/apache/geode/management/Manager.java | 31 + .../org/apache/geode/management/Member.java | 31 + .../management/OffHeapManagementDUnitTest.java | 723 ++++--- .../geode/management/QueryDataDUnitTest.java | 1297 +++++------- .../management/RegionManagementDUnitTest.java | 1856 ++++++++---------- .../stats/DistributedSystemStatsDUnitTest.java | 110 +- .../QueryDataFunctionApplyLimitClauseTest.java | 10 +- .../internal/pulse/TestClientIdsDUnitTest.java | 52 +- .../pulse/TestSubscriptionsDUnitTest.java | 291 +-- .../geode/test/dunit/AsyncInvocation.java | 59 +- .../org/apache/geode/test/dunit/Invoke.java | 4 +- .../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 | 9 +- geode-junit/build.gradle | 1 + .../junit/rules/UseJacksonForJsonPathRule.java | 128 ++ .../SerializableExternalResource.java | 22 + .../serializable/SerializableStatement.java | 27 + .../management/LuceneManagementDUnitTest.java | 20 +- gradle/dependency-versions.properties | 3 +- 52 files changed, 5054 insertions(+), 5933 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/24f496df/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 0299615..baefcba 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 @@ -67,7 +67,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; @@ -80,28 +79,14 @@ 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 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"; @@ -182,20 +167,12 @@ public class RestAPIsAndInterOpsDUnitTest extends LocatorTestBase { + " \"middleName\": \"kiran12\"," + " \"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 data() { + return Arrays.asList("/geode", "/gemfire-api"); } public String startBridgeServerWithRestService(final String hostName, final String[] groups, final String locators, final String[] regions, @@ -842,14 +819,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/incubator-geode/blob/24f496df/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/incubator-geode/blob/24f496df/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 b11cfef..992ef99 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 @@ -17,6 +17,7 @@ package org.apache.geode.management; import java.beans.ConstructorProperties; +import java.io.Serializable; import org.apache.geode.cache.Region; @@ -28,7 +29,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/incubator-geode/blob/24f496df/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 07dab6c..48974ba 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 @@ -17,6 +17,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 @@ -25,7 +26,7 @@ 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/incubator-geode/blob/24f496df/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 29bbb15..65b71d6 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 @@ -357,7 +357,7 @@ public final class SystemManagementService extends BaseManagementService { } - public T getMBeanProxy(ObjectName objectName, Class interfaceClass) { + public T getMBeanProxy(ObjectName objectName, Class interfaceClass) { // TODO: this is too generic if (!isStartedAndOpen()) { return null; } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/24f496df/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 25d6013..e391aba 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 @@ -100,7 +100,7 @@ public class DistributedLockServiceDUnitTest extends JUnit4DistributedTestCase { @Override public final void preTearDown() throws Exception { Invoke.invokeInEveryVM(() -> destroyAllDLockServices()); -// invokeInEveryVM(DistributedLockServiceDUnitTest.class, +// invokeInEveryVMAndController(DistributedLockServiceDUnitTest.class, // "remoteDumpAllDLockServices"); //InternalDistributedLockService.destroyAll(); http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/24f496df/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 9b6030a..162c3a5 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 @@ -42,7 +42,7 @@ public class ConnectDisconnectDUnitTest extends JUnit4CacheTestCase { // see bugs #50785 and #46438 @Test public void testManyConnectsAndDisconnects() throws Throwable { -// invokeInEveryVM(new SerializableRunnable() { +// invokeInEveryVMAndController(new SerializableRunnable() { // // @Override // public void run() { http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/24f496df/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 91bafea..07546a0 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 @@ -462,7 +462,7 @@ public class PartitionedRegionBucketCreationDistributionDUnitTest extends Partit // final int bucketPerHost = (int) Math.ceil(((double) maxBuckets / Host.getHostCount())); -// invokeInEveryVM(new SerializableRunnable("") { +// invokeInEveryVMAndController(new SerializableRunnable("") { // // } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/24f496df/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 b835cbc..3b54cc6 100755 --- 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 @@ -98,7 +98,7 @@ public class TXLockServiceDUnitTest extends JUnit4DistributedTestCase { @Override public final void preTearDown() throws Exception { -// invokeInEveryVM(TXLockServiceDUnitTest.class, +// invokeInEveryVMAndController(TXLockServiceDUnitTest.class, // "remoteDumpAllDLockServices"); Invoke.invokeInEveryVM(TXLockServiceDUnitTest.class, @@ -123,7 +123,7 @@ public class TXLockServiceDUnitTest extends JUnit4DistributedTestCase { @Test public void testGetAndDestroy() { forEachVMInvoke("checkGetAndDestroy", new Object[] {}); - /*invokeInEveryVM(TXLockServiceDUnitTest.class, + /*invokeInEveryVMAndController(TXLockServiceDUnitTest.class, "destroyServices"); forEachVMInvoke("checkGetAndDestroy", new Object[] {});*/ } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/24f496df/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 8c57aab..0e750e9 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 @@ -16,11 +16,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; @@ -28,13 +31,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; @@ -45,54 +51,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. *

- * Goal of the Test : MemberMBean gets created once cache is created. Data like + *

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 + *

+ *

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 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 notifList = new ArrayList(); + @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); + this.managementTestRule.createMembers(); + this.managementTestRule.createManagers(); - Map configMap = new HashMap(); - for (VM vm : getManagedNodeList()) { - Map configMapMember = (Map) vm.invoke(CacheManagementDUnitTest.class, VERIFY_CONFIG_METHOD); + Map configMap = new HashMap<>(); + for (VM memberVM : this.memberVMs) { + Map 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)); } /** @@ -100,29 +121,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(" Log Of Member is " + log.toString() + " "); + 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)); } /** @@ -130,263 +156,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. + * Creates and starts a managerVM. * Multiple Managers */ @Test public void testManager() throws Exception { - List 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. + * Creates and starts a managerVM. * Multiple Managers */ @Test public void testManagerShutdown() throws Exception { - List 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 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 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); - - checkGetMBean(managingNode); + verifyGetMBeanInstance(this.managerVM); } @Test public void testQueryMBeans() throws Exception { - List 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); - 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(); - - Set otherMembers = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); - - Set superSet = new HashSet(); + @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]); - for (DistributedMember member : otherMembers) { + // 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); - ObjectName memberMBeanName = managementService.getMemberMBeanName(member); + // Step : 3 : Verify Notification count, notification region sizes + verifyNotificationsAndRegionSize(this.memberVMs[0], this.memberVMs[1], this.memberVMs[2], this.managerVM); + } - waitForProxy(memberMBeanName, MemberMXBean.class); - Set names = managementService.queryMBeanNames(member); - superSet.addAll(names); - assertTrue(names.contains(memberMBeanName)); + @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); - } + attachListenerToDistributedSystemMXBean(this.managerVM); - Set names = managementService.queryMBeanNames(cache.getDistributedSystem().getDistributedMember()); - assertTrue(!superSet.contains(names)); - } - }; - vm.invoke(validateServiceResource); + // 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); } - protected void checkGetMBean(final VM vm) { - SerializableRunnable validateServiceResource = new SerializableRunnable("Check Get MBean") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - Set otherMembers = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); + @Test + public void testRedundancyZone() throws Exception { + String redundancyZone = "ARMY_ZONE"; + + Properties props = new Properties(); + props.setProperty(REDUNDANCY_ZONE, redundancyZone); - for (DistributedMember member : otherMembers) { + this.managementTestRule.createMember(this.memberVMs[0], props); - ObjectName memberMBeanName = managementService.getMemberMBeanName(member); + this.memberVMs[0].invoke("verifyRedundancyZone", () -> { + ManagementService service = this.managementTestRule.getExistingManagementService(); + MemberMXBean memberMXBean = service.getMemberMXBean(); + assertThat(memberMXBean.getRedundancyZone()).isEqualTo(redundancyZone); + }); + } - waitForProxy(memberMBeanName, MemberMXBean.class); + private void verifyQueryMBeans(final VM vm) { + vm.invoke("validateQueryMBeans", () -> { + ManagementService service = this.managementTestRule.getManagementService(); + Set otherMembers = this.managementTestRule.getOtherNormalMembers(); + Set superSet = new HashSet<>(); - MemberMXBean bean = managementService.getMBeanInstance(memberMBeanName, MemberMXBean.class); - assertNotNull(bean); - } + 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); + Set objectNames = service.queryMBeanNames(member); + superSet.addAll(objectNames); + assertThat(objectNames.contains(memberMBeanName)).isTrue(); } - }; - vm.invoke(validateServiceResource); + + Set 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? + }); } - protected void validateServiceResource(final VM vm) { - SerializableRunnable validateServiceResource = new SerializableRunnable("Valideate Management Service Resource") { - public void run() { + private void verifyGetMBeanInstance(final VM vm) { + vm.invoke("verifyGetMBeanInstance", () -> { + ManagementService service = this.managementTestRule.getManagementService(); + Set otherMembers = this.managementTestRule.getOtherNormalMembers(); + + for (DistributedMember member : otherMembers) { + ObjectName memberMBeanName = service.getMemberMBeanName(member); - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - assertNull(cache); - assertFalse(managementService.isManager()); + awaitMemberMXBeanProxy(member); - SystemManagementService service = (SystemManagementService) managementService; - assertNull(service.getLocalManager()); + 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(); + }); } - /** - * 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(); + private void verifyManagerStarted(final VM managerVM, final DistributedMember otherMember) { + managerVM.invoke("verifyManagerStarted", () -> { + SystemManagementService service = this.managementTestRule.getSystemManagementService(); + assertThat(service.isManager()).isTrue(); - assertTrue(t2 > t1); + assertThat(service.getLocalManager().isRunning()).isTrue(); - } - }; - return vm.invokeAsync(createRegion); + assertThat(service.getLocalManager().getFederationSheduler().isShutdown()).isFalse(); + + ObjectName memberMBeanName = service.getMemberMBeanName(otherMember); + + await().until(() -> assertThat(service.getMBeanProxy(memberMBeanName, MemberMXBean.class)).isNotNull()); + MemberMXBean memberMXBean = service.getMBeanProxy(memberMBeanName, MemberMXBean.class); + + //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 otherMembers = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); - assertTrue(otherMembers.size() > 0); - for (DistributedMember member : otherMembers) { - Set 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 otherMembers = this.managementTestRule.getOtherNormalMembers(); + assertThat(otherMembers).hasSize(otherMembersCount); + + for (DistributedMember member : otherMembers) { + Set 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 verifyConfigData() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - ManagementService service = getManagementService(); - DistributionConfig config = ((InternalDistributedSystem) cache.getDistributedSystem()).getConfig(); + private Map 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 configMap = new HashMap(); - configMap.put(cache.getMyId(), config); + verifyGemFirePropertiesData(config, data); + + Map configMap = new HashMap<>(); + configMap.put(ids.getDistributedMember(), config); return configMap; } @@ -394,15 +411,15 @@ 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 configMap) throws Exception { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - Set otherMemberSet = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); + private void verifyConfigDataRemote(final Map configMap) throws Exception { + Set otherMembers = this.managementTestRule.getOtherNormalMembers(); + + for (DistributedMember member : otherMembers) { + MemberMXBean memberMXBean = awaitMemberMXBeanProxy(member); - for (DistributedMember member : otherMemberSet) { - MemberMXBean bean = MBeanUtil.getMemberMbeanProxy(member); - GemFireProperties data = bean.listGemFireProperties(); + GemFireProperties data = memberMXBean.listGemFireProperties(); DistributionConfig config = configMap.get(member); - assertConfigEquals(config, data); + verifyGemFirePropertiesData(config, data); } } @@ -410,358 +427,238 @@ public class CacheManagementDUnitTest extends ManagementTestBase { * 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()); + 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 - 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(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(" JVMMetrics is " + metrics.toString() + " "); - } + 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(" OSMetrics is " + metrics.toString() + " "); + 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 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 otherMemberSet = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); - - for (DistributedMember member : otherMemberSet) { - MemberMXBean bean = MBeanUtil.getMemberMbeanProxy(member); - JVMMetrics metrics = bean.showJVMMetrics(); - - LogWriterUtils.getLogWriter().info(" JVMMetrics is " + metrics.toString() + " "); - LogWriterUtils.getLogWriter().info(" OSMetrics is " + metrics.toString() + " "); - - LogWriterUtils.getLogWriter().info(" Boolean Data Check " + bean.isManager() + " "); - } + private OSMetrics fetchOSMetrics() { + ManagementService service = this.managementTestRule.getManagementService(); + MemberMXBean memberMXBean = service.getMemberMXBean(); + OSMetrics metrics = memberMXBean.showOSMetrics(); + return metrics; } - @Test - public void testNotification() throws Exception { - List managedNodeList = getManagedNodeList(); - VM node1 = managedNodeList.get(0); - VM node2 = managedNodeList.get(1); - VM node3 = managedNodeList.get(2); - VM managingNode = getManagingNode(); - - // Step : 1 : Create Managed Node Caches - createCache(node1); - createCache(node2); - createCache(node3); - - // Step : 2 : Create Managing Node Cache, start manager, add a notification - // handler to DistributedSystemMXBean - createManagementCache(managingNode); - startManagingNode(managingNode); - attchListenerToDSMBean(managingNode); - - // Step : 3 : Verify Notification count, notification region sizes - countNotificationsAndCheckRegionSize(node1, node2, node3, managingNode); + private void shutDownMember() { + ManagementService service = this.managementTestRule.getManagementService(); + MemberMXBean memberMXBean = service.getMemberMXBean(); + memberMXBean.shutDownMember(); } - @Test - public void testNotificationManagingNodeFirst() throws Exception { - List 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); - - // Step : 3 : Verify Notification count, notification region sizes - countNotificationsAndCheckRegionSize(node1, node2, node3, managingNode); + 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 testRedundancyZone() throws Exception { - List 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 invokeRemoteMemberMXBeanOps() throws Exception { + Set otherMembers = this.managementTestRule.getOtherNormalMembers(); - createCache(node1, props); + for (DistributedMember member : otherMembers) { + MemberMXBean memberMXBean = awaitMemberMXBeanProxy(member); - node1.invoke(new SerializableRunnable("Assert Redundancy Zone") { + JVMMetrics metrics = memberMXBean.showJVMMetrics(); - public void run() { - ManagementService service = ManagementService.getExistingManagementService(getCache()); - MemberMXBean bean = service.getMemberMXBean(); - assertEquals("ARMY_ZONE", bean.getRedundancyZone()); - } - }); - } + String value = metrics.toString(); + boolean isManager = memberMXBean.isManager(); - 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); - } + // TODO: need assertions - } - }; - vm.invoke(attchListenerToDSMBean); + //(" JVMMetrics is " + metrics.toString() + " "); + //(" OSMetrics is " + metrics.toString() + " "); + //(" Boolean Data Check " + bean.isManager() + " "); + } } - public void waitForManagerToRegisterListener() { - SystemManagementService service = (SystemManagementService) getManagementService(); - final Map hubMap = service.getNotificationHub().getListenerObjectMap(); - - Wait.waitForCriterion(new WaitCriterion() { - public String description() { - return "Waiting for manager to register the listener"; - } + private void attachListenerToDistributedSystemMXBean(final VM managerVM) { + managerVM.invoke("attachListenerToDistributedSystemMXBean", () -> { + ManagementService service = this.managementTestRule.getManagementService(); + assertThat(service.isManager()).isTrue(); - public boolean done() { - boolean done = (1 == hubMap.size()); - return done; - } + NotificationListener listener = (final Notification notification, final Object handback) -> { + if (notification.getType().equals(JMXNotificationType.REGION_CREATED)) { + notifications.add(notification); + } + }; - }, MAX_WAIT, 500, true); + ManagementFactory.getPlatformMBeanServer().addNotificationListener(MBeanJMXAdapter.getDistributedSystemName(), listener, null, null); + }); } - public void countNotificationsAndCheckRegionSize(VM node1, VM node2, VM node3, VM managingNode) { - - DistributedMember member1 = getMember(node1); - DistributedMember member2 = getMember(node2); - DistributedMember member3 = getMember(node3); - - final String appender1 = MBeanJMXAdapter.getUniqueIDForMember(member1); - final String appender2 = MBeanJMXAdapter.getUniqueIDForMember(member2); - final String appender3 = MBeanJMXAdapter.getUniqueIDForMember(member3); + 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); - node1.invoke("Create Regions", () -> createNotifTestRegion(appender1)); - node2.invoke("Create Regions", () -> createNotifTestRegion(appender2)); - node3.invoke("Create Regions", () -> createNotifTestRegion(appender3)); + String memberId1 = MBeanJMXAdapter.getUniqueIDForMember(member1); + String memberId2 = MBeanJMXAdapter.getUniqueIDForMember(member2); + String memberId3 = MBeanJMXAdapter.getUniqueIDForMember(member3); - managingNode.invoke(new SerializableRunnable("Validate Notification Count") { + memberVM1.invoke("createNotificationRegion", () -> createNotificationRegion(memberId1)); + memberVM2.invoke("createNotificationRegion", () -> createNotificationRegion(memberId2)); + memberVM3.invoke("createNotificationRegion", () -> createNotificationRegion(memberId3)); - public void run() { + managerVM.invoke("verify notifications size", () -> { + await().until(() -> assertThat(notifications.size()).isEqualTo(45)); - Wait.waitForCriterion(new WaitCriterion() { - public String description() { - return "Waiting for all the RegionCreated notification to reach the manager " + notifList.size(); - } + Cache cache = this.managementTestRule.getCache(); - public boolean done() { - boolean done = (45 == notifList.size()); - return done; - } + Region region1 = cache.getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + memberId1); + Region region2 = cache.getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + memberId2); + Region region3 = cache.getRegion(ManagementConstants.NOTIFICATION_REGION + "_" + memberId3); - }, MAX_WAIT, 500, true); + // Even though we got 15 notification only 10 should be there due to + // eviction attributes set in notification region - assertEquals(45, notifList.size()); - Cache cache = getCache(); - SystemManagementService service = (SystemManagementService) getManagementService(); + await().until(() -> assertThat(region1).hasSize(10)); + await().until(() -> assertThat(region2).hasSize(10)); + await().until(() -> assertThat(region3).hasSize(10)); + }); + } - 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 void createNotificationRegion(final String memberId) { + SystemManagementService service = this.managementTestRule.getSystemManagementService(); + Map notificationHubListenerMap = service.getNotificationHub().getListenerObjectMap(); - // Even though we got 15 notification only 10 should be there due to - // eviction attributes set in notification region + await().until(() -> assertThat(notificationHubListenerMap.size()).isEqualTo(1)); - 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)); - } - }); + 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); + assertThat(region).isEmpty(); } - private void createNotifTestRegion(final String appender1) { - Cache cache = getCache(); + private MemberMXBean awaitMemberMXBeanProxy(final DistributedMember member) { + SystemManagementService service = this.managementTestRule.getSystemManagementService(); + ObjectName objectName = service.getMemberMBeanName(member); - 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); + String alias = "awaiting MemberMXBean proxy for " + member; + await(alias).until(() -> assertThat(service.getMBeanProxy(objectName, MemberMXBean.class)).isNotNull()); - assertEquals(0, member1NotifRegion.size()); + return service.getMBeanProxy(objectName, MemberMXBean.class); } + private ConditionFactory await() { + return Awaitility.await().atMost(2, MINUTES); + } + + private ConditionFactory await(final String alias) { + return Awaitility.await(alias).atMost(2, MINUTES); + } }