You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2015/12/11 23:06:20 UTC
[47/50] [abbrv] incubator-geode git commit: added test for region
multicast enabled
added test for region multicast enabled
updated multicast test
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/81c472f7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/81c472f7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/81c472f7
Branch: refs/heads/feature/GEODE-291
Commit: 81c472f714967da158a1039e5efda4fc478b56b4
Parents: 1c42379
Author: Hitesh Khamesra <hi...@yahoo.com>
Authored: Wed Dec 9 11:15:34 2015 -0800
Committer: Hitesh Khamesra <hi...@yahoo.com>
Committed: Thu Dec 10 15:31:12 2015 -0800
----------------------------------------------------------------------
.../gemfire/distributed/internal/DMStats.java | 1 +
.../distributed/internal/DistributionStats.java | 3 +
.../internal/LonerDistributionManager.java | 2 +
.../DistributedMulticastRegionDUnitTest.java | 197 +++++++++++++++++++
4 files changed, 203 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/81c472f7/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DMStats.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DMStats.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DMStats.java
index e7b155a..e79a40b 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DMStats.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DMStats.java
@@ -205,6 +205,7 @@ public interface DMStats {
* returns the current value of the mcastWrites statistic
*/
public int getMcastWrites();
+ public int getMcastReads();
public long startSerialization();
public void endSerialization(long start, int bytes);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/81c472f7/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionStats.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionStats.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionStats.java
index 39b4986..804b507 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionStats.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/DistributionStats.java
@@ -1094,6 +1094,9 @@ public class DistributionStats implements DMStats {
public int getMcastWrites() {
return stats.getInt(mcastWritesId);
}
+ public int getMcastReads() {
+ return stats.getInt(mcastReadsId);
+ }
public void incMcastReadBytes(int amount) {
stats.incInt(mcastReadsId, 1);
stats.incLong(mcastReadBytesId, amount);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/81c472f7/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java
index 1fc9f5b..60158d1 100644
--- a/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java
+++ b/gemfire-core/src/main/java/com/gemstone/gemfire/distributed/internal/LonerDistributionManager.java
@@ -451,6 +451,8 @@ public class LonerDistributionManager implements DM {
@Override
public int getMcastWrites() { return 0; }
@Override
+ public int getMcastReads() { return 0; }
+ @Override
public void incUcastReadBytes(int amount) {}
@Override
public void incMcastReadBytes(int amount) {}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/81c472f7/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
new file mode 100755
index 0000000..f8296cc
--- /dev/null
+++ b/gemfire-core/src/test/java/com/gemstone/gemfire/cache30/DistributedMulticastRegionDUnitTest.java
@@ -0,0 +1,197 @@
+package com.gemstone.gemfire.cache30;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import com.gemstone.gemfire.cache.AttributesFactory;
+import com.gemstone.gemfire.cache.CacheException;
+import com.gemstone.gemfire.cache.DataPolicy;
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.RegionAttributes;
+import com.gemstone.gemfire.cache.Scope;
+import com.gemstone.gemfire.distributed.Locator;
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.distributed.internal.InternalLocator;
+import com.gemstone.gemfire.distributed.internal.SharedConfiguration;
+import com.gemstone.gemfire.internal.AvailablePortHelper;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+import com.gemstone.gemfire.internal.cache.OffHeapTestUtil;
+
+import dunit.DistributedTestCase;
+import dunit.Host;
+import dunit.SerializableCallable;
+import dunit.SerializableRunnable;
+import dunit.VM;
+
+public class DistributedMulticastRegionDUnitTest extends CacheTestCase {
+
+ static int locatorVM = 3;
+ static String mcastport = "42786";
+ static String mcastttl = "0";
+
+ private int locatorPort;
+
+ public DistributedMulticastRegionDUnitTest(String name) {
+ super(name);
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ clean();
+ super.setUp();
+ }
+
+ @Override
+ public void tearDown2() throws Exception {
+ clean();
+ super.tearDown2();
+ }
+
+ private void clean(){
+ SerializableRunnable cleanVM =
+ new CacheSerializableRunnable("clean VM") {
+ public void run2() throws CacheException {
+ disconnectFromDS();
+ }
+ };
+ invokeInEveryVM(cleanVM);
+ }
+
+ public void testMulticastEnabled() {
+ final String name = "mcastRegion";
+ SerializableRunnable create =
+ new CacheSerializableRunnable("Create Region") {
+ public void run2() throws CacheException {
+ createRegion(name, getRegionAttributes());
+ }
+ };
+
+ locatorPort = startLocator();
+ Host host = Host.getHost(0);
+ final VM vm0 = host.getVM(0);
+ final VM vm1 = host.getVM(1);
+ //1. start locator with mcast port
+ vm0.invoke(create);
+ vm1.invoke(create);
+
+ SerializableRunnable validateMulticastBeforeRegionOps =
+ new CacheSerializableRunnable("validateMulticast before region ops") {
+ public void run2() throws CacheException {
+ validateMulticastOpsBeforeRegionOps();
+ }
+ };
+
+ vm0.invoke(validateMulticastBeforeRegionOps);
+ vm1.invoke(validateMulticastBeforeRegionOps);
+
+ SerializableRunnable doPuts =
+ new CacheSerializableRunnable("do put") {
+ public void run2() throws CacheException {
+ final Region region =
+ getRootRegion().getSubregion(name);
+ for(int i =0 ; i < 5; i++) {
+ region.put(i, i);
+ }
+ }
+ };
+
+ vm0.invoke(doPuts);
+
+ SerializableRunnable validateMulticastAfterRegionOps =
+ new CacheSerializableRunnable("validateMulticast after region ops") {
+ public void run2() throws CacheException {
+ validateMulticastOpsAfterRegionOps();
+ }
+ };
+
+ vm0.invoke(validateMulticastAfterRegionOps);
+ vm1.invoke(validateMulticastAfterRegionOps);
+
+ closeLocator();
+ }
+
+ protected RegionAttributes getRegionAttributes() {
+ AttributesFactory factory = new AttributesFactory();
+ factory.setScope(Scope.DISTRIBUTED_ACK);
+ factory.setDataPolicy(DataPolicy.PRELOADED);
+ factory.setEarlyAck(false);
+ factory.setConcurrencyChecksEnabled(false);
+ factory.setMulticastEnabled(true);
+ return factory.create();
+ }
+
+ public Properties getDistributedSystemProperties() {
+ Properties p = new Properties();
+ p.put(DistributionConfig.STATISTIC_SAMPLING_ENABLED_NAME, "true");
+ p.put(DistributionConfig.STATISTIC_ARCHIVE_FILE_NAME, "multicast");
+ p.put(DistributionConfig.MCAST_PORT_NAME, mcastport);
+ p.put(DistributionConfig.MCAST_TTL_NAME, mcastttl);
+ p.put(DistributionConfig.LOCATORS_NAME, "localhost[" + locatorPort +"]");
+ p.put(DistributionConfig.LOG_LEVEL_NAME, "info");
+ return p;
+ }
+
+ private void validateMulticastOpsAfterRegionOps() {
+ int writes = getGemfireCache().getDistributionManager().getStats().getMcastWrites();
+ int reads = getGemfireCache().getDistributionManager().getStats().getMcastReads();
+ assertTrue("Should have multicast writes or reads. Writes= " + writes + " ,read= " + reads,
+ writes > 0 || reads > 0);
+ }
+
+ private void validateMulticastOpsBeforeRegionOps() {
+ int writes = getGemfireCache().getDistributionManager().getStats().getMcastWrites();
+ int reads = getGemfireCache().getDistributionManager().getStats().getMcastReads();
+ int total = writes + reads;
+ assertTrue("Should not have any multicast writes or reads before region ops. Writes= " + writes + " ,read= " + reads,
+ total == 0);
+ }
+
+ private int startLocator() {
+ final int [] ports = AvailablePortHelper.getRandomAvailableTCPPorts(3);
+ final int locatorPort = ports[0];
+
+ VM locator1Vm = Host.getHost(0).getVM(locatorVM);;
+ locator1Vm.invoke(new SerializableCallable() {
+ @Override
+ public Object call() {
+ final File locatorLogFile = new File(testName + "-locator-" + locatorPort + ".log");
+ final Properties locatorProps = new Properties();
+ locatorProps.setProperty(DistributionConfig.NAME_NAME, "LocatorWithMcast");
+ locatorProps.setProperty(DistributionConfig.MCAST_PORT_NAME, mcastport);
+ locatorProps.setProperty(DistributionConfig.MCAST_TTL_NAME, mcastttl);
+ locatorProps.setProperty(DistributionConfig.LOG_LEVEL_NAME, "info");
+ //locatorProps.setProperty(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
+ try {
+ final InternalLocator locator = (InternalLocator) Locator.startLocatorAndDS(locatorPort, null, null,
+ locatorProps);
+ System.out.println("test Locator started " + locatorPort);
+ } catch (IOException ioex) {
+ fail("Unable to create a locator with a shared configuration");
+ }
+
+ return null;
+ }
+ });
+ return locatorPort;
+ }
+
+ private void closeLocator() {
+ VM locator1Vm = Host.getHost(0).getVM(locatorVM);;
+ SerializableRunnable locatorCleanup = new SerializableRunnable() {
+ @Override
+ public void run() {
+ System.out.println("test Locator closing " + locatorPort);;
+ InternalLocator locator = InternalLocator.getLocator();
+ if (locator != null ) {
+ locator.stop();
+ System.out.println("test Locator closed " + locatorPort);;
+ }
+ }
+ };
+ locator1Vm.invoke(locatorCleanup);
+ }
+
+}