You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2017/01/24 19:30:47 UTC
[1/6] geode git commit: GEODE-1965 Create backward-compatibility unit
test framework
Repository: geode
Updated Branches:
refs/heads/develop b31c68410 -> be8db8b7b
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-junit/src/main/java/org/apache/geode/test/junit/categories/BackwardCompatibilityTest.java
----------------------------------------------------------------------
diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/categories/BackwardCompatibilityTest.java b/geode-junit/src/main/java/org/apache/geode/test/junit/categories/BackwardCompatibilityTest.java
new file mode 100755
index 0000000..cae4c6c
--- /dev/null
+++ b/geode-junit/src/main/java/org/apache/geode/test/junit/categories/BackwardCompatibilityTest.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.geode.test.junit.categories;
+
+/**
+ * JUnit Test Category that specifies a test involving multiple members of a distributed system and
+ * multiple versions of Geode.
+ */
+public interface BackwardCompatibilityTest {
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/settings.gradle
----------------------------------------------------------------------
diff --git a/settings.gradle b/settings.gradle
index 8e2673a..c0fdb6e 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -16,6 +16,7 @@
*/
rootProject.name = 'geode'
+include 'geode-old-versions'
include 'geode-common'
include 'geode-json'
include 'geode-junit'
@@ -37,6 +38,7 @@ include 'extensions/geode-modules-session-internal'
include 'extensions/geode-modules-session'
include 'extensions/geode-modules-assembly'
+
if (GradleVersion.current() < GradleVersion.version(minimumGradleVersion)) {
throw new GradleException('Running with unsupported Gradle Version. Use Gradle Wrapper or with Gradle version >= ' + minimumGradleVersion)
}
[5/6] geode git commit: GEODE-1965 Create backward-compatibility unit
test framework
Posted by bs...@apache.org.
GEODE-1965 Create backward-compatibility unit test framework
See
https://cwiki.apache.org/confluence/display/GEODE/Writing+Backward-compatibility+DUnit+tests
This extends the distributed unit test framework to allow you to boot a
VM running an older version of Geode. Using this extension you can create
rolling upgrade tests, client/server interoperability tests, persistent
store upgrade tests and so on.
VM numbering has not changed. If you request that a VM use a certain
version of GEODE it will be bounced if necessary and its classpath modified
to point to that version. The VM will continue to use that version until
bounced to a different version or the next test class is started. All
VMs are moved to the current version at the beginning of a new test class.
Console output from versioned VMs will contain the symbolic version in use
by the VM, such as "[vm0_v100]" to help you know it is running a different
version of GEODE.
Tests are all compiled with the current Geode code, so if there are API
changes you must use reflection in order to invoke the old versions of
the API. RollingUpgradeDUnitTests shows how to do this.
ClientServerMiscBCDUnitTest shows how to subclass an existing class to
make it run with multiple versions of Geode. In this case the clients
are parameterized to run with older versions while servers are held to
the current version.
I will be opening a few tickets to track problems I have already encountered
with these tests.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/be8db8b7
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/be8db8b7
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/be8db8b7
Branch: refs/heads/develop
Commit: be8db8b7b13e288b3daa459b039acb5438fb2883
Parents: 59702a6
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Mon Jan 23 11:48:33 2017 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Tue Jan 24 10:48:20 2017 -0800
----------------------------------------------------------------------
geode-assembly/build.gradle | 0
geode-core/build.gradle | 1 +
.../membership/gms/locator/GMSLocator.java | 1 +
.../membership/gms/membership/GMSJoinLeave.java | 4 +-
.../cache/tier/sockets/AcceptorImpl.java | 0
.../RollingUpgrade2DUnitTest.java | 1811 ++++++++++++++++++
.../rollingupgrade/RollingUpgradeDUnitTest.java | 1051 ++++++++++
.../sockets/ClientServerMiscBCDUnitTest.java | 42 +
.../tier/sockets/ClientServerMiscDUnitTest.java | 70 +-
.../ClientServerMiscSelectorDUnitTest.java | 11 +-
.../org/apache/geode/test/dunit/DUnitEnv.java | 4 +-
.../java/org/apache/geode/test/dunit/Host.java | 38 +
.../org/apache/geode/test/dunit/Invoke.java | 12 +-
.../java/org/apache/geode/test/dunit/VM.java | 45 +-
.../geode/test/dunit/standalone/ChildVM.java | 8 +-
.../test/dunit/standalone/DUnitLauncher.java | 98 +-
.../test/dunit/standalone/ProcessManager.java | 120 +-
.../dunit/standalone/StandAloneDUnitEnv.java | 11 +-
.../test/dunit/standalone/VersionManager.java | 170 ++
.../sanctionedDataSerializables.txt | 1084 +++++------
.../categories/BackwardCompatibilityTest.java | 22 +
settings.gradle | 2 +
22 files changed, 3961 insertions(+), 644 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-assembly/build.gradle
----------------------------------------------------------------------
diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
old mode 100644
new mode 100755
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/build.gradle
----------------------------------------------------------------------
diff --git a/geode-core/build.gradle b/geode-core/build.gradle
index 49dd84b..ac63b39 100755
--- a/geode-core/build.gradle
+++ b/geode-core/build.gradle
@@ -114,6 +114,7 @@ dependencies {
jcaCompile sourceSets.main.output
testCompile project(':geode-junit')
+ testCompile project(':geode-old-versions')
// Test Dependencies
// External
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
index 7223c92..c05140d 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/locator/GMSLocator.java
@@ -380,6 +380,7 @@ public class GMSLocator implements Locator, NetLocator {
/* package */ boolean recoverFromFile(File file) throws InternalGemFireException {
if (!file.exists()) {
+ logger.info("recovery file not found: " + file.getAbsolutePath());
return false;
}
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
index 7da9de4..e4066ef 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
@@ -506,8 +506,8 @@ public class GMSJoinLeave implements JoinLeave, MessageHandler {
logger.warn("detected an attempt to start a peer using an older version of the product {}",
incomingRequest.getMemberID());
JoinResponseMessage m =
- new JoinResponseMessage("Rejecting the attempt of a member using an older version",
- incomingRequest.getRequestId());
+ new JoinResponseMessage("Rejecting the attempt of a member using an older version of the "
+ + "product to join the distributed system", incomingRequest.getRequestId());
m.setRecipient(incomingRequest.getMemberID());
services.getMessenger().send(m);
return;
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java
old mode 100644
new mode 100755
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTest.java
new file mode 100755
index 0000000..e1ca780
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgrade2DUnitTest.java
@@ -0,0 +1,1811 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.geode.internal.cache.rollingupgrade;
+
+import static org.apache.geode.test.dunit.Assert.assertEquals;
+import static org.apache.geode.test.dunit.Assert.assertFalse;
+import static org.apache.geode.test.dunit.Assert.assertTrue;
+import static org.apache.geode.test.dunit.Assert.fail;
+
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.cache.DataPolicy;
+import org.apache.geode.cache.DiskStore;
+import org.apache.geode.cache.DiskStoreFactory;
+import org.apache.geode.cache.GemFireCache;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.RegionFactory;
+import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.cache.client.ClientCache;
+import org.apache.geode.cache.client.ClientCacheFactory;
+import org.apache.geode.cache.client.ClientRegionFactory;
+import org.apache.geode.cache.client.ClientRegionShortcut;
+import org.apache.geode.cache.control.RebalanceOperation;
+import org.apache.geode.cache.control.RebalanceResults;
+import org.apache.geode.cache.query.Index;
+import org.apache.geode.cache.query.IndexCreationException;
+import org.apache.geode.cache.query.MultiIndexCreationException;
+import org.apache.geode.cache.query.Query;
+import org.apache.geode.cache.query.QueryService;
+import org.apache.geode.cache.query.SelectResults;
+import org.apache.geode.cache.server.CacheServer;
+import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.distributed.Locator;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.InternalLocator;
+import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
+import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.FileUtil;
+import org.apache.geode.internal.Version;
+import org.apache.geode.internal.cache.DiskInitFile;
+import org.apache.geode.internal.cache.GemFireCacheImpl;
+import org.apache.geode.internal.cache.Oplog;
+import org.apache.geode.internal.cache.Oplog.OPLOG_TYPE;
+import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.test.dunit.Assert;
+import org.apache.geode.test.dunit.AsyncInvocation;
+import org.apache.geode.test.dunit.DistributedTestUtils;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.IgnoredException;
+import org.apache.geode.test.dunit.Invoke;
+import org.apache.geode.test.dunit.NetworkUtils;
+import org.apache.geode.test.dunit.RMIException;
+import org.apache.geode.test.dunit.ThreadUtils;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
+import org.apache.geode.test.dunit.standalone.DUnitLauncher;
+import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.junit.categories.BackwardCompatibilityTest;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.net.InetAddress;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * This test will not run properly in eclipse at this point due to having to bounce vms Currently,
+ * bouncing vms is necessary because we are starting gemfire with different class loaders and the
+ * class loaders are lingering (possibly due to daemon threads - the vm itself is still running)
+ *
+ * Note: to run in eclipse, I had to copy over the jg-magic-map.txt file into my GEMFIRE_OUTPUT
+ * location, in the same directory as #MagicNumberReader otherwise the two systems were unable to
+ * talk to one another due to one using a magic number and the other not. Also turnOffBounce will
+ * need to be set to true so that bouncing a vm doesn't lead to a NPE.
+ *
+ * @author jhuynh
+ */
+@Category({DistributedTest.class, BackwardCompatibilityTest.class})
+@RunWith(Parameterized.class)
+@Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
+public class RollingUpgrade2DUnitTest extends JUnit4DistributedTestCase {
+
+ @Parameterized.Parameters
+ public static Collection<String> data() {
+ return VersionManager.getInstance().getVersionsWithoutCurrent();
+ }
+
+ // just a test flag that can be set when trying to run a test in eclipse and avoiding IllegalState
+ // or NPE due to bouncing
+ private boolean turnOffBounce = false;
+
+ private File[] testingDirs = new File[3];
+
+ // This will be the classloader for each specific VM if the
+ // VM requires a classloader to load an older gemfire jar version/tests
+ // Use this classloader to obtain a #RollingUpgradeUtils class and
+ // execute the helper methods from that class
+ private static ClassLoader classLoader;
+
+ private static String diskDir = "RollingUpgrade2DUnitTest";
+
+ // Each vm will have a cache object
+ private static GemFireCache cache;
+
+ private String oldVersion;
+
+ public RollingUpgrade2DUnitTest(String version) {
+ oldVersion = version;
+ }
+
+ private void deleteVMFiles() throws Exception {
+ System.out.println("deleting files in vm" + VM.getCurrentVMNum());
+ File pwd = new File(".");
+ for (File entry : pwd.listFiles()) {
+ try {
+ FileUtil.delete(entry);
+ } catch (Exception e) {
+ System.out.println("Could not delete " + entry + ": " + e.getMessage());
+ }
+ }
+ }
+
+ @Override
+ public void postSetUp() throws Exception {
+ Invoke.invokeInEveryVM("delete files", () -> deleteVMFiles());
+ IgnoredException.addIgnoredException(
+ "cluster configuration service not available|ConflictingPersistentDataException");
+ }
+
+
+ @Test
+ public void testRollSingleLocatorWithMultipleServersReplicatedRegion() throws Exception {
+ doTestRollSingleLocatorWithMultipleServers(false, oldVersion);
+ }
+
+ // 1 locator, 3 servers
+ public void doTestRollSingleLocatorWithMultipleServers(boolean partitioned, String oldVersion)
+ throws Exception {
+ final Host host = Host.getHost(0);
+ VM server1 = host.getVM(oldVersion, 0);
+ VM server2 = host.getVM(oldVersion, 1);
+ VM server3 = host.getVM(oldVersion, 2);
+ VM server4 = host.getVM(oldVersion, 3);
+
+ final String objectType = "strings";
+ final String regionName = "aRegion";
+
+ RegionShortcut shortcut = RegionShortcut.REPLICATE;
+ if (partitioned) {
+ shortcut = RegionShortcut.PARTITION_REDUNDANT;
+ }
+
+ int[] locatorPorts = AvailablePortHelper.getRandomAvailableTCPPorts(1);
+ DistributedTestUtils.deleteLocatorStateFile(locatorPorts[0]);
+
+ // configure all class loaders for each vm
+
+ String hostName = NetworkUtils.getServerHostName(host);
+ String locatorString = getLocatorString(locatorPorts);
+ try {
+ server1.invoke(invokeStartLocator(hostName, locatorPorts[0], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ invokeRunnableInVMs(invokeCreateCache(getSystemProperties(locatorPorts)), server2, server3,
+ server4);
+ // invokeRunnableInVMs(invokeAssertVersion(oldOrdinal), server2, server3, server4);
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcut), server2, server3, server4);
+
+ putAndVerify(objectType, server2, regionName, 0, 10, server3, server4);
+ server1 = rollLocatorToCurrent(server1, hostName, locatorPorts[0], getTestMethodName(),
+ locatorString);
+
+ server2 = rollServerToCurrentAndCreateRegion(server2, shortcut, regionName, locatorPorts);
+ putAndVerify(objectType, server2, regionName, 5, 15, server3, server4);
+ putAndVerify(objectType, server3, regionName, 10, 20, server2, server4);
+
+ server3 = rollServerToCurrentAndCreateRegion(server3, shortcut, regionName, locatorPorts);
+ putAndVerify(objectType, server2, regionName, 15, 25, server3, server4);
+ putAndVerify(objectType, server3, regionName, 20, 30, server2, server4);
+
+ server4 = rollServerToCurrentAndCreateRegion(server4, shortcut, regionName, locatorPorts);
+ putAndVerify(objectType, server4, regionName, 25, 35, server3, server2);
+ putAndVerify(objectType, server3, regionName, 30, 40, server2, server4);
+
+ } finally {
+ invokeRunnableInVMs(true, invokeStopLocator(), server1);
+ invokeRunnableInVMs(true, invokeCloseCache(), server2, server3, server4);
+ }
+ }
+
+ /**
+ * Replicated regions
+ */
+ @Test
+ public void testRollTwoLocatorsWithTwoServers() throws Exception {
+ doTestRollTwoLocatorsWithTwoServers(false, oldVersion);
+ }
+
+ // 2 locator, 2 servers
+ public void doTestRollTwoLocatorsWithTwoServers(boolean partitioned, String oldVersion)
+ throws Exception {
+ final Host host = Host.getHost(0);
+ VM server1 = host.getVM(oldVersion, 0);
+ VM server2 = host.getVM(oldVersion, 1);
+ VM server3 = host.getVM(oldVersion, 2);
+ VM server4 = host.getVM(oldVersion, 3);
+
+ final String objectType = "strings";
+ final String regionName = "aRegion";
+
+ RegionShortcut shortcut = RegionShortcut.REPLICATE;
+ if (partitioned) {
+ shortcut = RegionShortcut.PARTITION_REDUNDANT;
+ }
+
+ int[] locatorPorts = AvailablePortHelper.getRandomAvailableTCPPorts(2);
+ DistributedTestUtils.deleteLocatorStateFile(locatorPorts);
+
+ String hostName = NetworkUtils.getServerHostName(host);
+ String locatorString = getLocatorString(locatorPorts);
+ try {
+ server1.invoke(invokeStartLocator(hostName, locatorPorts[0], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ server2.invoke(invokeStartLocator(hostName, locatorPorts[1], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ invokeRunnableInVMs(invokeCreateCache(getSystemProperties(locatorPorts)), server3, server4);
+ // invokeRunnableInVMs(invokeAssertVersion(oldOrdinal), server3, server4);
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcut), server3, server4);
+
+ putAndVerify(objectType, server3, regionName, 0, 10, server3, server4);
+ server1 = rollLocatorToCurrent(server1, hostName, locatorPorts[0], getTestMethodName(),
+ locatorString);
+
+ server2 = rollLocatorToCurrent(server2, hostName, locatorPorts[1], getTestMethodName(),
+ locatorString);
+
+ server3 = rollServerToCurrentAndCreateRegion(server3, shortcut, regionName, locatorPorts);
+ putAndVerify(objectType, server4, regionName, 15, 25, server3, server4);
+ putAndVerify(objectType, server3, regionName, 20, 30, server3, server4);
+
+ server4 = rollServerToCurrentAndCreateRegion(server4, shortcut, regionName, locatorPorts);
+ putAndVerify(objectType, server4, regionName, 25, 35, server3, server4);
+ putAndVerify(objectType, server3, regionName, 30, 40, server3, server4);
+
+ } finally {
+ invokeRunnableInVMs(true, invokeStopLocator(), server1, server2);
+ invokeRunnableInVMs(true, invokeCloseCache(), server3, server4);
+ }
+ }
+
+ @Test
+ public void testClients() throws Exception {
+ doTestClients(false, oldVersion);
+ }
+
+ public void doTestClients(boolean partitioned, String oldVersion) throws Exception {
+ final Host host = Host.getHost(0);
+ VM locator = host.getVM(oldVersion, 0);
+ VM server2 = host.getVM(oldVersion, 1);
+ VM server3 = host.getVM(oldVersion, 2);
+ VM client = host.getVM(oldVersion, 3);
+
+ final String objectType = "strings";
+ final String regionName = "aRegion";
+
+ RegionShortcut shortcut = RegionShortcut.REPLICATE;
+ if (partitioned) {
+ shortcut = RegionShortcut.PARTITION_REDUNDANT;
+ }
+
+ int[] ports = AvailablePortHelper.getRandomAvailableTCPPorts(3);
+ int[] locatorPorts = new int[] {ports[0]};
+ int[] csPorts = new int[] {ports[1], ports[2]};
+
+ DistributedTestUtils.deleteLocatorStateFile(locatorPorts);
+
+ String hostName = NetworkUtils.getServerHostName(host);
+ String[] hostNames = new String[] {hostName};
+ String locatorString = getLocatorString(locatorPorts);
+ try {
+ locator.invoke(invokeStartLocator(hostName, locatorPorts[0], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ invokeRunnableInVMs(invokeCreateCache(getSystemProperties(locatorPorts)), server2, server3);
+ invokeRunnableInVMs(invokeStartCacheServer(csPorts[0]), server2);
+ invokeRunnableInVMs(invokeStartCacheServer(csPorts[1]), server3);
+
+ invokeRunnableInVMs(
+ invokeCreateClientCache(getClientSystemProperties(), hostNames, locatorPorts), client);
+ // invokeRunnableInVMs(invokeAssertVersion(oldOrdinal), server2, server3, client);
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcut), server2, server3);
+ invokeRunnableInVMs(invokeCreateClientRegion(regionName, ClientRegionShortcut.PROXY), client);
+
+ putAndVerify(objectType, client, regionName, 0, 10, server3, client);
+ putAndVerify(objectType, server3, regionName, 100, 110, server3, client);
+ locator = rollLocatorToCurrent(locator, hostName, locatorPorts[0], getTestMethodName(),
+ locatorString);
+
+ server3 = rollServerToCurrentAndCreateRegion(server3, shortcut, regionName, locatorPorts);
+ invokeRunnableInVMs(invokeStartCacheServer(csPorts[1]), server3);
+ putAndVerify(objectType, client, regionName, 15, 25, server3, client);
+ putAndVerify(objectType, server3, regionName, 20, 30, server3, client);
+
+ server2 = rollServerToCurrentAndCreateRegion(server2, shortcut, regionName, locatorPorts);
+ invokeRunnableInVMs(invokeStartCacheServer(csPorts[0]), server2);
+ putAndVerify(objectType, client, regionName, 25, 35, server2, client);
+ putAndVerify(objectType, server2, regionName, 30, 40, server3, client);
+
+ client = rollClientToCurrentAndCreateRegion(client, ClientRegionShortcut.PROXY, regionName,
+ hostNames, locatorPorts);
+ putAndVerify(objectType, client, regionName, 35, 45, server2, server3);
+ putAndVerify(objectType, server2, regionName, 40, 50, server3, client);
+
+ } finally {
+ invokeRunnableInVMs(true, invokeStopLocator(), locator);
+ invokeRunnableInVMs(true, invokeCloseCache(), server2, server3, client);
+ }
+ }
+
+ /**
+ * starts 3 locators and 1 server rolls all 3 locators and then the server
+ */
+ @Test
+ public void testRollLocatorsWithOldServer() throws Exception {
+ doTestRollLocatorsWithOldServer(oldVersion);
+ }
+
+ public void doTestRollLocatorsWithOldServer(String oldVersion) throws Exception {
+ final Host host = Host.getHost(0);
+ VM server1 = host.getVM(oldVersion, 0);
+ VM server2 = host.getVM(oldVersion, 1);
+ VM server3 = host.getVM(oldVersion, 2);
+ VM server4 = host.getVM(oldVersion, 3);
+
+ int[] locatorPorts = AvailablePortHelper.getRandomAvailableTCPPorts(3);
+ DistributedTestUtils.deleteLocatorStateFile(locatorPorts);
+
+ String hostName = NetworkUtils.getServerHostName(host);
+ String locatorString = getLocatorString(locatorPorts);
+ try {
+ server1.invoke(invokeStartLocator(hostName, locatorPorts[0], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ server2.invoke(invokeStartLocator(hostName, locatorPorts[1], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ server3.invoke(invokeStartLocator(hostName, locatorPorts[2], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ invokeRunnableInVMs(invokeCreateCache(getSystemProperties(locatorPorts)), server4);
+ // invokeRunnableInVMs(invokeAssertVersion(oldOrdinal), server4);
+
+ server1 = rollLocatorToCurrent(server1, hostName, locatorPorts[0], getTestMethodName(),
+ locatorString);
+ server2 = rollLocatorToCurrent(server2, hostName, locatorPorts[1], getTestMethodName(),
+ locatorString);
+ server3 = rollLocatorToCurrent(server3, hostName, locatorPorts[2], getTestMethodName(),
+ locatorString);
+
+ } finally {
+ invokeRunnableInVMs(true, invokeStopLocator(), server1, server2, server3);
+ invokeRunnableInVMs(true, invokeCloseCache(), server4);
+ }
+ }
+
+ /**
+ * A test that will start 4 locators and rolls each one
+ */
+ @Test
+ public void testRollLocators() throws Exception {
+ doTestRollLocators(oldVersion);
+ }
+
+ public void doTestRollLocators(String oldVersion) throws Exception {
+ final Host host = Host.getHost(0);
+ VM server1 = host.getVM(oldVersion, 0);
+ VM server2 = host.getVM(oldVersion, 1);
+ VM server3 = host.getVM(oldVersion, 2);
+ VM server4 = host.getVM(oldVersion, 3);
+
+ int[] locatorPorts = AvailablePortHelper.getRandomAvailableTCPPorts(4);
+ DistributedTestUtils.deleteLocatorStateFile(locatorPorts);
+
+ String hostName = NetworkUtils.getServerHostName(host);
+ String locatorString = getLocatorString(locatorPorts);
+ try {
+ server1.invoke(invokeStartLocator(hostName, locatorPorts[0], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ server2.invoke(invokeStartLocator(hostName, locatorPorts[1], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ server3.invoke(invokeStartLocator(hostName, locatorPorts[2], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ server4.invoke(invokeStartLocator(hostName, locatorPorts[3], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+
+ server1 = rollLocatorToCurrent(server1, hostName, locatorPorts[0], getTestMethodName(),
+ locatorString);
+ server2 = rollLocatorToCurrent(server2, hostName, locatorPorts[1], getTestMethodName(),
+ locatorString);
+ server3 = rollLocatorToCurrent(server3, hostName, locatorPorts[2], getTestMethodName(),
+ locatorString);
+ server4 = rollLocatorToCurrent(server4, hostName, locatorPorts[3], getTestMethodName(),
+ locatorString);
+
+ } finally {
+ invokeRunnableInVMs(true, invokeStopLocator(), server1, server2, server3, server4);
+ }
+
+ }
+
+ /**
+ * Starts 2 servers with old classloader puts in one server while the other bounces verifies
+ * values are present in bounced server puts in the newly started/bounced server and bounces the
+ * other server verifies values are present in newly bounced server
+ */
+ @Test
+ public void testConcurrentPutsReplicated() throws Exception {
+ doTestConcurrent(false, oldVersion);
+ }
+
+ public void doTestConcurrent(boolean partitioned, String oldVersion) throws Exception {
+ Host host = Host.getHost(0);
+ VM locator = host.getVM(oldVersion, 1);
+ VM server1 = host.getVM(oldVersion, 2);
+ VM server2 = host.getVM(oldVersion, 3);
+
+ final String objectType = "strings";
+ final String regionName = "aRegion";
+
+ RegionShortcut shortcut = RegionShortcut.REPLICATE;
+ if (partitioned) {
+ shortcut = RegionShortcut.PARTITION_REDUNDANT;
+ }
+
+ int[] locatorPorts = AvailablePortHelper.getRandomAvailableTCPPorts(1);
+ String hostName = NetworkUtils.getServerHostName(host);
+ String locatorString = getLocatorString(locatorPorts);
+
+ DistributedTestUtils.deleteLocatorStateFile(locatorPorts);
+
+ try {
+ locator.invoke(invokeStartLocator(hostName, locatorPorts[0], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorString)));
+ invokeRunnableInVMs(invokeCreateCache(getSystemProperties(locatorPorts)), server1, server2);
+ // invokeRunnableInVMs(invokeAssertVersion(oldOrdinal), server1, server2);
+ // create region
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcut), server1, server2);
+
+ // async puts through server 2
+ AsyncInvocation asyncPutsThroughOld =
+ server2.invokeAsync(new CacheSerializableRunnable("async puts") {
+ public void run2() {
+ try {
+ for (int i = 0; i < 500; i++) {
+ put(RollingUpgrade2DUnitTest.cache, regionName, "" + i, "VALUE(" + i + ")");
+ }
+ } catch (Exception e) {
+ fail("error putting");
+ }
+ }
+ });
+ locator = rollLocatorToCurrent(locator, hostName, locatorPorts[0], getTestMethodName(),
+ locatorString);
+
+ server1 = rollServerToCurrentAndCreateRegion(server1, shortcut, regionName, locatorPorts);
+ ThreadUtils.join(asyncPutsThroughOld, 30000);
+
+ // verifyValues in server1
+ verifyValues(objectType, regionName, 0, 500, server1);
+
+ // aync puts through server 1
+ AsyncInvocation asyncPutsThroughNew =
+ server1.invokeAsync(new CacheSerializableRunnable("async puts") {
+ public void run2() {
+ try {
+ for (int i = 250; i < 750; i++) {
+ put(RollingUpgrade2DUnitTest.cache, regionName, "" + i, "VALUE(" + i + ")");
+ }
+ } catch (Exception e) {
+ fail("error putting");
+ }
+ }
+ });
+ server2 = rollServerToCurrentAndCreateRegion(server2, shortcut, regionName, locatorPorts);
+ ThreadUtils.join(asyncPutsThroughNew, 30000);
+
+ // verifyValues in server2
+ verifyValues(objectType, regionName, 250, 750, server2);
+
+ } finally {
+ invokeRunnableInVMs(true, invokeStopLocator(), locator);
+ invokeRunnableInVMs(true, invokeCloseCache(), server1, server2);
+ }
+ }
+
+ // TODO file a JIRA ticket
+ // java.lang.AssertionError
+ // at org.junit.Assert.fail(Assert.java:86)
+ // at org.junit.Assert.assertTrue(Assert.java:41)
+ // at org.junit.Assert.assertFalse(Assert.java:64)
+ // at org.junit.Assert.assertFalse(Assert.java:74)
+ // at
+ // org.apache.geode.internal.cache.rollingupgrade.RollingUpgrade2DUnitTest.verifyOplogHeader(RollingUpgrade2DUnitTest.java:633)
+ // at
+ // org.apache.geode.internal.cache.rollingupgrade.RollingUpgrade2DUnitTest.testOplogMagicSeqBackwardCompactibility(RollingUpgrade2DUnitTest.java:568)
+
+ @Ignore("test fails consistently")
+ @Test
+ public void testOplogMagicSeqBackwardCompactibility() throws Exception {
+ String objectType = "strings";
+ String regionType = "persistentReplicate";
+
+
+ final Host host = Host.getHost(0);
+ VM server1 = host.getVM(oldVersion, 0);
+ VM server2 = host.getVM(oldVersion, 1);
+ VM server3 = host.getVM(oldVersion, 2);
+ VM locator = host.getVM(oldVersion, 3);
+
+ String regionName = "aRegion";
+ RegionShortcut shortcut = RegionShortcut.REPLICATE_PERSISTENT;
+ for (int i = 0; i < testingDirs.length; i++) {
+ testingDirs[i] = new File(diskDir, "diskStoreVM_" + String.valueOf(host.getVM(i).getPid()))
+ .getAbsoluteFile();
+ if (!testingDirs[i].exists()) {
+ System.out.println(" Creating diskdir for server: " + i);
+ testingDirs[i].mkdirs();
+ }
+ }
+
+ int[] locatorPorts = AvailablePortHelper.getRandomAvailableTCPPorts(1);
+ String hostName = NetworkUtils.getServerHostName(host);
+ String locatorsString = getLocatorString(locatorPorts);
+
+ DistributedTestUtils.deleteLocatorStateFile(locatorPorts);
+
+ try {
+ locator.invoke(invokeStartLocator(hostName, locatorPorts[0], getTestMethodName(),
+ getLocatorPropertiesPre91(locatorsString)));
+
+ invokeRunnableInVMs(invokeCreateCache(getSystemProperties(locatorPorts)), server1, server2,
+ server3);
+ // invokeRunnableInVMs(invokeAssertVersion(oldOrdinal), server1, server2, server3);
+ // create region
+ for (int i = 0; i < testingDirs.length; i++) {
+ CacheSerializableRunnable runnable =
+ invokeCreatePersistentReplicateRegion(regionName, testingDirs[i]);
+ invokeRunnableInVMs(runnable, host.getVM(i));
+ }
+
+ putAndVerify("strings", server1, regionName, 0, 10, server2, server3);
+ // before upgrade headers will be absent
+ HashSet<String> oldFormatFiles = verifyOplogHeader(testingDirs[0], null);
+ locator = rollLocatorToCurrent(locator, hostName, locatorPorts[0], getTestMethodName(),
+ locatorsString);
+ server1 = rollServerToCurrentAndCreateRegion(server1, regionType, testingDirs[0], shortcut,
+ regionName, locatorPorts);
+ System.out.println(verifyOplogHeader(testingDirs[0], oldFormatFiles));
+ verifyValues(objectType, regionName, 0, 10, server1);
+ putAndVerify(objectType, server1, regionName, 5, 15, server2, server3);
+ putAndVerify(objectType, server2, regionName, 10, 20, server1, server3);
+ System.out.println(verifyOplogHeader(testingDirs[0], oldFormatFiles));
+ System.out.println(verifyOplogHeader(testingDirs[1], null));
+ } finally {
+ invokeRunnableInVMs(true, invokeStopLocator(), locator);
+ invokeRunnableInVMs(true, invokeCloseCache(), server1, server2, server3);
+ if ((regionType.equals("persistentReplicate"))) {
+ deleteDiskStores();
+ }
+ }
+ }
+
+ private HashSet<String> verifyOplogHeader(File dir, HashSet<String> oldFiles) throws IOException {
+ if (oldFiles != null) {
+ for (String file : oldFiles) {
+ System.out.println("Known old format file: " + file);
+ }
+ }
+
+ File[] files = dir.listFiles();
+ HashSet<String> verified = new HashSet<String>();
+ HashSet<String> oldFilesFound = new HashSet<String>();
+ for (File file : files) {
+ String name = file.getName();
+ byte[] expect = new byte[Oplog.OPLOG_MAGIC_SEQ_REC_SIZE];
+ byte OPLOG_MAGIC_SEQ_ID = 92; // value of Oplog.OPLOG_MAGIC_SEQ_ID
+ if (name.endsWith(".crf")) {
+ expect[0] = OPLOG_MAGIC_SEQ_ID;
+ System.arraycopy(OPLOG_TYPE.CRF.getBytes(), 0, expect, 1, OPLOG_TYPE.getLen());
+ verified.add(".crf");
+ } else if (name.endsWith(".drf")) {
+ expect[0] = OPLOG_MAGIC_SEQ_ID;
+ System.arraycopy(OPLOG_TYPE.DRF.getBytes(), 0, expect, 1, OPLOG_TYPE.getLen());
+ verified.add(".drf");
+ // } else if (name.endsWith(".krf")) {
+ // expect[0] = OPLOG_MAGIC_SEQ_ID;
+ // System.arraycopy(OPLOG_TYPE.KRF.getBytes(), 0, expect, 1, OPLOG_TYPE.getLen());
+ // verified.add(".krf");
+ } else if (name.endsWith(".if")) {
+ expect[0] = DiskInitFile.OPLOG_MAGIC_SEQ_ID;
+ System.arraycopy(OPLOG_TYPE.IF.getBytes(), 0, expect, 1, OPLOG_TYPE.getLen());
+ verified.add(".if");
+ } else {
+ System.out.println("Ignored: " + file);
+ continue;
+ }
+ expect[expect.length - 1] = 21; // EndOfRecord
+
+ byte[] buf = new byte[Oplog.OPLOG_MAGIC_SEQ_REC_SIZE];
+
+ FileInputStream fis = new FileInputStream(file);
+ int count = fis.read(buf, 0, 8);
+ fis.close();
+
+ assertEquals(8, count);
+ if (oldFiles == null) {
+ System.out.println("Verifying old format file: " + file);
+ assertFalse(Arrays.equals(expect, buf));
+ oldFilesFound.add(name);
+ } else {
+ if (oldFiles.contains(name)) {
+ System.out.println("Verifying old format file: " + file);
+ assertFalse(Arrays.equals(expect, buf));
+ } else {
+ System.out.println("Verifying new format file: " + file);
+ assertTrue(Arrays.equals(expect, buf));
+ }
+ }
+ }
+ assertTrue(3 <= verified.size());
+ return oldFilesFound;
+ }
+
+ @Test
+ public void testPutAndGetMixedServersReplicateRegion() throws Exception {
+ doTestPutAndGetMixedServers("strings", false, oldVersion);
+ doTestPutAndGetMixedServers("serializable", false, oldVersion);
+ doTestPutAndGetMixedServers("dataserializable", false, oldVersion);
+ }
+
+ @Test
+ public void testPutAndGetMixedServerPartitionedRegion() throws Exception {
+ doTestPutAndGetMixedServers("strings", true, oldVersion);
+ doTestPutAndGetMixedServers("serializable", true, oldVersion);
+ doTestPutAndGetMixedServers("dataserializable", true, oldVersion);
+ }
+
+ /**
+ * Demonstrate that an old process can't join a system that has upgraded locators. This is for
+ * bugs #50510 and #50742.
+ */
+ @Test
+ public void testOldMemberCantJoinRolledLocators() throws Exception {
+ VM oldServer = Host.getHost(0).getVM(oldVersion, 1);
+ Properties props = getSystemProperties(); // uses the DUnit locator
+ try {
+ oldServer.invoke(invokeCreateCache(props));
+ } catch (RMIException e) {
+ Throwable cause = e.getCause();
+ if (cause != null && (cause instanceof AssertionError)) {
+ cause = cause.getCause();
+ if (cause != null && cause.getMessage() != null && !cause.getMessage().startsWith(
+ "Rejecting the attempt of a member using an older version of the product to join the distributed system")) {
+ throw e;
+ }
+ }
+ }
+ }
+
+
+
+ /**
+ * This test starts up multiple servers from the current code base and multiple servers from the
+ * old version and executes puts and gets on a new server and old server and verifies that the
+ * results are present. Note that the puts have overlapping region keys just to test new puts and
+ * replaces
+ */
+ public void doTestPutAndGetMixedServers(String objectType, boolean partitioned, String oldVersion)
+ throws Exception {
+ final Host host = Host.getHost(0);
+ VM currentServer1 = host.getVM(0);
+ VM oldServerAndLocator = host.getVM(oldVersion, 1);
+ VM currentServer2 = host.getVM(2);
+ VM oldServer2 = host.getVM(oldVersion, 3);
+
+ String regionName = "aRegion";
+
+ RegionShortcut shortcut = RegionShortcut.REPLICATE;
+ if (partitioned) {
+ shortcut = RegionShortcut.PARTITION;
+ }
+
+ String serverHostName = NetworkUtils.getServerHostName(Host.getHost(0));
+ int port = AvailablePortHelper.getRandomAvailableTCPPort();
+ DistributedTestUtils.deleteLocatorStateFile(port);
+ try {
+ Properties props = getSystemProperties();
+ props.remove(DistributionConfig.LOCATORS_NAME);
+ invokeRunnableInVMs(invokeStartLocatorAndServer(serverHostName, port, props),
+ oldServerAndLocator);
+
+ props.put(DistributionConfig.LOCATORS_NAME, serverHostName + "[" + port + "]");
+
+ invokeRunnableInVMs(invokeCreateCache(props), oldServer2, currentServer1, currentServer2);
+
+ currentServer1.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ currentServer2.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ // oldServerAndLocator.invoke(invokeAssertVersion(oldOrdinal));
+ // oldServer2.invoke(invokeAssertVersion(oldOrdinal));
+
+ // create region
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcut), currentServer1, currentServer2,
+ oldServerAndLocator, oldServer2);
+
+ putAndVerify(objectType, currentServer1, regionName, 0, 10, currentServer2,
+ oldServerAndLocator, oldServer2);
+ putAndVerify(objectType, oldServerAndLocator, regionName, 5, 15, currentServer1,
+ currentServer2, oldServer2);
+
+ } finally {
+ invokeRunnableInVMs(true, invokeCloseCache(), currentServer1, currentServer2,
+ oldServerAndLocator, oldServer2);
+ }
+ }
+
+ @Test
+ public void testQueryMixedServersOnReplicatedRegions() throws Exception {
+ doTestQueryMixedServers(false, oldVersion);
+ }
+
+ @Test
+ public void testQueryMixedServersOnPartitionedRegions() throws Exception {
+ doTestQueryMixedServers(true, oldVersion);
+ }
+
+ // TODO file a JIRA ticket
+ @Ignore("test fails when index creation succeeds")
+ @Test
+ public void testCreateMultiIndexesMixedServersOnPartitionedRegions() throws Exception {
+ doTestCreateIndexes(true, true, oldVersion);
+ }
+
+ @Test
+ public void testCreateIndexesMixedServersOnPartitionedRegions() throws Exception {
+ doTestCreateIndexes(false, true, oldVersion);
+ }
+
+ public void doTestQueryMixedServers(boolean partitioned, String oldVersion) throws Exception {
+ final Host host = Host.getHost(0);
+ VM currentServer1 = host.getVM(0);
+ VM oldServer = host.getVM(oldVersion, 1);
+ VM currentServer2 = host.getVM(2);
+ VM oldServerAndLocator = host.getVM(oldVersion, 3);
+
+ String regionName = "cqs";
+
+ RegionShortcut shortcut = RegionShortcut.REPLICATE;
+ if (partitioned) {
+ shortcut = RegionShortcut.PARTITION;
+ }
+
+ String serverHostName = NetworkUtils.getServerHostName(Host.getHost(0));
+ int port = AvailablePortHelper.getRandomAvailableTCPPort();
+ try {
+ Properties props = getSystemProperties();
+ props.remove(DistributionConfig.LOCATORS_NAME);
+ invokeRunnableInVMs(invokeStartLocatorAndServer(serverHostName, port, props),
+ oldServerAndLocator);
+
+ props.put(DistributionConfig.LOCATORS_NAME, serverHostName + "[" + port + "]");
+ invokeRunnableInVMs(invokeCreateCache(props), currentServer1, currentServer2, oldServer);
+
+ currentServer1.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ currentServer2.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ // oldServer.invoke(invokeAssertVersion(oldOrdinal));
+ // oldServerAndLocator.invoke(invokeAssertVersion(oldOrdinal));
+
+ // create region
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcut), currentServer1, currentServer2,
+ oldServer, oldServerAndLocator);
+
+ putDataSerializableAndVerify(currentServer1, regionName, 0, 100, currentServer2, oldServer,
+ oldServerAndLocator);
+ query("Select * from /" + regionName + " p where p.timeout > 0L", 99, currentServer1,
+ currentServer2, oldServer, oldServerAndLocator);
+
+ } finally {
+ invokeRunnableInVMs(invokeCloseCache(), currentServer1, currentServer2, oldServer,
+ oldServerAndLocator);
+ }
+ }
+
+ @Test
+ public void testTracePRQuery() throws Exception {
+ doTestTracePRQuery(true, oldVersion);
+ }
+
+ public void doTestTracePRQuery(boolean partitioned, String oldVersion) throws Exception {
+ final Host host = Host.getHost(0);
+ VM currentServer1 = host.getVM(0);
+ VM oldServer = host.getVM(oldVersion, 1);
+ VM currentServer2 = host.getVM(2);
+ VM oldServerAndLocator = host.getVM(oldVersion, 3);
+
+ String regionName = "cqs";
+
+ RegionShortcut shortcut = RegionShortcut.REPLICATE;
+ if (partitioned) {
+ shortcut = RegionShortcut.PARTITION;
+ }
+
+ String serverHostName = NetworkUtils.getServerHostName(Host.getHost(0));
+ int port = AvailablePortHelper.getRandomAvailableTCPPort();
+ try {
+ Properties props = getSystemProperties();
+ props.remove(DistributionConfig.LOCATORS_NAME);
+ invokeRunnableInVMs(invokeStartLocatorAndServer(serverHostName, port, props),
+ oldServerAndLocator);
+
+ props.put(DistributionConfig.LOCATORS_NAME, serverHostName + "[" + port + "]");
+ invokeRunnableInVMs(invokeCreateCache(props), currentServer1, currentServer2, oldServer);
+
+ currentServer1.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ currentServer2.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ // oldServer.invoke(invokeAssertVersion(oldOrdinal));
+ // oldServerAndLocator.invoke(invokeAssertVersion(oldOrdinal));
+
+ // create region
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcut), currentServer1, currentServer2,
+ oldServer, oldServerAndLocator);
+
+ putDataSerializableAndVerify(currentServer1, regionName, 0, 100, currentServer2, oldServer,
+ oldServerAndLocator);
+ query("<trace> Select * from /" + regionName + " p where p.timeout > 0L", 99, currentServer1,
+ currentServer2, oldServer, oldServerAndLocator);
+
+ } finally {
+ invokeRunnableInVMs(invokeCloseCache(), currentServer1, currentServer2, oldServer,
+ oldServerAndLocator);
+ }
+ }
+
+ public void doTestCreateIndexes(boolean createMultiIndexes, boolean partitioned,
+ String oldVersion) throws Exception {
+ final Host host = Host.getHost(0);
+ final VM currentServer1 = host.getVM(0);
+ final VM oldServer = host.getVM(oldVersion, 1);
+ final VM currentServer2 = host.getVM(2);
+ final VM oldServerAndLocator = host.getVM(oldVersion, 3);
+
+ String regionName = "cqs";
+
+ RegionShortcut shortcut = RegionShortcut.REPLICATE;
+ if (partitioned) {
+ shortcut = RegionShortcut.PARTITION;
+ }
+
+ String serverHostName = NetworkUtils.getServerHostName(Host.getHost(0));
+ int port = AvailablePortHelper.getRandomAvailableTCPPort();
+ try {
+ Properties props = getSystemProperties();
+ props.remove(DistributionConfig.LOCATORS_NAME);
+ invokeRunnableInVMs(invokeStartLocatorAndServer(serverHostName, port, props),
+ oldServerAndLocator);
+
+ props.put(DistributionConfig.LOCATORS_NAME, serverHostName + "[" + port + "]");
+ invokeRunnableInVMs(invokeCreateCache(props), currentServer1, currentServer2, oldServer);
+
+ currentServer1.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ currentServer2.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ // oldServer.invoke(invokeAssertVersion(oldOrdinal));
+ // oldServerAndLocator.invoke(invokeAssertVersion(oldOrdinal));
+
+ // create region
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcut), currentServer1, currentServer2,
+ oldServer, oldServerAndLocator);
+
+ putDataSerializableAndVerify(currentServer1, regionName, 0, 100, currentServer2, oldServer,
+ oldServerAndLocator);
+ if (createMultiIndexes) {
+ doCreateIndexes("/" + regionName, currentServer1);
+ } else {
+ doCreateIndex("/" + regionName, oldServer);
+ }
+ } finally {
+ invokeRunnableInVMs(invokeCloseCache(), currentServer1, currentServer2, oldServer,
+ oldServerAndLocator);
+ }
+ }
+
+ // This is test was used to test for changes on objects that used
+ // java serialization. Left in just to have in case we want to do more manual testing
+ // public void _testSerialization() throws Exception {
+ // final Host host = Host.getHost(0);
+ // final VM currentServer = host.getVM(0);
+ // final VM oldServer = host.getVM(1);
+ //
+ // String oldVersionLocation = gemfireLocations[0].gemfireLocation;
+ // short oldOrdinal = gemfireLocations[0].ordinal;
+ //
+ // //configure all class loaders for each vm
+ // currentServer.invoke(configureClassLoaderForCurrent());
+ // oldServer.invoke(configureClassLoader(oldVersionLocation));
+ //
+ // doTestSerialization(currentServer, oldServer);
+ //
+ // currentServer.invoke(configureClassLoaderForCurrent());
+ // oldServer.invoke(configureClassLoader(oldVersionLocation));
+ // doTestSerialization(oldServer, currentServer);
+ // }
+ //
+ // public void doTestSerialization(VM vm1, VM vm2) throws Exception {
+ //
+ // try {
+ // final byte[] bytes = (byte[])vm1.invoke(new SerializableCallable("serialize") {
+ // public Object call() {
+ // try {
+ // ByteOutputStream byteArray = new ByteOutputStream();
+ // ClassLoader ogLoader = Thread.currentThread().getContextClassLoader();
+ // Thread.currentThread().setContextClassLoader(RollingUpgrade2DUnitTest.classLoader);
+ // ClassLoader loader = RollingUpgrade2DUnitTest.classLoader;
+ //
+ // Class clazzSerializer = loader.loadClass("org.apache.geode.internal.InternalDataSerializer");
+ // Method m = clazzSerializer.getMethod("writeObject", Object.class, DataOutput.class);
+ // VersionedDataOutputStream stream = new VersionedDataOutputStream(byteArray, Version.GFE_7099);
+ //
+ // Class exceptionClass =
+ // loader.loadClass("org.apache.geode.internal.cache.ForceReattemptException");
+ // m.invoke(null, exceptionClass.getConstructor(String.class).newInstance("TEST ME"), stream);
+ // m.invoke(null, exceptionClass.getConstructor(String.class).newInstance("TEST ME2"), stream);
+ // Thread.currentThread().setContextClassLoader(ogLoader);
+ // return byteArray.getBytes();
+ // }
+ // catch (Exception e) {
+ // e.printStackTrace();
+ //
+ // fail("argh");
+ // }
+ // return null;
+ // }
+ // });
+ //
+ // vm2.invoke(new CacheSerializableRunnable("deserialize") {
+ // public void run2() {
+ // try {
+ // ClassLoader ogLoader = Thread.currentThread().getContextClassLoader();
+ // Thread.currentThread().setContextClassLoader(RollingUpgrade2DUnitTest.classLoader);
+ // ClassLoader loader = RollingUpgrade2DUnitTest.classLoader;
+ // Class clazz = loader.loadClass("org.apache.geode.internal.InternalDataSerializer");
+ // Method m = clazz.getMethod("readObject", DataInput.class);
+ // VersionedDataInputStream stream = new VersionedDataInputStream(new ByteArrayInputStream(bytes),
+ // Version.GFE_71);
+ //
+ // Object e = m.invoke(null, stream);
+ // Object e2 = m.invoke(null, stream);
+ //
+ // Class exceptionClass =
+ // loader.loadClass("org.apache.geode.internal.cache.ForceReattemptException");
+ // exceptionClass.cast(e);
+ // exceptionClass.cast(e2);
+ // Thread.currentThread().setContextClassLoader(ogLoader);
+ // }
+ // catch (Exception e) {
+ // e.printStackTrace();
+ // fail("argh");
+ // }
+ // }
+ // });
+ //
+ // } finally {
+ // invokeRunnableInVMs(true, resetClassLoader(), vm1, vm2);
+ // bounceAll(vm1, vm2);
+ // }
+ // }
+
+
+
+ // ******** TEST HELPER METHODS ********/
+ private void putAndVerify(String objectType, VM putter, String regionName, int start, int end,
+ VM check1, VM check2, VM check3) throws Exception {
+ if (objectType.equals("strings")) {
+ putStringsAndVerify(putter, regionName, start, end, check1, check2, check3);
+ } else if (objectType.equals("serializable")) {
+ putSerializableAndVerify(putter, regionName, start, end, check1, check2, check3);
+ } else if (objectType.equals("dataserializable")) {
+ putDataSerializableAndVerify(putter, regionName, start, end, check1, check2, check3);
+ } else {
+ throw new Error("Not a valid test object type");
+ }
+ }
+
+ // ******** TEST HELPER METHODS ********/
+ private void putAndVerify(String objectType, VM putter, String regionName, int start, int end,
+ VM check1, VM check2) throws Exception {
+ if (objectType.equals("strings")) {
+ putStringsAndVerify(putter, regionName, start, end, check1, check2);
+ } else if (objectType.equals("serializable")) {
+ putSerializableAndVerify(putter, regionName, start, end, check1, check2);
+ } else if (objectType.equals("dataserializable")) {
+ putDataSerializableAndVerify(putter, regionName, start, end, check1, check2);
+ } else {
+ throw new Error("Not a valid test object type");
+ }
+ }
+
+ private void putStringsAndVerify(VM putter, String regionName, int start, int end, VM... vms) {
+ for (int i = start; i < end; i++) {
+ putter.invoke(invokePut(regionName, "" + i, "VALUE(" + i + ")"));
+ }
+
+ // verify present in others
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesCorrect(regionName, start, end));
+ }
+ }
+
+ private void putSerializableAndVerify(VM putter, String regionName, int start, int end,
+ VM... vms) {
+ for (int i = start; i < end; i++) {
+ putter.invoke(invokePut(regionName, "" + i, new Properties()));
+ }
+
+ // verify present in others
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesExist(regionName, start, end));
+ }
+ }
+
+ private void putDataSerializableAndVerify(VM putter, String regionName, int start, int end,
+ VM... vms) throws Exception {
+ for (int i = start; i < end; i++) {
+ Class aClass = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.cache.ExpirationAttributes");
+ Constructor constructor = aClass.getConstructor(int.class);
+ Object testDataSerializable = constructor.newInstance(i);
+ putter.invoke(invokePut(regionName, "" + i, testDataSerializable));
+ }
+
+ // verify present in others
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesExist(regionName, start, end));
+ }
+ }
+
+ private void verifyValues(String objectType, String regionName, int start, int end, VM... vms) {
+ if (objectType.equals("strings")) {
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesCorrect(regionName, start, end));
+ }
+ } else if (objectType.equals("serializable")) {
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesExist(regionName, start, end));
+ }
+ } else if (objectType.equals("dataserializable")) {
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesExist(regionName, start, end));
+ }
+ }
+
+ }
+
+ private void query(String queryString, int numExpectedResults, VM... vms) {
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertQueryResults(queryString, numExpectedResults));
+ }
+ }
+
+ private void doCreateIndexes(String regionPath, VM... vms) {
+ for (VM vm : vms) {
+ vm.invoke(invokeCreateIndexes(regionPath));
+ }
+ }
+
+ private void doCreateIndex(String regionPath, VM... vms) {
+ for (VM vm : vms) {
+ vm.invoke(invokeCreateIndex(regionPath));
+ }
+ }
+
+ private void invokeRunnableInVMs(CacheSerializableRunnable runnable, VM... vms) throws Exception {
+ for (VM vm : vms) {
+ vm.invoke(runnable);
+ }
+ }
+
+ // Used to close cache and make sure we attempt on all vms even if some do not have a cache
+ private void invokeRunnableInVMs(boolean catchErrors, CacheSerializableRunnable runnable,
+ VM... vms) throws Exception {
+ for (VM vm : vms) {
+ try {
+ vm.invoke(runnable);
+ } catch (Exception e) {
+ if (!catchErrors) {
+ throw e;
+ }
+ }
+ }
+ }
+
+ private VM rollServerToCurrent(VM oldServer, int[] locatorPorts) throws Exception {
+ // Roll the server
+ oldServer.invoke(invokeCloseCache());
+ VM rollServer = Host.getHost(0).getVM(oldServer.getPid());
+ rollServer.invoke(invokeCreateCache(locatorPorts == null ? getSystemPropertiesPost71()
+ : getSystemPropertiesPost71(locatorPorts)));
+ rollServer.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ return rollServer;
+ }
+
+ private VM rollClientToCurrent(VM oldClient, String[] hostNames, int[] locatorPorts)
+ throws Exception {
+ oldClient.invoke(invokeCloseCache());
+ VM rollClient = Host.getHost(0).getVM(oldClient.getPid());
+ rollClient
+ .invoke(invokeCreateClientCache(getClientSystemProperties(), hostNames, locatorPorts));
+ rollClient.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ return rollClient;
+ }
+
+ /*
+ * @param rollServer
+ *
+ * @param createRegionMethod
+ *
+ * @param regionName
+ *
+ * @param locatorPorts if null, uses dunit locator
+ *
+ * @throws Exception
+ */
+ private VM rollServerToCurrentAndCreateRegion(VM oldServer, RegionShortcut shortcut,
+ String regionName, int[] locatorPorts) throws Exception {
+ VM newServer = rollServerToCurrent(oldServer, locatorPorts);
+ // recreate region on "rolled" server
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcut), newServer);
+ newServer.invoke(invokeRebalance());
+ return newServer;
+ }
+
+ private VM rollServerToCurrentAndCreateRegion(VM oldServer, String regionType, File diskdir,
+ RegionShortcut shortcut, String regionName, int[] locatorPorts) throws Exception {
+ VM rollServer = rollServerToCurrent(oldServer, locatorPorts);
+ // recreate region on "rolled" server
+ if ((regionType.equals("persistentReplicate"))) {
+ CacheSerializableRunnable runnable =
+ invokeCreatePersistentReplicateRegion(regionName, diskdir);
+ invokeRunnableInVMs(runnable, rollServer);
+ } else {
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcut), rollServer);
+ }
+ rollServer.invoke(invokeRebalance());
+ return rollServer;
+ }
+
+ /*
+ * @param rollClient
+ *
+ * @param createRegionMethod
+ *
+ * @param regionName
+ *
+ * @param locatorPorts if null, uses dunit locator
+ *
+ * @throws Exception
+ */
+ private VM rollClientToCurrentAndCreateRegion(VM oldClient, ClientRegionShortcut shortcut,
+ String regionName, String[] hostNames, int[] locatorPorts) throws Exception {
+ VM rollClient = rollClientToCurrent(oldClient, hostNames, locatorPorts);
+ // recreate region on "rolled" client
+ invokeRunnableInVMs(invokeCreateClientRegion(regionName, shortcut), rollClient);
+ return rollClient;
+ }
+
+ private VM rollLocatorToCurrent(VM rollLocator, final String serverHostName, final int port,
+ final String testName, final String locatorString) throws Exception {
+ // Roll the locator
+ rollLocator.invoke(invokeStopLocator());
+ VM newLocator = Host.getHost(0).getVM(rollLocator.getPid());
+ newLocator.invoke(invokeStartLocator(serverHostName, port, testName,
+ getLocatorProperties91AndAfter(locatorString)));
+ return newLocator;
+ }
+
+ // Due to licensing changes
+ public Properties getSystemPropertiesPost71() {
+ Properties props = getSystemProperties();
+ props.put(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
+ props.put(DistributionConfig.USE_CLUSTER_CONFIGURATION_NAME, "false");
+ return props;
+ }
+
+ // Due to licensing changes
+ public Properties getSystemPropertiesPost71(int[] locatorPorts) {
+ Properties props = getSystemProperties(locatorPorts);
+ props.put(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
+ props.put(DistributionConfig.USE_CLUSTER_CONFIGURATION_NAME, "false");
+ return props;
+ }
+
+ public Properties getSystemProperties() {
+ Properties props = DistributedTestUtils.getAllDistributedSystemProperties(new Properties());
+ props.remove("disable-auto-reconnect");
+ props.put(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
+ props.put(DistributionConfig.USE_CLUSTER_CONFIGURATION_NAME, "false");
+ props.remove(DistributionConfig.LOAD_CLUSTER_CONFIG_FROM_DIR_NAME);
+ props.remove(DistributionConfig.OFF_HEAP_MEMORY_SIZE_NAME);
+ props.remove(DistributionConfig.LOCK_MEMORY_NAME);
+ return props;
+ }
+
+ public Properties getSystemProperties(int[] locatorPorts) {
+ Properties props = new Properties();
+ String locatorString = getLocatorString(locatorPorts);
+ props.setProperty("locators", locatorString);
+ props.setProperty("mcast-port", "0");
+ props.put(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
+ props.put(DistributionConfig.USE_CLUSTER_CONFIGURATION_NAME, "false");
+ props.remove(DistributionConfig.LOAD_CLUSTER_CONFIG_FROM_DIR_NAME);
+ props.setProperty(DistributionConfig.LOG_LEVEL_NAME, DUnitLauncher.logLevel);
+ return props;
+ }
+
+ public Properties getClientSystemProperties() {
+ Properties p = new Properties();
+ p.setProperty("mcast-port", "0");
+ return p;
+ }
+
+ public static String getLocatorString(int locatorPort) {
+ String locatorString = getDUnitLocatorAddress() + "[" + locatorPort + "]";
+ return locatorString;
+ }
+
+ public static String getLocatorString(int[] locatorPorts) {
+ String locatorString = "";
+ int numLocators = locatorPorts.length;
+ for (int i = 0; i < numLocators; i++) {
+ locatorString += getLocatorString(locatorPorts[i]);
+ if (i + 1 < numLocators) {
+ locatorString += ",";
+ }
+ }
+ return locatorString;
+ }
+
+ private List<URL> addFile(File file) throws MalformedURLException {
+ ArrayList<URL> urls = new ArrayList<URL>();
+ if (file.isDirectory()) {
+ // Do not want to start cache with sample code xml
+ if (file.getName().contains("SampleCode")) {
+ return urls;
+ } else {
+ File[] files = file.listFiles();
+ for (File afile : files) {
+ urls.addAll(addFile(afile));
+ }
+ }
+ } else {
+ URL url = file.toURI().toURL();
+ urls.add(url);
+ }
+ return urls;
+ }
+
+
+
+ private CacheSerializableRunnable invokeStartLocator(final String serverHostName, final int port,
+ final String testName, final Properties props) {
+ return new CacheSerializableRunnable("execute: startLocator") {
+ public void run2() {
+ try {
+ startLocator(serverHostName, port, testName, props);
+ } catch (Exception e) {
+ fail("Error starting locators", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeStartLocatorAndServer(final String serverHostName,
+ final int port, final Properties systemProperties) {
+ return new CacheSerializableRunnable("execute: startLocator") {
+ public void run2() {
+ try {
+ systemProperties.put(DistributionConfig.START_LOCATOR_NAME,
+ "" + serverHostName + "[" + port + "]");
+ systemProperties.put(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "false");
+ RollingUpgrade2DUnitTest.cache = createCache(systemProperties);
+ Thread.sleep(5000); // bug in 1.0 - cluster config service not immediately available
+ } catch (Exception e) {
+ fail("Error starting locators", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreateCache(final Properties systemProperties) {
+ return new CacheSerializableRunnable("execute: createCache") {
+ public void run2() {
+ try {
+ RollingUpgrade2DUnitTest.cache = createCache(systemProperties);
+ } catch (Exception e) {
+ fail("Error creating cache", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreateClientCache(final Properties systemProperties,
+ final String[] hosts, final int[] ports) {
+ return new CacheSerializableRunnable("execute: createClientCache") {
+ public void run2() {
+ try {
+ RollingUpgrade2DUnitTest.cache = createClientCache(systemProperties, hosts, ports);
+ } catch (Exception e) {
+ fail("Error creating client cache", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeStartCacheServer(final int port) {
+ return new CacheSerializableRunnable("execute: startCacheServer") {
+ public void run2() {
+ try {
+ startCacheServer(RollingUpgrade2DUnitTest.cache, port);
+ } catch (Exception e) {
+ fail("Error creating cache", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeAssertVersion(final short version) {
+ return new CacheSerializableRunnable("execute: assertVersion") {
+ public void run2() {
+ try {
+ assertVersion(RollingUpgrade2DUnitTest.cache, version);
+ } catch (Exception e) {
+ fail("Error asserting version", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreateRegion(final String regionName,
+ final RegionShortcut shortcut) {
+ return new CacheSerializableRunnable("execute: createRegion") {
+ public void run2() {
+ try {
+ createRegion(RollingUpgrade2DUnitTest.cache, regionName, shortcut);
+ } catch (Exception e) {
+ fail("Error createRegion", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreatePersistentReplicateRegion(final String regionName,
+ final File diskstore) {
+ return new CacheSerializableRunnable("execute: createPersistentReplicateRegion") {
+ public void run2() {
+ try {
+ createPersistentReplicateRegion(RollingUpgrade2DUnitTest.cache, regionName, diskstore);
+ } catch (Exception e) {
+ fail("Error createPersistentReplicateRegion", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreateClientRegion(final String regionName,
+ final ClientRegionShortcut shortcut) {
+ return new CacheSerializableRunnable("execute: createClientRegion") {
+ public void run2() {
+ try {
+ createClientRegion(RollingUpgrade2DUnitTest.cache, regionName, shortcut);
+ } catch (Exception e) {
+ fail("Error creating client region", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokePut(final String regionName, final Object key,
+ final Object value) {
+ return new CacheSerializableRunnable("execute: put(" + key + "," + value + ")") {
+ public void run2() {
+ try {
+ put(RollingUpgrade2DUnitTest.cache, regionName, key, value);
+ } catch (Exception e) {
+ fail("Error put", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeAssertEntriesCorrect(final String regionName,
+ final int start, final int end) {
+ return new CacheSerializableRunnable("execute: assertEntriesCorrect") {
+ public void run2() {
+ try {
+ assertEntriesCorrect(RollingUpgrade2DUnitTest.cache, regionName, start, end);
+ } catch (Exception e) {
+ fail("Error asserting equals", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeAssertEntriesExist(final String regionName,
+ final int start, final int end) {
+ return new CacheSerializableRunnable("execute: assertEntryExists") {
+ public void run2() {
+ try {
+ assertEntryExists(RollingUpgrade2DUnitTest.cache, regionName, start, end);
+ } catch (Exception e) {
+ fail("Error asserting exists", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeStopLocator() {
+ return new CacheSerializableRunnable("execute: stopLocator") {
+ public void run2() {
+ try {
+ stopLocator();
+ } catch (Exception e) {
+ fail("Error stopping locator", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCloseCache() {
+ return new CacheSerializableRunnable("execute: closeCache") {
+ public void run2() {
+ try {
+ closeCache(RollingUpgrade2DUnitTest.cache);
+ } catch (Exception e) {
+ fail("Error closing cache", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeRebalance() {
+ return new CacheSerializableRunnable("execute: rebalance") {
+ public void run2() {
+ try {
+ rebalance(RollingUpgrade2DUnitTest.cache);
+ } catch (Exception e) {
+ fail("Error rebalancing", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeAssertQueryResults(final String queryString,
+ final int numExpected) {
+ return new CacheSerializableRunnable("execute: assertQueryResults") {
+ public void run2() {
+ try {
+ assertQueryResults(RollingUpgrade2DUnitTest.cache, queryString, numExpected);
+ } catch (Exception e) {
+ fail("Error asserting query results", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreateIndexes(final String regionPath) {
+ return new CacheSerializableRunnable("invokeCreateIndexes") {
+ public void run2() {
+ try {
+ createIndexes(regionPath, RollingUpgrade2DUnitTest.cache);
+ } catch (Exception e) {
+ fail("Error creating indexes ", e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreateIndex(final String regionPath) {
+ return new CacheSerializableRunnable("invokeCreateIndexes") {
+ public void run2() {
+ try {
+ createIndex(regionPath, RollingUpgrade2DUnitTest.cache);
+ } catch (Exception e) {
+ fail("Error creating indexes ", e);
+ }
+ }
+ };
+ }
+
+ public void deleteDiskStores() throws Exception {
+ try {
+ FileUtil.delete(new File(diskDir).getAbsoluteFile());
+ } catch (IOException e) {
+ throw new Error("Error deleting files", e);
+ }
+ }
+
+ public static Cache createCache(Properties systemProperties) throws Exception {
+ systemProperties.setProperty(DistributionConfig.USE_CLUSTER_CONFIGURATION_NAME, "false");
+ CacheFactory cf = new CacheFactory(systemProperties);
+ return cf.create();
+ }
+
+ public static void startCacheServer(GemFireCache cache, int port) throws Exception {
+ CacheServer cacheServer = ((GemFireCacheImpl) cache).addCacheServer();
+ cacheServer.setPort(port);
+ cacheServer.start();
+ }
+
+ public static ClientCache createClientCache(Properties systemProperties, String[] hosts,
+ int[] ports) throws Exception {
+ ClientCacheFactory cf = new ClientCacheFactory(systemProperties);
+ int hostsLength = hosts.length;
+ for (int i = 0; i < hostsLength; i++) {
+ cf.addPoolLocator(hosts[i], ports[i]);
+ }
+
+ return cf.create();
+ }
+
+ public static boolean assertRegionExists(GemFireCache cache, String regionName) throws Exception {
+ Region region = cache.getRegion(regionName);
+ if (region == null) {
+ throw new Error("Region: " + regionName + " does not exist");
+ }
+ return true;
+ }
+
+ public static Region getRegion(GemFireCache cache, String regionName) throws Exception {
+ return cache.getRegion(regionName);
+ }
+
+ public static boolean assertEntriesCorrect(GemFireCache cache, String regionName, int start,
+ int end) throws Exception {
+ assertRegionExists(cache, regionName);
+ Region region = getRegion(cache, regionName);
+ for (int i = start; i < end; i++) {
+ String key = "" + i;
+ Object regionValue = region.get(key);
+ if (regionValue == null) {
+ fail("Region value does not exist for key:" + key);
+ }
+ String value = "VALUE(" + i + ")";
+ if (!regionValue.equals(value)) {
+ fail("Entry for key:" + key + " does not equal value: " + value);
+ }
+ }
+ return true;
+ }
+
+ public static boolean assertEntryExists(GemFireCache cache, String regionName, int start, int end)
+ throws Exception {
+ assertRegionExists(cache, regionName);
+ Region region = getRegion(cache, regionName);
+ for (int i = start; i < end; i++) {
+ String key = "" + i;
+ Object regionValue = region.get(key);
+ if (regionValue == null) {
+ fail("Entry for key:" + key + " does not exist");
+ }
+ }
+ return true;
+ }
+
+ public static Object put(GemFireCache cache, String regionName, Object key, Object value)
+ throws Exception {
+ Region region = getRegion(cache, regionName);
+ System.out.println(regionName + ".put(" + key + "," + value + ")");
+ Object result = region.put(key, value);
+ System.out.println("returned " + result);
+ return result;
+ }
+
+ public static void createRegion(GemFireCache cache, String regionName, RegionShortcut shortcut)
+ throws Exception {
+ RegionFactory rf = ((GemFireCacheImpl) cache).createRegionFactory(shortcut);
+ System.out.println("created region " + rf.create(regionName));
+ }
+
+ public static void createPartitionedRegion(GemFireCache cache, String regionName)
+ throws Exception {
+ createRegion(cache, regionName, RegionShortcut.PARTITION);
+ }
+
+ public static void createPartitionedRedundantRegion(GemFireCache cache, String regionName)
+ throws Exception {
+ createRegion(cache, regionName, RegionShortcut.PARTITION_REDUNDANT);
+ }
+
+ public static void createReplicatedRegion(GemFireCache cache, String regionName)
+ throws Exception {
+ createRegion(cache, regionName, RegionShortcut.REPLICATE);
+ }
+
+ // Assumes a client cache is passed
+ public static void createClientRegion(GemFireCache cache, String regionName,
+ ClientRegionShortcut shortcut) throws Exception {
+ ClientRegionFactory rf = ((ClientCache) cache).createClientRegionFactory(shortcut);
+ rf.create(regionName);
+ }
+
+ public static void createRegion(String regionName, RegionFactory regionFactory) throws Exception {
+ regionFactory.create(regionName);
+ }
+
+ public static void createPersistentReplicateRegion(GemFireCache cache, String regionName,
+ File diskStore) throws Exception {
+ DiskStore store = cache.findDiskStore("store");
+ if (store == null) {
+ DiskStoreFactory factory = cache.createDiskStoreFactory();
+ factory.setMaxOplogSize(1L);
+ factory.setDiskDirs(new File[] {diskStore.getAbsoluteFile()});
+ factory.create("store");
+ }
+ RegionFactory rf = ((GemFireCacheImpl) cache).createRegionFactory();
+ rf.setDiskStoreName("store");
+ rf.setDataPolicy(DataPolicy.PERSISTENT_REPLICATE);
+ rf.create(regionName);
+ }
+
+ public static void assertVersion(GemFireCache cache, short ordinal) throws Exception {
+ DistributedSystem system = cache.getDistributedSystem();
+ int thisOrdinal =
+ ((InternalDistributedMember) system.getDistributedMember()).getVersionObject().ordinal();
+ if (ordinal != thisOrdinal) {
+ throw new Error(
+ "Version ordinal:" + thisOrdinal + " was not the expected ordinal of:" + ordinal);
+ }
+ }
+
+ public static void assertQueryResults(GemFireCache cache, String queryString,
+ int numExpectedResults) {
+ try {
+ QueryService qs = cache.getQueryService();
+ Query query = qs.newQuery(queryString);
+ SelectResults results = (SelectResults) query.execute();
+ int numResults = results.size();
+ if (numResults != numExpectedResults) {
+ System.out.println("Num Results was:" + numResults);
+ throw new Error("Num results:" + numResults + " != num expected:" + numExpectedResults);
+ }
+ } catch (Exception e) {
+ throw new Error("Query Exception ", e);
+ }
+ }
+
+ public static void createIndexes(String regionPath, GemFireCache cache) {
+ try {
+ QueryService service = cache.getQueryService();
+ service.defineIndex("statusIndex", "status", regionPath);
+ service.defineIndex("IDIndex", "ID", regionPath);
+ service.defineIndex("secIdIndex", "pos.secId", regionPath + " p, p.positions.values pos");
+ try {
+ service.createDefinedIndexes();
+ fail("Index creation should have failed");
+ } catch (Exception e) {
+ Assert.assertTrue(
+ "Only MultiIndexCreationException should have been thrown and not " + e.getClass(),
+ e instanceof MultiIndexCreationException);
+ Assert.assertEquals("3 exceptions should have be present in the exceptionsMap.", 3,
+ ((MultiIndexCreationException) e).getExceptionsMap().values().size());
+ for (Exception ex : ((MultiIndexCreationException) e).getExceptionsMap().values()) {
+ Assert.assertTrue("Index creation should have been failed with IndexCreationException ",
+ ex instanceof IndexCreationException);
+ Assert.assertEquals("Incorrect exception message ",
+ LocalizedStrings.PartitionedRegion_INDEX_CREATION_FAILED_ROLLING_UPGRADE
+ .toLocalizedString(),
+ ((IndexCreationException) ex).getMessage());
+ }
+ }
+ } catch (Exception e) {
+ throw new Error("Exception ", e);
+ }
+ }
+
+ public static void createIndex(String regionPath, GemFireCache cache) {
+ try {
+ QueryService service = cache.getQueryService();
+ service.createIndex("statusIndex", "status", regionPath);
+ service.createIndex("IDIndex", "ID", regionPath);
+ service.createIndex("secIdIndex", "pos.secId", regionPath + " p, p.positions.values pos");
+
+ Collection<Index> indexes = service.getIndexes();
+ int numResults = indexes.size();
+
+ if (numResults != 3) {
+ System.out.println("Num Results was:" + numResults);
+ throw new Error("Num indexes created:" + numResults + " != num expected:" + 3);
+ }
+
+ } catch (Exception e) {
+ throw new Error("Exception ", e);
+ }
+ }
+
+ public static void stopCacheServers(GemFireCache cache) throws Exception {
+ List<CacheServer> servers = ((Cache) cache).getCacheServers();
+ for (CacheServer server : servers) {
+ server.stop();
+ }
+ }
+
+ public static void closeCache(GemFireCache cache) throws Exception {
+ if (cache == null) {
+ return;
+ }
+ boolean cacheClosed = cache.isClosed();
+ if (cache != null && !cacheClosed) {
+ stopCacheServers(cache);
+ cache.close();
+ }
+ cache = null;
+ }
+
+ public static void rebalance(Object cache) throws Exception {
+ RebalanceOperation op =
+ ((GemFireCache) cache).getResourceManager().createRebalanceFactory().start();
+
+ // Wait until the rebalance is completex
+ RebalanceResults results = op.getResults();
+ Method getTotalTimeMethod = results.getClass().getMethod("getTotalTime");
+ getTotalTimeMethod.setAccessible(true);
+ System.out.println("Took " + results.getTotalTime() + " milliseconds\n");
+ System.out.println("Transfered " + results.getTotalBucketTransferBytes() + "bytes\n");
+ }
+
+ public Properties getLocatorPropertiesPre91(String locatorsString) {
+ Properties props = new Properties();
+ // props.setProperty(DistributionConfig.NAME_NAME, getUniqueName());
+ props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
+ props.setProperty(DistributionConfig.LOCATORS_NAME, locatorsString);
+ props.setProperty(DistributionConfig.LOG_LEVEL_NAME, DUnitLauncher.logLevel);
+ props.setProperty(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
+ return props;
+ }
+
+ public Properties getLocatorProperties91AndAfter(String locatorsString) {
+ Properties props = new Properties();
+ // props.setProperty(DistributionConfig.NAME_NAME, getUniqueName());
+ props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
+ props.setProperty(DistributionConfig.LOCATORS_NAME, locatorsString);
+ props.setProperty(DistributionConfig.LOG_LEVEL_NAME, DUnitLauncher.logLevel);
+ props.setProperty(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "true");
+ return props;
+ }
+
+ /**
+ * Starts a locator with given configuration.
+ */
+ public static void startLocator(final String serverHostName, final int port,
+ final String testName, Properties props) throws Exception {
+
+
+ InetAddress bindAddr = null;
+ try {
+ bindAddr = InetAddress.getByName(serverHostName);// getServerHostName(vm.getHost()));
+ } catch (UnknownHostException uhe) {
+ throw new Error("While resolving bind address ", uhe);
+ }
+
+ Locator.startLocatorAndDS(port, new File(""), bindAddr, props, true, true, null);
+ Thread.sleep(5000); // bug in 1.0 - cluster config service not immediately available
+ }
+
+ public static void stopLocator() throws Exception {
+ InternalLocator.getLocator().stop();
+ }
+
+ /**
+ * Get the port that the standard dunit locator is listening on.
+ *
+ * @return
+ */
+ public static String getDUnitLocatorAddress() {
+ return Host.getHost(0).getHostName();
+ }
+
+}
+
[6/6] geode git commit: GEODE-2137 client membership IDs contain 17
bytes of useless information
Posted by bs...@apache.org.
GEODE-2137 client membership IDs contain 17 bytes of useless information
Reverting the removal of UUIDs from fully serialized member IDs. There is
administration code that caches serialized events containing these IDs.
The cached form is transmitted between nodes without regard to versioning
so it is impossible to track the chain of custody and know how to properly
deserialize a 1.1.0 ID with this change. Version support needs to be
extended to CachedDeserializable classes if we're going to make this sort
of change, so that they know how to properly deserialize an object of
a versioned class.
Removal of UUIDs is still in effect for the compact form of membership ID
used in version tags and elsewhere since this information is not held in
serialized form in cache regions.
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/59702a6e
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/59702a6e
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/59702a6e
Branch: refs/heads/develop
Commit: 59702a6e099abe2400b69e0aec7fe322c87d9fec
Parents: b31c684
Author: Bruce Schuchardt <bs...@pivotal.io>
Authored: Mon Jan 23 11:32:38 2017 -0800
Committer: Bruce Schuchardt <bs...@pivotal.io>
Committed: Tue Jan 24 10:48:20 2017 -0800
----------------------------------------------------------------------
.../membership/InternalDistributedMember.java | 48 ++++++++++----------
.../internal/tcpserver/TcpClient.java | 4 +-
2 files changed, 27 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/59702a6e/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
index 7955d34..41c85d6 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
@@ -82,9 +82,6 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
/** product version bit flag */
private static final int VERSION_BIT = 0x8;
- /** additional membership data */
- private static final int NETMBR_DATA_BIT = 0x10;
-
/**
* Representing the host name of this member.
*/
@@ -93,7 +90,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
private transient Version versionObj = Version.CURRENT;
/** The versions in which this message was modified */
- private static final Version[] dsfidVersions = new Version[] {Version.GFE_71};
+ private static final Version[] dsfidVersions = new Version[] {Version.GFE_71, Version.GFE_90};
private void defaultToCurrentHost() {
netMbr.setProcessId(OSProcess.getId());
@@ -849,6 +846,14 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
}
public void toData(DataOutput out) throws IOException {
+ toDataPre_GFE_9_0_0_0(out);
+ if (netMbr.getVersionOrdinal() >= Version.GFE_90.ordinal()) {
+ getNetMember().writeAdditionalData(out);
+ }
+ }
+
+
+ public void toDataPre_GFE_9_0_0_0(DataOutput out) throws IOException {
// Assert.assertTrue(vmKind > 0);
// NOTE: If you change the serialized format of this class
// then bump Connection.HANDSHAKE_VERSION since an
@@ -868,10 +873,7 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
// always write product version but enable reading from older versions
// that do not have it
flags |= VERSION_BIT;
- boolean writeNetMbrData = netMbr.hasAdditionalData();
- if (writeNetMbrData) {
- flags |= NETMBR_DATA_BIT;
- }
+
out.writeByte((byte) (flags & 0xff));
out.writeInt(netMbr.getDirectPort());
@@ -891,15 +893,9 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
.writeString(durableClientAttributes == null ? "" : durableClientAttributes.getId(), out);
DataSerializer.writeInteger(Integer.valueOf(
durableClientAttributes == null ? 300 : durableClientAttributes.getTimeout()), out);
+
short version = netMbr.getVersionOrdinal();
Version.writeOrdinal(out, version, true);
-
- Version streamVersion = InternalDataSerializer.getVersionForDataStream(out);
-
- if (streamVersion.ordinal() >= Version.GFE_90.ordinal() && version >= Version.GFE_90.ordinal()
- && writeNetMbrData) {
- getNetMember().writeAdditionalData(out);
- }
}
public void toDataPre_GFE_7_1_0_0(DataOutput out) throws IOException {
@@ -949,6 +945,19 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
public void fromData(DataInput in) throws IOException, ClassNotFoundException {
+ fromDataPre_GFE_9_0_0_0(in);
+ // just in case this is just a non-versioned read
+ // from a file we ought to check the version
+ if (getNetMember().getVersionOrdinal() >= Version.GFE_90.ordinal()) {
+ try {
+ netMbr.readAdditionalData(in);
+ } catch (EOFException e) {
+ // nope - it's from a pre-GEODE client or WAN site
+ }
+ }
+ }
+
+ public void fromDataPre_GFE_9_0_0_0(DataInput in) throws IOException, ClassNotFoundException {
InetAddress inetAddr = DataSerializer.readInetAddress(in);
int port = in.readInt();
@@ -991,15 +1000,6 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
Assert.assertTrue(netMbr.getVmKind() > 0);
// Assert.assertTrue(getPort() > 0);
-
- // just in case this is just a non-versioned read
- // from a file we ought to check the version
- Version streamVersion = InternalDataSerializer.getVersionForDataStream(in);
-
- if (streamVersion.ordinal() >= Version.GFE_90.ordinal() && version >= Version.GFE_90.ordinal()
- && (flags & NETMBR_DATA_BIT) == NETMBR_DATA_BIT) {
- netMbr.readAdditionalData(in);
- }
}
public void fromDataPre_GFE_7_1_0_0(DataInput in) throws IOException, ClassNotFoundException {
http://git-wip-us.apache.org/repos/asf/geode/blob/59702a6e/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpClient.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpClient.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpClient.java
index 7b5d501..a558598 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpClient.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpClient.java
@@ -208,8 +208,10 @@ public class TcpClient {
logger.debug("received response: {}", response);
return response;
} catch (EOFException ex) {
- throw new EOFException("Locator at " + ipAddr
+ EOFException eof = new EOFException("Locator at " + ipAddr
+ " did not respond. This is normal if the locator was shutdown. If it wasn't check its log for exceptions.");
+ eof.initCause(ex);
+ throw eof;
}
} else {
return null;
[2/6] geode git commit: GEODE-1965 Create backward-compatibility unit
test framework
Posted by bs...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
----------------------------------------------------------------------
diff --git a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
index d56ba6a..3f90ca4 100644
--- a/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
+++ b/geode-core/src/test/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
@@ -1,2134 +1,2136 @@
org/apache/geode/admin/RegionSubRegionSnapshot,2
fromData,62,2a2bb80023b500082a2bb900240100b5000b2a2bb80025b500052ab40005b9002601004d2cb9002701009900132cb900280100c000292ab6001ba7ffeab1
toData,30,2ab400082bb800202b2ab4000bb9002102002ab40005c000032bb80022b1
-
+
org/apache/geode/admin/internal/FinishBackupRequest,2
fromData,33,2a2bb700292a2bb8002ab500022a2bb8002ab500032a2bb8002bb6002cb50004b1
toData,33,2a2bb7002d2ab400022bb8002e2ab400032bb8002e2ab40004b8002f2bb80030b1
-
+
org/apache/geode/admin/internal/FinishBackupResponse,2
fromData,14,2a2bb700042a2bb80005b50003b1
toData,14,2a2bb700062ab400032bb80007b1
-
+
org/apache/geode/admin/internal/PrepareBackupResponse,2
fromData,14,2a2bb700042a2bb80005b50003b1
toData,14,2a2bb700062ab400032bb80007b1
-
+
org/apache/geode/admin/internal/SystemMemberCacheEventProcessor$SystemMemberCacheMessage,2
fromData,27,2a2bb7001a2a2bb8001bb5000c2a2bb9001c0100b8001db5000fb1
toData,27,2a2bb7001e2ab4000c2bb8001f2b2ab4000fb40020b900210200b1
-
+
org/apache/geode/admin/jmx/internal/StatAlertNotification,2
fromData,39,2a2bb8002ab600032a2bb8002bb600072a2bb8002cc0002dc0002db600052a2bb8002eb50008b1
toData,33,2ab600162bb800262ab600202bb800272ab6000e2bb800282ab400082bb80029b1
-
+
org/apache/geode/cache/ExpirationAttributes,2
fromData,22,2a2bb900120100b500022a2bb80013c00014b50004b1
toData,19,2b2ab40002b9001502002ab400042bb80016b1
-
+
org/apache/geode/cache/MembershipAttributes,2
fromData,39,2a2a2bb80032b7000bb500032a2bb900330100b80034b500052a2bb900330100b80035b50007b1
toData,89,2ab40003b9002c0100bd002d4d2ab40003b9002101004e03360415042cbea2001b2c15042db900240100c00025b90026010053840401a7ffe42c2bb8002e2b2ab40005b4002fb9003002002b2ab40007b40031b900300200b1
-
+
org/apache/geode/cache/SubscriptionAttributes,2
fromData,14,2a2bb9000f0100b80010b50003b1
toData,14,2b2ab40003b4000db9000e0200b1
-
+
org/apache/geode/cache/client/internal/CacheServerLoadMessage,2
fromData,52,2a2bb7000d2abb000e59b7000fb500022ab400022bb800102abb001159b70012b500032ab400032bb800102a2bb80013b50004b1
toData,30,2a2bb700142ab400022bb800152ab400032bb800152ab400042bb80016b1
-
+
org/apache/geode/cache/client/internal/locator/ClientConnectionRequest,2
fromData,14,2a2bb700042a2bb80005b50003b1
toData,14,2a2bb700062ab400032bb80007b1
-
+
org/apache/geode/cache/client/internal/locator/ClientConnectionResponse,2
fromData,35,2a2bb80004b500022ab400029900162abb000559b70006b500032ab400032bb60007b1
toData,31,2ab40003c6000704a70004033d1c2bb800081c99000b2ab400032bb60009b1
-
+
org/apache/geode/cache/client/internal/locator/ClientReplacementRequest,2
fromData,25,2a2bb700042abb000559b70006b500032ab400032bb80007b1
toData,14,2a2bb700082ab400032bb80009b1
-
+
org/apache/geode/cache/client/internal/locator/GetAllServersRequest,2
fromData,6,2a2bb70003b1
toData,6,2a2bb70004b1
-
+
org/apache/geode/cache/client/internal/locator/GetAllServersResponse,2
fromData,31,2a2bb80005b500032ab40003c600122ab40003b600049a00082a04b50002b1
toData,9,2ab400032bb80006b1
-
+
org/apache/geode/cache/client/internal/locator/LocatorListResponse,2
fromData,43,2a2bb80006b500032a2bb900070100b500052ab40003c600142ab40003b9000401009a00082a04b50002b1
toData,19,2ab400032bb800082b2ab40005b900090200b1
-
+
org/apache/geode/cache/client/internal/locator/LocatorStatusResponse,2
fromData,56,2a2bb6001f2a2bb600202a2bb600212a2bb600222a2bb600232a2bb600242a2bb600252a2bb600262a2bb600272a2bb600282a2bb60029b1
toData,56,2a2bb600322a2bb600332a2bb600342a2bb600352a2bb600362a2bb600372a2bb600382a2bb600392a2bb6003a2a2bb6003b2a2bb6003cb1
-
+
org/apache/geode/cache/client/internal/locator/QueueConnectionRequest,2
fromData,40,2a2bb700072a2bb80008b500042a2bb80009b500062a2bb8000ab500052a2bb9000b0100b50002b1
toData,40,2a2bb7000c2ab400042bb8000d2ab400062bb8000e2ab400052bb8000f2b2ab40002b900100200b1
-
+
org/apache/geode/cache/client/internal/locator/QueueConnectionResponse,2
fromData,41,2a2bb80006b500032a2bb80007b500042ab40004c600142ab40004b9000501009a00082a04b50002b1
toData,17,2ab400032bb800082ab400042bb80009b1
-
+
org/apache/geode/cache/client/internal/locator/ServerLocationRequest,2
fromData,9,2a2bb80003b50002b1
toData,9,2ab400022bb80004b1
-
+
org/apache/geode/cache/query/internal/CqEntry,2
fromData,17,2a2bb80009b500022a2bb80009b50003b1
toData,17,2ab400022bb8000b2ab400032bb8000bb1
-
+
org/apache/geode/cache/query/internal/CumulativeNonDistinctResults,2
fromData,126,2bb8001dc0001e4d2abb00035912042cb70005b500012cb9001f01003e2bb90020010037042abb001a59160488b70021b5000816043706160609949e00421d9900232bb800223a082ab40008bb0023592cc000241908b70025b90026020057a700152bb8001d3a082ab400081908b9002602005716060a653706a7ffbdb1
toData,125,2ab40001b900280100b9001f01003d2ab40001b9002801002bb80029bb002a5911040001b7002b4e2db6002c3a042ab600143a050336061905b9001501009900311905b9001601003a071c9900181907c0002db9002e01003a0819082bb8002fa7000919072db80029840601a7ffcb1904150685b600302d2bb60031b1
-
+
org/apache/geode/cache/query/internal/LinkedResultSet,2
fromData,40,2bb9001501003d2a2bb80016c00017b500071c3e1d9e00122a2bb80016b60018578403ffa7fff0b1
toData,46,2b2ab60019b9001a02002ab400072bb8001b2ab6001c4d2cb9001d01009900102cb9001e01002bb8001ba7ffedb1
-
+
org/apache/geode/cache/query/internal/LinkedStructSet,2
fromData,68,2a2bb900300100b500022bb9003101003d2a2bb80032c00020b500071c3e1d9e00242bb80032c000333a042abb000c592ab400071904b70034b60035578403ffa7ffdeb1
toData,66,2b2ab40002b9003702002b2ab60038b9003902002ab400072bb8003a2ab600284d2cb90029010099001a2cb9002a0100c000124e2db9003b01002bb8003aa7ffe3b1
-
+
org/apache/geode/cache/query/internal/NWayMergeResults,2
fromData,134,2bb8001ec0001f4d2abb00045912202cb70006b500022cb9002101003e2a2bb80022b500012bb90023010037042abb001b59160488b70024b5000916043706160609949e00421d9900232bb800253a082ab40009bb0026592cc000271908b70028b90029020057a700152bb8001e3a082ab400091908b9002902005716060a653706a7ffbdb1
toData,133,2ab40002b9002b0100b9002101003d2ab40002b9002b01002bb8002c2ab400012bb8002dbb002e5911040001b7002f4e2db600303a042ab600153a050336061905b9001601009900311905b9001701003a071c9900181907c00031b9003201003a0819082bb80033a7000919072db8002c840601a7ffcb1904150685b600342d2bb60035b1
-
+
org/apache/geode/cache/query/internal/NullToken,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/cache/query/internal/PRQueryTraceInfo,2
fromData,29,2a2bb900090100b500042a2bb9000a0100b500062a2bb8000bb50003b1
toData,29,2b2ab40004b9000502002b2ab40006b9000702002ab400032bb80008b1
-
+
org/apache/geode/cache/query/internal/ResultsBag,2
fromData,106,2a2bb80018c00019b5001a2a2bb9001b0100b50017b2001c9a00162ab400179c000fbb001d592ab40017b7001ebf2a2ab6001fb500042a2bb600202ab400172ab40021643d1c9e00232bb800184e2bb9001b010036042ab400042d1504b60022571c1504643da7ffdfb1
toData,116,2ab4001a2bb800242b2ab60025b9002602002a2bb600272ab600252ab40021643d2ab40004b60028b9002901004e2db9000a010099003f1c9e003b2db9000b0100c0002a3a041904b6002b3a0519052bb800241904b6002c36061c1506a200061c36062b1506b9002602001c1506643da7ffbeb1
-
+
org/apache/geode/cache/query/internal/ResultsCollectionWrapper,2
fromData,55,2bb9005801003d1c99000e2a2bb80059b50002a7000e2a2bb8005ac0005bb500022a2bb8005ac0005cb5000d2a2bb900580100b50004b1
toData,60,2ab40002c100543d2b1cb9005502001c9900112ab40002c0004e2bb80056a7000b2ab400022bb800572ab4000d2bb800572b2ab40004b900550200b1
-
+
org/apache/geode/cache/query/internal/ResultsSet,2
fromData,49,2bb9001801003dbb001959b7001a4e2d2bb8001b2a2db600051c360415049e00122a2bb8001cb6001d578404ffa7ffefb1
toData,70,2b2ab6001eb9001f02002ab60020b900040100c000194d2cc6000704a70004031221b800222c2bb800232ab600244e2db9002501009900102db9002601002bb80027a7ffedb1
-
+
org/apache/geode/cache/query/internal/SortedResultSet,2
fromData,40,2bb9001601003d2a2bb80017c00018b500081c3e1d9e00122a2bb80017b60019578403ffa7fff0b1
toData,46,2b2ab6001ab9001b02002ab400082bb8001c2ab6001d4d2cb9001e01009900102cb9001f01002bb8001ca7ffedb1
-
+
org/apache/geode/cache/query/internal/SortedStructSet,2
fromData,57,2a2bb900440100b500022bb9004501003d2a2bb80046c00034b500091c3e1d9e00192bb80046c000283a042a1904b60013578403ffa7ffe9b1
toData,64,2b2ab40002b9004702002b2ab6002bb9004802002ab400092bb800492ab6002c4d2cb9002601009900182cb900270100c00028c000284e2d2bb8004aa7ffe5b1
-
+
org/apache/geode/cache/query/internal/StructBag,2
fromData,16,2a2bb700482a2bb900490100b50002b1
toData,16,2a2bb7004a2b2ab40002b9004b0200b1
-
+
org/apache/geode/cache/query/internal/StructImpl,2
fromData,72,2a2bb80026c00027b500072a2bb80028b500082ab40008c600302ab400084d2cbe3e03360415041da2001f2c1504323a051905c1000999000b2a04b50002a70009840401a7ffe1b1
toData,17,2ab400072bb800292ab400082bb8002ab1
-
+
org/apache/geode/cache/query/internal/StructSet,2
fromData,58,2abb000359bb000459b70005b70006b500072bb9005101003d2a2bb80052c00041b5000c1c3e1d9e00122a2bb80052b60031578403ffa7fff0b1
toData,46,2b2ab6003ab9005302002ab4000c2bb800542ab6004a4d2cb9001201009900102cb9001301002bb80054a7ffedb1
-
+
org/apache/geode/cache/query/internal/Undefined,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/cache/query/internal/index/IndexCreationData,2
fromData,106,2a2bb9000f0100b500022a2bb9000f0100b500052a2bb9000f0100b500042a2bb900100100b500082bb9001101003d031ca0000d2ab2000cb50003a70019041ca0000d2ab2000eb50003a7000a2ab20012b500032bb9001001003e1d99000d2a2bb9000f0100b50006b1
toData,122,2b2ab40002b9000a02002b2ab40005b9000a02002b2ab40004b9000a02002b2ab40008b9000b0200b2000c2ab40003a6000d2b03b9000d0200a7001eb2000e2ab40003a6000d2b04b9000d0200a7000a2b05b9000d02002ab40006c600172b04b9000b02002b2ab40006b9000a0200a7000a2b03b9000b0200b1
-
+
org/apache/geode/cache/query/internal/types/CollectionTypeImpl,2
fromData,17,2a2bb700232a2bb80024c00025b50003b1
toData,14,2a2bb700262ab400032bb80027b1
-
+
org/apache/geode/cache/query/internal/types/MapTypeImpl,2
fromData,17,2a2bb7001c2a2bb8001dc00015b50003b1
toData,14,2a2bb7001e2ab400032bb8001fb1
-
+
org/apache/geode/cache/query/internal/types/ObjectTypeImpl,2
fromData,9,2a2bb8000ab50002b1
toData,9,2ab400022bb8000bb1
-
+
org/apache/geode/cache/query/internal/types/StructTypeImpl,2
fromData,28,2a2bb700292a2bb8002ab5000b2a2bb8002bc0002cc0002cb5000db1
toData,22,2a2bb7002d2ab4000b2bb8002e2ab4000d2bb8002fb1
-
+
org/apache/geode/cache/server/ServerLoad,2
fromData,41,2a2bb900070100b500022a2bb900070100b500042a2bb900070100b500032a2bb900070100b50005b1
toData,41,2b2ab40002b9000602002b2ab40004b9000602002b2ab40003b9000602002b2ab40005b900060200b1
-
+
org/apache/geode/cache/server/internal/ConnectionCountProbe,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/distributed/internal/DistributionAdvisor$Profile,2
fromData,40,2abb001259b70013b500082ab400082bb800142a2bb900150100b500092a2bb900150100b50003b1
toData,29,2ab400082bb800102b2ab40009b9001102002b2ab40003b900110200b1
-
+
org/apache/geode/distributed/internal/DistributionMessage,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/distributed/internal/HighPriorityAckedMessage,2
fromData,51,2a2bb700442a2bb900450100b500122ab800462bb90045010032b500092a2bb900470100b5000a2a2bb80048c00049b50007b1
toData,47,2a2bb700402b2ab40012b9004102002b2ab40009b60024b9004102002b2ab4000ab9004202002ab400072bb80043b1
-
+
org/apache/geode/distributed/internal/ReplyMessage,2
fromData,101,2a2bb7003d2bb9003e01003d2a1c05b8003fb500022a1c1008b8003fb500031c04b8003f99000d2a2bb900400100b500041c07b8003f9900132a2bb80041b500062a04b50007a700141c1040b8003f99000b2a2bb80041b500062a1c1080b8003fb50039b1
toData,132,2a2bb70038033d2ab400029900081c0580913d2ab4000799000b1c0780913da700102ab40006c600091c104080913d2ab400049900081c0480913d2ab400039900091c100880913d2ab400399900091c108080913d2b1cb9003a02002ab4000499000d2b2ab40004b9003b02002ab400079a000a2ab40006c6000b2ab400062bb8003cb1
-
+
org/apache/geode/distributed/internal/SerialAckedMessage,2
fromData,27,2a2bb7002c2a2bb9002d0100b500172a2bb8002ec0001fb50007b1
toData,24,2a2bb700292b2ab40017b9002a02002ab400072bb8002bb1
-
+
org/apache/geode/distributed/internal/ServerLocation,2
fromData,19,2a2bb8000bb500092a2bb9000c0100b5000ab1
toData,19,2ab400092bb8000d2b2ab4000ab9000e0200b1
-
+
org/apache/geode/distributed/internal/ShutdownMessage,2
fromData,27,2a2bb7000c2a2bb9000d0100b500032a2bb8000ec0000fb50002b1
toData,24,2a2bb700092b2ab40003b9000a02002ab400022bb8000bb1
-
+
org/apache/geode/distributed/internal/StartupMessage,3
fromDataProblem,38,2ab40037c7000e2abb006559b70066b500372ab400372bb60067572ab400371268b6006757b1
fromData,293,2a2bb700692a2bb8006ab500092a2bb9006b0100b5000c2a2bb9006c0100b5000d2a2bb9006c0100b500112bb9006b01003d033e1d1ca2003e2bb8006d3a042bb9006b010036051904c6000d19040301011505b8006ea700183a062ab2006f04bd00205903190653b60024b70070840301a7ffc32bb9006b01003e03360415041da200492bb8006d3a052bb8006d3a062bb9006b010036071905c600121906c6000d19051906150703b80071a700183a082ab2007204bd00205903190853b60024b70070840401a7ffb72a2bb80073c00074b500122a2bb9006b0100b500172a2bb8006ab500182a2bb9006c0100b50019bb005e59b7005f3a0419042bb600752a1904b60076b5000a2a1904b60077b5000b2a1904b60078b5000e2a1904b60079b5000fb1
toData,318,2a2bb7004b2ab400092bb8004c2b2ab4000cb9004d02002b2ab4000db9004e02002b2ab40011b9004e0200b8004f4d2b2cbeb9004d0200033e1d2cbea2001f2c1d32b600502bb800512b2c1d32b60052b9004d0200840301a7ffe1b800534e2b2dbeb9004d020003360415042dbea200782d150432c100549900302d150432c00054b60055b600563a052d150432c00054b60057b600563a062d150432c00054b600583607a700272d150432c00059b6005a3a052d150432c00059b6005b3a062d150432c00059b6005c360719052bb8005119062bb800512b1507b9004d0200840401a7ff872ab400122bb8005d2b2ab40017b9004d02002ab400182bb8004c2b2ab40019b9004e0200bb005e59b7005f3a0419042ab4000ab6006019042ab4000bb6006119042ab4000eb6006219042ab4000fb6006319042bb60064b1
-
+
org/apache/geode/distributed/internal/StartupResponseMessage,3
fromDataProblem,43,2ab40026c7000e2abb003859b70039b500262ab400262bb6003a572ab40026123b123cb8003db6003a57b1
fromData,220,2a2bb700442a2bb900450100b500202a2bb80046b500092a2bb900470100b5000a2bb9004501003d2a1cbd0013b500032a1cbc0ab50002033e1d1ca200332ab400031d2bb80048532ab400021d2bb9004501004fa700143a042ab400021d2bb9004501004f1904bf840301a7ffce2bb9004501003e2a1dbd0013b500042a1dbd0013b500052a1dbc0ab5000603360415041da2002c2ab4000415042bb80048532ab4000515042bb80048532ab4000615042bb9004501004f840401a7ffd42a2bb80049c0004ab5000c2a2bb900450100b5000e2a2bb80046b50011b1
toData,170,2a2bb7003e2b2ab40020b9003f02002ab400092bb800402b2ab4000ab9004102002b2ab40002beb9003f0200033d1c2ab40002bea2001f2ab400031c322bb800422b2ab400021c2eb9003f0200840201a7ffde2b2ab40006beb9003f0200033d1c2ab40006bea200292ab400041c322bb800422ab400051c322bb800422b2ab400061c2eb9003f0200840201a7ffd42ab4000c2bb800432b2ab4000eb9003f02002ab400112bb80040b1
-
+
org/apache/geode/distributed/internal/StartupResponseWithVersionMessage,2
fromData,43,2a2bb7001f2a2bb80020b50004bb001a59b7001b4d2c2bb600212a2cb60022b500062a2cb60023b50009b1
toData,43,2a2bb700182ab400042bb80019bb001a59b7001b4d2c2ab40006b6001c2c2ab40009b6001d2c2bb6001eb1
-
+
org/apache/geode/distributed/internal/WaitForViewInstallation,2
fromData,26,2a2bb7001c2a2bb9001d0100b500162a2bb9001e0100b50017b1
toData,26,2a2bb700192b2ab40016b9001a03002b2ab40017b9001b0200b1
-
+
org/apache/geode/distributed/internal/locks/DLockQueryProcessor$DLockQueryMessage,2
fromData,42,2a2bb700472a2bb80048b500032a2bb80049b500432a2bb9004a0100b500322a2bb9004b0100b50002b1
toData,42,2a2bb700412ab400032bb800422ab400432bb800442b2ab40032b9004502002b2ab40002b900460200b1
-
+
org/apache/geode/distributed/internal/locks/DLockQueryProcessor$DLockQueryReplyMessage,2
fromData,74,2a2bb700092a2bb9000a0100b500032ab4000304a000352bb8000bc0000c4d2cc600152abb000d592c2bb9000a0100b7000eb500042a2bb9000a0100b500062a2bb9000f0100b50007b1
toData,83,2a2bb700102b2ab40003b9001102002ab4000304a0003e2ab40004c7000b012bb80012a7001b2ab40004b600052bb800122b2ab40004b60013b9001102002b2ab40006b9001102002b2ab40007b900140300b1
-
+
org/apache/geode/distributed/internal/locks/DLockRecoverGrantorProcessor$DLockRecoverGrantorMessage,2
fromData,55,2a2bb700122a2bb80013b500022a2bb900140100b500032a2bb900140100b500052a2bb900150100b500042a2bb80016c00017b50006b1
toData,52,2a2bb700182ab400022bb800192b2ab40003b9001a02002b2ab40005b9001a02002b2ab40004b9001b03002ab400062bb8001cb1
-
+
org/apache/geode/distributed/internal/locks/DLockRecoverGrantorProcessor$DLockRecoverGrantorReplyMessage,2
fromData,30,2a2bb700052a2bb900060100b500022a2bb80007c00008c00008b50003b1
toData,24,2a2bb700092b2ab40002b9000a02002ab400032bb8000bb1
-
+
org/apache/geode/distributed/internal/locks/DLockReleaseProcessor$DLockReleaseMessage,2
fromData,52,2a2bb7004e2a2bb8004fb500032a2bb80050b5002b2a2bb900510100b5002a2a2bb900520100b500022a2bb900520100b50041b1
toData,52,2a2bb700492ab400032bb8004a2ab4002b2bb8004b2b2ab4002ab9004c02002b2ab40002b9004d02002b2ab40041b9004d0200b1
-
+
org/apache/geode/distributed/internal/locks/DLockReleaseProcessor$DLockReleaseReplyMessage,2
fromData,24,2a2bb700052a2bb80006b500072a2bb900080100b50003b1
toData,24,2a2bb700092ab400072bb8000a2b2ab40003b9000b0200b1
-
+
org/apache/geode/distributed/internal/locks/DLockRemoteToken,2
fromData,10,bb000e59120fb70010bf
toData,53,2ab400112bb800252ab40012b600152bb800252b2ab40012b60026b9002702002b2ab40013b9002702002b2ab40014b900280300b1
-
+
org/apache/geode/distributed/internal/locks/DLockRequestProcessor$DLockRequestMessage,2
fromData,134,2a2bb700a62a2bb900a70100b500242a2bb800a8b500102a2bb900a90100b500112a2bb900a90100b500122a2bb900a90100b500132a2bb900aa0100b500552a2bb900aa0100b5000e2a2bb900ab0100b5000f2a2bb900ab0100b500142a2bb900ab0100b500152a2bb900a90100b500162a2bb900ab0100b500172a2bb900ab0100b5006cb1
toData,134,2a2bb700a02b2ab40024b900a102002ab400102bb800a22b2ab40011b900a303002b2ab40012b900a303002b2ab40013b900a303002b2ab40055b900a402002b2ab4000eb900a402002b2ab4000fb900a502002b2ab40014b900a502002b2ab40015b900a502002b2ab40016b900a303002b2ab40017b900a502002b2ab4006cb900a50200b1
-
+
org/apache/geode/distributed/internal/locks/DLockRequestProcessor$DLockResponseMessage,2
fromData,72,2a2bb700442a2bb900450100b500032a2bb900460100b500112a2bb80047b500122a2bb900480100b5003f2a2bb80047b500412a2bb900490100b500132a2bb900490100b50043b1
toData,72,2a2bb7003b2b2ab40003b9003c02002b2ab40011b9003d02002ab400122bb8003e2b2ab4003fb9004003002ab400412bb8003e2b2ab40013b9004202002b2ab40043b900420200b1
-
+
org/apache/geode/distributed/internal/locks/DLockService$SuspendLockingToken,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/distributed/internal/locks/DeposeGrantorProcessor$DeposeGrantorMessage,2
fromData,55,2a2bb700162a2bb900170100b500092a2bb80018b500042a2bb80019c0001ab500052a2bb9001b0100b500062a2bb900170100b50007b1
toData,52,2a2bb7001c2b2ab40009b9001d02002ab400042bb8001e2ab400052bb8001f2b2ab40006b9002003002b2ab40007b9001d0200b1
-
+
org/apache/geode/distributed/internal/locks/ElderInitProcessor$ElderInitMessage,2
fromData,16,2a2bb7001d2a2bb9001e0100b50005b1
toData,16,2a2bb7001f2b2ab40005b900200200b1
-
+
org/apache/geode/distributed/internal/locks/ElderInitProcessor$ElderInitReplyMessage,2
fromData,38,2a2bb7000e2a2bb8000fb500042a2bb8000fb500052a2bb8000fb500062a2bb8000fb50007b1
toData,38,2a2bb700102ab400042bb800112ab400052bb800112ab400062bb800112ab400072bb80011b1
-
+
org/apache/geode/distributed/internal/locks/GrantorRequestProcessor$GrantorInfoReplyMessage,2
fromData,47,2a2bb700142a2bb80015c00016b500052a2bb900170100b500092a2bb900180100b5000b2a2bb900190100b50007b1
toData,44,2a2bb7001a2ab400052bb8001b2b2ab40009b9001c03002b2ab4000bb9001d02002b2ab40007b9001e0200b1
-
+
org/apache/geode/distributed/internal/locks/GrantorRequestProcessor$GrantorRequestMessage,2
fromData,73,2a2bb700292a2bb9002a0100b500052a2bb9002b0100b500062a2bb8002cb500072a2bb9002b0100b5000b2a2bb9002d0100b500092ab4000904a0000e2a2bb8002ec0002fb50008b1
toData,70,2a2bb700302b2ab40005b9003103002b2ab40006b9003202002ab400072bb800332b2ab4000bb9003202002b2ab40009b9003402002ab4000904a0000b2ab400082bb80035b1
-
+
org/apache/geode/distributed/internal/locks/NonGrantorDestroyedProcessor$NonGrantorDestroyedMessage,2
fromData,24,2a2bb700282a2bb900290100b500082a2bb8002ab50006b1
toData,24,2a2bb7002b2b2ab40008b9002c02002ab400062bb8002db1
-
+
org/apache/geode/distributed/internal/locks/NonGrantorDestroyedProcessor$NonGrantorDestroyedReplyMessage,2
fromData,16,2a2bb700172a2bb900180100b50008b1
toData,16,2a2bb700192b2ab40008b9001a0200b1
-
-org/apache/geode/distributed/internal/membership/InternalDistributedMember,4
-fromData,333,2bb800a04d2bb900a101003e2a2bb8008fb500072ab2000499000e2c2ab40007b800a2a700072cb60008b500072bb900a3010036041504047e99000704a700040336051504057e99000704a700040336062a1504077e99000704a7000403b5003a2bb900a1010036072bb900a1010036082bb900a3010036092bb800913a0a02360b2bb8008f3a0c1509100da0000e2a2bb8008fb50014a700152bb8008f3a0d190dc6000a190db800a4360b2bb8008f3a0d2bb80092b60093360e190db600779e0011bb004f59190d150eb70050a70004013a0f2a15042bb700943610bb003159150715081509150b190c190a190fb700323a112a2c1d1505150615101911b80018b500012ab40001b9003e01009e000704a7000403b800472bb800a53a121912b60078b20095b60078a100221510b20095b60078a10017150410107e1010a0000d2ab400012bb900960200b1
+
+org/apache/geode/distributed/internal/membership/InternalDistributedMember,6
+fromData,38,2a2bb6009f2ab6009ab900190100b20095b60078a100112ab400012bb900960200a700044db1
fromDataPre_GFE_7_1_0_0,282,2bb800a04d2bb900a101003e2a2bb8008fb500072ab2000499000e2c2ab40007b800a2a700072cb60008b500072bb900a3010036041504047e99000704a700040336051504057e99000704a700040336062a1504077e99000704a7000403b5003a2bb900a1010036072bb900a1010036082bb900a3010036092bb800913a0a02360b2bb8008f3a0c1509100da0000e2a2bb8008fb50014a700152bb8008f3a0d190dc6000a190db800a4360b2bb8008f3a0d2bb80092b60093360e190db600779e0011bb004f59190d150eb70050a70004013a0f2a15042bb700943610bb003159150715081509150b190c190a190fb700323a112a2c1d1505150615101911b80018b500012ab40001b9003e01009e000704a7000403b80047b1
-toData,333,2ab600592bb800992b2ab60058b9009a02002ab400072bb80082033d2ab40001b9008301009900071c04803d2ab40001b9007301009900071c05803d2ab4003a9900071c07803d1c1008803d2ab40001b9009b01003e1d9900081c1010803d2b1c1100ff7e91b9009c02002b2ab40001b9003d0100b9009a02002b2ab40001b9004b0100b9009a02002ab40001b9003e010036042b1504b9009c02002ab40001b9004001002bb800852ab40001b9004c01002bb800821504100da0000e2ab400142bb80082a700132ab40001b9003f0100b8009d2bb800822ab40001b9004e01003a051905c70008124da700081905b600862bb800821905c7000911012ca700081905b60087b800882bb800892ab40001b90019010036062b150604b8008a2bb8009e3a071907b60078b20095b60078a1001c1506b20095b60078a100111d99000d2ab6009f2bb9008b0200b1
-toDataPre_GFE_7_1_0_0,271,2ab40001b9003e01009e000704a7000403b800472ab600592bb800992b2ab60058b9009a02002ab400072bb80082033d2ab40001b9008301009900071c04803d2ab40001b9007301009900071c05803d2ab4003a9900071c07803d2b1c1100ff7e91b9009c02002b2ab40001b9003d0100b9009a02002b2ab40001b9004b0100b9009a02002b2ab40001b9003e0100b9009c02002ab40001b9004001002bb800852ab40001b9004c01002bb800822ab40001b9003e01003e1d100da0000e2ab400142bb80082a700132ab40001b9003f0100b8009d2bb800822ab40001b9004e01003a041904c70008124da700081904b600862bb800821904c7000911012ca700081904b60087b800882bb80089b1
-
+fromDataPre_GFE_9_0_0_0,282,2bb800a04d2bb900a101003e2a2bb8008fb500072ab2000499000e2c2ab40007b800a2a700072cb60008b500072bb900a3010036041504047e99000704a700040336051504057e99000704a700040336062a1504077e99000704a7000403b5003a2bb900a1010036072bb900a1010036082bb900a3010036092bb800913a0a02360b2bb8008f3a0c1509100da0000e2a2bb8008fb50014a700152bb8008f3a0d190dc6000a190db800a4360b2bb8008f3a0d2bb80092b60093360e190db600779e0011bb004f59190d150eb70050a70004013a0f2a15042bb700943610bb003159150715081509150b190c190a190fb700323a112a2c1d1505150615101911b80018b500012ab40001b9003e01009e000704a7000403b80047b1
+toData,34,2a2bb600992ab40001b900190100b20095b60078a1000d2ab6009a2bb9008b0200b1
+toDataPre_GFE_7_1_0_0,271,2ab40001b9003e01009e000704a7000403b800472ab600592bb8009b2b2ab60058b9009c02002ab400072bb80082033d2ab40001b9008301009900071c04803d2ab40001b9007301009900071c05803d2ab4003a9900071c07803d2b1c1100ff7e91b9009d02002b2ab40001b9003d0100b9009c02002b2ab40001b9004b0100b9009c02002b2ab40001b9003e0100b9009d02002ab40001b9004001002bb800852ab40001b9004c01002bb800822ab40001b9003e01003e1d100da0000e2ab400142bb80082a700132ab40001b9003f0100b8009e2bb800822ab40001b9004e01003a041904c70008124da700081904b600862bb800821904c7000911012ca700081904b60087b800882bb80089b1
+toDataPre_GFE_9_0_0_0,266,2ab600592bb8009b2b2ab60058b9009c02002ab400072bb80082033d2ab40001b9008301009900071c04803d2ab40001b9007301009900071c05803d2ab4003a9900071c07803d1c1008803d2b1c1100ff7e91b9009d02002b2ab40001b9003d0100b9009c02002b2ab40001b9004b0100b9009c02002ab40001b9003e01003e2b1db9009d02002ab40001b9004001002bb800852ab40001b9004c01002bb800821d100da0000e2ab400142bb80082a700132ab40001b9003f0100b8009e2bb800822ab40001b9004e01003a041904c70008124da700081904b600862bb800821904c7000911012ca700081904b60087b800882bb800892ab40001b90019010036052b150504b8008ab1
+
org/apache/geode/distributed/internal/membership/NetView,2
fromData,109,2a2bb8006ec0002bb500132a2bb9006f0100b500082a2bb80070b5000bb200409a00122ab4000bc7000bbb004159b70042bf2abb000c592ab4000bb7000db5000e2a2bb80071b500102a2bb80071b500122a2bb80072b500052bb800734d2cc6000d2ab400042cb900180200b1
toData,60,2ab400132bb800682b2ab40008b9006902002a2ab4000b2bb7006a2ab400102bb8006b2ab400122bb8006b2ab400052bb8006c2ab400042bb8006db1
-
+
org/apache/geode/distributed/internal/membership/gms/GMSMember,2
fromData,62,2a2bb600482a2bb900490100b500072a2bb9004a0100b5003c2a2bb9004a0100b500092a2bb900490100b500082a2bb8004bb5000a2a2bb8004cb5000bb1
toData,62,2a2bb6003f2b2ab40007b9004002002b2ab4003cb9004102002b2ab40009b9004102002b2ab40008b9004002002ab4000a2bb800422ab4000b2bb80043b1
-
+
org/apache/geode/distributed/internal/membership/gms/locator/FindCoordinatorRequest,2
fromData,97,2a2bb8001dc0001ab500022bb9001e01003d2abb001f591cb70020b50005033e1d1ca2001a2ab400052bb8001dc0001ab90021020057840301a7ffe72a2bb9001e0100b500062a2bb9001e0100b500082a2bb80022b500042a2bb80023b50007b1
toData,114,2ab400022bb800142ab40005c6003a2b2ab40005b900150100b9001602002ab40005b9001701004d2cb9001801009900152cb900190100c0001a4e2d2bb80014a7ffe8a7000a2b03b9001602002b2ab40006b9001602002b2ab40008b9001602002ab400042bb8001b2ab400072bb8001cb1
-
+
org/apache/geode/distributed/internal/membership/gms/locator/FindCoordinatorResponse,2
fromData,105,2a2bb80026c00027b500022a2bb80026c00027b500032a2bb80028b5000a2a2bb80029b5000c2a2bb9002a0100b500092ab400099a00342a2bb9002a0100b500042a2bb9002a0100b500072a2bb9002a0100b500082a2bb80026c0002bb500052a2bb8002cb50006b1
toData,89,2ab400022bb800212ab400032bb800212ab4000a2bb800222ab4000c2bb800232b2ab40009b9002402002b2ab40004b9002402002b2ab40007b9002402002b2ab40008b9002402002ab400052bb800212ab400062bb80025b1
-
+
org/apache/geode/distributed/internal/membership/gms/locator/GetViewRequest,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/distributed/internal/membership/gms/locator/GetViewResponse,2
fromData,12,2a2bb80005c00006b50002b1
toData,9,2ab400022bb80004b1
-
+
org/apache/geode/distributed/internal/membership/gms/messages/HeartbeatMessage,2
fromData,11,2a2bb900110100b50002b1
toData,11,2b2ab40002b900100200b1
-
+
org/apache/geode/distributed/internal/membership/gms/messages/HeartbeatRequestMessage,2
fromData,22,2a2bb900130100b500022a2bb80014c00015b50003b1
toData,19,2b2ab40002b9001102002ab400032bb80012b1
-
+
org/apache/geode/distributed/internal/membership/gms/messages/InstallViewMessage,2
fromData,49,2a2bb700112a2bb900120100b500072ab800132bb90012010032b500052a2bb80014c00015b500022a2bb80014b50006b1
toData,45,2a2bb7000d2b2ab40007b9000e02002b2ab40005b6000fb9000e02002ab400022bb800102ab400062bb80010b1
-
+
org/apache/geode/distributed/internal/membership/gms/messages/JoinRequestMessage,2
fromData,48,2a2bb8001bc0001cb500042a2bb8001bb500052a2bb8001db500022a2bb9001e0100b6001f2a2bb900200100b50006b1
toData,45,2ab400042bb800162ab400052bb800162ab400022bb800172b2ab60018b9001902002b2ab40006b9001a0200b1
-
+
org/apache/geode/distributed/internal/membership/gms/messages/JoinResponseMessage,2
fromData,47,2a2bb8001bc0001cb500022a2bb8001bc0001db500032a2bb8001eb500072a2bb8001fb500082a2bb8001fb50006b1
toData,41,2ab400022bb800182ab400032bb800182ab400072bb800192ab400082bb8001a2ab400062bb8001ab1
-
+
org/apache/geode/distributed/internal/membership/gms/messages/LeaveRequestMessage,2
fromData,20,2a2bb8000cc0000db500032a2bb8000eb50004b1
toData,17,2ab400032bb8000a2ab400042bb8000bb1
-
+
org/apache/geode/distributed/internal/membership/gms/messages/RemoveMemberMessage,2
fromData,20,2a2bb80015c00016b500032a2bb80017b50004b1
toData,17,2ab400032bb800132ab400042bb80014b1
-
+
org/apache/geode/distributed/internal/membership/gms/messages/SuspectMembersMessage,2
fromData,53,2bb9001b01003d033e1d1ca20029bb0016592bb8001cc0001d2bb8001eb7001f3a042ab400031904b90020020057840301a7ffd8b1
toData,81,2ab40003c600452b2ab40003b900110100b9001202002ab40003b9001301004d2cb9001401009900202cb900150100c000164e2db600172bb800182db600192bb8001aa7ffdda7000a2b03b900120200b1
-
+
org/apache/geode/distributed/internal/membership/gms/messages/ViewAckMessage,2
fromData,37,2a2bb7000e2a2bb9000f0100b500032a2bb900100100b500042a2bb80011c00012b50005b1
toData,34,2a2bb7000a2b2ab40003b9000b02002b2ab40004b9000c02002ab400052bb8000db1
-
+
org/apache/geode/distributed/internal/membership/gms/mgr/LocalViewMessage,2
fromData,8,bb000859b70009bf
toData,8,bb000859b70009bf
-
+
org/apache/geode/distributed/internal/streaming/StreamingOperation$RequestStreamingMessage,2
fromData,16,2a2bb700202a2bb900210100b50003b1
toData,16,2a2bb700222b2ab40003b900230200b1
-
+
org/apache/geode/distributed/internal/streaming/StreamingOperation$StreamingReplyMessage,2
fromData,339,2a2bb700142bb9001501003d2a2bb900150100b500102a2bb900160100b500112a2bb900160100b500032bb800174e2db20018b600199e000704a700040336041c02a0000b2a01b50002a701082a1cb5000e2abb001a591cb7001bb500022ab4000399000704b8001c2ab40008b8001d3a051905c1001e3606013a07150699000d1905c0001eb6001f3a0703360803360915091ca20087b20020c6000cb2002006b900210200150699000fb80022990009043608a700672bb800233a0a150699004a1907c600451907b90024010099003b1504360b150b99001715099a0012190ac100259a000704a7000403360b150b990019bb0026591907c00027190ac00028c00028b700293a0a2ab40002190ab9002a020057840901a7ff7915089900172a04b50004b20020c6000cb2002005b9002102002ab4000399001a03b8001ca700133a0c2ab4000399000703b8001c190cbfb1
toData,85,2a2bb7002b2ab4000dc7000d2b02b9002c0200a7000d2b2ab4000eb9002c02002b2ab40010b9002c02002b2ab40011b9002d02002b2ab40003b9002d02002ab4000dc600122ab4000e9e000b2ab4000d2bb6002eb1
-
+
org/apache/geode/distributed/internal/tcpserver/InfoRequest,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/distributed/internal/tcpserver/InfoResponse,2
fromData,9,2a2bb80003b50002b1
toData,9,2ab400022bb80004b1
-
+
org/apache/geode/distributed/internal/tcpserver/ShutdownRequest,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/distributed/internal/tcpserver/ShutdownResponse,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/distributed/internal/tcpserver/VersionRequest,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/distributed/internal/tcpserver/VersionResponse,2
fromData,11,2a2bb900060100b50004b1
toData,11,2b2ab40004b900050200b1
-
+
org/apache/geode/internal/DSFIDFactory,2
fromData,8,bb000259b70003bf
toData,8,bb000259b70003bf
-
+
org/apache/geode/internal/InternalDataSerializer$RegistrationMessage,2
fromData,39,2a2bb700282bb800292a2bb8002ab500042a2bb9002b0100b500062a2bb8002cc00008b50009b1
toData,32,2a2bb700242ab400042bb800252b2ab40006b9002602002ab400092bb80027b1
-
+
org/apache/geode/internal/InternalInstantiator$RegistrationContextMessage,2
fromData,14,2a2bb7001a2a2bb8001bb5000db1
toData,14,2a2bb7001c2ab4000d2bb8001db1
-
+
org/apache/geode/internal/InternalInstantiator$RegistrationMessage,3
fromDataProblem,38,2ab4000bc7000e2abb001b59b7001cb5000b2ab4000b2bb6001d572ab4000b121eb6001d57b1
fromData,125,2a2bb7001f2a2bb80020b500122a2bb80020b50013b80021c6004f2a2ab40012b80022b50003a7001b4d2ab2002404bd002559032c53b60026b700272a01b500032a2ab40013b80022b50005a7001b4d2ab2002804bd002559032c53b60026b700272a01b500052a2bb900290100b500072a2bb8002ac00009b5000ab1
toData,46,2a2bb700162ab40003b600172bb800182ab40005b600172bb800182b2ab40007b9001902002ab4000a2bb8001ab1
-
+
org/apache/geode/internal/ManagerInfo,2
fromData,61,2a2bb900540100b500182a2bb900540100b500192a2bb900540100b5001a2bb9005501003d1c9e00161cbc084e2b2db9005602002a2db80057b5001bb1
toData,74,2b2ab40018b9005002002b2ab40019b9005002002b2ab4001ab9005002002ab4001bc7000d2b03b900510200a7001d2ab4001bb600524d2b2cbeb9005102002b2c032cbeb900530400b1
-
+
org/apache/geode/internal/admin/ClientMembershipMessage,2
fromData,32,2a2bb7000d2a2bb8000eb500022a2bb8000eb500032a2bb9000f0100b50004b1
toData,32,2a2bb7000a2ab400022bb8000b2ab400032bb8000b2b2ab40004b9000c0200b1
-
+
org/apache/geode/internal/admin/remote/AddHealthListenerRequest,2
fromData,17,2a2bb700102a2bb80011c00012b50007b1
toData,14,2a2bb7000e2ab400072bb8000fb1
-
+
org/apache/geode/internal/admin/remote/AddHealthListenerResponse,2
fromData,16,2a2bb7000c2a2bb9000d0100b50008b1
toData,16,2a2bb7000a2b2ab40008b9000b0200b1
-
+
org/apache/geode/internal/admin/remote/AddStatListenerRequest,2
fromData,26,2a2bb700112a2bb900120100b500042a2bb900130100b50006b1
toData,26,2a2bb7000e2b2ab40004b9000f03002b2ab40006b900100200b1
-
+
org/apache/geode/internal/admin/remote/AddStatListenerResponse,2
fromData,16,2a2bb7000c2a2bb9000d0100b50008b1
toData,16,2a2bb7000a2b2ab40008b9000b0200b1
-
+
org/apache/geode/internal/admin/remote/AdminConsoleDisconnectMessage,2
fromData,34,2a2bb7001a2a2bb9001b0100b500052a2bb9001b0100b500042a2bb8001cb50007b1
toData,34,2a2bb700172b2ab40005b9001802002b2ab40004b9001802002ab400072bb80019b1
-
+
org/apache/geode/internal/admin/remote/AdminConsoleMessage,2
fromData,16,2a2bb7000f2a2bb900100100b50005b1
toData,16,2a2bb7000d2b2ab40005b9000e0200b1
-
+
org/apache/geode/internal/admin/remote/AdminFailureResponse,2
fromData,17,2a2bb700092a2bb8000ac0000bb50005b1
toData,14,2a2bb700072ab400052bb80008b1
-
+
org/apache/geode/internal/admin/remote/AdminRequest,2
fromData,24,2a2bb7002b2a2bb9002c0100b500052a2bb8002db50003b1
toData,24,2a2bb700282b2ab40005b9002902002ab400032bb8002ab1
-
+
org/apache/geode/internal/admin/remote/AdminResponse,2
fromData,16,2a2bb700062a2bb900070100b50002b1
toData,16,2a2bb700042b2ab40002b900050200b1
-
+
org/apache/geode/internal/admin/remote/AlertLevelChangeMessage,2
fromData,16,2a2bb700132a2bb900140100b50004b1
toData,16,2a2bb700112b2ab40004b900120200b1
-
+
org/apache/geode/internal/admin/remote/AlertListenerMessage,2
fromData,69,2a2bb7001f2a2bb900200100b500062a2bb80021c00022b500072a2bb80023b500082a2bb80023b5000a2a2bb900240100b5000b2a2bb80023b5000c2a2bb80023b5000db1
toData,66,2a2bb7001a2b2ab40006b9001b02002ab400072bb8001c2ab400082bb8001d2ab4000a2bb8001d2b2ab4000bb9001e03002ab4000c2bb8001d2ab4000d2bb8001db1
-
+
org/apache/geode/internal/admin/remote/AlertsNotificationMessage,2
fromData,20,2a2bb700052a2bb80006c00007c00007b50003b1
toData,14,2a2bb700022ab400032bb80004b1
-
+
org/apache/geode/internal/admin/remote/AppCacheSnapshotMessage,2
fromData,16,2a2bb700122a2bb900130100b50005b1
toData,16,2a2bb700102b2ab40005b900110200b1
-
+
org/apache/geode/internal/admin/remote/BridgeServerRequest,2
fromData,47,2a2bb700182a2bb900190100b500052a2bb900190100b500062a2bb8001ac0001bb5000a2a2bb900190100b5000fb1
toData,44,2a2bb700152b2ab40005b9001602002b2ab40006b9001602002ab4000a2bb800172b2ab4000fb900160200b1
-
+
org/apache/geode/internal/admin/remote/BridgeServerResponse,2
fromData,28,2a2bb700282a2bb80029c0000fb5000b2a2bb80029c00023b50024b1
toData,22,2a2bb700262ab4000b2bb800272ab400242bb80027b1
-
+
org/apache/geode/internal/admin/remote/CacheConfigRequest,2
fromData,36,2a2bb700112a2bb900120100b500032a2bb900130100b500042a2bb900130100b50006b1
toData,36,2a2bb7000e2b2ab40003b9000f02002b2ab40004b9001002002b2ab40006b900100200b1
-
+
org/apache/geode/internal/admin/remote/CacheConfigResponse,2
fromData,28,2a2bb7001c2a2bb8001dc00014b500092a2bb8001dc00017b50018b1
toData,22,2a2bb7001a2ab400092bb8001b2ab400182bb8001bb1
-
+
org/apache/geode/internal/admin/remote/CacheInfoRequest,2
fromData,6,2a2bb7000bb1
toData,6,2a2bb7000ab1
-
+
org/apache/geode/internal/admin/remote/CacheInfoResponse,2
fromData,17,2a2bb7000f2a2bb80010c00008b5000ab1
toData,14,2a2bb7000d2ab4000a2bb8000eb1
-
+
org/apache/geode/internal/admin/remote/CancelStatListenerRequest,2
fromData,16,2a2bb7000d2a2bb9000e0100b50003b1
toData,16,2a2bb7000b2b2ab40003b9000c0200b1
-
+
org/apache/geode/internal/admin/remote/CancelStatListenerResponse,2
fromData,6,2a2bb7000ab1
toData,6,2a2bb70009b1
-
+
org/apache/geode/internal/admin/remote/CancellationMessage,2
fromData,16,2a2bb7000c2a2bb9000d0100b50004b1
toData,16,2a2bb7000a2b2ab40004b9000b0200b1
-
+
org/apache/geode/internal/admin/remote/ChangeRefreshIntervalMessage,2
fromData,16,2a2bb700072a2bb900080100b50003b1
toData,16,2a2bb700052b2ab40003b900060300b1
-
+
org/apache/geode/internal/admin/remote/ClientHealthStats,4
fromData,73,2a2bb80011b500052a2bb80011b500062a2bb80011b500072a2bb80011b500082a2bb80011b500092a2bb80011b5000b2a2bb80012b5000a2a2bb80013b5000c2a2bb80014b50004b1
fromDataPre_GFE_8_0_0_0,65,2a2bb80011b500052a2bb80011b500062a2bb80011b500072a2bb80011b500082a2bb80011b500092a2bb80011b5000b2a2bb80012b5000a2a2bb80013b5000cb1
toData,73,2ab400052bb8000d2ab400062bb8000d2ab400072bb8000d2ab400082bb8000d2ab400092bb8000d2ab4000b2bb8000d2ab4000a2bb8000e2ab4000c2bb8000f2ab400042bb80010b1
toDataPre_GFE_8_0_0_0,65,2ab400052bb8000d2ab400062bb8000d2ab400072bb8000d2ab400082bb8000d2ab400092bb8000d2ab4000b2bb8000d2ab4000a2bb8000e2ab4000c2bb8000fb1
-
+
org/apache/geode/internal/admin/remote/CompactRequest,2
fromData,6,2a2bb70027b1
toData,6,2a2bb70028b1
-
+
org/apache/geode/internal/admin/remote/CompactResponse,2
fromData,14,2a2bb700042a2bb80005b50003b1
toData,14,2a2bb700062ab400032bb80007b1
-
+
org/apache/geode/internal/admin/remote/DestroyEntryMessage,2
fromData,25,2a2bb7001b2a2bb8001cc0001db500042a2bb8001cb50005b1
toData,22,2a2bb700192ab400042bb8001a2ab400052bb8001ab1
-
+
org/apache/geode/internal/admin/remote/DestroyRegionMessage,2
fromData,17,2a2bb7001a2a2bb8001bc0001cb50004b1
toData,14,2a2bb700182ab400042bb80019b1
-
+
org/apache/geode/internal/admin/remote/DurableClientInfoRequest,2
fromData,28,2a2bb7000c2a2bb8000db500032a2bb9000e0100b500042ab80005b1
toData,24,2a2bb700092ab400032bb8000a2b2ab40004b9000b0200b1
-
+
org/apache/geode/internal/admin/remote/DurableClientInfoResponse,2
fromData,16,2a2bb700172a2bb900180100b50002b1
toData,16,2a2bb700152b2ab40002b900160200b1
-
+
org/apache/geode/internal/admin/remote/FetchDistLockInfoRequest,2
fromData,6,2a2bb7000bb1
toData,6,2a2bb7000ab1
-
+
org/apache/geode/internal/admin/remote/FetchDistLockInfoResponse,2
fromData,20,2a2bb7001e2a2bb8001fc00018c00018b50019b1
toData,14,2a2bb7001c2ab400192bb8001db1
-
+
org/apache/geode/internal/admin/remote/FetchHealthDiagnosisRequest,2
fromData,27,2a2bb7000d2bb9000e01003d2bb8000fc000104e2a1c2db70003b1
toData,24,2a2bb7000a2b2ab40005b9000b02002ab400062bb8000cb1
-
+
org/apache/geode/internal/admin/remote/FetchHealthDiagnosisResponse,2
fromData,14,2a2bb7000c2a2bb8000db50008b1
toData,14,2a2bb7000a2ab400082bb8000bb1
-
+
org/apache/geode/internal/admin/remote/FetchHostRequest,2
fromData,6,2a2bb7000bb1
toData,6,2a2bb7000ab1
-
+
org/apache/geode/internal/admin/remote/FetchHostResponse,2
fromData,67,2a2bb700342a2bb80035b500132a2bb80036c00037b5000e2a2bb80036c00014b500262a2bb80036c00014b500192a2bb900380100b5002d2a2bb900390100b50002b1
toData,58,2a2bb7002f2ab400132bb800302ab4000e2bb800312ab400262bb800312ab400192bb800312b2ab4002db9003203002b2ab40002b900330200b1
-
+
org/apache/geode/internal/admin/remote/FetchResourceAttributesRequest,2
fromData,16,2a2bb7000d2a2bb9000e0100b50003b1
toData,16,2a2bb7000b2b2ab40003b9000c0300b1
-
+
org/apache/geode/internal/admin/remote/FetchResourceAttributesResponse,2
fromData,20,2a2bb7000f2a2bb80010c00011c00011b50009b1
toData,14,2a2bb7000d2ab400092bb8000eb1
-
+
org/apache/geode/internal/admin/remote/FetchStatsRequest,2
fromData,14,2a2bb7000c2a2bb8000db50003b1
toData,14,2a2bb7000a2ab400032bb8000bb1
-
+
org/apache/geode/internal/admin/remote/FetchStatsResponse,2
fromData,20,2a2bb700152a2bb80016c00011c00011b5000fb1
toData,14,2a2bb700132ab4000f2bb80014b1
-
+
org/apache/geode/internal/admin/remote/FetchSysCfgRequest,2
fromData,6,2a2bb7000bb1
toData,6,2a2bb7000ab1
-
+
org/apache/geode/internal/admin/remote/FetchSysCfgResponse,2
fromData,17,2a2bb7000d2a2bb8000ec0000fb50009b1
toData,14,2a2bb7000b2ab400092bb8000cb1
-
+
org/apache/geode/internal/admin/remote/FlushAppCacheSnapshotMessage,2
fromData,6,2a2bb70006b1
toData,6,2a2bb70005b1
-
+
org/apache/geode/internal/admin/remote/HealthListenerMessage,2
fromData,27,2a2bb7000e2a2bb9000f0100b500042a2bb80010c00011b50005b1
toData,24,2a2bb7000b2b2ab40004b9000c02002ab400052bb8000db1
-
+
org/apache/geode/internal/admin/remote/LicenseInfoRequest,2
fromData,6,2a2bb7000bb1
toData,6,2a2bb7000ab1
-
+
org/apache/geode/internal/admin/remote/LicenseInfoResponse,2
fromData,17,2a2bb7000b2a2bb8000cc00005b50007b1
toData,14,2a2bb700092ab400072bb8000ab1
-
+
org/apache/geode/internal/admin/remote/MissingPersistentIDsRequest,1
fromData,6,2a2bb7002eb1
-
+
org/apache/geode/internal/admin/remote/MissingPersistentIDsResponse,2
fromData,124,2a2bb700072bb9000801003d2abb0009591cb7000ab50002033e1d1ca20024bb000b59b7000c3a0419042bb8000d2ab400021904b9000e020057840301a7ffdd2bb9000801003d2abb0009591cb7000ab50003033e1d1ca20024bb000b59b7000c3a0419042bb8000d2ab400031904b9000e020057840301a7ffddb1
toData,110,2a2bb7000f2b2ab40002b900100100b9001102002ab40002b9001201004d2cb9001301009900152cb900140100c000154e2d2bb80016a7ffe82b2ab40003b900100100b9001102002ab40003b9001201004d2cb9001301009900152cb900140100c000154e2d2bb80016a7ffe8b1
-
+
org/apache/geode/internal/admin/remote/ObjectDetailsRequest,2
fromData,24,2a2bb700182a2bb80019b500032a2bb9001a0100b50004b1
toData,24,2a2bb700152ab400032bb800162b2ab40004b900170200b1
-
+
org/apache/geode/internal/admin/remote/ObjectDetailsResponse,2
fromData,33,2a2bb700192a2bb8001ab5000b2a2bb8001ab5000d2a2bb8001ac0000eb50011b1
toData,30,2a2bb700172ab4000b2bb800182ab4000d2bb800182ab400112bb80018b1
-
+
org/apache/geode/internal/admin/remote/ObjectNamesRequest,2
fromData,6,2a2bb70014b1
toData,6,2a2bb70013b1
-
+
org/apache/geode/internal/admin/remote/ObjectNamesResponse,2
fromData,17,2a2bb700162a2bb80017c00008b5000ab1
toData,14,2a2bb700142ab4000a2bb80015b1
-
+
org/apache/geode/internal/admin/remote/PrepareRevokePersistentIDRequest,2
fromData,35,2a2bb700282abb002959b7002ab500022ab400022bb8002b2a2bb9002c0100b50003b1
toData,24,2a2bb7002d2ab400022bb8002e2b2ab40003b9002f0200b1
-
+
org/apache/geode/internal/admin/remote/RefreshMemberSnapshotRequest,2
fromData,6,2a2bb70009b1
toData,6,2a2bb70008b1
-
+
org/apache/geode/internal/admin/remote/RefreshMemberSnapshotResponse,2
fromData,17,2a2bb7000e2a2bb8000fc00008b5000ab1
toData,14,2a2bb7000c2ab4000a2bb8000db1
-
+
org/apache/geode/internal/admin/remote/RegionAdminMessage,2
fromData,14,2a2bb700072a2bb80008b50002b1
toData,14,2a2bb700052ab400022bb80006b1
-
+
org/apache/geode/internal/admin/remote/RegionAdminRequest,2
fromData,14,2a2bb7000d2a2bb8000eb50002b1
toData,14,2a2bb7000b2ab400022bb8000cb1
-
+
org/apache/geode/internal/admin/remote/RegionAttributesRequest,2
fromData,6,2a2bb7000db1
toData,6,2a2bb7000cb1
-
+
org/apache/geode/internal/admin/remote/RegionAttributesResponse,2
fromData,17,2a2bb7000c2a2bb8000dc00005b50008b1
toData,14,2a2bb7000a2ab400082bb8000bb1
-
+
org/apache/geode/internal/admin/remote/RegionRequest,2
fromData,57,2a2bb700142a2bb900150100b500032a2bb900150100b500052a2bb80016b500062a2bb80016b500082a2bb80017c00018b5000b2ab80007b1
toData,50,2a2bb700102b2ab40003b9001102002b2ab40005b9001102002ab400062bb800122ab400082bb800122ab4000b2bb80013b1
-
+
org/apache/geode/internal/admin/remote/RegionResponse,2
fromData,33,2a2bb700262a2bb80027b500162a2bb80027b5001b2a2bb80028c0001db5001eb1
toData,30,2a2bb700232ab400162bb800242ab4001b2bb800242ab4001e2bb80025b1
-
+
org/apache/geode/internal/admin/remote/RegionSizeRequest,2
fromData,6,2a2bb70015b1
toData,6,2a2bb70014b1
-
+
org/apache/geode/internal/admin/remote/RegionSizeResponse,2
fromData,26,2a2bb7000e2a2bb9000f0100b500082a2bb9000f0100b5000ab1
toData,26,2a2bb7000c2b2ab40008b9000d02002b2ab4000ab9000d0200b1
-
+
org/apache/geode/internal/admin/remote/RegionStatisticsRequest,2
fromData,6,2a2bb7000db1
toData,6,2a2bb7000cb1
-
+
org/apache/geode/internal/admin/remote/RegionStatisticsResponse,2
fromData,17,2a2bb7000c2a2bb8000dc00005b50008b1
toData,14,2a2bb7000a2ab400082bb8000bb1
-
+
org/apache/geode/internal/admin/remote/RegionSubRegionSizeRequest,2
fromData,6,2a2bb70010b1
toData,6,2a2bb7000fb1
-
+
org/apache/geode/internal/admin/remote/RegionSubRegionsSizeResponse,2
fromData,27,2a2bb700212a2bb900220100b500062a2bb80023c0000ab50002b1
toData,24,2a2bb7001e2b2ab40006b9001f02002ab400022bb80020b1
-
+
org/apache/geode/internal/admin/remote/RemoteBridgeServer,2
fromData,217,2a2bb900420100b500032a2bb900430100b5000a2a2bb900430100b500102a2bb900420100b500122a2bb900420100b500162a2bb900420100b5000e2a2bb900420100b500182a2bb900420100b5001a2a2bb900420100b500142a2bb80044b600452a2bb80046b600472a2bb80044b600482a2bb80049c0004ab6004b2a2bb8004cb6004d2a2bb900420100b5000c2a2bb900430100b500232ab600412bb900420100b9002902002ab600412bb80044b9002702002bb800444d2cc600102ab600412cb9002b0200a700102ab600412bb80044b9002d0200b1
toData,217,2b2ab40003b9003b02002b2ab4000ab9003c02002b2ab40010b9003c02002b2ab40012b9003b02002b2ab40016b9003b02002b2ab4000eb9003b02002b2ab40018b9003b02002b2ab4001ab9003b02002b2ab40014b9003b02002ab400052bb8003d2ab4001c2bb8003e2ab400072bb8003d2ab4001f2bb8003f2ab400212bb800402b2ab4000cb9003b02002b2ab40023b9003c02002b2ab60041b900280100b9003b02002ab60041b9002601002bb8003d2ab60041b9002a01002bb8003d2ab60041b9002a0100c700102ab60041b9002c01002bb8003db1
-
+
org/apache/geode/internal/admin/remote/RemoteCacheInfo,2
fromData,106,2a2bb80030b500032a2bb900310100b500052a2bb900320100b500072a2bb900310100b500092a2bb900310100b5000b2a2bb900310100b5000d2a2bb900310100b5000f2a2bb80033b500102a2bb80034c00020b500112a2bb80035b500122a2bb900320100b50029b1
toData,103,2ab400032bb8002a2b2ab40005b9002b02002b2ab40007b9002c02002b2ab40009b9002b02002b2ab4000bb9002b02002b2ab4000db9002b02002b2ab4000fb9002b02002ab400102bb8002d2ab400112bb8002e2ab400122bb8002f2b2ab40029b9002c0200b1
-
+
org/apache/geode/internal/admin/remote/RemoteCacheStatistics,2
fromData,51,2a2bb900100100b500032a2bb900100100b500052a2bb900100100b500072a2bb900100100b500092a2bb900110100b5000bb1
toData,51,2b2ab40003b9000e03002b2ab40005b9000e03002b2ab40007b9000e03002b2ab40009b9000e03002b2ab4000bb9000f0200b1
-
+
org/apache/geode/internal/admin/remote/RemoteDLockInfo,2
fromData,76,2a2bb80017b500022a2bb80017b500052a2bb80017b500032a2bb900180100b500062a2bb900190100b500092a2bb8001ac0001bb500072a2bb9001c0100b5000c2a2bb9001c0100b5000bb1
toData,73,2ab400022bb800122ab400052bb800122ab400032bb800122b2ab40006b9001302002b2ab40009b9001402002ab400072bb800152b2ab4000cb9001603002b2ab4000bb900160300b1
-
+
org/apache/geode/internal/admin/remote/RemoteEntrySnapshot,2
fromData,36,2a2bb80023b500052a2bb80023b500112a2bb80023c00014b500172a2bb80023b50013b1
toData,33,2ab400052bb800222ab400112bb800222ab400172bb800222ab400132bb80022b1
-
+
org/apache/geode/internal/admin/remote/RemoteObjectName,2
fromData,27,2a2bb80013b500042a2bb80013b500062a2bb900140100b50008b1
toData,27,2ab400042bb800112ab400062bb800112b2ab40008b900120200b1
-
+
org/apache/geode/internal/admin/remote/RemoteRegionAttributes,2
fromData,404,2a2bb80080b500082a2bb80080b5000a2a2bb80081b5000d2a2bb80080b5007a2a2bb80082c00083b5000f2a2bb80082c00083b500112a2bb80082c00084b500132a2bb80082c00084b500152a2bb80082c00084b500172a2bb80080b500192a2bb80082c00084b5001b2a2bb80080b5001d2a2bb80082c00085b5001f2a2bb80082c00086b500212a2bb900870100b500232a2bb900870100b500252a2bb900880100b500272a2bb900890100b5002b2a2bb900880100b5002d2a2bb900870100b5002f2a2bb900870100b500312a2bb900870100b500332a2bb900870100b500352a2bb900870100b500372a2bb80082c0008ab5003b2a2bb80082c0008bc0008bb5003d2a2bb80082c0008cc0008cb5003f2a2bb900870100b5007f2a2bb80082c0008db500412a2bb80082c0008eb500432a2bb80082c0008fb500452a2bb80082c00002b500042a2bb900870100b500472a2bb80080b500392a2bb900870100b5004b2a2bb80081b5004e2a2bb900870100b500052a2bb900870100b500292a2bb80080b500522a2bb900870100b50054b1
toData,353,2ab400082bb800782ab4000a2bb800782ab4000d2bb800792ab4007a2bb800782ab4000f2bb8007b2ab400112bb8007b2ab400132bb8007b2ab400152bb8007b2ab400172bb8007b2ab400192bb800782ab4001b2bb8007b2ab4001d2bb800782ab4001f2bb8007b2ab400212bb8007b2b2ab40023b9007c02002b2ab40025b9007c02002b2ab40027b9007d02002b2ab4002bb9007e02002b2ab4002db9007d02002b2ab4002fb9007c02002b2ab40031b9007c02002b2ab40033b9007c02002b2ab40035b9007c02002b2ab40037b9007c02002ab4003b2bb8007b2ab4003d2bb8007b2ab4003f2bb8007b2b2ab4007fb9007c02002ab400412bb8007b2ab400432bb8007b2ab400452bb8007b2ab400042bb8007b2b2ab40047b9007c02002ab400392bb800782b2ab4004bb9007c02002ab4004e2bb800792b2ab40005b9007c02002b2ab40029b9007c02002ab400522bb800782b2ab40054b9007c0200b1
-
+
org/apache/geode/internal/admin/remote/RemoteRegionSnapshot,2
fromData,59,2a2bb80029b500032a2bb8002ac00009b5000c2a2bb8002ac00005b500072a2bb9002b0100b500102a2bb9002b0100b500122a2bb8002ab5001cb1
toData,53,2ab400032bb800262ab4000c2bb800272ab400072bb800272b2ab40010b9002802002b2ab40012b9002802002ab4001c2bb80027b1
-
+
org/apache/geode/internal/admin/remote/RemoteStat,2
fromData,66,2a2bb8002ab500052a2bb9002b0100b5000e2a2bb9002c0100b500032a2bb8002ab500072a2bb8002ab5000b2a2bb8002dc0002eb500102a2bb9002f0100b50009b1
toData,63,2ab400052bb800252b2ab4000eb9002602002b2ab40003b9002702002ab400072bb800252ab4000b2bb800252ab400102bb800282b2ab40009b900290200b1
-
+
org/apache/geode/internal/admin/remote/RemoteStatResource,2
fromData,45,2a2bb9001a0100b500032a2bb9001a0100b500052a2bb8001bb500072a2bb8001bb5000a2a2bb8001bb5000cb1
toData,45,2b2ab40003b9001803002b2ab40005b9001803002ab400072bb800192ab4000a2bb800192ab4000c2bb80019b1
-
+
org/apache/geode/internal/admin/remote/RemoveHealthListenerRequest,2
fromData,16,2a2bb7000d2a2bb9000e0100b50003b1
toData,16,2a2bb7000b2b2ab40003b9000c0200b1
-
+
org/apache/geode/internal/admin/remote/RemoveHealthListenerResponse,2
fromData,6,2a2bb70008b1
toData,6,2a2bb70007b1
-
+
org/apache/geode/internal/admin/remote/ResetHealthStatusRequest,2
fromData,16,2a2bb7000d2a2bb9000e0100b50003b1
toData,16,2a2bb7000b2b2ab40003b9000c0200b1
-
+
org/apache/geode/internal/admin/remote/ResetHealthStatusResponse,2
fromData,6,2a2bb7000ab1
toData,6,2a2bb70009b1
-
+
org/apache/geode/internal/admin/remote/RevokePersistentIDRequest,2
fromData,25,2a2bb7001c2abb001d59b7001eb500022ab400022bb8001fb1
toData,14,2a2bb700202ab400022bb80021b1
-
+
org/apache/geode/internal/admin/remote/RootRegionRequest,2
fromData,6,2a2bb7000bb1
toData,6,2a2bb7000ab1
-
+
org/apache/geode/internal/admin/remote/RootRegionResponse,2
fromData,34,2a2bb700232a2bb80024c00019c00019b5001a2a2bb80024c00019c00019b5001bb1
toData,22,2a2bb700212ab4001a2bb800222ab4001b2bb80022b1
-
+
org/apache/geode/internal/admin/remote/ShutdownAllGatewayHubsRequest,2
fromData,16,2a2bb700072a2bb900080100b50005b1
toData,16,2a2bb700092b2ab40005b9000a0200b1
-
+
org/apache/geode/internal/admin/remote/ShutdownAllRequest,2
fromData,6,2a2bb70044b1
toData,6,2a2bb70045b1
-
+
org/apache/geode/internal/admin/remote/ShutdownAllResponse,2
fromData,16,2a2bb700072a2bb900080100b50002b1
toData,16,2a2bb700052b2ab40002b900060200b1
-
+
org/apache/geode/internal/admin/remote/SnapshotResultMessage,2
fromData,27,2a2bb7000e2a2bb8000fc00010b500062a2bb900110100b50007b1
toData,24,2a2bb7000b2ab400062bb8000c2b2ab40007b9000d0200b1
-
+
org/apache/geode/internal/admin/remote/StatAlertsManagerAssignMessage,2
fromData,30,2a2bb700102a2bb900110100b500052a2bb80012c00013c00013b50002b1
toData,24,2a2bb7000d2b2ab40005b9000e03002ab400022bb8000fb1
-
+
org/apache/geode/internal/admin/remote/StatListenerMessage,2
fromData,86,2a2bb700112a2bb900120100b500042a2bb900130100b500052a2ab40005bc0ab500062a2ab40005bc07b50007033d1c2ab40005a200212ab400061c2bb9001301004f2ab400071c2bb90014010052840201a7ffddb1
toData,66,2a2bb7000d2b2ab40004b9000e03002b2ab40005b9000f0200033d1c2ab40005a200212b2ab400061c2eb9000f02002b2ab400071c31b900100300840201a7ffddb1
-
+
org/apache/geode/internal/admin/remote/StoreSysCfgRequest,2
fromData,17,2a2bb7000d2a2bb8000ec0000fb50003b1
toData,14,2a2bb7000b2ab400032bb8000cb1
-
+
org/apache/geode/internal/admin/remote/StoreSysCfgResponse,2
fromData,6,2a2bb7000eb1
toData,6,2a2bb7000db1
-
+
org/apache/geode/internal/admin/remote/SubRegionRequest,2
fromData,6,2a2bb7000db1
toData,6,2a2bb7000cb1
-
+
org/apache/geode/internal/admin/remote/SubRegionResponse,2
fromData,34,2a2bb7001f2a2bb80020c00013c00013b500142a2bb80020c00013c00013b50015b1
toData,22,2a2bb7001d2ab400142bb8001e2ab400152bb8001eb1
-
+
org/apache/geode/internal/admin/remote/TailLogRequest,2
fromData,6,2a2bb7000bb1
toData,6,2a2bb7000ab1
-
+
org/apache/geode/internal/admin/remote/TailLogResponse,2
fromData,22,2a2bb7001a2a2bb8001bb5000d2a2bb8001bb5000ab1
toData,22,2a2bb700182ab4000d2bb800192ab4000a2bb80019b1
-
+
org/apache/geode/internal/admin/remote/UpdateAlertDefinitionMessage,2
fromData,30,2a2bb700092a2bb9000a0100b500042a2bb8000bc0000cc0000cb50003b1
toData,24,2a2bb700062b2ab40004b9000702002ab400032bb80008b1
-
+
org/apache/geode/internal/admin/remote/VersionInfoRequest,2
fromData,6,2a2bb7000bb1
toData,6,2a2bb7000ab1
-
+
org/apache/geode/internal/admin/remote/VersionInfoResponse,2
fromData,14,2a2bb7000a2a2bb8000bb50006b1
toData,14,2a2bb700082ab400062bb80009b1
-
+
org/apache/geode/internal/admin/statalerts/BaseDecoratorImpl,2
fromData,12,2a2bb8002bc0002cb50002b1
toData,9,2ab400022bb8002ab1
-
+
org/apache/geode/internal/admin/statalerts/DummyStatisticInfoImpl,2
fromData,31,2a2bb900100100b500022a2bb900100100b500032a2bb900100100b50004b1
toData,31,2b2ab40002b9000f02002b2ab40003b9000f02002b2ab40004b9000f0200b1
-
+
org/apache/geode/internal/admin/statalerts/FunctionDecoratorImpl,2
fromData,14,2a2bb700212a2bb80022b50002b1
toData,14,2a2bb7001f2ab400022bb80020b1
-
+
org/apache/geode/internal/admin/statalerts/GaugeThresholdDecoratorImpl,2
fromData,28,2a2bb700252a2bb80026c00027b500032a2bb80026c00027b50004b1
toData,22,2a2bb700232ab400032bb800242ab400042bb80024b1
-
+
org/apache/geode/internal/admin/statalerts/MultiAttrDefinitionImpl,2
fromData,31,2a2bb8002fb500032a2bb80030b500072a2bb80031c00032c00032b50009b1
toData,25,2ab400032bb8002c2ab400072bb8002d2ab400092bb8002eb1
-
+
org/apache/geode/internal/admin/statalerts/NumberThresholdDecoratorImpl,2
fromData,25,2a2bb700262a2bb80027c00028b500032a2bb80029b50004b1
toData,22,2a2bb700232ab400032bb800242ab400042bb80025b1
-
+
org/apache/geode/internal/admin/statalerts/SingleAttrDefinitionImpl,2
fromData,28,2a2bb80031b500032a2bb80032b500072a2bb80033c00020b50002b1
toData,25,2ab400032bb8002e2ab400072bb8002f2ab400022bb80030b1
-
+
org/apache/geode/internal/admin/statalerts/StatisticInfoImpl,2
fromData,1,b1
toData,1,b1
-
+
org/apache/geode/internal/cache/AbstractRegion,2
toData,6,2a2bb80176b1
fromData,8,bb017759b70178bf
-
+
org/apache/geode/internal/cache/AbstractUpdateOperation$AbstractUpdateMessage,2
fromData,16,2a2bb700182a2bb900190100b5000cb1
toData,16,2a2bb7001a2b2ab4000cb9001b0300b1
-
+
org/apache/geode/internal/cache/AddCacheServerProfileMessage,2
fromData,16,2a2bb7002f2a2bb900300100b50008b1
toData,16,2a2bb7002d2b2ab40008b9002e0200b1
-
+
org/apache/geode/internal/cache/BucketAdvisor$BucketProfile,2
fromData,36,2a2bb700132a2bb900140100b500042a2bb900140100b500062a2bb900140100b50012b1
toData,36,2a2bb700152b2ab40004b9001602002b2ab40006b9001602002b2ab40012b900160200b1
-
+
org/apache/geode/internal/cache/BucketAdvisor$ServerBucketProfile,2
fromData,22,2a2bb700162a2bb80017b500052a2bb80018b50004b1
toData,22,2a2bb700192ab400052bb8001a2ab400042bb8001bb1
-
+
org/apache/geode/internal/cache/BucketServerLocation,2
fromData,39,2a2bb700062a2bb80007b60008b500032a2bb80009b6000ab500042a2bb8000bb6000cb50005b1
toData,39,2a2bb7000d2ab40003b8000e2bb8000f2ab40004b800102bb800112ab40005b800122bb80013b1
-
+
org/apache/geode/internal/cache/BucketServerLocation66,2
fromData,93,2a2bb7000a2a2bb8000bb6000cb500032a2bb8000db6000eb500042a2bb8000fb60010b500052a2bb900110100b500092a2ab40009bd0006b500072ab400099e001d033d1c2ab40009a200132ab400071c2bb8001253840201a7ffebb1
toData,91,2a2bb700132ab40003b800142bb800152ab40004b800162bb800172ab40005b800182bb800192b2ab40009b9001a02002ab400099e00262ab400074d2cbe3e03360415041da200152c1504323a0519052bb8001b840401a7ffebb1
-
+
org/apache/geode/internal/cache/CacheDistributionAdvisor$CacheProfile,2
fromData,113,2a2bb700692bb9006a01003d2a1cb6001e2a1cb7006b9900162abb006c59b7006db500282ab400282bb8006e2a1cb7006f99000e2a2bb80070c00071b5000e2a1cb7007299000e2a2bb80070c00071b5000f2a2bb80070c00073b500192a1cb7007499000e2a2bb80070c00075b50018b1
toData,101,2a2bb700612b2ab6001db9006202002ab40028c6000b2ab400282bb800632ab4000eb9002e01009a000c2a2ab4000e2bb700642ab4000fb9002e01009a000c2a2ab4000f2bb700642ab400192bb800652ab40018b9003201009a000b2ab400182bb80065b1
-
+
org/apache/geode/internal/cache/CacheServerAdvisor$CacheServerProfile,2
fromData,53,2a2bb700112a2bb80012b500042a2bb900130100b500062abb001459b70015b500052ab400052bb800162a2bb900170100b60018b1
toData,42,2a2bb7000b2ab400042bb8000c2b2ab40006b9000d02002ab400052bb8000e2b2ab6000fb900100300b1
-
+
org/apache/geode/internal/cache/ClientRegionEventImpl,2
fromData,14,2a2bb700142a2bb80015b60003b1
toData,14,2a2bb700122ab6000d2bb80013b1
-
+
org/apache/geode/internal/cache/CloseCacheMessage,2
fromData,16,2a2bb700172a2bb900180100b50002b1
toData,16,2a2bb700192b2ab40002b9001a0200b1
-
+
org/apache/geode/internal/cache/ControllerAdvisor$ControllerProfile,2
fromData,6,2a2bb70007b1
toData,6,2a2bb70006b1
-
+
org/apache/geode/internal/cache/CreateRegionProcessor$CreateRegionMessage,2
fromData,45,2a2bb700962a2bb80097b5000a2a2bb80098c00055b500432a2bb900990100b500032a2bb9009a0100b50065b1
toData,42,2a2bb7009c2ab4000a2bb8009d2ab400432bb8009e2b2ab40003b9009f02002b2ab40065b900a00200b1
-
+
org/apache/geode/internal/cache/CreateRegionProcessor$CreateRegionReplyMessage,2
fromData,161,2a2bb700062bb90007010099000e2a2bb80008c00009b5000a2bb9000b01003d1c9a000b2a01b5000ca700352abb000d591cb7000eb5000c033e1d1ca20022bb000f59b700103a0419042bb800112ab4000c1904b6001257840301a7ffdf2bb90007010099000c2a2b03b80013b500142bb9000701009900162abb001559b70016b500172ab400172bb800112a2bb900070100b500182a2bb900190100b50004b1
toData,191,2a2bb7001a2b2ab4000ac6000704a7000403b9001b02002ab4000ac6000b2ab4000a2bb8001c2ab4000cc7000d2b03b9001d0200a700322ab4000cb6001e3d2b1cb9001d0200033e1d1ca2001c2ab4000c1db6001fc0000f3a0419042bb80020840301a7ffe52ab40014c600192b04b9001b02002b2ab40014c0002103b80022a7000a2b03b9001b02002ab40017c600152b04b9001b02002ab400172bb80020a7000a2b03b9001b02002b2ab40018b9001b02002b2ab40004b900230300b1
-
+
org/apache/geode/internal/cache/DestroyOperation$DestroyMessage,2
fromData,45,2a2bb700322a2bb80033c00034b500022a2bb80033b500272bb800354d2cb6003699000b2a2bb80037b50005b1
toData,118,2a2bb700382ab400022bb800392ab400272bb800392ab40003b6003ac000084d2cc1003b99002e2cb6003c4e2db6003d990018b2003e2bb8003f2ab40003b600402bb80041a7000ab200422bb8003fa700262cb60043990018b2003e2bb8003f2ab40003b600402bb80041a7000ab200422bb8003fb1
-
+
org/apache/geode/internal/cache/DestroyOperation$DestroyWithContextMessage,2
fromData,14,2a2bb700102a2bb80011b50008b1
toData,14,2a2bb700122ab400082bb80013b1
-
+
org/apache/geode/internal/cache/DestroyPartitionedRegionMessage,2
fromData,76,2a2bb700442a2bb80045b500062a2bb900460100b80047b500082a2bb900480100b5000a2bb9004801003d2a1cbc0ab5000d033e1d1ca200152ab4000d1d2bb9004801004f840301a7ffecb1
toData,77,2a2bb700492ab400062bb8004a2b2ab40008b4004bb9004c02002b2ab4000ab9004d02002b2ab4000dbeb9004d0200033d1c2ab4000dbea200152b2ab4000d1c2eb9004d0200840201a7ffe8b1
-
+
org/apache/geode/internal/cache/DestroyRegionOperation$DestroyRegionMessage,2
fromData,41,2a2bb700582a2bb80059c0005ab500082a2bb8005bb500112a2bb8005cb5001f2a2bb8005db50029b1
toData,38,2a2bb7005e2ab400082bb8005f2ab400112bb800602ab4001f2bb800612ab400292bb80062b1
-
+
org/apache/geode/internal/cache/DestroyRegionOperation$DestroyRegionWithContextMessage,2
fromData,14,2a2bb7000e2a2bb8000fb50006b1
toData,14,2a2bb700102ab400062bb80011b1
-
+
org/apache/geode/internal/cache/DistTXCommitMessage,2
fromData,14,2a2bb700302a2bb80031b50003b1
toData,14,2a2bb700322ab400032bb80033b1
-
+
org/apache/geode/internal/cache/DistTXCommitMessage$DistTXCommitReplyMessage,2
fromData,17,2a2bb700192a2bb8001ac0001bb50004b1
toData,14,2a2bb700172ab400042bb80018b1
-
+
org/apache/geode/internal/cache/DistTXPrecommitMessage,2
fromData,14,2a2bb700332a2bb80034b5000ab1
toData,14,2a2bb700312ab4000a2bb80032b1
-
+
org/apache/geode/internal/cache/DistTXPrecommitMessage$DistTXPrecommitReplyMessage,2
fromData,17,2a2bb700192a2bb8001ac0001bb50004b1
toData,14,2a2bb700172ab400042bb80018b1
-
+
org/apache/geode/internal/cache/DistTXPrecommitMessage$DistTxPrecommitResponse,2
fromData,17,2a2bb80008b500032a2bb80009b50004b1
toData,17,2ab400032bb800062ab400042bb80007b1
-
+
org/apache/geode/internal/cache/DistTXRollbackMessage,2
fromData,6,2a2bb70015b1
toData,6,2a2bb70016b1
-
+
org/apache/geode/internal/cache/DistTXRollbackMessage$DistTXRollbackReplyMessage,2
fromData,14,2a2bb700192a2bb8001ab50004b1
toData,14,2a2bb700172ab400042bb80018b1
-
+
org/apache/geode/internal/cache/DistributedCacheOperation$CacheOperationMessage,2
-fromData,291,2bb9009501003d2bb9009501003e2a1cb500962a1c2bb600972a2bb80098b500232a2bb900990100b8009ab500092a1c1100807e99000704a7000403b500042a1c10087e99000704a7000403b500581c1102007e99000b2a2bb8009bb500882a1c1104007e99000704a7000403b500072a1c10407e99000704a7000403b5001d2ab4001d9900382bb900990100360415049a000b2a03b5001ea7001b150404a0000b2a04b5001ea7000dbb009c59129db7009ebf2a2bb8009fb5001f1c1101007e99000704a700040336042a1c1108007e99000704a7000403b500a015049900162abb00a159b700a2b5000e2ab4000e2bb800a31c1110007e99001c1c1120007e99000704a700040336052a15052bb800a4b5000a1d1104007e9900082a04b5000fb1
-toData,202,033d033e2a1cb600a53d2a1db600a63e2b1cb900a702002b1db900a702002ab4000d9e000d2b2ab4000db900a802002ab400232bb800a92b2ab40009b400aab900ab02002ab40088c6000b2ab400882bb800ac2ab4001d9900542b2ab4001e99000704a7000403b900ab02002ab4001eb800ad36042ab4001e9a001f2ab4001fc10020990015013a052ab4001fc00020c000203a06a7000c2ab4001f3a05013a061504190519062bb800ae2ab4000ec6000b2ab4000e2bb800af2ab4000ac6000b2ab4000a2bb800afb1
-
+fromData,291,2bb9009501003d2bb9009501003e2a1cb500962a1c2bb600972a2bb80098b500102a2bb900990100b8009ab500092a1c1100807e99000704a7000403b500042a1c10087e99000704a7000403b500581c1102007e99000b2a2bb8009bb500882a1c1104007e99000704a7000403b500072a1c10407e99000704a7000403b5001e2ab4001e9900382bb900990100360415049a000b2a03b5001fa7001b150404a0000b2a04b5001fa7000dbb009c59129db7009ebf2a2bb8009fb500201c1101007e99000704a700040336042a1c1108007e99000704a7000403b500a015049900162abb00a159b700a2b5000e2ab4000e2bb800a31c1110007e99001c1c1120007e99000704a700040336052a15052bb800a4b5000a1d1104007e9900082a04b5000fb1
+toData,202,033d033e2a1cb600a53d2a1db600a63e2b1cb900a702002b1db900a702002ab4000d9e000d2b2ab4000db900a802002ab400102bb800a92b2ab40009b400aab900ab02002ab40088c6000b2ab400882bb800ac2ab4001e9900542b2ab4001f99000704a7000403b900ab02002ab4001fb800ad36042ab4001f9a001f2ab40020c10021990015013a052ab40020c00021c000213a06a7000c2ab400203a05013a061504190519062bb800ae2ab4000ec6000b2ab4000e2bb800af2ab4000ac6000b2ab4000a2bb800afb1
+
org/apache/geode/internal/cache/DistributedClearOperation$ClearRegionMessage,2
fromData,53,2a2bb700212ab800222bb90023010032b500022a2bb80024c00025b500062a2bb80024c00026b500172a2bb80024c00027b50011b1
toData,43,2a2bb700282b2ab40002b60016b9002902002ab400062bb8002a2ab400172bb8002a2ab400112bb8002ab1
-
+
org/apache/geode/internal/cache/DistributedClearOperation$ClearRegionWithContextMessage,2
fromData,14,2a2bb7000e2a2bb8000fb50006b1
toData,14,2a2bb700102ab400062bb80011b1
-
+
org/apache/geode/internal/cache/DistributedPutAllOperation$EntryVersionsList,2
fromData,268,2bb9002201003d1c077e07a0000704a70004033e1c10207e1020a0000704a70004033604b80012b20013b900140200990011b8001212231cb80016b9002403001d9900ca2bb80025883605b80012b20013b900140200990015b80012b2001312261505b80027b900280400bb0029591505b700023a0603360715071505a2008e2bb90022010036081508aa000000007b00000000000000030000001e0000002700000035000000542a01b6000757a700572a15042bb8002ab6000757a7004915042bb8002a3a0919061909b6001cb9002b0200572a1909b6000757a7002a15042bb8002a3a092bb8002588360a19091906150ab9002c0200c0002db600212a1909b6000757840701a7ff71b1
toData,289,033d033e2ab600089e003d1c07803d043e2ab6000b3a041904b9000c01009900271904b9000d0100c0000a3a051905c600131905c1001199000e1c1020803da70006a7ffd5b80012b20013b900140200990015b80012b2001312152a1cb80016b9001705002b1cb9001802001d9900b32ab60008852bb80019bb001a592ab60008b7001b3a040336052ab6000b3a061906b9000c010099008a1906b9000d0100c0000a3a071907c7000d2b03b900180200a7006c1907b6001c3a081908c700132b04b90018020019072bb8001da7005019041908b6001e360915099a00242b05b90018020084050115053609190419081509b6001f5719072bb8001da700212b06b90018020019072b03b6002019071908b6002115090464852bb80019a7ff72b1
-
+
org/apache/geode/internal/cache/DistributedPutAllOperation$PutAllEntryData,1
toData,229,2ab4000a4d2ab4000c4e2c2bb8003d2dc1003e9a00072dc700182b03b9003f02002dc0003ec0003e2bb80040a700312dc1004199001e2dc000413a042b04b9003f02001904b9004201002bb80040a7000f2b04b9003f02002d2bb800432b2ab40012b40044b9003f02002ab4000636042ab40026c6000a150407809136042ab40017c6001d15041008809136042ab40017c1004599000b150410208091360415041080809136042b1504b9003f02002ab40026c6000b2ab400262bb8003d2ab40017c6000b2ab400172bb800462ab6002899000b2ab400142bb800462ab400082bb80047b1
-
+
org/apache/geode/internal/cache/DistributedPutAllOperation$PutAllMessage,2
fromData,197,2a2bb7003a2a2bb8003bc0003cb500062a2bb8003d88b500162a2ab40016bd003eb500072ab400169e00722bb8003f4dbb004059b700414e03360415042ab40016a200202ab400071504bb003e592b2ab4000615042c2db7004253840401a7ffdd2bb9004301003604150499002f2bb800443a0503360615062ab40016a2001d2ab4000715063219051506b60045c00046b5002c840601a7ffe02ab400471140007e99000e2a2bb8003bc00048b5000c2a2ab400471180007e99000704a7000403b5001bb1
toData,165,2a2bb700492ab400062bb8004a2ab40016852bb8004b2ab400169e007bbb004c592ab40016b7004d4d033e03360415042ab40016a200511d9a00122ab40007150432b4002cc60005043e2ab40007150432b4002c3a052c1905b6004e572ab4000715043201b5002c2ab400071504322bb6004f2ab400071504321905b5002c840401a7ffac2b1db9005002001d9900082c2bb800512ab4000cc6000b2ab4000c2bb8004ab1
-
+
org/apache/geode/internal/cache/DistributedRegionFunctionStreamingMessage,2
fromData,171,2a2bb700632bb9006401003d1c047e9900142a2bb900650100b500092ab40009b800661c077e99000d2a2bb900650100b500061c057e99000e2a2bb80067c00068b500072bb800674e2dc100699900252a03b5000e2a2dc00069b8006ab500082ab40008c7001b2a2dc00069b5004ea700102a2dc0006bb500082a04b5000e2a2bb80067c0006cb5000a2a2bb8006db5000c2a2bb8006eb5000b2a1c10407e99000704a7000403b5000db1
toData,173,2a2bb70070033d2ab400099900081c0480933d2ab40006029f00081c0780933d2ab40007c600081c0580933d2ab4000d9900091c104080933d2b1cb9007102002ab4000999000d2b2ab40009b9007202002ab40006029f000d2b2ab40006b9007202002ab40007c6000b2ab400072bb800732ab4000e99000e2ab400082bb80073a700102ab40008b9005901002bb800732ab4000a2bb800732ab4000cc000742bb800752ab4000b2bb80076b1
-
+
org/apache/geode/internal/cache/DistributedRemoveAllOperation$RemoveAllEntryData,1
toData,136,2ab4000a4d2c2bb8003f2b2ab40010b40040b9004102002ab400063e2ab40022c600081d0780913e2ab40015c600191d100880913e2ab40015c100429900091d102080913e1d108080913e2b1db9004102002ab40022c6000b2ab400222bb8003f2ab40015c6000b2ab400152bb800432ab6002499000b2ab400122bb800432ab400082bb80044b1
-
+
org/apache/geode/internal/cache/DistributedRemoveAllOperation$RemoveAllMessage,2
fromData,197,2a2bb700382a2bb80039c0003ab500052a2bb8003b88b500152a2ab40015bd003cb500062ab400159e00722bb8003d4dbb003e59b7003f4e03360415042ab40015a200202ab400061504bb003c592b2ab4000515042c2db7004053840401a7ffdd2bb9004101003604150499002f2bb800423a0503360615062ab40015a2001d2ab4000615063219051506b60043c00044b5002b840601a7ffe02ab400451140007e99000e2a2bb80039c00046b5000b2a2ab400451180007e99000704a7000403b5001ab1
toData,165,2a2bb700472ab400052bb800482ab40015852bb800492ab400159e007bbb004a592ab40015b7004b4d033e03360415042ab40015a200511d9a00122ab40006150432b4002bc60005043e2ab40006150432b4002b3a052c1905b6004c572ab4000615043201b5002b2ab400061504322bb6004d2ab400061504321905b5002b840401a7ffac2b1db9004e02001d9900082c2bb8004f2ab4000bc6000b2ab4000b2bb80048b1
-
+
org/apache/geode/internal/cache/DistributedTombstoneOperation$TombstoneMessage,2
fromData,125,2a2bb700162ab800172bb90018010032b500192bb9001a01003d2abb001b591cb7001cb500112bb9001d01003e03360415041ca2003e1d990019bb001e59b7001f3a0619062bb8002019063a05a700092bb800213a052ab4001119052bb900220100b80023b90024030057840401a7ffc22a2bb80025c00026b50003b1
toData,193,2a2bb700272b2ab40019b60028b9002902002b2ab40011b9002a0100b9002b0200033d2ab40011b9002c01009a00232ab40011b9002d0100b9002e0100b9002f0100c000304e2dc1001e990005043d2b1cb9003102002ab40011b900320100b9002e01004e2db90033010099004d2db9002f0100c000343a041904b900350100c000303a051905c1001e99000f1905c0001e2bb80036a7000c1905c000372bb600382b1904b900390100c0003ab6003bb9003c0300a7ffb02ab400032bb8003db1
-
+
org/apache/geode/internal/cache/DynamicRegionAttributes,2
fromData,17,2a2bb80005b500022a2bb80005b50003b1
toData,17,2ab400022bb800042ab400032bb80004b1
-
+
org/apache/geode/internal/cache/EntryEventImpl,2
fromData,216,2a2bb80016c00017b500182bb800164d2bb800164e2abb0019592c2d01b7001ab5001b2a2bb9001c0100b8001db5001e2a2bb9001f0100b500082ab4001b2bb80016b600202a2bb80016c00021b500092bb900220100990013b200239a003cbb0024591225b70026bf2bb9002201009900212a2bb80027b500282a2ab40028b500062a2ab40028b80029b50005a7000b2a2bb80016b500052bb9002201009900192a2bb80027b5002a2a2ab4002ab80029b50007a7000b2a2bb80016b500072a2bb8002bb5002c2a2bb8002db5000a2a2bb8002eb50013b1
toData,279,2ab400182bb801482ab600892bb801482ab4001bb601752bb801482b2ab4001eb40176b9017702002b2ab4000811c03f7eb9017802002ab600492bb801482ab400092bb801482b03b9017902002ab6003f4d2cc100803e1d99000d2cc00080b900a901003e2b1db9017902001d99003b2ab40028c6000e2ab400282bb8017aa7002e2ab40006c6000e2ab400062bb8017aa7001c2cc000803a041904b900b701002bb8017ba700082c2bb801482ab700414d2cc100803e1d99000d2cc00080b900a901003e2b1db9017902001d9900292ab4002ac6000e2ab4002a2bb8017aa7001c2cc000803a041904b900b701002bb8017ba700082c2bb801482ab4002cc0017c2bb8017d2ab600572bb801482ab400132bb8017eb1
-
+
org/apache/geode/internal/cache/EntrySnapshot,2
fromData,50,2a03b500052bb9004101003d1c9900112abb000759b70042b50004a7000e2abb000359b70043b500042ab400042bb60044b1
toData,22,2b2ab40004c10007b9003f02002ab400042bb60040b1
-
+
org/apache/geode/internal/cache/EventID,4
fromData,53,2a2bb80038b500042bb80038b800394d2a2cb8003ab500092a2cb8003ab5000b2a2bb9003b0100b5000c2a2bb9003c0100b50001b1
fromDataPre_GFE_8_0_0_0,33,2a2bb80038b500042bb80038b800394d2a2cb8003ab500092a2cb8003ab5000bb1
toData,44,2ab400042bb800352ab400092ab4000bb800332bb800352b2ab4000cb9003602002b2ab40001b900370200b1
toDataPre_GFE_8_0_0_0,24,2ab400042bb800352ab400092ab4000bb800332bb80035b1
-
+
org/apache/geode/internal/cache/EventTracker$EventSeqnoHolder,2
fromData,22,2a2bb9000e0100b500042a2bb8000fc00010b50005b1
toData,19,2b2ab40004b9001103002ab400052bb80012b1
-
+
org/apache/geode/internal/cache/EvictionAttributesImpl,2
fromData,33,2a2bb9001b0100b500072a2bb8001cc0001db500052a2bb8001cc0001eb50003b1
toData,27,2b2ab40007b9001902002ab400052bb8001a2ab400032bb8001ab1
-
+
org/apache/geode/internal/cache/FilterProfile,2
fromData,210,bb013159b701324d2c2bb801332a2cb500202ab4000d2bb80134b900300200572ab400052bb80135b9007802002ab400072bb80135b9007802002ab400092bb80135b9007802002ab4000e2bb80134b900300200572ab400062bb80135b9007802002ab400082bb80135b9007802002ab4000a2bb80135b9007802002bb801363e1d9e004f05b80138360403360515051da2002c2bb801393a062bb8013a3a072a1906190703b6013b2ab4000f19061907b90054030057840501a7ffd41504b8013857a7000e3a081504b80138571908bfb1
toData,181,2ab40020c001312bb8013d2ab4000d2ab40023b401182bb8013e2ab400052bb8013f2ab400072bb8013f2ab400092bb8013f2ab4000e2ab40023b401182bb8013e2ab400062bb8013f2ab400082bb8013f2ab4000a2bb8013f2ab4000f4d2cb900b901003e1d2bb801402cb900ae0100b900af01003a041904b900b001009900361904b900b10100c000b23a051905b9011b0100c0003c3a061905b900b30100c000843a0719062bb8014119072bb8013da7ffc6b1
-
+
org/apache/geode/internal/cache/FilterProfile$OperationMessage,2
fromData,129,2a2bb700512a2bb900520100b500092a2bb900530100b500402ab800542bb90055010032b500222a2bb900560100b500282a2bb900570100b500492ab40022b8004b99002c2a2bb900530100b500312ab40022b2004da5000d2ab40022b2004ea600202a2bb80058b50032a700152a2bb900570100b500242a2bb80059b50026b1
toData,133,2a2bb700442b2ab40009b9004502002b2ab40040b9004602002b2ab40022b60023b9004702002b2ab40028b9004802002b2ab40049b9004a03002ab40022b8004b9900312b2ab40032b9004c0100b9004602002ab40022b2004da5000d2ab40022b2004ea600202ab400322bb8004fa700152b2ab40024b9004a03002ab400262bb80050b1
-
+
org/apache/geode/internal/cache/FilterRoutingInfo,4
fromData,86,014db8001e4e2dc600082db6001f4d2bb900200100360403360515051504a200372bb800213a06bb000859b700093a0719072bb800222cc6000c2c1906b6002399000f2ab4000619061907b6001057840501a7ffc8b1
fromDataPre_GFE_7_1_0_0,95,014db8001e4e2dc600082db6001f4d2bb900200100360403360515051504a20040bb002559b700293a0619062bb80022bb000859b700093a0719072bb800222cc6000c2c1906b6002399000f2ab4000619061907b6001057840501a7ffbfb1
toData,88,2ab40006b600113d2b1cb9002402002ab40006b60016b9001701004e2db9001801009900352db900190100c0001a3a041904b9001b0100c000253a0519052bb600261904b9001c0100c000083a0619062bb80027a7ffc8b1
toDataPre_GFE_7_1_0_0,88,2ab40006b600113d2b1cb9002402002ab40006b60016b9001701004e2db9001801009900352db900190100c0001a3a041904b9001b0100c000253a0519052bb800271904b9001c0100c000083a0619062bb80027a7ffc8b1
-
+
org/apache/geode/internal/cache/FilterRoutingInfo$FilterInfo,4
fromData,9,2a2bb80014b50015b1
-fromDataPre_GFE_8_0_0_0,50,b800259900162a2bb80026b500272a2bb80014b50015a7001b2a2bb80028b500012a2bb80029b5000e2a2bb80029b50012b1
+fromDataPre_GFE_8_0_0_0,50,b800269900162a2bb80027b500282a2bb80014b50015a7001b2a2bb80029b500012a2bb8002ab5000e2a2bb8002ab50012b1
toData,253,10093e1d2ab4000ec7000707a700112ab4000eb9001601001008680860603e1d2ab40012c7000707a700112ab40012b9001601001008680860603e1d2ab40001c7000703a7000d2ab40001b60017100c68603ebb0018591d01b700194d2ab40001c7000b2c03b6001aa7005d2c04b6001a2ab40001b600172cb8001b2ab40001b60006b9000701003a041904b9000801009900351904b900090100c0000a3a051905b9000b0100c0001cb6001d2cb8001e1905b9000c0100c0001fb60020852cb8001ea7ffc72ab4000e2ab400212cb800222ab400122ab400212cb800222bc1001899000e2bc000182cb60023a7000f2cb600243a0419042bb80025b1
toDataPre_GFE_8_0_0_0,211,b800269900afbb0018591103e82bb8002bb700194d2ab40001c7000b2c03b6001aa7005a2c04b6001a2ab40001b600172cb8001b2ab40001b60006b9000701004e2db9000801009900342db900090100c0000a3a041904b9000b0100c0001cb6001d2cb8001e1904b9000c0100c0001fb60020852cb8001ea7ffc92ab4000e2ab400212cb800222ab400122ab400212cb800222bc1001899000e2bc000182cb60023a7000d2cb600244e2d2bb80025a700232ab400012bb8002c2ab4000e2ab400212bb800222ab400122ab400212bb80022b1
-
+
org/apache/geode/internal/cache/FindDurableQueueProcessor$FindDurableQueueMessage,2
fromData,24,2a2bb7001e2a2bb9001f0100b500052a2bb80020b50006b1
toData,24,2a2bb700212b2ab40005b9002202002ab400062bb80023b1
-
+
org/apache/geode/internal/cache/FindDurableQueueProcessor$FindDurableQueueReply,2
fromData,14,2a2bb700042a2bb80005b50002b1
toData,14,2a2bb700062ab400022bb80007b1
-
+
org/apache/geode/internal/cache/FindRemoteTXMessage,2
fromData,27,2a2bb700452a2bb80046c00047b500032a2bb900480100b50004b1
toData,24,2a2bb700422ab400032bb800432b2ab40004b900440200b1
-
+
org/apache/geode/internal/cache/FindRemoteTXMessage$FindRemoteTXMessageReply,2
fromData,46,2a2bb7000a2a2bb9000b0100b500042bb9000b01009900182a2bb9000b0100b500072a2bb8000cc0000db50006b1
toData,66,2a2bb700032b2ab40004b9000502002ab40006c6000704a70004033d2b1cb9000502001c99001d2b2ab40007b9000502002ab4000601b600082ab400062bb80009b1
-
+
org/apache/geode/internal/cache/FindVersionTagOperation$FindVersionTagMessage,2
fromData,55,2a2bb700232a2bb900240100b500032a2bb900250100b500042abb002659b70027b500052ab400052bb800282a2bb900290100b50006b1
toData,44,2a2bb7001e2b2ab40003b9001f02002b2ab40004b9002002002ab400052bb800212b2ab40006b900220200b1
-
+
org/apache/geode/internal/cache/FindVersionTagOperation$VersionTagReply,2
fromData,17,2a2bb7000c2a2bb8000dc0000eb50002b1
toData,14,2a2bb7000a2ab400022bb8000bb1
-
+
org/apache/geode/internal/cache/FixedPartitionAttributesImpl,2
fromData,39,2a2bb80007b500062a2bb900080100b500022a2bb900090100b500032a2bb900090100b50005b1
toData,39,2ab400062bb8000a2b2ab40002b9000b02002b2ab40003b9000c02002b2ab40005b9000c0200b1
-
+
org/apache/geode/internal/cache/FunctionStreamingReplyMessage,2
fromData,64,2a2bb700102a2bb900110100b5000b2a2bb900120100b5000c2a2bb900110100b500042a2bb80013b5000da700144dbb001559b700164e2d2cb60017572dbfb1
toData,90,2a2bb700182b2ab4000bb9001902002b2ab4000cb9001a02002b2ab40004b9001902002ab4000d2bb8001ba7002e4d2cc1001c99000cbb001d592cb7001ebfbb0015592ab4000db6001fb60020b700214e2d2cb60017572dbfb1
-
+
org/apache/geode/internal/cache/GridAdvisor$GridProfile,2
fromData,26,2a2bb7001e2a2bb8001fb500052a2bb80020b500062ab60007b1
toData,22,2a2bb7001b2ab400052bb8001c2ab400062bb8001db1
-
+
org/apache/geode/internal/cache/HARegion$HARegionAdvisor$HAProfile,2
fromData,47,2a2bb700032bb9000401003d2a1cb200057e99000704a7000403b500062a1cb200077e99000704a7000403b50008b1
toData,45,2a2bb70009033d2ab400069900091cb20005803d2ab400089900091cb20007803d2b1c1100ff7eb9000a0200b1
-
+
org/apache/geode/internal/cache/InitialImageFlowControl$FlowControlPermitMessage,2
fromData,16,2a2bb7000d2a2bb9000e0100b50002b1
toData,16,2a2bb7000f2b2ab40002b900100200b1
-
+
org/apache/geode/internal/cache/InitialImageOperation$Entry,2
fromData,89,2a2bb900150100b500032bb9001501003d2a2bb80016b5000f2ab40003b8001199000d2ab20017b50002a7000b2a2bb80018b500022a2bb900190100b500041c047e9900162a1c057e99000704a70004032bb8001ab5000ab1
toData,101,2b2ab40003b9000c02002ab4000ac6000704a70004033d1c2ab4000ac1000e99000705a700040380913d2b1cb9000c02002ab4000f2bb800102ab40003b800119a000b2ab400022bb800122b2ab40004b9001303002ab4000ac6000b2ab4000a2bb80014b1
-
+
org/apache/geode/internal/cache/InitialImageOperation$FilterInfoMessage,2
fromData,230,2a2bb7008f2a2bb80090b5001f2ab4000403322bb80090b5003e2ab4000403322bb80090b500412ab4000403322bb80090b500432ab4000403322bb80090b500452ab4000403322bb80090b500472ab4000403322bb80090b500492ab4000403322bb80090b5004b2ab4000403322bb80090b5004d2ab4000404322bb80090b5003e2ab4000404322bb80090b500412ab4000404322bb80090b500432ab4000404322bb80090b500452ab4000404322bb80090b500472ab4000404322bb80090b500492ab4000404322bb80090b5004b2ab4000404322bb80090b5004d2a2bb80090b50033b1
toData,284,2a2bb7008d2ab4001fc000312bb8008e2ab400040332b4003ec000312bb8008e2ab400040332b40041c000312bb8008e2ab400040332b40043c000312bb8008e2ab400040332b40045c000312bb8008e2ab400040332b40047c000312bb8008e2ab400040332b40049c000312bb8008e2ab400040332b4004bc000312bb8008e2ab400040332b4004dc000312bb8008e2ab400040432b4003ec000312bb8008e2ab400040432b40041c000312bb8008e2ab400040432b40043c000312bb8008e2ab400040432b40045c000312bb8008e2ab400040432b40047c000312bb8008e2ab400040432b40049c000312bb8008e2ab400040432b4004bc000312bb8008e2ab400040432b4004dc000312bb8008e2ab40033c000312bb8008eb1
-
+
org/apache/geode/internal/cache/InitialImageOperation$ImageReplyMessage,2
fromData,224,2a2bb7001c2bb8001d4d014e2cc600102cb6001e9e00092c03b6001f4e2dc1002099000e2a2dc00021b5000fa700082a2cb5000f2a2bb900220100b500102a2bb900220100b500112a2bb900220100b500122a2bb900230100b500132a2bb900220100b500142a2bb80024b500042a2bb900230100b500032a2bb900230100b500152ab4001599000f2abb0025592bb70026b500022bb900270100360415049b00102abb0028591504b70029b5000103360515051504a200292bb8002ac0002b3a062bb8002c37072ab4000119061607b8002db9002e030057840501a7ffd6b1
toData,234,2a2bb7002f2ab4000fc1002099001dbb00305904b700314d2c2ab4000fb60032572c2bb80033a7000e2ab4000fc000302bb800332b2ab40010b9003402002b2ab40011b9003402002b2ab40012b9003402002b2ab40013b9003502002b2ab40014b9003402002b2ab40003b9003502002b2ab40015b9003502002ab4001599000b2ab400022bb800362b2ab40001c7000702a7000c2ab40001b900370100b9003802002ab40001c600422ab40001b900390100b9003a01004d2cb9003b010099002a2cb9003c0100c0003d4e2db9003e01002bb8003f2db900400100c00041b600422bb80043a7ffd3b1
-
+
org/apache/geode/internal/cache/InitialImageOperation$InitialImageVersionedEntryList,2
fromData,406,b80022b20023b9002402003d2bb9003601003e1d057e05a0000704a700040336041d077e07a0000704a700040336052a1d10087e1008a0000704a7000403b500021d10207e1020a0000704a700040336061c990014b80022b2002312371db80026b900380400150499003c2bb800398836071c990015b80022b20023123a1507b80031b90038040003360815081507a200152a2bb8003bc00014b7001257840801a7ffea15059900e42bb800398836071c990015b80022b20023123c1507b80031b9003804002abb0003591507b70005b50004bb0003591507b700053a0803360915091507a200a22bb900360100360a150aaa000000008f00000000000000030000001e0000002c0000003f000000632ab4000401b90011020057a700662ab4000415062bb8003db90011020057a7005315062bb8003d3a0b1908190bb6002db900110200572ab40004190bb90011020057a7002f15062bb8003d3a0b2bb8003988360c190b1908150cb900160200c0003eb600342ab40004190bb90011020057840901a7ff5da7000e2abb000359b70001b50004b1
toData,396,033d033e0336042ab700209a00091c05803d043e2ab40004b9000d01009e00431c07803d0436042ab40004b9001a01003a051905b9001b01009900271905b9001c0100c000173a061906c600131906c1002199000e1c1020803da70006a7ffd52ab400029900081c1008803db80022b20023b900240200990015b80022b2002312252a1cb80026b9002705002b1cb9002802001d9900282ab7000e852bb8002903360515052ab7000ea200132a1505b700132bb8002a840501a7ffea15049900cd2ab40004b9000d0100852bb80029bb002b592ab40004b9000d0100b7002c3a050336062ab40004b9001a01003a071907b9001b01009900951907b9001c0100c000173a081908c7000d2b03b900280200a700771908b6002d3a091909c700132b04b90028020019082bb8002ea7005b19051909b9002f0200c000303a0a190ac700292b05b9002802001506840601b800313a0a19051909190ab9003203005719082bb8002ea700222b06b90028020019082b03b6003319081909b60034190ab60035852bb80029a7ff67b1
-
+
org/apache/geode/internal/cache/InitialImageOperation$RVVReplyMessage,2
fromData,33,2a2bb700162bb9001701003d1c9900132bb9001701003e2a1d2bb80018b50004b1
toData,51,2a2bb700092ab40004c600222b04b9000a02002b2ab40004c1000bb9000a02002ab400042bb6000ca7000a2b03b9000a0200b1
-
+
org/apache/geode/internal/cache/InitialImageOperation$RegionStateMessage,2
fromData,66,2a2bb7001c2a2bb9001d0100b500052bb9001d01003d1c99000f2a2b2ab40005b8001eb500042bb9001d01003d1c9900132bb9001d01003e2a1d2bb8001fb50006b1
toData,97,2a2bb7000b2b2ab40005b9000c02002ab40004c600192b04b9000c02002b2ab400042ab40005b8000da7000a2b03b9000c02002ab40006c600222b04b9000c02002b2ab40006c1000eb9000c02002ab400062bb8000fa7000a2b03b9000c0200b1
-
+
org/apache/geode/internal/cache/InitialImageOperation$RequestFilterInfoMessage,2
fromData,24,2a2bb7001e2a2bb8001fb500042a2bb900200100b50002b1
toData,24,2a2bb700212ab400042bb800222b2ab40002b900230200b1
-
+
org/apache/geode/internal/cache/InitialImageOperation$RequestImageMessage,2
fromData,98,2a2bb700b42a2bb800b5b500172a2bb900b60100b500022a2bb900b70100b500552a2bb900b70100b500032a2bb900b70100b5004b2a2bb800b8c000b9b5003a2a2bb800b8c000bab500262a2bb800b8c000bbb5003b2a2bb800b8c000bcb50030b1
toData,86,2a2bb700bd2ab400172bb800be2b2ab40002b900bf02002b2ab40055b900c002002b2ab40003b900c002002b2ab4004bb900c002002ab4003a2bb800c12ab400262bb800c12ab4003b2bb800c12ab400302bb800c1b1
-
+
org/apache/geode/internal/cache/InitialImageOperation$RequestRVVMessage,2
fromData,34,2a2bb7001e2a2bb8001fb500052a2bb900200100b500022a2bb900210100b50003b1
toData,34,2a2bb700222ab400052bb800232b2ab40002b9002402002b2ab40003b900250200b1
-
+
org/apache/geode/internal/cache/InitialImageOperation$RequestSyncMessage,2
fromData,73,2a2bb700222a2bb80023b500022bb9002401003d2bb9002501003e2a1dbd0026b5000a03360415041da2001f2ab4000a15041c99000a2bb80027a700072bb8002853840401a7ffe1b1
toData,77,2a2bb7001c2ab400022bb8001d2b2ab4000a0332c1001eb9001f02002b2ab4000abeb9002002002ab4000a4d2cbe3e03360415041da200172c1504323a0519052bb900210200840401a7ffe9b1
-
+
org/apache/geode/internal/cache/InterestRegistrationEventImpl,2
fromData,33,2a2bb80010b500052a2bb80011b500062a2bb80012b500072a2bb80013b50008b1
toData,36,2ab400052bb8000b2ab40006c0000c2bb8000d2ab400072bb8000e2ab400082bb8000fb1
-
+
org/apache/geode/internal/cache/InvalidateOperation$InvalidateMessage,2
fromData,25,2a2bb700282a2bb80029c0002ab500022a2bb80029b50015b1
toData,22,2a2bb7002b2ab400022bb8002c2ab400152bb8002cb1
-
+
org/apache/geode/internal/cache/InvalidateOperation$InvalidateWithContextMessage,2
fromData,14,2a2bb7000c2a2bb8000db50004b1
toData,14,2a2bb7000e2ab400042bb8000fb1
-
+
org/apache/geode/internal/cache/InvalidatePartitionedRegionMessage,2
fromData,14,2a2bb700152a2bb80016b50004b1
toData,14,2a2bb700172ab400042bb80018b1
-
+
org/apache/geode/internal/cache/InvalidateRegionOperation$InvalidateRegionMessage,2
fromData,17,2a2bb700122a2bb80013c00014b50007b1
toData,14,2a2bb700152ab400072bb80016b1
-
+
org/apache/geode/internal/cache/JtaAfterCompletionMessage,2
fromData,26,2a2bb700232a2bb900240100b500042a2bb900240100b50002b1
toData,26,2a2bb700212b2ab40004b9002202002b2ab40002b900220200b1
-
+
org/apache/geode/internal/cache/MemberFunctionStreamingMessage,2
fromData,163,2a2bb700512bb9005201003d1c047e9900142a2bb900530100b500082ab40008b800541c077e99000d2a2bb900530100b500051c057e99000e2a2bb80055c00056b500062bb800554e2dc1002a9900252a03b5000a2a2dc0002ab80057b500072ab40007c7001b2a2dc0002ab5001aa700102a2dc00058b500072a04b5000a2a2bb80055b500092a2bb80055c00059b500102a1c10407e99000704a7000403b5000bb1
toData,162,2a2bb7005b033d2ab400089900081c0480933d2ab40005029f00081c0780933d2ab40006c600081c0580933d2ab4000b9900091c104080933d2b1cb9005c02002ab4000899000d2b2ab40008b9005d02002ab40005029f000d2b2ab40005b9005d02002ab40006c6000b2ab400062bb8005e2ab4000a99000e2ab400072bb8005ea700102ab40007b9001f01002bb8005e2ab400092bb8005e2ab400102bb8005eb1
-
+
org/apache/geode/internal/cache/Node,2
fromData,60,2abb001c59b7001db500052ab400052bb8001e2a2bb9001f0100b500032a2bb900200100b500042a2bb900210100b500152a2bb9001f0100b50006b1
toData,49,2ab400052bb800182b2ab40003b9001902002b2ab40004b9001a02002b2ab40015b9001b02002b2ab40006b900190200b1
-
+
org/apache/geode/internal/cache/NonLocalRegionEntry,2
fromData,48,2a2bb80027b500032a2bb80027b500062a2bb900280100b5000c2a2bb900290100b5000e2a2bb80027c0002ab50011b1
toData,45,2ab400032bb800242ab400062bb800242b2ab4000cb9002503002b2ab4000eb9002602002ab400112bb80024b1
-
+
org/apache/geode/internal/cache/NonLocalRegionEntryWithStats,2
fromData,36,2a2bb700132a2bb900140100b500032a2bb900140100b500052a2bb900140100b50007b1
toData,36,2a2bb700112b2ab40003b9001203002b2ab40005b9001203002b2ab40007b900120300b1
-
+
org/apache/geode/internal/cache/PRQueryProcessor$EndOfBucket,2
fromData,11,2a2bb9000b0100b50002b1
toData,11,2b2ab40002b9000c0200b1
-
+
org/apache/geode/internal/cache/PartitionAttributesImpl,2
fromData,102,2a2bb900580100b5001b2a2bb900590100b500082a2bb900580100b5000c2a2bb900580100b500012a2bb8005ab500142a2bb8005bc0001eb5000d2a2bb8005bc0001eb500022a2bb900590100b500162a2bb900590100b500182a2bb8005bc0005cb5002fb1
toData,97,2ab7002b2b2ab4001bb9005402002b2ab40008b9005503002b2ab60047b9005402002b2ab40001b9005402002ab400142bb800562ab4000d2bb800572ab400022bb800572b2ab40016b9005503002b2ab40018b9005503002ab4002f2bb80057b1
-
+
org/apache/geode/internal/cache/PartitionRegionConfig,2
fromData,207,2a2bb900500100b500162a2bb900510100b80052b500032a2bb80053b500182a2bb900540100b500052a2bb900540100b5001f2abb001959b7001ab500042ab400042bb800552a2bb80056b500082a2bb80056b500092a2bb80056b500072a2bb80057b5000c2a2bb80058b5000e2a2bb80058b5000d2a2bb80058b500102a2bb80058b5000f2a2bb900540100b500062a2bb80059c0005ab500112ab40011c7000e2abb002159b70022b500112a2bb8005bb500142a2bb80059c0005ab500012ab40001c7000a2ab80015b50001b1
toData,178,2b2ab40016b9004702002b2ab40003b40048b9004902002ab400182bb8004a2b2ab40005b9004b02002b2ab4001fb9004b02002ab400042bb8004a2ab400082bb8004c2ab400
<TRUNCATED>
[4/6] geode git commit: GEODE-1965 Create backward-compatibility unit
test framework
Posted by bs...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeDUnitTest.java
new file mode 100644
index 0000000..369bc3b
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/rollingupgrade/RollingUpgradeDUnitTest.java
@@ -0,0 +1,1051 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.geode.internal.cache.rollingupgrade;
+
+import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.cache30.CacheSerializableRunnable;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.FileUtil;
+import org.apache.geode.internal.Version;
+import org.apache.geode.test.dunit.DistributedTestUtils;
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.IgnoredException;
+import org.apache.geode.test.dunit.Invoke;
+import org.apache.geode.test.dunit.LogWriterUtils;
+import org.apache.geode.test.dunit.NetworkUtils;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
+import org.apache.geode.test.dunit.standalone.DUnitLauncher;
+import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.junit.categories.BackwardCompatibilityTest;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.net.InetAddress;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * RollingUpgrade dunit tests are distributed among subclasses of RollingUpgradeDUnitTest to avoid
+ * spurious "hangs" being declared by Hydra.
+ *
+ * This test will not run properly in eclipse at this point due to having to bounce vms Currently,
+ * bouncing vms is necessary because we are starting gemfire with different class loaders and the
+ * class loaders are lingering (possibly due to daemon threads - the vm itself is still running)
+ *
+ * Note: to run in eclipse, I had to copy over the jg-magic-map.txt file into my GEMFIRE_OUTPUT
+ * location, in the same directory as #MagicNumberReader otherwise the two systems were unable to
+ * talk to one another due to one using a magic number and the other not. Also turnOffBounce will
+ * need to be set to true so that bouncing a vm doesn't lead to a NPE.
+ *
+ * @author jhuynh
+ */
+
+@Category({DistributedTest.class, BackwardCompatibilityTest.class})
+@RunWith(Parameterized.class)
+@Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
+public class RollingUpgradeDUnitTest extends JUnit4DistributedTestCase {
+
+ @Parameterized.Parameters
+ public static Collection<String> data() {
+ return VersionManager.getInstance().getVersionsWithoutCurrent();
+ }
+
+ private File[] testingDirs = new File[3];
+
+ private static String diskDir = "RollingUpgradeDUnitTest";
+
+ // Each vm will have a cache object
+ private static Object cache;
+
+ // the old version of Geode we're testing against
+ private String oldVersion;
+
+ private void deleteVMFiles() throws Exception {
+ System.out.println("deleting files in vm" + VM.getCurrentVMNum());
+ File pwd = new File(".");
+ for (File entry : pwd.listFiles()) {
+ try {
+ FileUtil.delete(entry);
+ } catch (Exception e) {
+ System.out.println("Could not delete " + entry + ": " + e.getMessage());
+ }
+ }
+ }
+
+ private void deleteWorkingDirFiles() throws Exception {
+ Invoke.invokeInEveryVM("delete files", () -> deleteVMFiles());
+ }
+
+ @Override
+ public void postSetUp() throws Exception {
+ deleteWorkingDirFiles();
+ IgnoredException.addIgnoredException(
+ "cluster configuration service not available|ConflictingPersistentDataException");
+ }
+
+ public RollingUpgradeDUnitTest(String version) {
+ oldVersion = version;
+ }
+
+ @Test
+ public void testRollServersOnReplicatedRegion_dataserializable() throws Exception {
+ doTestRollAll("replicate", "dataserializable", oldVersion);
+ }
+
+ @Test
+ public void testRollServersOnPartitionedRegion_dataserializable() throws Exception {
+ doTestRollAll("partitionedRedundant", "dataserializable", oldVersion);
+ }
+
+ @Test
+ public void testRollServersOnPersistentRegion_dataserializable() throws Exception {
+ doTestRollAll("persistentReplicate", "dataserializable", oldVersion);
+ }
+
+
+ // We start an "old" locator and old servers
+ // We roll the locator
+ // Now we roll all the servers from old to new
+ public void doTestRollAll(String regionType, String objectType, String startingVersion)
+ throws Exception {
+ final Host host = Host.getHost(0);
+ VM server1 = host.getVM(startingVersion, 0);
+ VM server2 = host.getVM(startingVersion, 1);
+ VM server3 = host.getVM(startingVersion, 2);
+ VM locator = host.getVM(startingVersion, 3);
+
+
+ String regionName = "aRegion";
+ String shortcutName = RegionShortcut.REPLICATE.name();
+ if (regionType.equals("replicate")) {
+ shortcutName = RegionShortcut.REPLICATE.name();
+ } else if ((regionType.equals("partitionedRedundant"))) {
+ shortcutName = RegionShortcut.PARTITION_REDUNDANT.name();
+ } else if ((regionType.equals("persistentReplicate"))) {
+ shortcutName = RegionShortcut.PARTITION_PERSISTENT.name();
+ for (int i = 0; i < testingDirs.length; i++) {
+ testingDirs[i] = new File(diskDir, "diskStoreVM_" + String.valueOf(host.getVM(i).getPid()))
+ .getAbsoluteFile();
+ if (!testingDirs[i].exists()) {
+ System.out.println(" Creating diskdir for server: " + i);
+ testingDirs[i].mkdirs();
+ }
+ }
+ }
+
+ int[] locatorPorts = AvailablePortHelper.getRandomAvailableTCPPorts(1);
+ String hostName = NetworkUtils.getServerHostName(host);
+ String locatorString = getLocatorString(locatorPorts);
+ final Properties locatorProps = new Properties();
+ // configure all class loaders for each vm
+
+ try {
+ locator.invoke(invokeStartLocator(hostName, locatorPorts[0], getTestMethodName(),
+ locatorString, locatorProps));
+ invokeRunnableInVMs(invokeCreateCache(getSystemProperties(locatorPorts)), server1, server2,
+ server3);
+
+ // create region
+ if ((regionType.equals("persistentReplicate"))) {
+ for (int i = 0; i < testingDirs.length; i++) {
+ CacheSerializableRunnable runnable =
+ invokeCreatePersistentReplicateRegion(regionName, testingDirs[i]);
+ invokeRunnableInVMs(runnable, host.getVM(i));
+ }
+ } else {
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcutName), server1, server2,
+ server3);
+ }
+
+ putAndVerify(objectType, server1, regionName, 0, 10, server2, server3);
+ locator = rollLocatorToCurrent(locator, hostName, locatorPorts[0], getTestMethodName(),
+ locatorString);
+
+ server1 = rollServerToCurrentAndCreateRegion(server1, regionType, testingDirs[0],
+ shortcutName, regionName, locatorPorts);
+ verifyValues(objectType, regionName, 0, 10, server1);
+ putAndVerify(objectType, server1, regionName, 5, 15, server2, server3);
+ putAndVerify(objectType, server2, regionName, 10, 20, server1, server3);
+
+ server2 = rollServerToCurrentAndCreateRegion(server2, regionType, testingDirs[1],
+ shortcutName, regionName, locatorPorts);
+ verifyValues(objectType, regionName, 0, 10, server2);
+ putAndVerify(objectType, server2, regionName, 15, 25, server1, server3);
+ putAndVerify(objectType, server3, regionName, 20, 30, server2, server3);
+
+ server3 = rollServerToCurrentAndCreateRegion(server3, regionType, testingDirs[2],
+ shortcutName, regionName, locatorPorts);
+ verifyValues(objectType, regionName, 0, 10, server3);
+ putAndVerify(objectType, server3, regionName, 15, 25, server1, server2);
+ putAndVerify(objectType, server1, regionName, 20, 30, server1, server2, server3);
+
+
+ } finally {
+ invokeRunnableInVMs(true, invokeStopLocator(), locator);
+ invokeRunnableInVMs(true, invokeCloseCache(), server1, server2, server3);
+ if ((regionType.equals("persistentReplicate"))) {
+ deleteDiskStores();
+ }
+ }
+ }
+
+ // ******** TEST HELPER METHODS ********/
+ private void putAndVerify(String objectType, VM putter, String regionName, int start, int end,
+ VM check1, VM check2, VM check3) throws Exception {
+ if (objectType.equals("strings")) {
+ putStringsAndVerify(putter, regionName, start, end, check1, check2, check3);
+ } else if (objectType.equals("serializable")) {
+ putSerializableAndVerify(putter, regionName, start, end, check1, check2, check3);
+ } else if (objectType.equals("dataserializable")) {
+ putDataSerializableAndVerify(putter, regionName, start, end, check1, check2, check3);
+ } else {
+ throw new Error("Not a valid test object type");
+ }
+ }
+
+ // ******** TEST HELPER METHODS ********/
+ private void putAndVerify(String objectType, VM putter, String regionName, int start, int end,
+ VM check1, VM check2) throws Exception {
+ if (objectType.equals("strings")) {
+ putStringsAndVerify(putter, regionName, start, end, check1, check2);
+ } else if (objectType.equals("serializable")) {
+ putSerializableAndVerify(putter, regionName, start, end, check1, check2);
+ } else if (objectType.equals("dataserializable")) {
+ putDataSerializableAndVerify(putter, regionName, start, end, check1, check2);
+ } else {
+ throw new Error("Not a valid test object type");
+ }
+ }
+
+ private void putStringsAndVerify(VM putter, final String regionName, final int start,
+ final int end, VM... vms) {
+ for (int i = start; i < end; i++) {
+ putter.invoke(invokePut(regionName, "" + i, "VALUE(" + i + ")"));
+ }
+
+ threadSleep();
+
+ // verify present in others
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesEqual(regionName, start, end));
+ }
+ }
+
+ private void putSerializableAndVerify(VM putter, String regionName, int start, int end,
+ VM... vms) {
+ for (int i = start; i < end; i++) {
+ putter.invoke(invokePut(regionName, "" + i, new Properties()));
+ }
+
+ threadSleep();
+
+ // verify present in others
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesExist(regionName, start, end));
+ }
+ }
+
+ private void putDataSerializableAndVerify(VM putter, String regionName, int start, int end,
+ VM... vms) throws Exception {
+ for (int i = start; i < end; i++) {
+ Class aClass = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.cache.ExpirationAttributes");
+ Constructor constructor = aClass.getConstructor(int.class);
+ Object testDataSerializable = constructor.newInstance(i);
+ putter.invoke(invokePut(regionName, "" + i, testDataSerializable));
+ }
+
+ threadSleep();
+
+ // verify present in others
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesExist(regionName, start, end));
+ }
+ }
+
+ private void verifyValues(String objectType, String regionName, int start, int end, VM... vms) {
+ threadSleep();
+ if (objectType.equals("strings")) {
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesEqual(regionName, start, end));
+ }
+ } else if (objectType.equals("serializable")) {
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesExist(regionName, start, end));
+ }
+ } else if (objectType.equals("dataserializable")) {
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertEntriesExist(regionName, start, end));
+ }
+ }
+ }
+
+ // Oddly the puts will return and for some reason the other vms have yet to recieve or process the
+ // put?
+ private void threadSleep() {
+ try {
+ Thread.sleep(250);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ private void query(String queryString, int numExpectedResults, VM... vms) {
+ for (VM vm : vms) {
+ vm.invoke(invokeAssertQueryResults(queryString, numExpectedResults));
+ }
+ }
+
+ private void invokeRunnableInVMs(CacheSerializableRunnable runnable, VM... vms) throws Exception {
+ for (VM vm : vms) {
+ vm.invoke(runnable);
+ }
+ }
+
+ // Used to close cache and make sure we attempt on all vms even if some do not have a cache
+ private void invokeRunnableInVMs(boolean catchErrors, CacheSerializableRunnable runnable,
+ VM... vms) throws Exception {
+ for (VM vm : vms) {
+ try {
+ vm.invoke(runnable);
+ } catch (Exception e) {
+ if (!catchErrors) {
+ throw e;
+ }
+ }
+ }
+ }
+
+ private VM rollServerToCurrent(VM oldServer, int[] locatorPorts) throws Exception {
+ // Roll the server
+ oldServer.invoke(invokeCloseCache());
+ VM rollServer = Host.getHost(0).getVM(oldServer.getPid()); // gets a vm with the current version
+ rollServer.invoke(invokeCreateCache(locatorPorts == null ? getSystemPropertiesPost71()
+ : getSystemPropertiesPost71(locatorPorts)));
+ rollServer.invoke(invokeAssertVersion(Version.CURRENT_ORDINAL));
+ return rollServer;
+ }
+
+ /*
+ * @param rollServer
+ *
+ * @param createRegionMethod
+ *
+ * @param regionName
+ *
+ * @param locatorPorts if null, uses dunit locator
+ *
+ * @throws Exception
+ */
+ private void rollServerToCurrentAndCreateRegion(VM rollServer, String shortcutName,
+ String regionName, int[] locatorPorts) throws Exception {
+ rollServerToCurrent(rollServer, locatorPorts);
+ // recreate region on "rolled" server
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcutName), rollServer);
+ rollServer.invoke(invokeRebalance());
+ }
+
+ private VM rollServerToCurrentAndCreateRegion(VM oldServer, String regionType, File diskdir,
+ String shortcutName, String regionName, int[] locatorPorts) throws Exception {
+ VM rollServer = rollServerToCurrent(oldServer, locatorPorts);
+ // recreate region on "rolled" server
+ if ((regionType.equals("persistentReplicate"))) {
+ CacheSerializableRunnable runnable =
+ invokeCreatePersistentReplicateRegion(regionName, diskdir);
+ invokeRunnableInVMs(runnable, rollServer);
+ } else {
+ invokeRunnableInVMs(invokeCreateRegion(regionName, shortcutName), rollServer);
+ }
+ rollServer.invoke(invokeRebalance());
+ return rollServer;
+ }
+
+ private VM rollLocatorToCurrent(VM oldLocator, final String serverHostName, final int port,
+ final String testName, final String locatorString) throws Exception {
+ // Roll the locator
+ oldLocator.invoke(invokeStopLocator());
+ VM rollLocator = Host.getHost(0).getVM(oldLocator.getPid()); // gets a VM with current version
+ final Properties props = new Properties();
+ props.setProperty(DistributionConfig.ENABLE_CLUSTER_CONFIGURATION_NAME, "false");
+ rollLocator.invoke(invokeStartLocator(serverHostName, port, testName, locatorString, props));
+ return rollLocator;
+ }
+
+ // Due to licensing changes
+ public Properties getSystemPropertiesPost71() {
+ Properties props = getSystemProperties();
+ return props;
+ }
+
+ // Due to licensing changes
+ public Properties getSystemPropertiesPost71(int[] locatorPorts) {
+ Properties props = getSystemProperties(locatorPorts);
+ return props;
+ }
+
+ public Properties getSystemProperties() {
+ Properties props = DistributedTestUtils.getAllDistributedSystemProperties(new Properties());
+ props.remove("disable-auto-reconnect");
+ props.remove(DistributionConfig.OFF_HEAP_MEMORY_SIZE_NAME);
+ props.remove(DistributionConfig.LOCK_MEMORY_NAME);
+ return props;
+ }
+
+ public Properties getSystemProperties(int[] locatorPorts) {
+ Properties p = new Properties();
+ String locatorString = getLocatorString(locatorPorts);
+ p.setProperty("locators", locatorString);
+ p.setProperty("mcast-port", "0");
+ return p;
+ }
+
+ public Properties getClientSystemProperties() {
+ Properties p = new Properties();
+ p.setProperty("mcast-port", "0");
+ return p;
+ }
+
+ public static String getLocatorString(int locatorPort) {
+ String locatorString = getDUnitLocatorAddress() + "[" + locatorPort + "]";
+ return locatorString;
+ }
+
+ public static String getLocatorString(int[] locatorPorts) {
+ String locatorString = "";
+ int numLocators = locatorPorts.length;
+ for (int i = 0; i < numLocators; i++) {
+ locatorString += getLocatorString(locatorPorts[i]);
+ if (i + 1 < numLocators) {
+ locatorString += ",";
+ }
+ }
+ return locatorString;
+ }
+
+
+ private List<URL> addFile(File file) throws MalformedURLException {
+ ArrayList<URL> urls = new ArrayList<URL>();
+ if (file.isDirectory()) {
+ // Do not want to start cache with sample code xml
+ if (file.getName().contains("SampleCode")) {
+ return urls;
+ } else {
+ File[] files = file.listFiles();
+ for (File afile : files) {
+ urls.addAll(addFile(afile));
+ }
+ }
+ } else {
+ URL url = file.toURI().toURL();
+ urls.add(url);
+ }
+ return urls;
+ }
+
+
+
+ private CacheSerializableRunnable invokeStartLocator(final String serverHostName, final int port,
+ final String testName, final String locatorsString, final Properties props) {
+ return new CacheSerializableRunnable("execute: startLocator") {
+ public void run2() {
+ try {
+ startLocator(serverHostName, port, testName, locatorsString, props);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeStartLocatorAndServer(final String serverHostName,
+ final int port, final String testName, final Properties systemProperties) {
+ return new CacheSerializableRunnable("execute: startLocator") {
+ public void run2() {
+ try {
+ systemProperties.put(DistributionConfig.START_LOCATOR_NAME,
+ "" + serverHostName + "[" + port + "]");
+ RollingUpgradeDUnitTest.cache = createCache(systemProperties);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreateCache(final Properties systemProperties) {
+ return new CacheSerializableRunnable("execute: createCache") {
+ public void run2() {
+ try {
+ RollingUpgradeDUnitTest.cache = createCache(systemProperties);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreateClientCache(final Properties systemProperties,
+ final String[] hosts, final int[] ports) {
+ return new CacheSerializableRunnable("execute: createClientCache") {
+ public void run2() {
+ try {
+ RollingUpgradeDUnitTest.cache = createClientCache(systemProperties, hosts, ports);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeStartCacheServer(final int port) {
+ return new CacheSerializableRunnable("execute: startCacheServer") {
+ public void run2() {
+ try {
+ startCacheServer(RollingUpgradeDUnitTest.cache, port);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeAssertVersion(final short version) {
+ return new CacheSerializableRunnable("execute: assertVersion") {
+ public void run2() {
+ try {
+ assertVersion(RollingUpgradeDUnitTest.cache, version);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreateRegion(final String regionName,
+ final String shortcutName) {
+ return new CacheSerializableRunnable("execute: createRegion") {
+ public void run2() {
+ try {
+ createRegion(RollingUpgradeDUnitTest.cache, regionName, shortcutName);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreatePersistentReplicateRegion(final String regionName,
+ final File diskstore) {
+ return new CacheSerializableRunnable("execute: createPersistentReplicateRegion") {
+ public void run2() {
+ try {
+ createPersistentReplicateRegion(RollingUpgradeDUnitTest.cache, regionName, diskstore);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCreateClientRegion(final String regionName,
+ final String shortcutName) {
+ return new CacheSerializableRunnable("execute: createClientRegion") {
+ public void run2() {
+ try {
+ createClientRegion(RollingUpgradeDUnitTest.cache, regionName, shortcutName);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokePut(final String regionName, final Object key,
+ final Object value) {
+ return new CacheSerializableRunnable("execute: put") {
+ public void run2() {
+ try {
+ put(RollingUpgradeDUnitTest.cache, regionName, key, value);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeAssertEntriesEqual(final String regionName,
+ final int start, final int end) {
+ return new CacheSerializableRunnable("execute: assertEntriesEqual") {
+ public void run2() {
+ try {
+ for (int i = start; i < end; i++) {
+ assertEntryEquals(RollingUpgradeDUnitTest.cache, regionName, "" + i,
+ "VALUE(" + i + ")");
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeAssertEntriesExist(final String regionName,
+ final int start, final int end) {
+ return new CacheSerializableRunnable("execute: assertEntryExists") {
+ public void run2() {
+ try {
+ for (int i = start; i < end; i++) {
+ assertEntryExists(RollingUpgradeDUnitTest.cache, regionName, "" + i);
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeStopLocator() {
+ return new CacheSerializableRunnable("execute: stopLocator") {
+ public void run2() {
+ try {
+ stopLocator();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeCloseCache() {
+ return new CacheSerializableRunnable("execute: closeCache") {
+ public void run2() {
+ try {
+ closeCache(RollingUpgradeDUnitTest.cache);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeRebalance() {
+ return new CacheSerializableRunnable("execute: rebalance") {
+ public void run2() {
+ try {
+ rebalance(RollingUpgradeDUnitTest.cache);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ private CacheSerializableRunnable invokeAssertQueryResults(final String queryString,
+ final int numExpected) {
+ return new CacheSerializableRunnable("execute: assertQueryResults") {
+ public void run2() {
+ try {
+ assertQueryResults(RollingUpgradeDUnitTest.cache, queryString, numExpected);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ };
+ }
+
+ public void deleteDiskStores() throws Exception {
+ try {
+ FileUtil.delete(new File(diskDir).getAbsoluteFile());
+ } catch (IOException e) {
+ throw new Error("Error deleting files", e);
+ }
+ }
+
+ public static Object createCache(Properties systemProperties) throws Exception {
+
+ // systemProperties.put(DistributionConfig.LOG_FILE_NAME,
+ // "rollingUpgradeCacheVM" + VM.getCurrentVMNum() + ".log");
+
+ Class distConfigClass = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.distributed.internal.DistributionConfigImpl");
+ boolean disableConfig = true;
+ try {
+ distConfigClass.getDeclaredField("useSharedConfiguration");
+ } catch (NoSuchFieldException e) {
+ disableConfig = false;
+ }
+ if (disableConfig) {
+ systemProperties.put(DistributionConfig.USE_CLUSTER_CONFIGURATION_NAME, "false");
+ }
+
+ Class cacheFactoryClass = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.cache.CacheFactory");
+ Constructor constructor = cacheFactoryClass.getConstructor(Properties.class);
+ constructor.setAccessible(true);
+ Object cacheFactory = constructor.newInstance(systemProperties);
+
+ Method createMethod = cacheFactoryClass.getMethod("create");
+ createMethod.setAccessible(true);
+ Object cache = null;
+ cache = createMethod.invoke(cacheFactory);
+ return cache;
+ }
+
+ public static void startCacheServer(Object cache, int port) throws Exception {
+ Method addCacheServerMethod = cache.getClass().getMethod("addCacheServer");
+ addCacheServerMethod.setAccessible(true);
+ Object cacheServer = addCacheServerMethod.invoke(cache);
+
+ Method setPortMethod = cacheServer.getClass().getMethod("setPort", int.class);
+ setPortMethod.setAccessible(true);
+ setPortMethod.invoke(cacheServer, port);
+
+ Method startMethod = cacheServer.getClass().getMethod("start");
+ startMethod.setAccessible(true);
+ startMethod.invoke(cacheServer);
+ }
+
+ public static Object createClientCache(Properties systemProperties, String[] hosts, int[] ports)
+ throws Exception {
+ Class aClass = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.cache.client.ClientCacheFactory");
+ Constructor constructor = aClass.getConstructor(Properties.class);
+ constructor.setAccessible(true);
+
+ Object ccf = constructor.newInstance(systemProperties);
+ Method addPoolLocatorMethod = aClass.getMethod("addPoolLocator", String.class, int.class);
+ addPoolLocatorMethod.setAccessible(true);
+ int hostsLength = hosts.length;
+ for (int i = 0; i < hostsLength; i++) {
+ addPoolLocatorMethod.invoke(ccf, hosts[i], ports[i]);
+ }
+
+ Method createMethod = aClass.getMethod("create");
+ createMethod.setAccessible(true);
+ Object cache = createMethod.invoke(ccf);
+
+ return cache;
+ }
+
+ public static boolean assertRegionExists(Object cache, String regionName) throws Exception {
+ Object region = cache.getClass().getMethod("getRegion", String.class).invoke(cache, regionName);
+ if (region == null) {
+ throw new Error("Region: " + regionName + " does not exist");
+ }
+ return true;
+ }
+
+ public static Object getRegion(Object cache, String regionName) throws Exception {
+ return cache.getClass().getMethod("getRegion", String.class).invoke(cache, regionName);
+ }
+
+ public static boolean assertEntryEquals(Object cache, String regionName, Object key, Object value)
+ throws Exception {
+ assertRegionExists(cache, regionName);
+ Object region = getRegion(cache, regionName);
+ Object regionValue = region.getClass().getMethod("get", Object.class).invoke(region, key);
+ if (regionValue == null) {
+ System.out.println("region value does not exist for key: " + key);
+ throw new Error("Region value does not exist for key:" + key);
+ }
+ if (!regionValue.equals(value)) {
+ System.out.println("Entry for key:" + key + " does not equal value: " + value);
+ throw new Error("Entry for key:" + key + " does not equal value: " + value);
+ }
+ return true;
+ }
+
+ public static boolean assertEntryExists(Object cache, String regionName, Object key)
+ throws Exception {
+ assertRegionExists(cache, regionName);
+ Object region = getRegion(cache, regionName);
+ Object regionValue = region.getClass().getMethod("get", Object.class).invoke(region, key);
+ if (regionValue == null) {
+ System.out.println("Entry for key:" + key + " does not exist");
+ throw new Error("Entry for key:" + key + " does not exist");
+ }
+ return true;
+ }
+
+ public static Object put(Object cache, String regionName, Object key, Object value)
+ throws Exception {
+ Object region = getRegion(cache, regionName);
+ return region.getClass().getMethod("put", Object.class, Object.class).invoke(region, key,
+ value);
+ }
+
+ public static void createRegion(Object cache, String regionName, String shortcutName)
+ throws Exception {
+ Class aClass = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.cache.RegionShortcut");
+ Object[] enumConstants = aClass.getEnumConstants();
+ Object shortcut = null;
+ int length = enumConstants.length;
+ for (int i = 0; i < length; i++) {
+ Object constant = enumConstants[i];
+ if (((Enum) constant).name().equals(shortcutName)) {
+ shortcut = constant;
+ break;
+ }
+ }
+
+ Method createRegionFactoryMethod = cache.getClass().getMethod("createRegionFactory", aClass);
+ createRegionFactoryMethod.setAccessible(true);
+ Object regionFactory = createRegionFactoryMethod.invoke(cache, shortcut);
+ Method createMethod = regionFactory.getClass().getMethod("create", String.class);
+ createMethod.setAccessible(true);
+ createMethod.invoke(regionFactory, regionName);
+ }
+
+ public static void createPartitionedRegion(Object cache, String regionName) throws Exception {
+ createRegion(cache, regionName, RegionShortcut.PARTITION.name());
+ }
+
+ public static void createPartitionedRedundantRegion(Object cache, String regionName)
+ throws Exception {
+ createRegion(cache, regionName, RegionShortcut.PARTITION_REDUNDANT.name());
+ }
+
+ public static void createReplicatedRegion(Object cache, String regionName) throws Exception {
+ createRegion(cache, regionName, RegionShortcut.REPLICATE.name());
+ }
+
+ // Assumes a client cache is passed
+ public static void createClientRegion(Object cache, String regionName, String shortcutName)
+ throws Exception {
+ Class aClass = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.cache.client.ClientRegionShortcut");
+ Object[] enumConstants = aClass.getEnumConstants();
+ Object shortcut = null;
+ int length = enumConstants.length;
+ for (int i = 0; i < length; i++) {
+ Object constant = enumConstants[i];
+ if (((Enum) constant).name().equals(shortcutName)) {
+ shortcut = constant;
+ break;
+ }
+ }
+ Object clientRegionFactory = cache.getClass()
+ .getMethod("createClientRegionFactory", shortcut.getClass()).invoke(cache, shortcut);
+ clientRegionFactory.getClass().getMethod("create", String.class).invoke(clientRegionFactory,
+ regionName);
+ }
+
+ public static void createRegion(String regionName, Object regionFactory) throws Exception {
+ regionFactory.getClass().getMethod("create", String.class).invoke(regionFactory, regionName);
+ }
+
+ public static void createPersistentReplicateRegion(Object cache, String regionName,
+ File diskStore) throws Exception {
+ Object store = cache.getClass().getMethod("findDiskStore", String.class).invoke(cache, "store");
+ Class dataPolicyObject = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.cache.DataPolicy");
+ Object dataPolicy = dataPolicyObject.getField("PERSISTENT_REPLICATE").get(null);
+ if (store == null) {
+ Object dsf = cache.getClass().getMethod("createDiskStoreFactory").invoke(cache);
+ dsf.getClass().getMethod("setMaxOplogSize", long.class).invoke(dsf, 1L);
+ dsf.getClass().getMethod("setDiskDirs", File[].class).invoke(dsf,
+ new Object[] {new File[] {diskStore.getAbsoluteFile()}});
+ dsf.getClass().getMethod("create", String.class).invoke(dsf, "store");
+ }
+ Object rf = cache.getClass().getMethod("createRegionFactory").invoke(cache);
+ rf.getClass().getMethod("setDiskStoreName", String.class).invoke(rf, "store");
+ rf.getClass().getMethod("setDataPolicy", dataPolicy.getClass()).invoke(rf, dataPolicy);
+ rf.getClass().getMethod("create", String.class).invoke(rf, regionName);
+ }
+
+ public static void assertVersion(Object cache, short ordinal) throws Exception {
+ Class idmClass = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.distributed.internal.membership.InternalDistributedMember");
+ Method getDSMethod = cache.getClass().getMethod("getDistributedSystem");
+ getDSMethod.setAccessible(true);
+ Object ds = getDSMethod.invoke(cache);
+
+ Method getDistributedMemberMethod = ds.getClass().getMethod("getDistributedMember");
+ getDistributedMemberMethod.setAccessible(true);
+ Object member = getDistributedMemberMethod.invoke(ds);
+ Method getVersionObjectMethod = member.getClass().getMethod("getVersionObject");
+ getVersionObjectMethod.setAccessible(true);
+ Object thisVersion = getVersionObjectMethod.invoke(member);
+ Method getOrdinalMethod = thisVersion.getClass().getMethod("ordinal");
+ getOrdinalMethod.setAccessible(true);
+ short thisOrdinal = (Short) getOrdinalMethod.invoke(thisVersion);
+ if (ordinal != thisOrdinal) {
+ throw new Error(
+ "Version ordinal:" + thisOrdinal + " was not the expected ordinal of:" + ordinal);
+ }
+ }
+
+ public static void assertQueryResults(Object cache, String queryString, int numExpectedResults) {
+ try {
+ Method getQSMethod = cache.getClass().getMethod("getQueryService");
+ getQSMethod.setAccessible(true);
+ Object qs = getQSMethod.invoke(cache);
+ Method newQueryMethod = qs.getClass().getMethod("newQuery", String.class);
+ newQueryMethod.setAccessible(true);
+ Object query = newQueryMethod.invoke(qs, queryString);
+ Method executeMethod = query.getClass().getMethod("execute");
+ executeMethod.setAccessible(true);
+ Object results = executeMethod.invoke(query);
+
+ Method sizeMethod = results.getClass().getMethod("size");
+ sizeMethod.setAccessible(true);
+ int numResults = (Integer) sizeMethod.invoke(results);
+
+ if (numResults != numExpectedResults) {
+ System.out.println("Num Results was:" + numResults);
+ throw new Error("Num results:" + numResults + " != num expected:" + numExpectedResults);
+ }
+ } catch (Exception e) {
+ throw new Error("Query Exception", e);
+ }
+ }
+
+ public static void stopCacheServers(Object cache) throws Exception {
+ Method getCacheServersMethod = cache.getClass().getMethod("getCacheServers");
+ getCacheServersMethod.setAccessible(true);
+ List cacheServers = (List) getCacheServersMethod.invoke(cache);
+ Method stopMethod = null;
+ for (Object cs : cacheServers) {
+ if (stopMethod == null) {
+ stopMethod = cs.getClass().getMethod("stop");
+ }
+ stopMethod.setAccessible(true);
+ stopMethod.invoke(cs);
+ }
+ }
+
+ public static void closeCache(Object cache) throws Exception {
+ if (cache == null) {
+ return;
+ }
+ Method isClosedMethod = cache.getClass().getMethod("isClosed");
+ isClosedMethod.setAccessible(true);
+ boolean cacheClosed = (Boolean) isClosedMethod.invoke(cache);
+ if (cache != null && !cacheClosed) {
+ stopCacheServers(cache);
+ Method method = cache.getClass().getMethod("close");
+ method.setAccessible(true);
+ method.invoke(cache);
+ long startTime = System.currentTimeMillis();
+ while (!cacheClosed && System.currentTimeMillis() - startTime < 30000) {
+ try {
+ Thread.sleep(1000);
+ Method cacheClosedMethod = cache.getClass().getMethod("isClosed");
+ cacheClosedMethod.setAccessible(true);
+ cacheClosed = (Boolean) cacheClosedMethod.invoke(cache);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+ cache = null;
+ }
+
+ public static void rebalance(Object cache) throws Exception {
+ Method getRMMethod = cache.getClass().getMethod("getResourceManager");
+ getRMMethod.setAccessible(true);
+ Object manager = getRMMethod.invoke(cache);
+
+ Method createRebalanceFactoryMethod = manager.getClass().getMethod("createRebalanceFactory");
+ createRebalanceFactoryMethod.setAccessible(true);
+ Object rebalanceFactory = createRebalanceFactoryMethod.invoke(manager);
+ Object op = null;
+ Method m = rebalanceFactory.getClass().getMethod("start");
+ m.setAccessible(true);
+ op = m.invoke(rebalanceFactory);
+
+ // Wait until the rebalance is completex
+ try {
+ Method getResultsMethod = op.getClass().getMethod("getResults");
+ getResultsMethod.setAccessible(true);
+ Object results = getResultsMethod.invoke(op);
+ Method getTotalTimeMethod = results.getClass().getMethod("getTotalTime");
+ getTotalTimeMethod.setAccessible(true);
+ System.out.println("Took " + getTotalTimeMethod.invoke(results) + " milliseconds\n");
+ Method getTotalBucketsMethod = results.getClass().getMethod("getTotalBucketTransferBytes");
+ getTotalBucketsMethod.setAccessible(true);
+ System.out.println("Transfered " + getTotalBucketsMethod.invoke(results) + "bytes\n");
+ } catch (Exception e) {
+ Thread.currentThread().interrupt();
+ throw e;
+ }
+ }
+
+ /**
+ * Starts a locator with given configuration.
+ *
+ * @param props TODO
+ */
+ public static void startLocator(final String serverHostName, final int port,
+ final String testName, final String locatorsString, final Properties props) throws Exception {
+ props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
+ props.setProperty(DistributionConfig.LOCATORS_NAME, locatorsString);
+ props.setProperty(DistributionConfig.LOG_LEVEL_NAME, LogWriterUtils.getDUnitLogLevel());
+
+ InetAddress bindAddr = null;
+ try {
+ bindAddr = InetAddress.getByName(serverHostName);// getServerHostName(vm.getHost()));
+ } catch (UnknownHostException uhe) {
+ throw new Error("While resolving bind address ", uhe);
+ }
+
+ File logFile = new File(testName + "-locator" + port + ".log");
+ Class locatorClass = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.distributed.Locator");
+ Method startLocatorAndDSMethod =
+ locatorClass.getMethod("startLocatorAndDS", int.class, File.class, InetAddress.class,
+ Properties.class, boolean.class, boolean.class, String.class);
+ startLocatorAndDSMethod.setAccessible(true);
+ startLocatorAndDSMethod.invoke(null, port, logFile, bindAddr, props, true, true, null);
+ }
+
+ public static void stopLocator() throws Exception {
+ Class internalLocatorClass = Thread.currentThread().getContextClassLoader()
+ .loadClass("org.apache.geode.distributed.internal.InternalLocator");
+ Method locatorMethod = internalLocatorClass.getMethod("getLocator");
+ locatorMethod.setAccessible(true);
+ Object locator = locatorMethod.invoke(null);
+ Method stopLocatorMethod = locator.getClass().getMethod("stop");
+ stopLocatorMethod.setAccessible(true);
+ stopLocatorMethod.invoke(locator);
+ }
+
+ /**
+ * Get the port that the standard dunit locator is listening on.
+ *
+ * @return
+ */
+ public static String getDUnitLocatorAddress() {
+ return Host.getHost(0).getHostName();
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscBCDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscBCDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscBCDUnitTest.java
new file mode 100755
index 0000000..54367fd
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscBCDUnitTest.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.geode.internal.cache.tier.sockets;
+
+import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.junit.categories.BackwardCompatibilityTest;
+import org.apache.geode.test.junit.categories.ClientServerTest;
+import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Collection;
+
+@Category({DistributedTest.class, ClientServerTest.class, BackwardCompatibilityTest.class})
+@RunWith(Parameterized.class)
+@Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
+public class ClientServerMiscBCDUnitTest extends ClientServerMiscDUnitTest {
+ @Parameterized.Parameters
+ public static Collection<String> data() {
+ return VersionManager.getInstance().getVersionsWithoutCurrent();
+ }
+
+ public ClientServerMiscBCDUnitTest(String version) {
+ super();
+ testVersion = version;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscDUnitTest.java
index 391653c..b4f3185 100755
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscDUnitTest.java
@@ -14,21 +14,16 @@
*/
package org.apache.geode.internal.cache.tier.sockets;
-import static org.apache.geode.distributed.ConfigurationProperties.*;
-import static org.junit.Assert.*;
-
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.Set;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import org.apache.geode.GemFireConfigException;
-import org.apache.geode.cache.client.ClientCache;
-import org.apache.geode.cache.client.ClientCacheFactory;
-import org.apache.geode.test.dunit.DistributedTestUtils;
-import org.apache.geode.test.junit.categories.ClientServerTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
import org.apache.geode.GemFireIOException;
import org.apache.geode.cache.AttributesFactory;
import org.apache.geode.cache.Cache;
@@ -38,6 +33,7 @@ import org.apache.geode.cache.DataPolicy;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionAttributes;
import org.apache.geode.cache.Scope;
+import org.apache.geode.cache.client.ClientCacheFactory;
import org.apache.geode.cache.client.NoAvailableServersException;
import org.apache.geode.cache.client.Pool;
import org.apache.geode.cache.client.PoolManager;
@@ -54,6 +50,7 @@ import org.apache.geode.internal.cache.CacheServerImpl;
import org.apache.geode.internal.cache.GemFireCacheImpl;
import org.apache.geode.internal.cache.LocalRegion;
import org.apache.geode.test.dunit.Assert;
+import org.apache.geode.test.dunit.DistributedTestUtils;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.LogWriterUtils;
@@ -62,7 +59,19 @@ 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.dunit.cache.internal.JUnit4CacheTestCase;
+import org.apache.geode.test.dunit.standalone.VersionManager;
+import org.apache.geode.test.junit.categories.ClientServerTest;
import org.apache.geode.test.junit.categories.DistributedTest;
+import org.apache.geode.test.junit.runners.CategoryWithParameterizedRunnerFactory;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Properties;
+import java.util.Set;
/**
* Tests client server corner cases between Region and Pool
@@ -115,11 +124,18 @@ public class ClientServerMiscDUnitTest extends JUnit4CacheTestCase {
final int removeRange_2Start = 7;
final int removeRange_2End = 9;
+ protected String testVersion; // version for client caches for backward-compatibility
+ // testing
+
+ public ClientServerMiscDUnitTest() {
+ testVersion = VersionManager.CURRENT_VERSION;
+ }
+
@Override
public final void postSetUp() throws Exception {
host = Host.getHost(0);
- server1 = host.getVM(0);
- server2 = host.getVM(1);
+ server1 = host.getVM(2);
+ server2 = host.getVM(3);
}
private int initServerCache(boolean notifyBySub) {
@@ -140,16 +156,16 @@ public class ClientServerMiscDUnitTest extends JUnit4CacheTestCase {
int port1 = initServerCache(true); // vm0
int port2 = initServerCache2(true); // vm1
String serverName = NetworkUtils.getServerHostName(Host.getHost(0));
- host.getVM(2).invoke(() -> this.createClientCacheV(serverName, port1));
- host.getVM(3).invoke(() -> this.createClientCacheV(serverName, port2));
+ host.getVM(testVersion, 0).invoke(() -> this.createClientCacheV(serverName, port1));
+ host.getVM(testVersion, 1).invoke(() -> this.createClientCacheV(serverName, port2));
LogWriterUtils.getLogWriter()
.info("Testing concurrent map operations from a client with a distributed region");
- concurrentMapTest(host.getVM(2), "/" + REGION_NAME1);
- // TODO add verification in vm3
+ concurrentMapTest(host.getVM(testVersion, 0), "/" + REGION_NAME1);
+ // TODO add verification in vm1
LogWriterUtils.getLogWriter()
.info("Testing concurrent map operations from a client with a partitioned region");
- concurrentMapTest(host.getVM(2), "/" + PR_REGION_NAME);
- // TODO add verification in vm3
+ concurrentMapTest(host.getVM(testVersion, 0), "/" + PR_REGION_NAME);
+ // TODO add verification in vm1
}
@Test
@@ -157,16 +173,16 @@ public class ClientServerMiscDUnitTest extends JUnit4CacheTestCase {
int port1 = initServerCache(true); // vm0
int port2 = initServerCache2(true); // vm1
String serverName = NetworkUtils.getServerHostName(Host.getHost(0));
- host.getVM(2).invoke(() -> this.createEmptyClientCache(serverName, port1));
- host.getVM(3).invoke(() -> this.createClientCacheV(serverName, port2));
+ host.getVM(testVersion, 0).invoke(() -> this.createEmptyClientCache(serverName, port1));
+ host.getVM(testVersion, 1).invoke(() -> this.createClientCacheV(serverName, port2));
LogWriterUtils.getLogWriter()
.info("Testing concurrent map operations from a client with a distributed region");
- concurrentMapTest(host.getVM(2), "/" + REGION_NAME1);
- // TODO add verification in vm3
+ concurrentMapTest(host.getVM(testVersion, 0), "/" + REGION_NAME1);
+ // TODO add verification in vm1
LogWriterUtils.getLogWriter()
.info("Testing concurrent map operations from a client with a partitioned region");
- concurrentMapTest(host.getVM(2), "/" + PR_REGION_NAME);
- // TODO add verification in vm3
+ concurrentMapTest(host.getVM(testVersion, 0), "/" + PR_REGION_NAME);
+ // TODO add verification in vm1
}
/**
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscSelectorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscSelectorDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscSelectorDUnitTest.java
index e177b79..6ea9c67 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscSelectorDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/tier/sockets/ClientServerMiscSelectorDUnitTest.java
@@ -15,23 +15,16 @@
package org.apache.geode.internal.cache.tier.sockets;
import org.apache.geode.test.junit.categories.ClientServerTest;
-import org.junit.experimental.categories.Category;
-import org.junit.Test;
-
-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 org.junit.experimental.categories.Category;
/**
* Just like parent but enables server thread pool (ie. selector)
- *
- *
*/
@Category({DistributedTest.class, ClientServerTest.class})
public class ClientServerMiscSelectorDUnitTest extends ClientServerMiscDUnitTest {
+
public ClientServerMiscSelectorDUnitTest() {
super();
}
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/test/dunit/DUnitEnv.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/DUnitEnv.java b/geode-core/src/test/java/org/apache/geode/test/dunit/DUnitEnv.java
index efc196f..42ccf38 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/DUnitEnv.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/DUnitEnv.java
@@ -66,8 +66,10 @@ public abstract class DUnitEnv {
public abstract int getVMID();
- public abstract BounceResult bounce(int pid) throws RemoteException;
+ public abstract BounceResult bounce(String version, int pid) throws RemoteException;
public abstract File getWorkingDirectory(int pid);
+ public abstract File getWorkingDirectory(String version, int pid);
+
}
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/test/dunit/Host.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/Host.java b/geode-core/src/test/java/org/apache/geode/test/dunit/Host.java
old mode 100644
new mode 100755
index 43cbccf..277c803
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/Host.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/Host.java
@@ -17,9 +17,12 @@ package org.apache.geode.test.dunit;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import org.apache.geode.test.dunit.standalone.RemoteDUnitVMIF;
+import org.apache.geode.test.dunit.standalone.VersionManager;
/**
* <P>
@@ -93,6 +96,22 @@ public abstract class Host implements Serializable {
}
}
+ /**
+ * Reset all VMs to be using the current version of Geode. Some backward-compatibility tests will
+ * set a VM to a different version. This will ensure that all are using the current build.
+ */
+ public static void setAllVMsToCurrentVersion() {
+ int numHosts = getHostCount();
+ for (int hostIndex = 0; hostIndex < numHosts; hostIndex++) {
+ Host host = Host.getHost(hostIndex);
+ int numVMs = host.getVMCount();
+ for (int i = 0; i < numVMs; i++) {
+ host.getVM(VersionManager.CURRENT_VERSION, i);
+ }
+ }
+
+ }
+
///////////////////// Constructors //////////////////////
/**
@@ -145,6 +164,25 @@ public abstract class Host implements Serializable {
}
/**
+ * return a collection of all VMs
+ */
+ public Set<VM> getAllVMs() {
+ return new HashSet<>(vms);
+ }
+
+ /**
+ * Returns the nth VM of the given version. Optional operation currently supported only in
+ * distributedTests.
+ *
+ * @param version
+ * @param n
+ * @return the requested VM
+ */
+ public VM getVM(String version, int n) {
+ throw new UnsupportedOperationException("Not supported in this implementation of Host");
+ }
+
+ /**
* Adds a VM to this <code>Host</code> with the given process id and client record.
*/
protected void addVM(int pid, RemoteDUnitVMIF client) {
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/test/dunit/Invoke.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/Invoke.java b/geode-core/src/test/java/org/apache/geode/test/dunit/Invoke.java
index a09f5ff..002abd4 100755
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/Invoke.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/Invoke.java
@@ -52,8 +52,7 @@ public class Invoke {
for (int hostIndex = 0; hostIndex < Host.getHostCount(); hostIndex++) {
Host host = Host.getHost(hostIndex);
- for (int vmIndex = 0; vmIndex < host.getVMCount(); vmIndex++) {
- VM vm = host.getVM(vmIndex);
+ for (VM vm : host.getAllVMs()) {
if (name != null)
vm.invoke(name, runnable);
else
@@ -74,8 +73,7 @@ public class Invoke {
for (int hostIndex = 0; hostIndex < Host.getHostCount(); hostIndex++) {
Host host = Host.getHost(hostIndex);
- for (int vmIndex = 0; vmIndex < host.getVMCount(); vmIndex++) {
- VM vm = host.getVM(vmIndex);
+ for (VM vm : host.getAllVMs()) {
vm.invoke(targetClass, targetMethod);
}
}
@@ -93,8 +91,7 @@ public class Invoke {
for (int hostIndex = 0; hostIndex < Host.getHostCount(); hostIndex++) {
Host host = Host.getHost(hostIndex);
- for (int vmIndex = 0; vmIndex < host.getVMCount(); vmIndex++) {
- VM vm = host.getVM(vmIndex);
+ for (VM vm : host.getAllVMs()) {
vm.invoke(targetClass, targetMethod, methodArgs);
}
}
@@ -116,8 +113,7 @@ public class Invoke {
Map<VM, T> ret = new HashMap<VM, T>();
for (int h = 0; h < Host.getHostCount(); h++) {
Host host = Host.getHost(h);
- for (int v = 0; v < host.getVMCount(); v++) {
- VM vm = host.getVM(v);
+ for (VM vm : host.getAllVMs()) {
if (name != null)
ret.put(vm, vm.invoke(name, callable));
else
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/test/dunit/VM.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/VM.java b/geode-core/src/test/java/org/apache/geode/test/dunit/VM.java
index 04d2951..6055f8b 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/VM.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/VM.java
@@ -28,6 +28,7 @@ import org.apache.geode.internal.process.ProcessUtils;
import org.apache.geode.test.dunit.standalone.BounceResult;
import org.apache.geode.test.dunit.standalone.RemoteDUnitVMIF;
import org.apache.geode.test.dunit.standalone.StandAloneDUnitEnv;
+import org.apache.geode.test.dunit.standalone.VersionManager;
/**
* This class represents a Java Virtual Machine that runs on a host.
@@ -41,6 +42,9 @@ public class VM implements Serializable {
/** The process id of this VM */
private int pid;
+ /** The version of Geode used in this VM */
+ private String version;
+
/** The hydra client for this VM */
private RemoteDUnitVMIF client;
@@ -69,13 +73,32 @@ public class VM implements Serializable {
}
/**
+ * Returns the name of a VM for use in the RMI naming service or working directory on disk
+ */
+ public static String getVMName(String version, int pid) {
+ if (pid == -2) {
+ return "locator";
+ }
+ if (pid < 0 || VersionManager.isCurrentVersion(version)) {
+ return "vm" + pid;
+ } else {
+ return "vm" + pid + "_v" + version;
+ }
+ }
+
+ /**
* Creates a new {@code VM} that runs on a given host with a given process id.
*
* TODO: change pid to reflect value from {@link ProcessUtils#identifyPid()}
*/
public VM(final Host host, final int pid, final RemoteDUnitVMIF client) {
+ this(host, VersionManager.CURRENT_VERSION, pid, client);
+ }
+
+ public VM(final Host host, final String version, final int pid, final RemoteDUnitVMIF client) {
this.host = host;
this.pid = pid;
+ this.version = version;
this.client = client;
this.available = true;
}
@@ -88,6 +111,16 @@ public class VM implements Serializable {
}
/**
+ * Returns the version of Geode used in this VM.
+ *
+ * @see VersionManager#CURRENT_VERSION
+ * @see Host#getVM(String, int)
+ */
+ public String getVersion() {
+ return this.version;
+ }
+
+ /**
* Returns the process id of this {@code VM}.
*/
public int getPid() {
@@ -359,6 +392,10 @@ public class VM implements Serializable {
* {@code hydra.Prms#maxClientStartupWaitSec}.
*/
public synchronized void bounce() {
+ bounce(this.version);
+ }
+
+ public synchronized void bounce(String targetVersion) {
if (!this.available) {
throw new RMIException(this, getClass().getName(), "bounceVM",
new IllegalStateException("VM not available: " + this));
@@ -367,9 +404,10 @@ public class VM implements Serializable {
this.available = false;
try {
- BounceResult result = DUnitEnv.get().bounce(this.pid);
+ BounceResult result = DUnitEnv.get().bounce(targetVersion, this.pid);
this.pid = result.getNewPid();
this.client = result.getNewClient();
+ this.version = targetVersion;
this.available = true;
} catch (UnsupportedOperationException e) {
@@ -386,11 +424,12 @@ public class VM implements Serializable {
}
public String toString() {
- return "VM " + getPid() + " running on " + getHost();
+ return "VM " + getPid() + " running on " + getHost()
+ + (VersionManager.isCurrentVersion(version) ? "" : (" with version " + version));
}
public File getWorkingDirectory() {
- return DUnitEnv.get().getWorkingDirectory(getPid());
+ return DUnitEnv.get().getWorkingDirectory(getVersion(), getPid());
}
private MethExecutorResult execute(final Class targetClass, final String methodName,
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ChildVM.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ChildVM.java b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ChildVM.java
index b85d0b5..634e09f 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ChildVM.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ChildVM.java
@@ -18,6 +18,7 @@ import java.rmi.Naming;
import org.apache.geode.internal.OSProcess;
import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.geode.test.dunit.standalone.DUnitLauncher.MasterRemote;
@@ -43,14 +44,19 @@ public class ChildVM {
try {
int namingPort = Integer.getInteger(DUnitLauncher.RMI_PORT_PARAM);
int vmNum = Integer.getInteger(DUnitLauncher.VM_NUM_PARAM);
+ String geodeVersion = System.getProperty(DUnitLauncher.VM_VERSION_PARAM);
int pid = OSProcess.getId();
logger.info("VM" + vmNum + " is launching" + (pid > 0 ? " with PID " + pid : ""));
+ if (!VersionManager.isCurrentVersion(geodeVersion)) {
+ logger.info("This VM is using Geode version {}", geodeVersion);
+ }
MasterRemote holder = (MasterRemote) Naming
.lookup("//localhost:" + namingPort + "/" + DUnitLauncher.MASTER_PARAM);
DUnitLauncher.init(holder);
DUnitLauncher.locatorPort = holder.getLocatorPort();
final RemoteDUnitVM dunitVM = new RemoteDUnitVM();
- Naming.rebind("//localhost:" + namingPort + "/vm" + vmNum, dunitVM);
+ final String name = "//localhost:" + namingPort + "/vm" + vmNum;
+ Naming.rebind(name, dunitVM);
JUnit4DistributedTestCase.initializeBlackboard();
holder.signalVMReady();
// This loop is here so this VM will die even if the master is mean killed.
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java
index 8587ea5..abbfea9 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/DUnitLauncher.java
@@ -14,8 +14,15 @@
*/
package org.apache.geode.test.dunit.standalone;
-import batterytest.greplogs.ExpectedStrings;
-import batterytest.greplogs.LogConsumer;
+import static org.apache.geode.distributed.ConfigurationProperties.DISABLE_AUTO_RECONNECT;
+import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.USE_CLUSTER_CONFIGURATION;
+import static org.apache.geode.distributed.internal.DistributionConfig.GEMFIRE_PREFIX;
+
import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.distributed.internal.InternalLocator;
@@ -26,8 +33,6 @@ import org.apache.geode.test.dunit.DUnitEnv;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.SerializableCallable;
import org.apache.geode.test.dunit.VM;
-import hydra.MethExecutorResult;
-
import org.apache.geode.test.dunit.internal.JUnit4DistributedTestCase;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
@@ -37,37 +42,55 @@ import org.apache.logging.log4j.core.config.LoggerConfig;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.junit.Assert;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.URISyntaxException;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
-import java.rmi.*;
+import java.rmi.AccessException;
+import java.rmi.AlreadyBoundException;
+import java.rmi.NotBoundException;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.List;
import java.util.Properties;
-
-import static org.apache.geode.distributed.ConfigurationProperties.*;
+import batterytest.greplogs.ExpectedStrings;
+import batterytest.greplogs.LogConsumer;
+import hydra.MethExecutorResult;
/**
* A class to build a fake test configuration and launch some DUnit VMS.
- *
+ *
* For use within eclipse. This class completely skips hydra and just starts some vms directly,
* creating a fake test configuration
- *
+ *
* Also, it's a good idea to set your working directory, because the test code a lot of files that
* it leaves around.
*/
public class DUnitLauncher {
- /** change this to use a different log level in unit tests */
+ /**
+ * change this to use a different log level in unit tests
+ */
public static final String logLevel = System.getProperty("logLevel", "info");
public static final String LOG4J = System.getProperty("log4j.configurationFile");
+ /**
+ * change this to have dunit/vmX directories deleted and recreated when processes are launched
+ */
+ public static final boolean MAKE_NEW_WORKING_DIRS =
+ Boolean.getBoolean("makeNewWorkingDirsOnBounce");
+
static int locatorPort;
private static final int NUM_VMS = 4;
@@ -83,12 +106,12 @@ public class DUnitLauncher {
public static final boolean LOCATOR_LOG_TO_DISK = Boolean.getBoolean("locatorLogToDisk");
static final String MASTER_PARAM = "DUNIT_MASTER";
- public static final String RMI_PORT_PARAM =
- DistributionConfig.GEMFIRE_PREFIX + "DUnitLauncher.RMI_PORT";
- static final String VM_NUM_PARAM = DistributionConfig.GEMFIRE_PREFIX + "DUnitLauncher.VM_NUM";
- private static final String LAUNCHED_PROPERTY =
- DistributionConfig.GEMFIRE_PREFIX + "DUnitLauncher.LAUNCHED";
+ public static final String RMI_PORT_PARAM = GEMFIRE_PREFIX + "DUnitLauncher.RMI_PORT";
+ static final String VM_NUM_PARAM = GEMFIRE_PREFIX + "DUnitLauncher.VM_NUM";
+ static final String VM_VERSION_PARAM = GEMFIRE_PREFIX + "DUnitLauncher.VM_VERSION";
+
+ private static final String LAUNCHED_PROPERTY = GEMFIRE_PREFIX + "DUnitLauncher.LAUNCHED";
private static Master master;
@@ -123,6 +146,8 @@ public class DUnitLauncher {
throw new RuntimeException("Unable to launch dunit VMS", e);
}
}
+
+ Host.setAllVMsToCurrentVersion();
}
/**
@@ -189,7 +214,6 @@ public class DUnitLauncher {
}
});
-
// Create a VM for the locator
processManager.launchVM(LOCATOR_VM_NUM);
@@ -202,7 +226,6 @@ public class DUnitLauncher {
init(master);
-
// Launch an initial set of VMs
for (int i = 0; i < NUM_VMS; i++) {
processManager.launchVM(i);
@@ -305,7 +328,7 @@ public class DUnitLauncher {
addSuspectFileAppender(workspaceDir);
// Free off heap memory when disconnecting from the distributed system
- System.setProperty(DistributionConfig.GEMFIRE_PREFIX + "free-off-heap-memory", "true");
+ System.setProperty(GEMFIRE_PREFIX + "free-off-heap-memory", "true");
// indicate that this CM is controlled by the eclipse dunit.
System.setProperty(LAUNCHED_PROPERTY, "true");
@@ -368,6 +391,7 @@ public class DUnitLauncher {
}
}
+
public interface MasterRemote extends Remote {
public int getLocatorPort() throws RemoteException;
@@ -376,6 +400,8 @@ public class DUnitLauncher {
public void ping() throws RemoteException;
public BounceResult bounce(int pid) throws RemoteException;
+
+ public BounceResult bounce(String version, int pid) throws RemoteException;
}
public static class Master extends UnicastRemoteObject implements MasterRemote {
@@ -404,13 +430,19 @@ public class DUnitLauncher {
@Override
public BounceResult bounce(int pid) {
- processManager.bounce(pid);
+ return bounce(VersionManager.CURRENT_VERSION, pid);
+ }
+
+ @Override
+ public BounceResult bounce(String version, int pid) {
+ processManager.bounce(version, pid);
try {
if (!processManager.waitForVMs(STARTUP_TIMEOUT)) {
throw new RuntimeException("VMs did not start up with 30 seconds");
}
- RemoteDUnitVMIF remote = (RemoteDUnitVMIF) registry.lookup("vm" + pid);
+ RemoteDUnitVMIF remote =
+ (RemoteDUnitVMIF) registry.lookup(VM.getVMName(VersionManager.CURRENT_VERSION, pid));
return new BounceResult(pid, remote);
} catch (RemoteException | NotBoundException e) {
throw new RuntimeException("could not lookup name", e);
@@ -447,25 +479,45 @@ public class DUnitLauncher {
@Override
public VM getVM(int n) {
+ return getVM(VersionManager.CURRENT_VERSION, n);
+ }
+ @Override
+ public VM getVM(String version, int n) {
if (n == DEBUGGING_VM_NUM) {
// for ease of debugging, pass -1 to get the local VM
return debuggingVM;
}
+ if (n < getVMCount()) {
+ VM current = super.getVM(n);
+ if (!current.getVersion().equals(version)) {
+ System.out.println(
+ "Bouncing VM" + n + " from version " + current.getVersion() + " to " + version);
+ current.bounce(version);
+ }
+ return current;
+ }
+
int oldVMCount = getVMCount();
if (n >= oldVMCount) {
// If we don't have a VM with that number, dynamically create it.
try {
- for (int i = oldVMCount; i <= n; i++) {
+ // first fill in any gaps, to keep the superclass, Host, happy
+ for (int i = oldVMCount; i < n; i++) {
processManager.launchVM(i);
}
processManager.waitForVMs(STARTUP_TIMEOUT);
- for (int i = oldVMCount; i <= n; i++) {
+ for (int i = oldVMCount; i < n; i++) {
addVM(i, processManager.getStub(i));
}
+ // now create the one we really want
+ processManager.launchVM(version, n, false);
+ processManager.waitForVMs(STARTUP_TIMEOUT);
+ addVM(n, processManager.getStub(n));
+
} catch (IOException | InterruptedException | NotBoundException e) {
throw new RuntimeException("Could not dynamically launch vm + " + n, e);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ProcessManager.java b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
index c3c33d0..dce4353 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/ProcessManager.java
@@ -38,41 +38,54 @@ import org.apache.commons.io.FileUtils;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.internal.FileUtil;
+import org.apache.geode.test.dunit.VM;
/**
*
*/
public class ProcessManager {
private int namingPort;
- private Map<Integer, ProcessHolder> processes = new HashMap<Integer, ProcessHolder>();
+ private Map<Integer, ProcessHolder> processes = new HashMap<>();
private File log4jConfig;
private int pendingVMs;
private Registry registry;
private int debugPort = Integer.getInteger("dunit.debug.basePort", 0);
private int suspendVM = Integer.getInteger("dunit.debug.suspendVM", -100);
+ private VersionManager versionManager;
public ProcessManager(int namingPort, Registry registry) {
+ this.versionManager = VersionManager.getInstance();
this.namingPort = namingPort;
this.registry = registry;
}
public synchronized void launchVM(int vmNum) throws IOException {
- if (processes.containsKey(vmNum)) {
- throw new IllegalStateException("VM " + vmNum + " is already running.");
+ launchVM(VersionManager.CURRENT_VERSION, vmNum, false);
+ }
+
+ public synchronized void launchVM(String version, int vmNum, boolean bouncedVM)
+ throws IOException {
+ if (processes.containsKey(version)) {
+ throw new IllegalStateException(
+ "For version " + version + ", VM " + vmNum + " is already running.");
}
- String[] cmd = buildJavaCommand(vmNum, namingPort);
+ String[] cmd = buildJavaCommand(vmNum, namingPort, version);
System.out.println("Executing " + Arrays.toString(cmd));
- File workingDir = getVMDir(vmNum);
- try {
- FileUtil.delete(workingDir);
- } catch (IOException e) {
- // This delete is occasionally failing on some platforms, maybe due to a lingering
- // process. Allow the process to be launched anyway.
- System.err.println("Unable to delete " + workingDir + ". Currently contains "
- + Arrays.asList(workingDir.list()));
+ File workingDir = getVMDir(version, vmNum);
+ if (!workingDir.exists()) {
+ workingDir.mkdirs();
+ } else if (!bouncedVM || DUnitLauncher.MAKE_NEW_WORKING_DIRS) {
+ try {
+ FileUtil.delete(workingDir);
+ } catch (IOException e) {
+ // This delete is occasionally failing on some platforms, maybe due to a lingering
+ // process. Allow the process to be launched anyway.
+ System.err.println("Unable to delete " + workingDir + ". Currently contains "
+ + Arrays.asList(workingDir.list()));
+ }
+ workingDir.mkdirs();
}
- workingDir.mkdirs();
if (log4jConfig != null) {
FileUtils.copyFileToDirectory(log4jConfig, workingDir);
}
@@ -82,12 +95,18 @@ public class ProcessManager {
pendingVMs++;
ProcessHolder holder = new ProcessHolder(process);
processes.put(vmNum, holder);
- linkStreams(vmNum, holder, process.getErrorStream(), System.err);
- linkStreams(vmNum, holder, process.getInputStream(), System.out);
+ linkStreams(version, vmNum, holder, process.getErrorStream(), System.err);
+ linkStreams(version, vmNum, holder, process.getInputStream(), System.out);
}
- public static File getVMDir(int vmNum) {
- return new File(DUnitLauncher.DUNIT_DIR, "vm" + vmNum);
+ public void validateVersion(String version) {
+ if (!versionManager.isValidVersion(version)) {
+ throw new IllegalArgumentException("Version " + version + " is not configured for use");
+ }
+ }
+
+ public static File getVMDir(String version, int vmNum) {
+ return new File(DUnitLauncher.DUNIT_DIR, VM.getVMName(VersionManager.CURRENT_VERSION, vmNum));
}
public synchronized void killVMs() {
@@ -107,7 +126,7 @@ public class ProcessManager {
return false;
}
- public synchronized void bounce(int vmNum) {
+ public synchronized void bounce(String version, int vmNum) {
if (!processes.containsKey(vmNum)) {
throw new IllegalStateException("No such process " + vmNum);
}
@@ -115,18 +134,18 @@ public class ProcessManager {
ProcessHolder holder = processes.remove(vmNum);
holder.kill();
holder.getProcess().waitFor();
- launchVM(vmNum);
+ launchVM(version, vmNum, true);
} catch (InterruptedException | IOException e) {
throw new RuntimeException("Unable to restart VM " + vmNum, e);
}
}
- private void linkStreams(final int vmNum, final ProcessHolder holder, final InputStream in,
- final PrintStream out) {
+ private void linkStreams(final String version, final int vmNum, final ProcessHolder holder,
+ final InputStream in, final PrintStream out) {
Thread ioTransport = new Thread() {
public void run() {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
- String vmName = (vmNum == -2) ? "[locator]" : "[vm_" + vmNum + "]";
+ String vmName = "[" + VM.getVMName(version, vmNum) + "] ";
try {
String line = reader.readLine();
while (line != null) {
@@ -151,9 +170,16 @@ public class ProcessManager {
ioTransport.start();
}
- private String[] buildJavaCommand(int vmNum, int namingPort) {
+ private String[] buildJavaCommand(int vmNum, int namingPort, String version) {
String cmd = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
- String classPath = System.getProperty("java.class.path");
+ String dunitClasspath = System.getProperty("java.class.path");
+ String classPath;
+ if (!VersionManager.isCurrentVersion(version)) {
+ classPath = versionManager.getClasspath(version) + File.pathSeparator + dunitClasspath;
+ } else {
+ classPath = dunitClasspath;
+ }
+
// String tmpDir = System.getProperty("java.io.tmpdir");
String agent = getAgentString();
@@ -163,7 +189,7 @@ public class ProcessManager {
debugPort++;
}
- String jdkSuspend = vmNum == suspendVM ? "y" : "n";
+ String jdkSuspend = vmNum == suspendVM ? "y" : "n"; // ignore version
ArrayList<String> cmds = new ArrayList<String>();
cmds.add(cmd);
cmds.add("-classpath");
@@ -171,9 +197,12 @@ public class ProcessManager {
cmds.add(classPath);
cmds.add("-D" + DUnitLauncher.RMI_PORT_PARAM + "=" + namingPort);
cmds.add("-D" + DUnitLauncher.VM_NUM_PARAM + "=" + vmNum);
+ cmds.add("-D" + DUnitLauncher.VM_VERSION_PARAM + "=" + version);
cmds.add("-D" + DUnitLauncher.WORKSPACE_DIR_PARAM + "=" + new File(".").getAbsolutePath());
if (vmNum >= 0) { // let the locator print a banner
- cmds.add("-D" + InternalLocator.INHIBIT_DM_BANNER + "=true");
+ if (version.equals(VersionManager.CURRENT_VERSION)) { // enable the banner for older versions
+ cmds.add("-D" + InternalLocator.INHIBIT_DM_BANNER + "=true");
+ }
} else {
// most distributed unit tests were written under the assumption that network partition
// detection is disabled, so we turn it off in the locator. Tests for network partition
@@ -293,7 +322,46 @@ public class ProcessManager {
public RemoteDUnitVMIF getStub(int i)
throws AccessException, RemoteException, NotBoundException, InterruptedException {
+ return getStub(VersionManager.CURRENT_VERSION, i);
+ }
+
+ public RemoteDUnitVMIF getStub(String version, int i)
+ throws AccessException, RemoteException, NotBoundException, InterruptedException {
waitForVMs(DUnitLauncher.STARTUP_TIMEOUT);
return (RemoteDUnitVMIF) registry.lookup("vm" + i);
}
+
+ private static class VersionedVMNumber {
+ String version;
+ int number;
+
+ VersionedVMNumber(String version, int number) {
+ this.version = version;
+ this.number = number;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ VersionedVMNumber that = (VersionedVMNumber) o;
+
+ if (number != that.number) {
+ return false;
+ }
+ return version.equals(that.version);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = version.hashCode();
+ result = 31 * result + number;
+ return result;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/StandAloneDUnitEnv.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/StandAloneDUnitEnv.java b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/StandAloneDUnitEnv.java
index 3d554ed..1dac10c 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/StandAloneDUnitEnv.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/StandAloneDUnitEnv.java
@@ -60,13 +60,18 @@ public class StandAloneDUnitEnv extends DUnitEnv {
}
@Override
- public BounceResult bounce(int pid) throws RemoteException {
- return master.bounce(pid);
+ public BounceResult bounce(String version, int pid) throws RemoteException {
+ return master.bounce(version, pid);
}
@Override
public File getWorkingDirectory(int pid) {
- return ProcessManager.getVMDir(pid);
+ return getWorkingDirectory(VersionManager.CURRENT_VERSION, pid);
+ }
+
+ @Override
+ public File getWorkingDirectory(String version, int pid) {
+ return ProcessManager.getVMDir(version, pid);
}
}
[3/6] geode git commit: GEODE-1965 Create backward-compatibility unit
test framework
Posted by bs...@apache.org.
http://git-wip-us.apache.org/repos/asf/geode/blob/be8db8b7/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/VersionManager.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/VersionManager.java b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/VersionManager.java
new file mode 100755
index 0000000..7bda948
--- /dev/null
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/standalone/VersionManager.java
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.geode.test.dunit.standalone;
+
+import org.apache.geode.test.dunit.Host;
+import org.apache.geode.test.dunit.VM;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * VersionManager loads the class-paths for all of the releases of Geode configured for
+ * backward-compatibility testing in the geode-core build.gradle file.
+ * <p>
+ * Tests may use these versions in launching VMs to run older clients or servers.
+ *
+ * @see Host#getVM(String, int)
+ */
+public class VersionManager {
+ public static final String CURRENT_VERSION = "000";
+
+ private static VersionManager instance;
+
+ protected static void init() {
+ instance = new VersionManager();
+ instance.findVersions();
+ }
+
+ public static VersionManager getInstance() {
+ if (instance == null) {
+ init();
+ }
+ return instance;
+ }
+
+ /**
+ * classPaths for old versions loaded from a file generated by Gradle
+ */
+ private Map<String, String> classPaths = new HashMap<>();
+
+ private List<String> testVersions = new ArrayList<String>(10);
+
+ private String oldestVersion;
+
+ /**
+ * Test to see if a version string is known to VersionManager. Versions are either CURRENT_VERSION
+ * or one of the versions returned by VersionManager#getVersions()
+ */
+ public boolean isValidVersion(String version) {
+ return version.equals(CURRENT_VERSION) || classPaths.containsKey(version);
+ }
+
+ /**
+ * Returns true if the version is equal to the CURRENT_VERSION constant
+ */
+ public static boolean isCurrentVersion(String version) {
+ return version.equals(CURRENT_VERSION);
+ }
+
+ /**
+ * Returns the classPath for the given version, or null if the version is not valid. Use
+ * CURRENT_VERSION for the version in development.
+ */
+ public String getClasspath(String version) {
+ return classPaths.get(version);
+ }
+
+ /**
+ * Returns a list of older versions available for testing
+ */
+ public List<String> getVersions() {
+ return Collections.unmodifiableList(testVersions);
+ }
+
+ public List<String> getVersionsWithoutCurrent() {
+ List<String> result = new ArrayList<>(testVersions);
+ result.remove(CURRENT_VERSION);
+ return result;
+ }
+
+ /**
+ * returns the oldest version defined in the geodeOldVersionClasspaths.txt file
+ */
+ public String getOldestVersion() {
+ return oldestVersion;
+ }
+
+ private void findVersions() {
+ // this file is created by the gradle task createClasspathsPropertiesFile
+ File propFile = new File("../../../geode-old-versions/build/geodeOldVersionClasspaths.txt");
+ if (!propFile.exists()) {
+ // running under an IDE
+ propFile = new File("../geode-old-versions/build/geodeOldVersionClasspaths.txt");
+ }
+ String oldver = "ZZZ";
+ if (propFile.exists()) {
+ System.out.println("found geodeOldVersionClasspaths.txt - loading properties");
+ Map<String, String> dunitProperties = loadProperties(propFile);
+ for (Map.Entry<String, String> entry : dunitProperties.entrySet()) {
+ String version = entry.getKey();
+ if (version.startsWith("test") && version.length() >= "test".length()) {
+ if (version.equals("test")) {
+ version = CURRENT_VERSION;
+ } else {
+ version = version.substring("test".length());
+ if (version.compareTo(oldver) < 0) {
+ oldver = version;
+ }
+ }
+ classPaths.put(version, entry.getValue());
+ testVersions.add(version);
+ }
+ }
+ if (oldver.equals("ZZZ")) {
+ oldestVersion = CURRENT_VERSION;
+ } else {
+ oldestVersion = oldver;
+ }
+ } else {
+ System.out.println(
+ "WARNING: could not find geodeTestClasspaths.txt - tests will use current version");
+ }
+ }
+
+ /**
+ * Loads properties from a file, returning a Map object. Note: this method cannot use
+ * Properties.load() because that method interprets back-slashes as escape characters, causing
+ * class-paths on Windows machines to be garbled.
+ */
+ private Map<String, String> loadProperties(File propFile) {
+ Map<String, String> dunitProperties = new HashMap<>();
+ try {
+ String propertyLine;
+ FileReader reader = new FileReader(propFile);
+ BufferedReader breader = new BufferedReader(reader);
+ while ((propertyLine = breader.readLine()) != null) {
+ propertyLine = propertyLine.trim();
+ if (propertyLine.length() != 0 || !propertyLine.startsWith("#")) {
+ String[] split = propertyLine.split("=");
+ dunitProperties.put(split[0], split[1]);
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return dunitProperties;
+ }
+
+
+
+}