http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/864c92c9/geode-core/src/test/java/org/apache/geode/management/RegionManagementDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/management/RegionManagementDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/RegionManagementDUnitTest.java index f042f2c..331f21b 100644 --- a/geode-core/src/test/java/org/apache/geode/management/RegionManagementDUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/RegionManagementDUnitTest.java @@ -16,20 +16,24 @@ */ package org.apache.geode.management; +import static com.jayway.awaitility.Awaitility.*; +import static org.apache.geode.cache.Region.*; +import static org.apache.geode.test.dunit.Host.*; import static org.junit.Assert.*; +import java.lang.management.ManagementFactory; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; -import javax.management.InstanceNotFoundException; -import javax.management.MBeanServer; -import javax.management.MalformedObjectNameException; import javax.management.Notification; import javax.management.NotificationListener; import javax.management.ObjectName; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -46,1406 +50,882 @@ import org.apache.geode.cache.RegionAttributes; import org.apache.geode.cache.Scope; import org.apache.geode.cache.query.data.Portfolio; import org.apache.geode.distributed.DistributedMember; -import org.apache.geode.distributed.internal.InternalDistributedSystem; +import org.apache.geode.internal.cache.AbstractRegion; import org.apache.geode.internal.cache.GemFireCacheImpl; -import org.apache.geode.internal.cache.LocalRegion; import org.apache.geode.internal.cache.TestObjectSizerImpl; import org.apache.geode.internal.cache.lru.LRUStatistics; import org.apache.geode.internal.cache.partitioned.fixed.SingleHopQuarterPartitionResolver; import org.apache.geode.management.internal.MBeanJMXAdapter; import org.apache.geode.management.internal.SystemManagementService; -import org.apache.geode.test.dunit.Assert; -import org.apache.geode.test.dunit.LogWriterUtils; -import org.apache.geode.test.dunit.SerializableRunnable; import org.apache.geode.test.dunit.VM; -import org.apache.geode.test.dunit.Wait; -import org.apache.geode.test.dunit.WaitCriterion; import org.apache.geode.test.junit.categories.DistributedTest; -import org.apache.geode.test.junit.categories.FlakyTest; /** * This class checks and verifies various data and operations exposed through * RegionMXBean interface. - * + * <p> * Goal of the Test : RegionMBean gets created once region is created. Data like * Region Attributes data and stats are of proper value - * - * */ @Category(DistributedTest.class) +@SuppressWarnings("serial") public class RegionManagementDUnitTest extends ManagementTestBase { +//public class RegionManagementDUnitTest extends JUnit4DistributedTestCase { - private static final long serialVersionUID = 1L; + private static final int MAX_WAIT_MILLIS = 70 * 1000; - private final String VERIFY_CONFIG_METHOD = "verifyConfigData"; + private static final String REGION_NAME = "MANAGEMENT_TEST_REGION"; + private static final String PARTITIONED_REGION_NAME = "MANAGEMENT_PAR_REGION"; + private static final String FIXED_PR_NAME = "MANAGEMENT_FIXED_PR"; + private static final String LOCAL_REGION_NAME = "TEST_LOCAL_REGION"; + private static final String LOCAL_SUB_REGION_NAME = "TEST_LOCAL_SUB_REGION"; - private final String VERIFY_REMOTE_CONFIG_METHOD = "verifyConfigDataRemote"; + private static final String REGION_PATH = SEPARATOR + REGION_NAME; + private static final String PARTITIONED_REGION_PATH = SEPARATOR + PARTITIONED_REGION_NAME; + private static final String FIXED_PR_PATH = SEPARATOR + FIXED_PR_NAME; + private static final String LOCAL_SUB_REGION_PATH = SEPARATOR + LOCAL_REGION_NAME + SEPARATOR + LOCAL_SUB_REGION_NAME; - static final String REGION_NAME = "MANAGEMENT_TEST_REGION"; + // fields used in managedNode VMs + private static Region fixedPartitionedRegion; - static final String PARTITIONED_REGION_NAME = "MANAGEMENT_PAR_REGION"; + // this.managerVM is VM 0 + // managedNodes are VMs 1-3 - static final String FIXED_PR_NAME = "MANAGEMENT_FIXED_PR"; - - static final String REGION_PATH = "/MANAGEMENT_TEST_REGION"; + private VM managerVM; + private VM[] memberVMs; - static final String PARTITIONED_REGION_PATH = "/MANAGEMENT_PAR_REGION"; + @Before + public void before() throws Exception { + this.managerVM = getHost(0).getVM(0); - static final String FIXED_PR_PATH = "/MANAGEMENT_FIXED_PR"; - - static final String LOCAL_REGION_NAME = "TEST_LOCAL_REGION"; - static final String LOCAL_SUB_REGION_NAME = "TEST_LOCAL_SUB_REGION"; - static final String LOCAL_REGION_PATH = "/TEST_LOCAL_REGION"; - static final String LOCAL_SUB_REGION_PATH = "/TEST_LOCAL_REGION/TEST_LOCAL_SUB_REGION"; - - private static final int MAX_WAIT = 70 * 1000; - - protected static final Region DiskRegion = null; - - static List<FixedPartitionAttributes> fpaList = new ArrayList<FixedPartitionAttributes>(); - - - private static Region fixedPrRegion; - - - public RegionManagementDUnitTest() { - super(); + this.memberVMs = new VM[3]; + this.memberVMs[0] = getHost(0).getVM(1); + this.memberVMs[1] = getHost(0).getVM(2); + this.memberVMs[2] = getHost(0).getVM(3); + } + @After + public void after() throws Exception { + disconnectAllFromDS(); } /** * Tests all Region MBean related Management APIs - * + * <p> * a) Notification propagated to member MBean while a region is created - * + * <p> * b) Creates and check a Distributed Region - * - * - * @throws Exception */ - - @Category(FlakyTest.class) // GEODE-1538 @Test public void testDistributedRegion() throws Exception { - initManagement(false); + // Adding notification listener for remote cache memberVMs + addMemberNotificationListener(this.managerVM); // TODO: what does this do for us? - VM[] managedNodes = new VM[getManagedNodeList() - .size()]; - - getManagedNodeList().toArray(managedNodes); - // Adding notif listener for remote cache members - addMemberListener(managingNode); - - for (int j = 0; j < managedNodes.length; j++) { - - VM vm = managedNodes[j]; - - createDistributedRegion(vm, REGION_NAME); - validateReplicateRegionAfterCreate(vm); - + for (VM memberVM : this.memberVMs) { + createDistributedRegion(memberVM, REGION_NAME); + validateReplicateRegionAfterCreate(memberVM); } - verifyRemoteDistributedRegion(managingNode, 3); - + verifyRemoteDistributedRegion(this.managerVM, 3); - for (VM vm : getManagedNodeList()) { - closeRegion(vm, REGION_PATH); - validateReplicatedRegionAfterClose(vm); + for (VM memberVM : this.memberVMs) { + closeRegion(memberVM, REGION_PATH); + validateReplicatedRegionAfterClose(memberVM); } - - ensureProxyCleanup(managingNode); + + ensureProxyCleanup(this.managerVM); } - + /** * Tests all Region MBean related Management APIs - * + * <p> * a) Notification propagated to member MBean while a region is created - * + * <p> * b) Created and check a Partitioned Region - * - * @throws Exception */ @Test public void testPartitionedRegion() throws Exception { initManagement(false); - VM managingNode = getManagingNode(); - - VM[] managedNodes = new VM[getManagedNodeList() - .size()]; - - getManagedNodeList().toArray(managedNodes); - // Adding notif listener for remote cache members + // Adding notification listener for remote cache memberVMs + addMemberNotificationListener(this.managerVM); // TODO: what does this do for us? - addMemberListener(managingNode); - - for (int j = 0; j < managedNodes.length; j++) { - - VM vm = managedNodes[j]; - createPartitionRegion(vm, PARTITIONED_REGION_NAME); - validatePartitionRegionAfterCreate(vm); + for (VM memberVM : this.memberVMs) { + createPartitionRegion(memberVM, PARTITIONED_REGION_NAME); + validatePartitionRegionAfterCreate(memberVM); } - - - validateRemotePartitionRegion(managingNode); - for (VM vm : getManagedNodeList()) { + validateRemotePartitionRegion(this.managerVM); - closeRegion(vm, PARTITIONED_REGION_PATH); - validatePartitionRegionAfterClose(vm); + for (VM memberVM : this.memberVMs) { + closeRegion(memberVM, PARTITIONED_REGION_PATH); + validatePartitionRegionAfterClose(memberVM); } } - + /** * Tests all Region MBean related Management APIs - * + * <p> * a) Notification propagated to member MBean while a region is created - * + * <p> * b) Creates and check a Fixed Partitioned Region - * - * @throws Exception */ @Test public void testFixedPRRegionMBean() throws Exception { - initManagement(false); - VM managingNode = getManagingNode(); - - VM[] managedNodes = new VM[getManagedNodeList() - .size()]; - - getManagedNodeList().toArray(managedNodes); - // Adding notif listener for remote cache members - addMemberListener(managingNode); - - for (int j = 0; j < managedNodes.length; j++) { - - VM vm = managedNodes[j]; - - createFixedPartitionList(j + 1); - Object[] args = new Object[1]; - args[0] = fpaList; - vm.invoke(RegionManagementDUnitTest.class, "createFixedPartitionRegion", - args); + // Adding notif listener for remote cache memberVMs + addMemberNotificationListener(this.managerVM); // TODO: what does this do for us? + int primaryIndex = 0; + for (VM vm : this.memberVMs) { + List<FixedPartitionAttributes> fixedPartitionAttributesList = createFixedPartitionList(primaryIndex + 1); + vm.invoke(() -> createFixedPartitionRegion(fixedPartitionAttributesList)); + primaryIndex++; } - // Workaround for bug 46683. Renable validation when bug is fixed. - validateRemoteFixedPartitionRegion(managingNode); - for (VM vm : getManagedNodeList()) { - closeFixedPartitionRegion(vm); - } +// // Workaround for bug 46683. Renable validation when bug is fixed. +// validateRemoteFixedPartitionRegion(this.managerVM); +// +// for (VM vm : this.memberVMs) { +// closeFixedPartitionRegion(vm); +// } } /** * Tests a Distributed Region at Managing Node side * while region is created in a member node asynchronously. - * @throws Exception */ @Test - public void testRegionAggregate() throws Exception{ + public void testRegionAggregate() throws Exception { initManagement(true); - VM managingNode = getManagingNode(); - - VM[] managedNodes = new VM[getManagedNodeList() - .size()]; - - getManagedNodeList().toArray(managedNodes); - // Adding notif listener for remote cache members - addDistrListener(managingNode); - - - for (int j = 0; j < managedNodes.length; j++) { - - VM vm = managedNodes[j]; + // Adding notif listener for remote cache memberVMs + addDistributedSystemNotificationListener(this.managerVM); // TODO: what does this do for us? + for (VM vm : this.memberVMs) { createDistributedRegion(vm, REGION_NAME); - } - - validateDistributedMBean(managingNode, 3); - - createDistributedRegion(managingNode, REGION_NAME); - validateDistributedMBean(managingNode, 4); - - - - for (int j = 0; j < managedNodes.length; j++) { - - VM vm = managedNodes[j]; + validateDistributedMBean(this.managerVM, 3); + createDistributedRegion(this.managerVM, REGION_NAME); + validateDistributedMBean(this.managerVM, 4); + for (VM vm : this.memberVMs) { closeRegion(vm, REGION_PATH); - } - ensureProxyCleanup(managingNode); - - validateDistributedMBean(managingNode, 1); - - closeRegion(managingNode, REGION_PATH); - validateDistributedMBean(managingNode, 0); - + ensureProxyCleanup(this.managerVM); + + validateDistributedMBean(this.managerVM, 1); + closeRegion(this.managerVM, REGION_PATH); + validateDistributedMBean(this.managerVM, 0); } - + @Test public void testNavigationAPIS() throws Exception { initManagement(true); - for(VM vm : managedNodeList){ + + for (VM vm : this.memberVMs) { createDistributedRegion(vm, REGION_NAME); createPartitionRegion(vm, PARTITIONED_REGION_NAME); } - createDistributedRegion(managingNode, REGION_NAME); - createPartitionRegion(managingNode, PARTITIONED_REGION_NAME); - List<String> memberIds = new ArrayList<String>(); - - for(VM vm : managedNodeList){ + + createDistributedRegion(this.managerVM, REGION_NAME); + createPartitionRegion(this.managerVM, PARTITIONED_REGION_NAME); + List<String> memberIds = new ArrayList<>(); + + for (VM vm : this.memberVMs) { memberIds.add(getMemberId(vm)); } - checkNavigationAPIS(managingNode, memberIds); - + checkNavigationApis(this.managerVM, memberIds); - for(VM vm : managedNodeList){ + for (VM vm : this.memberVMs) { closeRegion(vm, REGION_PATH); } - - closeRegion(managingNode, REGION_PATH); - + closeRegion(this.managerVM, REGION_PATH); } - - + @Test - public void testSubRegions() throws Exception{ + public void testSubRegions() throws Exception { initManagement(false); - for (VM vm : managedNodeList) { + + for (VM vm : this.memberVMs) { createLocalRegion(vm, LOCAL_REGION_NAME); createSubRegion(vm, LOCAL_REGION_NAME, LOCAL_SUB_REGION_NAME); } - - for (VM vm : managedNodeList) { + + for (VM vm : this.memberVMs) { checkSubRegions(vm, LOCAL_SUB_REGION_PATH); } - - for (VM vm : managedNodeList) { + + for (VM vm : this.memberVMs) { closeRegion(vm, LOCAL_REGION_NAME); checkNullRegions(vm, LOCAL_SUB_REGION_NAME); } - } - - - - + @Test - public void testSpecialRegions() throws Exception{ + public void testSpecialRegions() throws Exception { initManagement(false); - createSpecialRegion(managedNodeList.get(0)); - DistributedMember member = getMember(managedNodeList.get(0)); - checkSpecialRegion(managingNode,member); + createSpecialRegion(this.memberVMs[0]); + DistributedMember member = getMember(this.memberVMs[0]); + checkSpecialRegion(this.managerVM, member); } - - - public void createSpecialRegion(VM vm1) throws Exception{ - { - vm1.invoke(new SerializableRunnable("Check Sub Regions") { - - public void run() { - Cache cache = getCache(); - AttributesFactory attributesFactory = new AttributesFactory(); - attributesFactory.setValueConstraint(Portfolio.class); - RegionAttributes regionAttributes = attributesFactory.create(); - - cache.createRegion("p-os",regionAttributes); - cache.createRegion("p_os",regionAttributes); - } - }); - } - } - - public void checkSpecialRegion(VM vm1, final DistributedMember member) - throws Exception { - { - vm1.invoke(new SerializableRunnable("Check Sub Regions") { - - public void run() { - - ManagementService service = getManagementService(); - - try { - MBeanUtil.getDistributedRegionMbean("/p-os", 1); - MBeanUtil.getDistributedRegionMbean("/p_os", 1); - - } catch (Exception e) { - InternalDistributedSystem.getLoggerI18n().fine( - "Undesired Result , DistributedRegionMXBean Should not be null" - + e); - } - - } - }); - - } - - } - @Test - public void testLruStats() throws Exception{ + public void testLruStats() throws Exception { initManagement(false); - for (VM vm : managedNodeList) { + for (VM vm : this.memberVMs) { createDiskRegion(vm); - } - checkEntrySize(managingNode,3); + checkEntrySize(this.managerVM, 3); } - - public void createDiskRegion(VM vm1) throws Exception{ - { - vm1.invoke(new SerializableRunnable("Check Sub Regions") { - - public void run() { - AttributesFactory factory = new AttributesFactory(); - factory.setScope(Scope.LOCAL); - factory.setEvictionAttributes(EvictionAttributes - .createLRUMemoryAttributes(20, new TestObjectSizerImpl(), - EvictionAction.LOCAL_DESTROY)); - /*File d = new File("DiskRegions" + OSProcess.getId()); - d.mkdirs(); - - DiskStoreFactory dsf = getCache().createDiskStoreFactory(); - dsf.setDiskDirs(new File[]{d}); - factory.setDiskSynchronous(true); - DiskStore ds = dsf.create(REGION_NAME); - factory.setDiskStoreName(ds.getName()); -*/ - Region region = getCache().createRegion(REGION_NAME, factory.create()); - - LRUStatistics lruStats = getLRUStats(region); - - assertNotNull(lruStats); - - RegionMXBean bean = managementService.getLocalRegionMBean(REGION_PATH); - - assertNotNull(bean); - - int total; - for (total = 0; total < 10000; total++) { - int[] array = new int[250]; - array[0] = total; - region.put(new Integer(total), array); - } - assertTrue(bean.getEntrySize() > 0); - LogWriterUtils.getLogWriter().info("DEBUG: EntrySize =" + bean.getEntrySize()); - + /** + * Invoked in all VMs + */ + private void closeRegion(final VM vm, final String regionPath) { + vm.invoke("closeRegion", () -> { + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + Region region = cache.getRegion(regionPath); + region.close(); + }); + } - } - }); + /** + * Invoked in managedNode VM + */ + private void createSpecialRegion(final VM vm) throws Exception { + vm.invoke("createSpecialRegion", () -> { + Cache cache = getCache(); + AttributesFactory attributesFactory = new AttributesFactory(); + attributesFactory.setValueConstraint(Portfolio.class); + RegionAttributes regionAttributes = attributesFactory.create(); - } - + cache.createRegion("p-os", regionAttributes); + cache.createRegion("p_os", regionAttributes); + }); } - public void checkEntrySize(VM vm1, final int expectedMembers) - throws Exception { - { - vm1.invoke(new SerializableRunnable("Check Sub Regions") { - - public void run() { - - DistributedRegionMXBean bean = null; - try { - bean = MBeanUtil.getDistributedRegionMbean(REGION_PATH, - expectedMembers); - } catch (Exception e) { - InternalDistributedSystem.getLoggerI18n().fine( - "Undesired Result , DistributedRegionMXBean Should not be null" - + e); - } + /** + * Invoked in this.managerVM VM + */ + private void checkSpecialRegion(final VM vm, final DistributedMember member) throws Exception { + vm.invoke("checkSpecialRegion", () -> { + MBeanUtil.getDistributedRegionMbean("/p-os", 1); // TODO: do something? + MBeanUtil.getDistributedRegionMbean("/p_os", 1); + }); + } - assertNotNull(bean); + /** + * Invoked in managedNode VMs + */ + private void createDiskRegion(final VM vm) throws Exception { + vm.invoke("createDiskRegion", () -> { + AttributesFactory factory = new AttributesFactory(); + factory.setScope(Scope.LOCAL); + factory.setEvictionAttributes(EvictionAttributes.createLRUMemoryAttributes(20, new TestObjectSizerImpl(), EvictionAction.LOCAL_DESTROY)); - assertTrue(bean.getEntrySize() > 0); - LogWriterUtils.getLogWriter().info("DEBUG: EntrySize =" + bean.getEntrySize()); - } - }); + Region region = getCache().createRegion(REGION_NAME, factory.create()); - } + LRUStatistics lruStats = ((AbstractRegion) region).getEvictionController().getLRUHelper().getStats(); + assertNotNull(lruStats); + RegionMXBean regionMXBean = managementService.getLocalRegionMBean(REGION_PATH); + assertNotNull(regionMXBean); + + int total; + for (total = 0; total < 10000; total++) { // TODO: what is this? + int[] array = new int[250]; + array[0] = total; + region.put(new Integer(total), array); + } + assertTrue(regionMXBean.getEntrySize() > 0); + }); } - - protected LRUStatistics getLRUStats(Region region) { - final LocalRegion l = (LocalRegion) region; - return l.getEvictionController().getLRUHelper().getStats(); + + /** + * Invoked in this.managerVM VM + */ + private void checkEntrySize(final VM vm, final int expectedMembers) throws Exception { + vm.invoke("checkEntrySize", () -> { + DistributedRegionMXBean distributedRegionMXBean = MBeanUtil.getDistributedRegionMbean(REGION_PATH, expectedMembers); + assertNotNull(distributedRegionMXBean); + assertTrue(distributedRegionMXBean.getEntrySize() > 0); + }); } - - @SuppressWarnings("serial") - public void checkSubRegions(VM vm1, final String subRegionPath) throws Exception { - { - vm1.invoke(new SerializableRunnable("Check Sub Regions") { - public void run() { + /** + * Invoked in managedNode VMs + */ + private void checkSubRegions(final VM vm, final String subRegionPath) throws Exception { + vm.invoke("checkSubRegions", () -> { + RegionMXBean regionMXBean = managementService.getLocalRegionMBean(subRegionPath); + assertNotNull(regionMXBean); + }); + } - RegionMXBean bean = managementService - .getLocalRegionMBean(subRegionPath); - assertNotNull(bean); + /** + * Invoked in managedNode VMs + */ + private void checkNullRegions(final VM vm, final String subRegionPath) throws Exception { + vm.invoke("checkNullRegions", () -> { + RegionMXBean regionMXBean = managementService.getLocalRegionMBean(subRegionPath); + assertNull(regionMXBean); + }); + } - } - }); + /** + * Invoked in this.managerVM VM + */ + private void checkNavigationApis(final VM vm, final List<String> managedNodeMemberIds) { + vm.invoke("checkNavigationApis", () -> { + ManagementService service = getManagementService(); + assertNotNull(service.getDistributedSystemMXBean()); - } - } - - @SuppressWarnings("serial") - public void checkNullRegions(VM vm1, final String subRegionPath) throws Exception { - { - vm1.invoke(new SerializableRunnable("Check Sub Regions") { + waitForAllMembers(4); - public void run() { + DistributedSystemMXBean distributedSystemMXBean = service.getDistributedSystemMXBean(); + assertTrue(distributedSystemMXBean.listDistributedRegionObjectNames().length == 2); - RegionMXBean bean = managementService - .getLocalRegionMBean(subRegionPath); - assertNull(bean); + assertNotNull(distributedSystemMXBean.fetchDistributedRegionObjectName(PARTITIONED_REGION_PATH)); + assertNotNull(distributedSystemMXBean.fetchDistributedRegionObjectName(REGION_PATH)); - } - }); + ObjectName actualName = distributedSystemMXBean.fetchDistributedRegionObjectName(PARTITIONED_REGION_PATH); + ObjectName expectedName = MBeanJMXAdapter.getDistributedRegionMbeanName(PARTITIONED_REGION_PATH); + assertEquals(expectedName, actualName); - } - } + actualName = distributedSystemMXBean.fetchDistributedRegionObjectName(REGION_PATH); + expectedName = MBeanJMXAdapter.getDistributedRegionMbeanName(REGION_PATH); + assertEquals(expectedName, actualName); - - - - protected void checkNavigationAPIS(final VM vm, - final List<String> managedNodeMemberIds) { - SerializableRunnable checkNavigationAPIS = new SerializableRunnable( - "checkNavigationAPIS") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - ManagementService service = getManagementService(); - final DistributedSystemMXBean bean = service - .getDistributedSystemMXBean(); - - assertNotNull(service.getDistributedSystemMXBean()); - - waitForAllMembers(4); - assertTrue(bean.listDistributedRegionObjectNames().length == 2); - try { - assertNotNull(bean - .fetchDistributedRegionObjectName(PARTITIONED_REGION_PATH)); - assertNotNull(bean.fetchDistributedRegionObjectName(REGION_PATH)); - ObjectName actualName = bean - .fetchDistributedRegionObjectName(PARTITIONED_REGION_PATH); - ObjectName expectedName = MBeanJMXAdapter - .getDistributedRegionMbeanName(PARTITIONED_REGION_PATH); - assertEquals(expectedName, actualName); - - actualName = bean.fetchDistributedRegionObjectName(REGION_PATH); - expectedName = MBeanJMXAdapter - .getDistributedRegionMbeanName(REGION_PATH); - assertEquals(expectedName, actualName); - - } catch (Exception e) { - fail("fetchDistributedRegionObjectName () Unsuccessful " + e); - } + for (String memberId : managedNodeMemberIds) { + ObjectName memberMBeanName = MBeanJMXAdapter.getMemberMBeanName(memberId); + waitForProxy(memberMBeanName, MemberMXBean.class); - for (String memberId : managedNodeMemberIds) { - ObjectName memberMBeanName = MBeanJMXAdapter - .getMemberMBeanName(memberId); - ObjectName expectedName; - try { - waitForProxy(memberMBeanName, MemberMXBean.class); - - ObjectName[] regionMBeanNames = bean - .fetchRegionObjectNames(memberMBeanName); - assertNotNull(regionMBeanNames); - assertTrue(regionMBeanNames.length == 2); - List<ObjectName> listOfNames = Arrays.asList(regionMBeanNames); - - expectedName = MBeanJMXAdapter.getRegionMBeanName(memberId, - PARTITIONED_REGION_PATH); - listOfNames.contains(expectedName); - expectedName = MBeanJMXAdapter.getRegionMBeanName(memberId, - REGION_PATH); - listOfNames.contains(expectedName); - } catch (Exception e) { - fail("fetchRegionObjectNames () Unsuccessful " + e); - } - } + ObjectName[] regionMBeanNames = distributedSystemMXBean.fetchRegionObjectNames(memberMBeanName); + assertNotNull(regionMBeanNames); + assertTrue(regionMBeanNames.length == 2); - for (String memberId : managedNodeMemberIds) { - ObjectName expectedName; - ObjectName actualName; - ObjectName memberMBeanName = MBeanJMXAdapter - .getMemberMBeanName(memberId); - try { - waitForProxy(memberMBeanName, MemberMXBean.class); - expectedName = MBeanJMXAdapter.getRegionMBeanName(memberId, - PARTITIONED_REGION_PATH); - waitForProxy(expectedName, RegionMXBean.class); - actualName = bean.fetchRegionObjectName(memberId, - PARTITIONED_REGION_PATH); - - assertEquals(expectedName, actualName); - expectedName = MBeanJMXAdapter.getRegionMBeanName(memberId, - REGION_PATH); - waitForProxy(expectedName, RegionMXBean.class); - actualName = bean.fetchRegionObjectName(memberId, REGION_PATH); - - assertEquals(expectedName, actualName); - } catch (Exception e) { - fail("fetchRegionObjectName () Unsuccessful "); - } - } + List<ObjectName> listOfNames = Arrays.asList(regionMBeanNames); + expectedName = MBeanJMXAdapter.getRegionMBeanName(memberId, PARTITIONED_REGION_PATH); + assertTrue(listOfNames.contains(expectedName)); + + expectedName = MBeanJMXAdapter.getRegionMBeanName(memberId, REGION_PATH); + assertTrue(listOfNames.contains(expectedName)); } - }; - vm.invoke(checkNavigationAPIS); - } - - - protected void putBulkData(final VM vm, final int numKeys) { - SerializableRunnable putBulkData = new SerializableRunnable("putBulkData") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - Region region = cache.getRegion(REGION_PATH); - for (int i = 0; i < numKeys; i++) { - region.put(i, i * i); - } + for (String memberId : managedNodeMemberIds) { + ObjectName memberMBeanName = MBeanJMXAdapter.getMemberMBeanName(memberId); + waitForProxy(memberMBeanName, MemberMXBean.class); + + expectedName = MBeanJMXAdapter.getRegionMBeanName(memberId, PARTITIONED_REGION_PATH); + waitForProxy(expectedName, RegionMXBean.class); + + actualName = distributedSystemMXBean.fetchRegionObjectName(memberId, PARTITIONED_REGION_PATH); + assertEquals(expectedName, actualName); + + expectedName = MBeanJMXAdapter.getRegionMBeanName(memberId, REGION_PATH); + waitForProxy(expectedName, RegionMXBean.class); + + actualName = distributedSystemMXBean.fetchRegionObjectName(memberId, REGION_PATH); + assertEquals(expectedName, actualName); } - }; - vm.invoke(putBulkData); + }); } - - /** - * creates a Fixed Partition List to be used for Fixed Partition Region - * - * @param primaryIndex - * index for each fixed partition + * Invoked in controller VM + * + * Creates a Fixed Partition List to be used for Fixed Partition Region + * + * @param primaryIndex index for each fixed partition */ - private static void createFixedPartitionList(int primaryIndex) { - fpaList.clear(); + private List<FixedPartitionAttributes> createFixedPartitionList(final int primaryIndex) { + List<FixedPartitionAttributes> fixedPartitionAttributesList = new ArrayList<>(); if (primaryIndex == 1) { - fpaList.add(FixedPartitionAttributes.createFixedPartition("Q1", true, 3)); - fpaList.add(FixedPartitionAttributes.createFixedPartition("Q2", 3)); - fpaList.add(FixedPartitionAttributes.createFixedPartition("Q3", 3)); + fixedPartitionAttributesList.add(FixedPartitionAttributes.createFixedPartition("Q1", true, 3)); + fixedPartitionAttributesList.add(FixedPartitionAttributes.createFixedPartition("Q2", 3)); + fixedPartitionAttributesList.add(FixedPartitionAttributes.createFixedPartition("Q3", 3)); } if (primaryIndex == 2) { - fpaList.add(FixedPartitionAttributes.createFixedPartition("Q1", 3)); - fpaList.add(FixedPartitionAttributes.createFixedPartition("Q2", true, 3)); - fpaList.add(FixedPartitionAttributes.createFixedPartition("Q3", 3)); + fixedPartitionAttributesList.add(FixedPartitionAttributes.createFixedPartition("Q1", 3)); + fixedPartitionAttributesList.add(FixedPartitionAttributes.createFixedPartition("Q2", true, 3)); + fixedPartitionAttributesList.add(FixedPartitionAttributes.createFixedPartition("Q3", 3)); } if (primaryIndex == 3) { - fpaList.add(FixedPartitionAttributes.createFixedPartition("Q1", 3)); - fpaList.add(FixedPartitionAttributes.createFixedPartition("Q2", 3)); - fpaList.add(FixedPartitionAttributes.createFixedPartition("Q3", true, 3)); + fixedPartitionAttributesList.add(FixedPartitionAttributes.createFixedPartition("Q1", 3)); + fixedPartitionAttributesList.add(FixedPartitionAttributes.createFixedPartition("Q2", 3)); + fixedPartitionAttributesList.add(FixedPartitionAttributes.createFixedPartition("Q3", true, 3)); } - + return fixedPartitionAttributesList; } - - /** + * Invoked in managedNodes VMs + * * Creates a Fixed Partitioned Region - * @param fpaList partition list + * + * @param fixedPartitionAttributesList partition list */ - protected static void createFixedPartitionRegion( - List<FixedPartitionAttributes> fpaList) { + private static void createFixedPartitionRegion(final List<FixedPartitionAttributes> fixedPartitionAttributesList) { GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - SystemManagementService service = (SystemManagementService)getManagementService(); + SystemManagementService service = (SystemManagementService) getManagementService(); PartitionAttributesFactory paf = new PartitionAttributesFactory(); paf.setRedundantCopies(2).setTotalNumBuckets(12); - for (FixedPartitionAttributes fpa : fpaList) { + for (FixedPartitionAttributes fpa : fixedPartitionAttributesList) { paf.addFixedPartitionAttributes(fpa); } paf.setPartitionResolver(new SingleHopQuarterPartitionResolver()); AttributesFactory attr = new AttributesFactory(); attr.setPartitionAttributes(paf.create()); - fixedPrRegion = cache.createRegion(FIXED_PR_NAME, attr.create()); - assertNotNull(fixedPrRegion); - LogWriterUtils.getLogWriter().info( - "Partitioned Region " + FIXED_PR_NAME + " created Successfully :" - + fixedPrRegion.toString()); - RegionMXBean bean = service.getLocalRegionMBean(FIXED_PR_PATH); - RegionAttributes regAttrs = fixedPrRegion.getAttributes(); + fixedPartitionedRegion = cache.createRegion(FIXED_PR_NAME, attr.create()); + assertNotNull(fixedPartitionedRegion); - LogWriterUtils.getLogWriter().info( - "FixedPartitionAttribute From GemFire :" - + regAttrs.getPartitionAttributes().getFixedPartitionAttributes()); - - RegionAttributesData data = bean.listRegionAttributes(); + RegionMXBean bean = service.getLocalRegionMBean(FIXED_PR_PATH); + RegionAttributes regAttrs = fixedPartitionedRegion.getAttributes(); PartitionAttributesData parData = bean.listPartitionAttributes(); assertPartitionData(regAttrs, parData); - FixedPartitionAttributesData[] fixedPrData = bean - .listFixedPartitionAttributes(); + FixedPartitionAttributesData[] fixedPrData = bean.listFixedPartitionAttributes(); assertNotNull(fixedPrData); assertEquals(3, fixedPrData.length); for (int i = 0; i < fixedPrData.length; i++) { - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Fixed PR Data is " + fixedPrData[i] - + "</ExpectedString> "); +// LogWriterUtils.getLogWriter().info("<ExpectedString> Fixed PR Data is " + fixedPrData[i] + "</ExpectedString> "); } } /** - * Verifies the Fixed Partition Region for partition related attributes - * - * @param vm + * Invoked in this.managerVM VM */ - protected void validateRemoteFixedPartitionRegion(final VM vm) throws Exception { - SerializableRunnable verifyFixedRegion = new SerializableRunnable( - "Verify Partition region") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - Set<DistributedMember> otherMemberSet = cache.getDistributionManager() - .getOtherNormalDistributionManagerIds(); - - for (DistributedMember member : otherMemberSet) { - RegionMXBean bean = null; - try { - bean = MBeanUtil.getRegionMbeanProxy(member, FIXED_PR_PATH); - } catch (Exception e) { - InternalDistributedSystem.getLoggerI18n().fine( - "Undesired Result , RegionMBean Should not be null"); - } - PartitionAttributesData data = bean.listPartitionAttributes(); - assertNotNull(data); - FixedPartitionAttributesData[] fixedPrData = bean - .listFixedPartitionAttributes(); - assertNotNull(fixedPrData); - assertEquals(3, fixedPrData.length); - for (int i = 0; i < fixedPrData.length; i++) { - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Remote PR Data is " + fixedPrData[i] - + "</ExpectedString> "); - } - } + private void validateRemoteFixedPartitionRegion(final VM vm) throws Exception { + vm.invoke("Verify Partition region", () -> { + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + Set<DistributedMember> otherMemberSet = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); - } + for (DistributedMember member : otherMemberSet) { + RegionMXBean bean = MBeanUtil.getRegionMbeanProxy(member, FIXED_PR_PATH); + + PartitionAttributesData data = bean.listPartitionAttributes(); + assertNotNull(data); - }; - vm.invoke(verifyFixedRegion); + FixedPartitionAttributesData[] fixedPrData = bean.listFixedPartitionAttributes(); + assertNotNull(fixedPrData); + assertEquals(3, fixedPrData.length); + + for (int i = 0; i < fixedPrData.length; i++) { +// LogWriterUtils.getLogWriter().info("<ExpectedString> Remote PR Data is " + fixedPrData[i] + "</ExpectedString> "); + } + } + }); } /** - * Add a Notification listener to MemberMBean - * @param vm + * Invoked in this.managerVM VM */ - protected void addMemberListener(final VM vm) { - SerializableRunnable addMemberListener = new SerializableRunnable( - "addMemberListener") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - - SystemManagementService service = (SystemManagementService) getManagementService(); - - Set<DistributedMember> otherMemberSet = cache.getDistributionManager() - .getOtherNormalDistributionManagerIds(); - - for (DistributedMember member : otherMemberSet) { - - MBeanServer mbeanServer = MBeanJMXAdapter.mbeanServer; - - RegionNotif regionCreate = new RegionNotif(); - - ObjectName memberMBeanName; - try { - memberMBeanName = service.getMemberMBeanName(member); - Set<ObjectName> names = service.queryMBeanNames(member); - if(names != null){ - for(ObjectName name : names){ - LogWriterUtils.getLogWriter().info( - "<ExpectedString> ObjectNames arr" + name - + "</ExpectedString> "); - } - } - waitForProxy(memberMBeanName, MemberMXBean.class); - mbeanServer.addNotificationListener(memberMBeanName, regionCreate, - null, null); - } catch (NullPointerException e) { - Assert.fail("FAILED WITH EXCEPION", e); - } catch (InstanceNotFoundException e) { - Assert.fail("FAILED WITH EXCEPION", e); - } catch (Exception e) { - Assert.fail("FAILED WITH EXCEPION", e); + private void addMemberNotificationListener(final VM vm) { + vm.invoke("addMemberNotificationListener", () -> { + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + Set<DistributedMember> otherMemberSet = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); + + SystemManagementService service = (SystemManagementService) getManagementService(); + + for (DistributedMember member : otherMemberSet) { + MemberNotificationListener listener = new MemberNotificationListener(); + ObjectName memberMBeanName = service.getMemberMBeanName(member); + Set<ObjectName> names = service.queryMBeanNames(member); + if (names != null) { + for (ObjectName name : names) { +// LogWriterUtils.getLogWriter().info("<ExpectedString> ObjectNames arr" + name + "</ExpectedString> "); } - } - } - }; - vm.invoke(addMemberListener); + waitForProxy(memberMBeanName, MemberMXBean.class); + ManagementFactory.getPlatformMBeanServer().addNotificationListener(memberMBeanName, listener, null, null); + } + }); } /** + * Invoked in this.managerVM VM + * * Add a Notification listener to DistributedSystemMBean which should gather * all the notifications which are propagated through all individual * MemberMBeans Hence Region created/destroyed should be visible to this * listener - * - * @param vm */ - protected void addDistrListener(final VM vm) { - SerializableRunnable addDistrListener = new SerializableRunnable( - "addDistrListener") { - public void run() { - MBeanServer mbeanServer = MBeanJMXAdapter.mbeanServer; - - DistrNotif regionCreate = new DistrNotif(); - - ObjectName systemMBeanName; - try { - systemMBeanName = MBeanJMXAdapter.getDistributedSystemName(); - mbeanServer.addNotificationListener(systemMBeanName, regionCreate, - null, null); - - } catch (NullPointerException e) { - Assert.fail("FAILED WITH EXCEPION", e); - } catch (InstanceNotFoundException e) { - Assert.fail("FAILED WITH EXCEPION", e); - - } - - } - }; - vm.invoke(addDistrListener); - + private void addDistributedSystemNotificationListener(final VM vm) { + vm.invoke("addDistributedSystemNotificationListener", () -> { + DistributedSystemNotificationListener listener = new DistributedSystemNotificationListener(); + ObjectName systemMBeanName = MBeanJMXAdapter.getDistributedSystemName(); + ManagementFactory.getPlatformMBeanServer().addNotificationListener(systemMBeanName, listener, null, null); + }); } - - public void ensureProxyCleanup(final VM vm) { - - SerializableRunnable ensureProxyCleanup = new SerializableRunnable( - "Ensure Proxy cleanup") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - Set<DistributedMember> otherMemberSet = cache.getDistributionManager() - .getOtherNormalDistributionManagerIds(); - - final SystemManagementService service = (SystemManagementService) getManagementService(); - - for (final DistributedMember member : otherMemberSet) { - RegionMXBean bean = null; - try { - Wait.waitForCriterion(new WaitCriterion() { - - RegionMXBean bean = null; - - public String description() { - return "Waiting for the proxy to get deleted at managing node"; - } - - public boolean done() { - ObjectName objectName = service.getRegionMBeanName(member, REGION_PATH); - bean = service.getMBeanProxy(objectName, RegionMXBean.class); - boolean done = (bean == null); - return done; - } - - }, MAX_WAIT, 500, true); - - } catch (Exception e) { - fail("could not remove proxies in required time"); - - } - assertNull(bean); + /** + * Invoked in this.managerVM VM + */ + private void ensureProxyCleanup(final VM vm) { + vm.invoke("ensureProxyCleanup", () -> { + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + Set<DistributedMember> otherMemberSet = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); - } + final SystemManagementService service = (SystemManagementService) getManagementService(); + for (final DistributedMember member : otherMemberSet) { + String alias = "Waiting for the proxy to get deleted at managing node"; + await(alias).atMost(MAX_WAIT_MILLIS, TimeUnit.MILLISECONDS).until(() -> assertNull(service.getMBeanProxy(service.getRegionMBeanName(member, REGION_PATH), RegionMXBean.class))); } - }; - vm.invoke(ensureProxyCleanup); + }); } /** - * Verifies a Remote Distributed Region - * - * @param vm + * Invoked in this.managerVM VM */ - protected void verifyRemoteDistributedRegion(final VM vm, final int expectedMembers) throws Exception { - SerializableRunnable verifyRegion = new SerializableRunnable( - "Verify Distributed region") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - Set<DistributedMember> otherMemberSet = cache.getDistributionManager() - .getOtherNormalDistributionManagerIds(); - - for (DistributedMember member : otherMemberSet) { - RegionMXBean bean = null; - try { - bean = MBeanUtil.getRegionMbeanProxy(member, REGION_PATH); - } catch (Exception e) { - InternalDistributedSystem.getLoggerI18n().fine( - "Undesired Result , RegionMBean Should not be null" + e); - - } - assertNotNull(bean); - - RegionAttributesData data = bean.listRegionAttributes(); - assertNotNull(data); - MembershipAttributesData membershipData = bean - .listMembershipAttributes(); - EvictionAttributesData evictionData = bean.listEvictionAttributes(); - assertNotNull(membershipData); - assertNotNull(evictionData); - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Membership Data is " - + membershipData.toString() + "</ExpectedString> "); - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Eviction Data is " + membershipData.toString() - + "</ExpectedString> "); - - } - DistributedRegionMXBean bean = null; - try { - bean = MBeanUtil.getDistributedRegionMbean(REGION_PATH, expectedMembers); - } catch (Exception e) { - InternalDistributedSystem.getLoggerI18n().fine( - "Undesired Result , DistributedRegionMXBean Should not be null" - + e); - } + private void verifyRemoteDistributedRegion(final VM vm, final int expectedMembers) throws Exception { + vm.invoke("verifyRemoteDistributedRegion", () -> { + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + Set<DistributedMember> otherMemberSet = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); + for (DistributedMember member : otherMemberSet) { + RegionMXBean bean = MBeanUtil.getRegionMbeanProxy(member, REGION_PATH); assertNotNull(bean); - assertEquals(REGION_PATH, bean.getFullPath()); - - } - }; - vm.invoke(verifyRegion); - } - - - protected void validateDistributedMBean(final VM vm, final int expectedMembers) { - SerializableRunnable verifyRegion = new SerializableRunnable( - "Verify Distributed region") { - public void run() { - DistributedRegionMXBean bean = null; - DistributedSystemMXBean sysMBean = null; - final ManagementService service = getManagementService(); - - if (expectedMembers == 0) { - try { - Wait.waitForCriterion(new WaitCriterion() { - - RegionMXBean bean = null; - - public String description() { - return "Waiting for the proxy to get deleted at managing node"; - } + RegionAttributesData data = bean.listRegionAttributes(); + assertNotNull(data); - public boolean done() { - DistributedRegionMXBean bean = service - .getDistributedRegionMXBean(REGION_PATH); - boolean done = (bean == null); - return done; - } + MembershipAttributesData membershipData = bean.listMembershipAttributes(); + EvictionAttributesData evictionData = bean.listEvictionAttributes(); + assertNotNull(membershipData); + assertNotNull(evictionData); - }, MAX_WAIT, 500, true); +// LogWriterUtils.getLogWriter().info("<ExpectedString> Membership Data is " + membershipData.toString() + "</ExpectedString> "); +// LogWriterUtils.getLogWriter().info("<ExpectedString> Eviction Data is " + membershipData.toString() + "</ExpectedString> "); + } - } catch (Exception e) { - fail("could not remove Aggregate Bean in required time"); + DistributedRegionMXBean bean = null; + bean = MBeanUtil.getDistributedRegionMbean(REGION_PATH, expectedMembers); - } - return; - } + assertNotNull(bean); + assertEquals(REGION_PATH, bean.getFullPath()); + }); + } - try { - bean = MBeanUtil.getDistributedRegionMbean(REGION_PATH, - expectedMembers); - sysMBean = service.getDistributedSystemMXBean(); - } catch (Exception e) { - InternalDistributedSystem.getLoggerI18n().fine( - "Undesired Result , DistributedRegionMXBean Should not be null" - + e); - } + /** + * Invoked in this.managerVM VM + */ + private void validateDistributedMBean(final VM vm, final int expectedMembers) { + vm.invoke("validateDistributedMBean", () -> { + final ManagementService service = getManagementService(); + + if (expectedMembers == 0) { + String alias = "Waiting for the proxy to get deleted at managing node"; + await(alias).atMost(MAX_WAIT_MILLIS, TimeUnit.MILLISECONDS).until(() -> assertNull(service.getDistributedRegionMXBean(REGION_PATH))); + return; + } - assertNotNull(bean); - assertEquals(REGION_PATH, bean.getFullPath()); - assertEquals(expectedMembers, bean.getMemberCount()); - assertEquals(expectedMembers, bean.getMembers().length); - - // Check Stats related Data - // Add Mock testing - LogWriterUtils.getLogWriter() - .info( - "<ExpectedString> CacheListenerCallsAvgLatency is " - + bean.getCacheListenerCallsAvgLatency() - + "</ExpectedString> "); - LogWriterUtils.getLogWriter().info( - "<ExpectedString> CacheWriterCallsAvgLatency is " - + bean.getCacheWriterCallsAvgLatency() + "</ExpectedString> "); - LogWriterUtils.getLogWriter().info( - "<ExpectedString> CreatesRate is " + bean.getCreatesRate() - + "</ExpectedString> "); + DistributedRegionMXBean bean = MBeanUtil.getDistributedRegionMbean(REGION_PATH, expectedMembers); - } - }; - // Test DistributedRegionMXBean + assertNotNull(bean); + assertEquals(REGION_PATH, bean.getFullPath()); + assertEquals(expectedMembers, bean.getMemberCount()); + assertEquals(expectedMembers, bean.getMembers().length); - vm.invoke(verifyRegion); + // Check Stats related Data +// LogWriterUtils.getLogWriter().info("<ExpectedString> CacheListenerCallsAvgLatency is " + bean.getCacheListenerCallsAvgLatency() + "</ExpectedString> "); +// LogWriterUtils.getLogWriter().info("<ExpectedString> CacheWriterCallsAvgLatency is " + bean.getCacheWriterCallsAvgLatency() + "</ExpectedString> "); +// LogWriterUtils.getLogWriter().info("<ExpectedString> CreatesRate is " + bean.getCreatesRate() + "</ExpectedString> "); + }); } + /** - * Verifies a Remote Partition Region - * - * @param vm + * Invoked in this.managerVM VM */ - protected void validateRemotePartitionRegion(final VM vm) throws Exception { - SerializableRunnable verifyRegion = new SerializableRunnable( - "Verify Partition region") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - Set<DistributedMember> otherMemberSet = cache.getDistributionManager() - .getOtherNormalDistributionManagerIds(); - - for (DistributedMember member : otherMemberSet) { - RegionMXBean bean = null; - try { - bean = MBeanUtil.getRegionMbeanProxy(member, - PARTITIONED_REGION_PATH); - } catch (Exception e) { - InternalDistributedSystem.getLoggerI18n().fine( - "Undesired Result , RegionMBean Should not be null"); - } - PartitionAttributesData data = bean.listPartitionAttributes(); - assertNotNull(data); - } - - ManagementService service = getManagementService(); - DistributedRegionMXBean bean = service.getDistributedRegionMXBean(PARTITIONED_REGION_PATH); - assertEquals(3,bean.getMembers().length); - + private void validateRemotePartitionRegion(final VM vm) throws Exception { + vm.invoke("validateRemotePartitionRegion", () -> { + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + Set<DistributedMember> otherMemberSet = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); + + for (DistributedMember member : otherMemberSet) { + RegionMXBean regionMXBean = MBeanUtil.getRegionMbeanProxy(member, PARTITIONED_REGION_PATH); + PartitionAttributesData partitionAttributesData = regionMXBean.listPartitionAttributes(); + assertNotNull(partitionAttributesData); } - }; - vm.invoke(verifyRegion); + ManagementService service = getManagementService(); + DistributedRegionMXBean distributedRegionMXBean = service.getDistributedRegionMXBean(PARTITIONED_REGION_PATH); + assertEquals(3, distributedRegionMXBean.getMembers().length); + }); } - - - /** - * Creates a Distributed Region - * - * @param vm + * Invoked in member VMs */ - protected void validateReplicateRegionAfterCreate(final VM vm) { - SerializableRunnable checkDistributedRegion = new SerializableRunnable( - "Check Distributed region") { - public void run() { - - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - SystemManagementService service = (SystemManagementService)getManagementService(); - - MBeanServer mbeanServer = MBeanJMXAdapter.mbeanServer; - RegionNotif test = new RegionNotif(); + private void validateReplicateRegionAfterCreate(final VM memberVM) { + memberVM.invoke("Check Distributed region", () -> { + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + String memberId = MBeanJMXAdapter.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember()); + ObjectName memberMBeanName = ObjectName.getInstance("GemFire:type=Member,member=" + memberId); - String memberId = MBeanJMXAdapter.getMemberNameOrId(cache - .getDistributedSystem().getDistributedMember()); + MemberNotificationListener listener = new MemberNotificationListener(); + ManagementFactory.getPlatformMBeanServer().addNotificationListener(memberMBeanName, listener, null, null); - ObjectName memberMBeanName; - try { - memberMBeanName = ObjectName - .getInstance("GemFire:type=Member,member=" + memberId); - mbeanServer - .addNotificationListener(memberMBeanName, test, null, null); - } catch (MalformedObjectNameException e) { + SystemManagementService service = (SystemManagementService) getManagementService(); + RegionMXBean regionMXBean = service.getLocalRegionMBean(REGION_PATH); + assertNotNull(regionMXBean); - Assert.fail("FAILED WITH EXCEPION", e); - } catch (NullPointerException e) { - Assert.fail("FAILED WITH EXCEPION", e); + Region region = cache.getRegion(REGION_PATH); + RegionAttributes regionAttributes = region.getAttributes(); - } catch (InstanceNotFoundException e) { - Assert.fail("FAILED WITH EXCEPION", e); + RegionAttributesData regionAttributesData = regionMXBean.listRegionAttributes(); + assertRegionAttributes(regionAttributes, regionAttributesData); - } - - assertNotNull(service.getLocalRegionMBean(REGION_PATH)); - - RegionMXBean bean = service.getLocalRegionMBean(REGION_PATH); - Region region = cache.getRegion(REGION_PATH); - - RegionAttributes regAttrs = region.getAttributes(); + MembershipAttributesData membershipData = regionMXBean.listMembershipAttributes(); + assertNotNull(membershipData); - RegionAttributesData data = bean.listRegionAttributes(); - - assertRegionAttributes(regAttrs, data); - MembershipAttributesData membershipData = bean - .listMembershipAttributes(); - EvictionAttributesData evictionData = bean.listEvictionAttributes(); - assertNotNull(membershipData); - assertNotNull(evictionData); - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Membership Data is " + membershipData.toString() - + "</ExpectedString> "); - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Eviction Data is " + membershipData.toString() - + "</ExpectedString> "); - } - }; - vm.invoke(checkDistributedRegion); + EvictionAttributesData evictionData = regionMXBean.listEvictionAttributes(); + assertNotNull(evictionData); + }); } /** - * Creates a partition Region - * - * @param vm + * Invoked in managedNodes VMs */ - protected void validatePartitionRegionAfterCreate(final VM vm) { - SerializableRunnable createParRegion = new SerializableRunnable( - "Create Partitioned region") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - SystemManagementService service = (SystemManagementService)getManagementService(); - assertNotNull(service.getLocalRegionMBean(PARTITIONED_REGION_PATH)); - RegionMXBean bean = service - .getLocalRegionMBean(PARTITIONED_REGION_PATH); - Region partitionedRegion = cache.getRegion(PARTITIONED_REGION_PATH); - RegionAttributes regAttrs = partitionedRegion.getAttributes(); - RegionAttributesData data = bean.listRegionAttributes(); - PartitionAttributesData parData = bean.listPartitionAttributes(); - assertPartitionData(regAttrs, parData); - - } - }; - vm.invoke(createParRegion); + private void validatePartitionRegionAfterCreate(final VM vm) { + vm.invoke("validatePartitionRegionAfterCreate", () -> { + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + Region partitionedRegion = cache.getRegion(PARTITIONED_REGION_PATH); + + SystemManagementService service = (SystemManagementService) getManagementService(); + RegionMXBean regionMBean = service.getLocalRegionMBean(PARTITIONED_REGION_PATH); + + assertPartitionData(partitionedRegion.getAttributes(), regionMBean.listPartitionAttributes()); + }); } /** - * closes a Distributed Region - * - * @param vm + * Invoked in managedNode VMs */ - protected void validateReplicatedRegionAfterClose(final VM vm) { - SerializableRunnable closeRegion = new SerializableRunnable( - "Close Distributed region") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - SystemManagementService service = (SystemManagementService)getManagementService(); - RegionMXBean bean = null; - try { - bean = service.getLocalRegionMBean(REGION_PATH); - } catch (ManagementException mgtEx) { - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Expected Exception " - + mgtEx.getLocalizedMessage() + "</ExpectedString> "); - } - assertNull(bean); - ObjectName regionObjectName = service.getRegionMBeanName(cache - .getDistributedSystem().getDistributedMember(), REGION_PATH); - assertNull(service.getLocalManager().getManagementResourceRepo() - .getEntryFromLocalMonitoringRegion(regionObjectName)); - } - }; - vm.invoke(closeRegion); + private void validateReplicatedRegionAfterClose(final VM vm) { + vm.invoke("validateReplicatedRegionAfterClose", () -> { + SystemManagementService service = (SystemManagementService) getManagementService(); + RegionMXBean regionMXBean = service.getLocalRegionMBean(REGION_PATH); + assertNull(regionMXBean); + + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + ObjectName regionObjectName = service.getRegionMBeanName(cache.getDistributedSystem().getDistributedMember(), REGION_PATH); + assertNull(service.getLocalManager().getManagementResourceRepo().getEntryFromLocalMonitoringRegion(regionObjectName)); + }); } /** - * close a partition Region - * - * @param vm + * Invoked in managedNode VMs */ - protected void validatePartitionRegionAfterClose(final VM vm) { - SerializableRunnable closeParRegion = new SerializableRunnable( - "Close Partition region") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - ManagementService service = getManagementService(); - LogWriterUtils.getLogWriter().info("Closing Par Region"); - RegionMXBean bean = null; - try { - bean = service.getLocalRegionMBean(PARTITIONED_REGION_PATH); - } catch (ManagementException mgtEx) { - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Expected Exception " - + mgtEx.getLocalizedMessage() + "</ExpectedString> "); - } - assertNull(bean); - } - }; - vm.invoke(closeParRegion); + private void validatePartitionRegionAfterClose(final VM vm) { + vm.invoke("validatePartitionRegionAfterClose", () -> { + ManagementService service = getManagementService(); + RegionMXBean bean = service.getLocalRegionMBean(PARTITIONED_REGION_PATH); + assertNull(bean); + }); } /** - * Closes Fixed Partition region - * - * @param vm + * Invoked in member VMs */ - protected void closeFixedPartitionRegion(final VM vm) { - SerializableRunnable closeParRegion = new SerializableRunnable( - "Close Fixed Partition region") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - ManagementService service = getManagementService(); - LogWriterUtils.getLogWriter().info("Closing Fixed Par Region"); - Region region = cache.getRegion(FIXED_PR_PATH); - region.close(); - RegionMXBean bean = null; - try { - bean = service.getLocalRegionMBean(FIXED_PR_PATH); - } catch (ManagementException mgtEx) { - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Expected Exception " - + mgtEx.getLocalizedMessage() + "</ExpectedString> "); - } - assertNull(bean); - } - }; - vm.invoke(closeParRegion); + private void closeFixedPartitionRegion(final VM vm) { + vm.invoke("closeFixedPartitionRegion", () -> { + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + Region region = cache.getRegion(FIXED_PR_PATH); + region.close(); + + ManagementService service = getManagementService(); + RegionMXBean regionMBean = service.getLocalRegionMBean(FIXED_PR_PATH); + assertNull(regionMBean); + }); } /** - * Asserts and verifies all the partition related data - * - * @param regAttrs - * @param partitionAttributesData + * Invoked in member VMs */ + private static void assertPartitionData(final RegionAttributes expectedRegionAttributes, final PartitionAttributesData partitionAttributesData) { + PartitionAttributes expectedPartitionAttributes = expectedRegionAttributes.getPartitionAttributes(); - protected static void assertPartitionData(RegionAttributes regAttrs, - PartitionAttributesData partitionAttributesData) { - PartitionAttributesData data = partitionAttributesData; + assertEquals(expectedPartitionAttributes.getRedundantCopies(), partitionAttributesData.getRedundantCopies()); - PartitionAttributes partAttrs = regAttrs.getPartitionAttributes(); + assertEquals(expectedPartitionAttributes.getTotalMaxMemory(), partitionAttributesData.getTotalMaxMemory()); - int redundantCopies = partAttrs.getRedundantCopies(); - assertEquals(redundantCopies, data.getRedundantCopies()); - long totalMaxMemory = partAttrs.getTotalMaxMemory(); - assertEquals(totalMaxMemory, data.getTotalMaxMemory()); // Total number of buckets for whole region - int totalNumBuckets = partAttrs.getTotalNumBuckets(); - assertEquals(totalNumBuckets, data.getTotalNumBuckets()); + assertEquals(expectedPartitionAttributes.getTotalNumBuckets(), partitionAttributesData.getTotalNumBuckets()); - int localMaxMemory = partAttrs.getLocalMaxMemory(); - assertEquals(localMaxMemory, data.getLocalMaxMemory()); + assertEquals(expectedPartitionAttributes.getLocalMaxMemory(), partitionAttributesData.getLocalMaxMemory()); - String colocatedWith = partAttrs.getColocatedWith(); - assertEquals(colocatedWith, data.getColocatedWith()); + assertEquals(expectedPartitionAttributes.getColocatedWith(), partitionAttributesData.getColocatedWith()); String partitionResolver = null; - if (partAttrs.getPartitionResolver() != null) { - partitionResolver = partAttrs.getPartitionResolver().getName(); + if (expectedPartitionAttributes.getPartitionResolver() != null) { // TODO: these conditionals should be deterministic + partitionResolver = expectedPartitionAttributes.getPartitionResolver().getName(); } + assertEquals(partitionResolver, partitionAttributesData.getPartitionResolver()); - assertEquals(partitionResolver, data.getPartitionResolver()); - - long recoveryDelay = partAttrs.getRecoveryDelay(); - assertEquals(recoveryDelay, data.getRecoveryDelay()); + assertEquals(expectedPartitionAttributes.getRecoveryDelay(), partitionAttributesData.getRecoveryDelay()); - long startupRecoveryDelay = partAttrs.getStartupRecoveryDelay(); - assertEquals(startupRecoveryDelay, data.getStartupRecoveryDelay()); + assertEquals(expectedPartitionAttributes.getStartupRecoveryDelay(), partitionAttributesData.getStartupRecoveryDelay()); - if (partAttrs.getPartitionListeners() != null) { - for (int i = 0; i < partAttrs.getPartitionListeners().length; i++) { - assertEquals((partAttrs.getPartitionListeners())[i].getClass() - .getCanonicalName(), data.getPartitionListeners()[i]); + if (expectedPartitionAttributes.getPartitionListeners() != null) { + for (int i = 0; i < expectedPartitionAttributes.getPartitionListeners().length; i++) { + assertEquals((expectedPartitionAttributes.getPartitionListeners())[i].getClass().getCanonicalName(), partitionAttributesData.getPartitionListeners()[i]); } - } - } /** - * Checks all Region Attributes - * - * @param regAttrs - * @param data + * Invoked in member VMs */ - protected static void assertRegionAttributes(RegionAttributes regAttrs, - RegionAttributesData data) { - + private static void assertRegionAttributes(final RegionAttributes regionAttributes, final RegionAttributesData regionAttributesData) { String compressorClassName = null; - if (regAttrs.getCompressor() != null) { - compressorClassName = regAttrs.getCompressor().getClass() - .getCanonicalName(); + if (regionAttributes.getCompressor() != null) { // TODO: these conditionals should be deterministic + compressorClassName = regionAttributes.getCompressor().getClass().getCanonicalName(); } - assertEquals(compressorClassName, data.getCompressorClassName()); + assertEquals(compressorClassName, regionAttributesData.getCompressorClassName()); + String cacheLoaderClassName = null; - if (regAttrs.getCacheLoader() != null) { - cacheLoaderClassName = regAttrs.getCacheLoader().getClass() - .getCanonicalName(); + if (regionAttributes.getCacheLoader() != null) { + cacheLoaderClassName = regionAttributes.getCacheLoader().getClass().getCanonicalName(); } - assertEquals(cacheLoaderClassName, data.getCacheLoaderClassName()); + assertEquals(cacheLoaderClassName, regionAttributesData.getCacheLoaderClassName()); + String cacheWriteClassName = null; - if (regAttrs.getCacheWriter() != null) { - cacheWriteClassName = regAttrs.getCacheWriter().getClass() - .getCanonicalName(); + if (regionAttributes.getCacheWriter() != null) { + cacheWriteClassName = regionAttributes.getCacheWriter().getClass().getCanonicalName(); } - assertEquals(cacheWriteClassName, data.getCacheWriterClassName()); + assertEquals(cacheWriteClassName, regionAttributesData.getCacheWriterClassName()); + String keyConstraintClassName = null; - if (regAttrs.getKeyConstraint() != null) { - keyConstraintClassName = regAttrs.getKeyConstraint().getName(); + if (regionAttributes.getKeyConstraint() != null) { + keyConstraintClassName = regionAttributes.getKeyConstraint().getName(); } - assertEquals(keyConstraintClassName, data.getKeyConstraintClassName()); + assertEquals(keyConstraintClassName, regionAttributesData.getKeyConstraintClassName()); + String valueContstaintClassName = null; - if (regAttrs.getValueConstraint() != null) { - valueContstaintClassName = regAttrs.getValueConstraint().getName(); + if (regionAttributes.getValueConstraint() != null) { + valueContstaintClassName = regionAttributes.getValueConstraint().getName(); } - assertEquals(valueContstaintClassName, data.getValueConstraintClassName()); - CacheListener[] listeners = regAttrs.getCacheListeners(); - + assertEquals(valueContstaintClassName, regionAttributesData.getValueConstraintClassName()); + CacheListener[] listeners = regionAttributes.getCacheListeners(); if (listeners != null) { - String[] value = data.getCacheListeners(); + String[] value = regionAttributesData.getCacheListeners(); for (int i = 0; i < listeners.length; i++) { assertEquals(value[i], listeners[i].getClass().getName()); } - } - - - - - int regionTimeToLive = regAttrs.getRegionTimeToLive().getTimeout(); - - assertEquals(regionTimeToLive, data.getRegionTimeToLive()); - int regionIdleTimeout = regAttrs.getRegionIdleTimeout().getTimeout(); + assertEquals(regionAttributes.getRegionTimeToLive().getTimeout(), regionAttributesData.getRegionTimeToLive()); - assertEquals(regionIdleTimeout, data.getRegionIdleTimeout()); + assertEquals(regionAttributes.getRegionIdleTimeout().getTimeout(), regionAttributesData.getRegionIdleTimeout()); - int entryTimeToLive = regAttrs.getEntryTimeToLive().getTimeout(); + assertEquals(regionAttributes.getEntryTimeToLive().getTimeout(), regionAttributesData.getEntryTimeToLive()); - assertEquals(entryTimeToLive, data.getEntryTimeToLive()); + assertEquals(regionAttributes.getEntryIdleTimeout().getTimeout(), regionAttributesData.getEntryIdleTimeout()); - int entryIdleTimeout = regAttrs.getEntryIdleTimeout().getTimeout(); - - assertEquals(entryIdleTimeout, data.getEntryIdleTimeout()); String customEntryTimeToLive = null; - Object o1 = regAttrs.getCustomEntryTimeToLive(); + Object o1 = regionAttributes.getCustomEntryTimeToLive(); if (o1 != null) { customEntryTimeToLive = o1.toString(); } - assertEquals(customEntryTimeToLive, data.getCustomEntryTimeToLive()); + assertEquals(customEntryTimeToLive, regionAttributesData.getCustomEntryTimeToLive()); String customEntryIdleTimeout = null; - Object o2 = regAttrs.getCustomEntryIdleTimeout(); + Object o2 = regionAttributes.getCustomEntryIdleTimeout(); if (o2 != null) { customEntryIdleTimeout = o2.toString(); } - assertEquals(customEntryIdleTimeout, data.getCustomEntryIdleTimeout()); + assertEquals(customEntryIdleTimeout, regionAttributesData.getCustomEntryIdleTimeout()); - boolean ignoreJTA = regAttrs.getIgnoreJTA(); - assertEquals(ignoreJTA, data.isIgnoreJTA()); + assertEquals(regionAttributes.getIgnoreJTA(), regionAttributesData.isIgnoreJTA()); - String dataPolicy = regAttrs.getDataPolicy().toString(); - assertEquals(dataPolicy, data.getDataPolicy()); + assertEquals(regionAttributes.getDataPolicy().toString(), regionAttributesData.getDataPolicy()); - String scope = regAttrs.getScope().toString(); - assertEquals(scope, data.getScope()); + assertEquals(regionAttributes.getScope().toString(), regionAttributesData.getScope()); - int initialCapacity = regAttrs.getInitialCapacity(); - assertEquals(initialCapacity, data.getInitialCapacity()); - float loadFactor = regAttrs.getLoadFactor(); - assertEquals(loadFactor, data.getLoadFactor(),0); + assertEquals(regionAttributes.getInitialCapacity(), regionAttributesData.getInitialCapacity()); - boolean lockGrantor = regAttrs.isLockGrantor(); - assertEquals(lockGrantor, data.isLockGrantor()); + assertEquals(regionAttributes.getLoadFactor(), regionAttributesData.getLoadFactor(), 0); - boolean multicastEnabled = regAttrs.getMulticastEnabled(); - assertEquals(multicastEnabled, data.isMulticastEnabled()); + assertEquals(regionAttributes.isLockGrantor(), regionAttributesData.isLockGrantor()); - int concurrencyLevel = regAttrs.getConcurrencyLevel(); - assertEquals(concurrencyLevel, data.getConcurrencyLevel()); + assertEquals(regionAttributes.getMulticastEnabled(), regionAttributesData.isMulticastEnabled()); - boolean indexMaintenanceSynchronous = regAttrs - .getIndexMaintenanceSynchronous(); - assertEquals(indexMaintenanceSynchronous, data - .isIndexMaintenanceSynchronous()); + assertEquals(regionAttributes.getConcurrencyLevel(), regionAttributesData.getConcurrencyLevel()); - boolean statisticsEnabled = regAttrs.getStatisticsEnabled(); + assertEquals(regionAttributes.getIndexMaintenanceSynchronous(), regionAttributesData.isIndexMaintenanceSynchronous()); - assertEquals(statisticsEnabled, data.isStatisticsEnabled()); + assertEquals(regionAttributes.getStatisticsEnabled(), regionAttributesData.isStatisticsEnabled()); - boolean subsciptionConflationEnabled = regAttrs - .getEnableSubscriptionConflation(); - assertEquals(subsciptionConflationEnabled, data - .isSubscriptionConflationEnabled()); + assertEquals(regionAttributes.getEnableSubscriptionConflation(), regionAttributesData.isSubscriptionConflationEnabled()); - boolean asyncConflationEnabled = regAttrs.getEnableAsyncConflation(); - assertEquals(asyncConflationEnabled, data.isAsyncConflationEnabled()); + assertEquals(regionAttributes.getEnableAsyncConflation(), regionAttributesData.isAsyncConflationEnabled()); - String poolName = regAttrs.getPoolName(); - assertEquals(poolName, data.getPoolName()); + assertEquals(regionAttributes.getPoolName(), regionAttributesData.getPoolName()); - boolean isCloningEnabled = regAttrs.getCloningEnabled(); - assertEquals(isCloningEnabled, data.isCloningEnabled()); + assertEquals(regionAttributes.getCloningEnabled(), regionAttributesData.isCloningEnabled()); - String diskStoreName = regAttrs.getDiskStoreName(); - assertEquals(diskStoreName, data.getDiskStoreName()); + assertEquals(regionAttributes.getDiskStoreName(), regionAttributesData.getDiskStoreName()); String interestPolicy = null; - if (regAttrs.getSubscriptionAttributes() != null) { - interestPolicy = regAttrs.getSubscriptionAttributes().getInterestPolicy() - .toString(); + if (regionAttributes.getSubscriptionAttributes() != null) { + interestPolicy = regionAttributes.getSubscriptionAttributes().getInterestPolicy().toString(); } - assertEquals(interestPolicy, data.getInterestPolicy()); - boolean diskSynchronus = regAttrs.isDiskSynchronous(); - assertEquals(diskSynchronus, data.isDiskSynchronous()); - } - - /** - * Verifies Region related Statistics - */ - public void verifyStatistics() { + assertEquals(interestPolicy, regionAttributesData.getInterestPolicy()); + assertEquals(regionAttributes.isDiskSynchronous(), regionAttributesData.isDiskSynchronous()); } - /** + * Registered in manager VM + * * User defined notification handler for Region creation handling - * - * */ - private static class RegionNotif implements NotificationListener { + private static class MemberNotificationListener implements NotificationListener { @Override - public void handleNotification(Notification notification, Object handback) { + public void handleNotification(final Notification notification, final Object handback) { assertNotNull(notification); - Notification rn = notification; - assertTrue(rn.getType().equals(JMXNotificationType.REGION_CREATED) - || rn.getType().equals(JMXNotificationType.REGION_CLOSED)); - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Member Level Notifications" + rn.toString() - + "</ExpectedString> "); + assertTrue(notification.getType().equals(JMXNotificationType.REGION_CREATED) || + notification.getType().equals(JMXNotificationType.REGION_CLOSED)); + // TODO: add better validation + //LogWriterUtils.getLogWriter().info("<ExpectedString> Member Level Notifications" + notification + "</ExpectedString> "); } - } /** + * Registered in manager VM + * * User defined notification handler for Region creation handling - * - * */ - private static class DistrNotif implements NotificationListener { + private static class DistributedSystemNotificationListener implements NotificationListener { @Override - public void handleNotification(Notification notification, Object handback) { + public void handleNotification(final Notification notification, final Object handback) { assertNotNull(notification); - Notification rn = notification; - LogWriterUtils.getLogWriter().info( - "<ExpectedString> Distributed System Notifications" + rn.toString() - + "</ExpectedString> "); + // TODO: add something that will be validated + //LogWriterUtils.getLogWriter().info("<ExpectedString> Distributed System Notifications" + notification + "</ExpectedString> "); } - } - }
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/864c92c9/geode-core/src/test/java/org/apache/geode/management/bean/stats/DistributedSystemStatsDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/management/bean/stats/DistributedSystemStatsDUnitTest.java b/geode-core/src/test/java/org/apache/geode/management/bean/stats/DistributedSystemStatsDUnitTest.java index 2330031..446ea2e 100644 --- a/geode-core/src/test/java/org/apache/geode/management/bean/stats/DistributedSystemStatsDUnitTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/bean/stats/DistributedSystemStatsDUnitTest.java @@ -16,98 +16,66 @@ */ package org.apache.geode.management.bean.stats; -import org.junit.experimental.categories.Category; -import org.junit.Test; - +import static com.jayway.awaitility.Awaitility.*; import static org.junit.Assert.*; -import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase; -import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase; -import org.apache.geode.test.junit.categories.DistributedTest; - +import java.lang.management.ManagementFactory; import java.util.Set; +import java.util.concurrent.TimeUnit; import javax.management.ObjectName; +import org.junit.Rule; +import org.junit.Test; +import org.junit.experimental.categories.Category; + import org.apache.geode.distributed.DistributedMember; -import org.apache.geode.internal.cache.DiskStoreStats; import org.apache.geode.internal.cache.GemFireCacheImpl; import org.apache.geode.management.DistributedSystemMXBean; -import org.apache.geode.management.ManagementTestBase; +import org.apache.geode.management.ManagementService; +import org.apache.geode.management.ManagementTestRule; +import org.apache.geode.management.Manager; +import org.apache.geode.management.Member; import org.apache.geode.management.MemberMXBean; import org.apache.geode.management.internal.SystemManagementService; -import org.apache.geode.management.internal.beans.MemberMBean; -import org.apache.geode.management.internal.beans.MemberMBeanBridge; -import org.apache.geode.test.dunit.Assert; -import org.apache.geode.test.dunit.SerializableRunnable; import org.apache.geode.test.dunit.VM; +import org.apache.geode.test.junit.categories.DistributedTest; -/** - */ @Category(DistributedTest.class) -public class DistributedSystemStatsDUnitTest extends ManagementTestBase{ - - private static final long serialVersionUID = 1L; +@SuppressWarnings("serial") +public class DistributedSystemStatsDUnitTest { - public DistributedSystemStatsDUnitTest() { - super(); - } + @Manager + private VM manager; + + @Member + private VM[] members; + + @Rule + public ManagementTestRule managementTestRule = ManagementTestRule.builder().build(); @Test public void testDistributedSystemStats() throws Exception { - initManagement(true); + this.manager.invoke("verifyMBeans", () -> { + GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); + assertNotNull(cache); - for(VM vm : managedNodeList){ - setDiskStats(vm); - } - verifyDiskStats(managingNode); - } - - @SuppressWarnings("serial") - public void setDiskStats(VM vm1) throws Exception { - vm1.invoke(new SerializableRunnable("Set Member Stats") { - public void run() { - MemberMBean bean = (MemberMBean) managementService.getMemberMXBean(); - MemberMBeanBridge bridge = bean.getBridge(); - DiskStoreStats diskStoreStats = new DiskStoreStats(basicGetSystem(), "test"); - bridge.addDiskStoreStats(diskStoreStats); - diskStoreStats.startRead(); - diskStoreStats.startWrite(); - diskStoreStats.startBackup(); - diskStoreStats.startRecovery(); - diskStoreStats.incWrittenBytes(20, true); - diskStoreStats.startFlush(); - diskStoreStats.setQueueSize(10); - } - }); - } + SystemManagementService service = (SystemManagementService) ManagementService.getManagementService(cache); + DistributedSystemMXBean distributedSystemMXBean = service.getDistributedSystemMXBean(); + assertNotNull(distributedSystemMXBean); + + Set<DistributedMember> otherMemberSet = cache.getDistributionManager().getOtherNormalDistributionManagerIds(); + assertEquals(3, otherMemberSet.size()); + + for (DistributedMember member : otherMemberSet) { + ObjectName memberMXBeanName = service.getMemberMBeanName(member); + await().atMost(2, TimeUnit.MINUTES).until(() -> assertTrue(ManagementFactory.getPlatformMBeanServer().isRegistered(memberMXBeanName))); - @SuppressWarnings("serial") - public void verifyDiskStats(VM vm1) throws Exception { - vm1.invoke(new SerializableRunnable("Set Member Stats") { - public void run() { - GemFireCacheImpl cache = GemFireCacheImpl.getInstance(); - - SystemManagementService service = (SystemManagementService) getManagementService(); - DistributedSystemMXBean bean = service.getDistributedSystemMXBean(); - assertNotNull(bean); - Set<DistributedMember> otherMemberSet = cache.getDistributionManager() - .getOtherNormalDistributionManagerIds(); - - for (DistributedMember member : otherMemberSet) { - ObjectName memberMBeanName; - try { - memberMBeanName = service.getMemberMBeanName(member); - waitForProxy(memberMBeanName, MemberMXBean.class); - MemberMXBean memberBean = service.getMBeanProxy(memberMBeanName, MemberMXBean.class); - waitForRefresh(2, memberMBeanName); - } catch (NullPointerException e) { - Assert.fail("FAILED WITH EXCEPION", e); - } catch (Exception e) { - Assert.fail("FAILED WITH EXCEPION", e); - } - } + MemberMXBean memberMXBean = service.getMBeanProxy(memberMXBeanName, MemberMXBean.class); + assertNotNull(memberMXBean); + final long lastRefreshTime = service.getLastUpdateTime(memberMXBeanName); + await().atMost(1, TimeUnit.MINUTES).until(() -> assertTrue(service.getLastUpdateTime(memberMXBeanName) > lastRefreshTime)); } }); } http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/864c92c9/geode-core/src/test/java/org/apache/geode/management/internal/beans/QueryDataFunctionApplyLimitClauseTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/beans/QueryDataFunctionApplyLimitClauseTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/beans/QueryDataFunctionApplyLimitClauseTest.java index 7270a2b..1554cd6 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/beans/QueryDataFunctionApplyLimitClauseTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/beans/QueryDataFunctionApplyLimitClauseTest.java @@ -26,7 +26,6 @@ import org.junit.experimental.categories.Category; import org.apache.geode.test.junit.categories.UnitTest; - @Category(UnitTest.class) public class QueryDataFunctionApplyLimitClauseTest { @@ -47,8 +46,7 @@ public class QueryDataFunctionApplyLimitClauseTest { public void applyLimitClauseDoesNothingIfLimitClauseSpecified() { String limitClause = " LIMIT 50"; String selectQueryWithLimit = selectQuery + limitClause; - assertThat(QueryDataFunction.applyLimitClause(selectQueryWithLimit, limit_10, queryResultSetLimit_100)) - .isEqualTo(selectQueryWithLimit); + assertThat(QueryDataFunction.applyLimitClause(selectQueryWithLimit, limit_10, queryResultSetLimit_100)).isEqualTo(selectQueryWithLimit); } @Test @@ -64,15 +62,13 @@ public class QueryDataFunctionApplyLimitClauseTest { @Test // GEODE-1907 public void applyLimitClauseAddsQueryResultSetLimitIfMissingSpaceAfterFrom() { String selectQueryMissingSpaceAfterFrom = "SELECT * FROM/MyRegion"; - assertThat(QueryDataFunction.applyLimitClause(selectQueryMissingSpaceAfterFrom, limit_0, queryResultSetLimit_100)) - .isEqualTo(selectQueryMissingSpaceAfterFrom + " LIMIT " + queryResultSetLimit_100); + assertThat(QueryDataFunction.applyLimitClause(selectQueryMissingSpaceAfterFrom, limit_0, queryResultSetLimit_100)).isEqualTo(selectQueryMissingSpaceAfterFrom + " LIMIT " + queryResultSetLimit_100); } @Test public void applyLimitClauseDoesNotAddQueryResultSetLimitIfMissingSpaceAfterFromButLimitIsPresent() { String selectQueryMissingSpaceAfterFromWithLimit = "SELECT * FROM/MyRegion LIMIT " + limit_10; - assertThat(QueryDataFunction.applyLimitClause(selectQueryMissingSpaceAfterFromWithLimit, limit_0, queryResultSetLimit_100)) - .isEqualTo(selectQueryMissingSpaceAfterFromWithLimit); + assertThat(QueryDataFunction.applyLimitClause(selectQueryMissingSpaceAfterFromWithLimit, limit_0, queryResultSetLimit_100)).isEqualTo(selectQueryMissingSpaceAfterFromWithLimit); } } \ No newline at end of file
