You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bo...@apache.org on 2017/06/07 17:24:31 UTC
geode git commit: GEODE-3040: Compare gateway profile order policy
against 9.0 instead of current
Repository: geode
Updated Branches:
refs/heads/develop 6fc757aba -> 934b61a69
GEODE-3040: Compare gateway profile order policy against 9.0 instead of current
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/934b61a6
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/934b61a6
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/934b61a6
Branch: refs/heads/develop
Commit: 934b61a6924641260d104f01c1db8c0a8c54e659
Parents: 6fc757a
Author: Barry Oglesby <bo...@pivotal.io>
Authored: Mon Jun 5 18:02:28 2017 -0700
Committer: Barry Oglesby <bo...@pivotal.io>
Committed: Wed Jun 7 10:16:17 2017 -0700
----------------------------------------------------------------------
.../cache/wan/GatewaySenderAdvisor.java | 4 +-
geode-wan/build.gradle | 1 +
.../cache/wan/WANRollingUpgradeDUnitTest.java | 123 +++++++++++++++++++
3 files changed, 126 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/934b61a6/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderAdvisor.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderAdvisor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderAdvisor.java
index 72ad77b..ca82ac6 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderAdvisor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/wan/GatewaySenderAdvisor.java
@@ -551,7 +551,7 @@ public class GatewaySenderAdvisor extends DistributionAdvisor {
this.senderEventListenerClassNames = DataSerializer.readArrayList(in);
this.isDiskSynchronous = in.readBoolean();
this.dispatcherThreads = in.readInt();
- if (InternalDataSerializer.getVersionForDataStream(in).compareTo(Version.CURRENT) < 0) {
+ if (InternalDataSerializer.getVersionForDataStream(in).compareTo(Version.GFE_90) < 0) {
Gateway.OrderPolicy oldOrderPolicy = DataSerializer.readObject(in);
if (oldOrderPolicy != null) {
if (oldOrderPolicy.name().equals(OrderPolicy.KEY.name())) {
@@ -592,7 +592,7 @@ public class GatewaySenderAdvisor extends DistributionAdvisor {
DataSerializer.writeArrayList(senderEventListenerClassNames, out);
out.writeBoolean(isDiskSynchronous);
out.writeInt(dispatcherThreads);
- if (InternalDataSerializer.getVersionForDataStream(out).compareTo(Version.CURRENT) < 0
+ if (InternalDataSerializer.getVersionForDataStream(out).compareTo(Version.GFE_90) < 0
&& this.orderPolicy != null) {
String orderPolicyName = this.orderPolicy.name();
if (orderPolicyName.equals(Gateway.OrderPolicy.KEY.name())) {
http://git-wip-us.apache.org/repos/asf/geode/blob/934b61a6/geode-wan/build.gradle
----------------------------------------------------------------------
diff --git a/geode-wan/build.gradle b/geode-wan/build.gradle
index b3a8449..7cbbf85 100644
--- a/geode-wan/build.gradle
+++ b/geode-wan/build.gradle
@@ -20,4 +20,5 @@ dependencies {
testCompile files(project(':geode-core').sourceSets.test.output)
testCompile project(':geode-junit')
+ testCompile project(':geode-old-versions')
}
http://git-wip-us.apache.org/repos/asf/geode/blob/934b61a6/geode-wan/src/test/java/org/apache/geode/cache/wan/WANRollingUpgradeDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-wan/src/test/java/org/apache/geode/cache/wan/WANRollingUpgradeDUnitTest.java b/geode-wan/src/test/java/org/apache/geode/cache/wan/WANRollingUpgradeDUnitTest.java
new file mode 100644
index 0000000..b5776cd
--- /dev/null
+++ b/geode-wan/src/test/java/org/apache/geode/cache/wan/WANRollingUpgradeDUnitTest.java
@@ -0,0 +1,123 @@
+/*
+ * 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.cache.wan;
+
+import org.apache.geode.distributed.Locator;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.internal.AvailablePort;
+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.NetworkUtils;
+import org.apache.geode.test.dunit.VM;
+import org.apache.geode.test.dunit.cache.internal.JUnit4CacheTestCase;
+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.IOException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Properties;
+
+@Category({DistributedTest.class, BackwardCompatibilityTest.class})
+@RunWith(Parameterized.class)
+@Parameterized.UseParametersRunnerFactory(CategoryWithParameterizedRunnerFactory.class)
+public class WANRollingUpgradeDUnitTest extends JUnit4CacheTestCase {
+
+ @Parameterized.Parameters
+ public static Collection<String> data() {
+ List<String> result = VersionManager.getInstance().getVersionsWithoutCurrent();
+ if (result.size() < 1) {
+ throw new RuntimeException("No older versions of Geode were found to test against");
+ } else {
+ System.out.println("running against these versions: " + result);
+ }
+ return result;
+ }
+
+ // the old version of Geode we're testing against
+ private String oldVersion;
+
+ public WANRollingUpgradeDUnitTest(String version) {
+ oldVersion = version;
+ }
+
+ @Test
+ // This test verifies that a GatewaySenderProfile serializes properly between versions.
+ public void testVerifyGatewaySenderProfile() throws Exception {
+ doTestVerifyGatewaySenderProfile(oldVersion);
+ }
+
+ private void doTestVerifyGatewaySenderProfile(String oldVersion) throws Exception {
+ final Host host = Host.getHost(0);
+ VM oldLocator = host.getVM(oldVersion, 0);
+ VM oldServer = host.getVM(oldVersion, 1);
+ VM currentServer = host.getVM(2);
+
+ // Start locator
+ final int port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+ DistributedTestUtils.deleteLocatorStateFile(port);
+ final String locators = NetworkUtils.getServerHostName(host) + "[" + port + "]";
+ oldLocator.invoke(() -> startLocator(port, locators));
+
+ IgnoredException ie =
+ IgnoredException.addIgnoredException("could not get remote locator information");
+ try {
+ // Start old server
+ oldServer.invoke(() -> startServer(locators));
+
+ // Create GatewaySender in old server
+ oldServer.invoke(() -> createGatewaySender());
+
+ // Start current server
+ currentServer.invoke(() -> startServer(locators));
+
+ // Attempt to create GatewaySender in new server
+ currentServer.invoke(() -> createGatewaySender());
+ } finally {
+ ie.remove();
+ }
+ }
+
+ private void startLocator(int port, String locators) throws IOException {
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
+ props.setProperty(DistributionConfig.LOCATORS_NAME, locators);
+ props.setProperty(DistributionConfig.LOG_LEVEL_NAME, DUnitLauncher.logLevel);
+ Locator.startLocatorAndDS(port, null, props);
+ }
+
+ private void startServer(String locators) {
+ Properties props = new Properties();
+ props.setProperty(DistributionConfig.MCAST_PORT_NAME, "0");
+ props.setProperty(DistributionConfig.LOCATORS_NAME, locators);
+ props.setProperty(DistributionConfig.LOG_LEVEL_NAME, DUnitLauncher.logLevel);
+ getCache(props);
+ }
+
+ protected void createGatewaySender() throws Exception {
+ GatewaySenderFactory gsf = getCache().createGatewaySenderFactory();
+ gsf.setParallel(true);
+ gsf.setOrderPolicy(GatewaySender.DEFAULT_ORDER_POLICY);
+ gsf.create(getName() + "_gatewaysender", 10);
+ }
+}