From a1896c4c5344a77efc313dd6899147541a28765e Mon Sep 17 00:00:00 2001 From: andytaylor Date: Wed, 10 Oct 2018 11:00:10 +0100 Subject: [PATCH] NO-JIRA - fixing up some broken tests Some tests were added to a class that was extended, Ive moved these into their own class --- .../ExtraBackupReplicatedFailoverTest.java | 115 ++++++++++++++++++ .../failover/ReplicatedFailoverTest.java | 54 -------- ...ultipleServerFailoverExtraBackupsTest.java | 2 + 3 files changed, 117 insertions(+), 54 deletions(-) create mode 100644 tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ExtraBackupReplicatedFailoverTest.java diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ExtraBackupReplicatedFailoverTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ExtraBackupReplicatedFailoverTest.java new file mode 100644 index 0000000000..77cdf825a6 --- /dev/null +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ExtraBackupReplicatedFailoverTest.java @@ -0,0 +1,115 @@ +/* + * 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.activemq.artemis.tests.integration.cluster.failover; + +import org.apache.activemq.artemis.api.core.TransportConfiguration; +import org.apache.activemq.artemis.core.config.Configuration; +import org.apache.activemq.artemis.core.config.ha.ReplicaPolicyConfiguration; +import org.apache.activemq.artemis.core.config.ha.ReplicatedPolicyConfiguration; +import org.apache.activemq.artemis.core.server.ActiveMQServer; +import org.apache.activemq.artemis.junit.Wait; +import org.apache.activemq.artemis.tests.integration.cluster.util.TestableServer; +import org.apache.activemq.artemis.tests.util.TransportConfigurationUtils; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestRule; +import org.junit.rules.TestWatcher; +import org.junit.runner.Description; + +public class ExtraBackupReplicatedFailoverTest extends FailoverTestBase { + + boolean isExtraBackupGroupNameReplicates = false; + + @Rule + public TestRule watcher = new TestWatcher() { + @Override + protected void starting(Description description) { + isExtraBackupGroupNameReplicates = description.getMethodName().equals("testExtraBackupGroupNameReplicates"); + } + + }; + + @Test + public void testExtraBackupReplicates() throws Exception { + Configuration secondBackupConfig = backupConfig.copy(); + TransportConfiguration tc = secondBackupConfig.getAcceptorConfigurations().iterator().next(); + TestableServer secondBackupServer = createTestableServer(secondBackupConfig); + tc.getParams().put("serverId", "2"); + secondBackupConfig.setBindingsDirectory(getBindingsDir(1, true)).setJournalDirectory(getJournalDir(1, true)).setPagingDirectory(getPageDir(1, true)).setLargeMessagesDirectory(getLargeMessagesDir(1, true)).setSecurityEnabled(false); + + waitForRemoteBackupSynchronization(backupServer.getServer()); + + secondBackupServer.start(); + Thread.sleep(5000); + backupServer.stop(); + waitForSync(secondBackupServer.getServer()); + waitForRemoteBackupSynchronization(secondBackupServer.getServer()); + + } + + @Test + public void testExtraBackupGroupNameReplicates() throws Exception { + ReplicaPolicyConfiguration backupReplicaPolicyConfiguration = (ReplicaPolicyConfiguration) backupServer.getServer().getConfiguration().getHAPolicyConfiguration(); + backupReplicaPolicyConfiguration.setGroupName("foo"); + + ReplicatedPolicyConfiguration replicatedPolicyConfiguration = (ReplicatedPolicyConfiguration) liveServer.getServer().getConfiguration().getHAPolicyConfiguration(); + replicatedPolicyConfiguration.setGroupName("foo"); + + Configuration secondBackupConfig = backupConfig.copy(); + TransportConfiguration tc = secondBackupConfig.getAcceptorConfigurations().iterator().next(); + TestableServer secondBackupServer = createTestableServer(secondBackupConfig); + tc.getParams().put("serverId", "2"); + secondBackupConfig.setBindingsDirectory(getBindingsDir(1, true)).setJournalDirectory(getJournalDir(1, true)).setPagingDirectory(getPageDir(1, true)).setLargeMessagesDirectory(getLargeMessagesDir(1, true)).setSecurityEnabled(false); + ReplicaPolicyConfiguration replicaPolicyConfiguration = (ReplicaPolicyConfiguration) secondBackupConfig.getHAPolicyConfiguration(); + replicaPolicyConfiguration.setGroupName("foo"); + waitForRemoteBackupSynchronization(backupServer.getServer()); + + secondBackupServer.start(); + Thread.sleep(5000); + backupServer.stop(); + waitForSync(secondBackupServer.getServer()); + waitForRemoteBackupSynchronization(secondBackupServer.getServer()); + } + + @Override + protected void createConfigs() throws Exception { + createReplicatedConfigs(); + } + + @Override + protected void setupHAPolicyConfiguration() { + if (isExtraBackupGroupNameReplicates) { + ((ReplicatedPolicyConfiguration) liveConfig.getHAPolicyConfiguration()).setGroupName("foo"); + ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setGroupName("foo"); + + } + } + + @Override + protected TransportConfiguration getAcceptorTransportConfiguration(final boolean live) { + return TransportConfigurationUtils.getInVMAcceptor(live); + } + + @Override + protected TransportConfiguration getConnectorTransportConfiguration(final boolean live) { + return TransportConfigurationUtils.getInVMConnector(live); + } + + private void waitForSync(ActiveMQServer server) throws Exception { + Wait.waitFor(server::isReplicaSync); + } +} diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ReplicatedFailoverTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ReplicatedFailoverTest.java index c6ee8b4a73..01a3ba64b4 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ReplicatedFailoverTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ReplicatedFailoverTest.java @@ -25,10 +25,8 @@ import java.util.concurrent.TimeUnit; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; -import org.apache.activemq.artemis.api.core.TransportConfiguration; import org.apache.activemq.artemis.api.core.client.ClientSession; import org.apache.activemq.artemis.component.WebServerComponent; -import org.apache.activemq.artemis.core.config.Configuration; import org.apache.activemq.artemis.core.config.ha.ReplicaPolicyConfiguration; import org.apache.activemq.artemis.core.config.ha.ReplicatedPolicyConfiguration; import org.apache.activemq.artemis.core.server.ActiveMQServer; @@ -37,7 +35,6 @@ import org.apache.activemq.artemis.core.server.cluster.ha.ReplicatedPolicy; import org.apache.activemq.artemis.dto.AppDTO; import org.apache.activemq.artemis.dto.WebServerDTO; import org.apache.activemq.artemis.junit.Wait; -import org.apache.activemq.artemis.tests.integration.cluster.util.TestableServer; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; @@ -48,13 +45,11 @@ import org.junit.runner.Description; public class ReplicatedFailoverTest extends FailoverTest { boolean isReplicatedFailbackTest = false; - boolean isExtraBackupGroupNameReplicates = false; @Rule public TestRule watcher = new TestWatcher() { @Override protected void starting(Description description) { isReplicatedFailbackTest = description.getMethodName().equals("testReplicatedFailback") || description.getMethodName().equals("testLoop"); - isExtraBackupGroupNameReplicates = description.getMethodName().equals("testExtraBackupGroupNameReplicates"); } }; @@ -78,49 +73,6 @@ public class ReplicatedFailoverTest extends FailoverTest { Wait.waitFor(server::isReplicaSync); } - @Test - public void testExtraBackupReplicates() throws Exception { - Configuration secondBackupConfig = backupConfig.copy(); - TransportConfiguration tc = secondBackupConfig.getAcceptorConfigurations().iterator().next(); - TestableServer secondBackupServer = createTestableServer(secondBackupConfig); - tc.getParams().put("serverId", "2"); - secondBackupConfig.setBindingsDirectory(getBindingsDir(1, true)).setJournalDirectory(getJournalDir(1, true)).setPagingDirectory(getPageDir(1, true)).setLargeMessagesDirectory(getLargeMessagesDir(1, true)).setSecurityEnabled(false); - - waitForRemoteBackupSynchronization(backupServer.getServer()); - - secondBackupServer.start(); - Thread.sleep(5000); - backupServer.stop(); - waitForSync(secondBackupServer.getServer()); - waitForRemoteBackupSynchronization(secondBackupServer.getServer()); - - } - - @Test - public void testExtraBackupGroupNameReplicates() throws Exception { - ReplicaPolicyConfiguration backupReplicaPolicyConfiguration = (ReplicaPolicyConfiguration) backupServer.getServer().getConfiguration().getHAPolicyConfiguration(); - backupReplicaPolicyConfiguration.setGroupName("foo"); - - ReplicatedPolicyConfiguration replicatedPolicyConfiguration = (ReplicatedPolicyConfiguration) liveServer.getServer().getConfiguration().getHAPolicyConfiguration(); - replicatedPolicyConfiguration.setGroupName("foo"); - - Configuration secondBackupConfig = backupConfig.copy(); - TransportConfiguration tc = secondBackupConfig.getAcceptorConfigurations().iterator().next(); - TestableServer secondBackupServer = createTestableServer(secondBackupConfig); - tc.getParams().put("serverId", "2"); - secondBackupConfig.setBindingsDirectory(getBindingsDir(1, true)).setJournalDirectory(getJournalDir(1, true)).setPagingDirectory(getPageDir(1, true)).setLargeMessagesDirectory(getLargeMessagesDir(1, true)).setSecurityEnabled(false); - ReplicaPolicyConfiguration replicaPolicyConfiguration = (ReplicaPolicyConfiguration) secondBackupConfig.getHAPolicyConfiguration(); - replicaPolicyConfiguration.setGroupName("foo"); - waitForRemoteBackupSynchronization(backupServer.getServer()); - - secondBackupServer.start(); - Thread.sleep(5000); - backupServer.stop(); - waitForSync(secondBackupServer.getServer()); - waitForRemoteBackupSynchronization(secondBackupServer.getServer()); - - } - @Test(timeout = 120000) /* * default maxSavedReplicatedJournalsSize is 2, this means the backup will fall back to replicated only twice, after this @@ -261,12 +213,6 @@ public class ReplicatedFailoverTest extends FailoverTest { } else { super.setupHAPolicyConfiguration(); } - - if (isExtraBackupGroupNameReplicates) { - ((ReplicatedPolicyConfiguration) liveConfig.getHAPolicyConfiguration()).setGroupName("foo"); - ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setGroupName("foo"); - - } } @Override diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ReplicatedMultipleServerFailoverExtraBackupsTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ReplicatedMultipleServerFailoverExtraBackupsTest.java index 1a1d75c37b..2ce4cadf2b 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ReplicatedMultipleServerFailoverExtraBackupsTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ReplicatedMultipleServerFailoverExtraBackupsTest.java @@ -128,6 +128,8 @@ public class ReplicatedMultipleServerFailoverExtraBackupsTest extends Replicated for (TestableServer testableServer : toCrash) { testableServer.crash().await(10, TimeUnit.SECONDS); + //if we dont stop the server it tries to replicate again and the test becomes non deterministic + testableServer.stop(); } Assert.assertTrue(failoverHappened.await(10, TimeUnit.SECONDS));