You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by da...@apache.org on 2018/08/21 01:31:12 UTC
[45/50] [abbrv] lucene-solr:jira/http2: SOLR-12675: Make
LeaderVoteWaitTimeoutTest more resilient against side effects of test
methods.
SOLR-12675: Make LeaderVoteWaitTimeoutTest more resilient against side effects of test methods.
Extracted a new method to ensure a given number of jettys are always running in the test setup. Also, delete all collections created by other test methods.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/079a81f1
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/079a81f1
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/079a81f1
Branch: refs/heads/jira/http2
Commit: 079a81f14f4caa7f3920c306037b6c25c59037b0
Parents: 3c9050c
Author: Shalin Shekhar Mangar <sh...@apache.org>
Authored: Mon Aug 20 14:45:50 2018 +0530
Committer: Shalin Shekhar Mangar <sh...@apache.org>
Committed: Mon Aug 20 14:45:50 2018 +0530
----------------------------------------------------------------------
solr/CHANGES.txt | 2 ++
.../solr/cloud/LeaderVoteWaitTimeoutTest.java | 11 +++++++-
.../autoscaling/TriggerIntegrationTest.java | 17 ++----------
.../apache/solr/cloud/SolrCloudTestCase.java | 29 ++++++++++++++++++++
4 files changed, 44 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/079a81f1/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 963f1ba..6decce3 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -320,6 +320,8 @@ Other Changes
* SOLR-12680: Fix ClassCastException and AIOOBE in TestSolrConfigHandlerConcurrent. (shalin)
+* SOLR-12675: Make LeaderVoteWaitTimeoutTest more resilient against side effects of test methods. (shalin)
+
================== 7.4.0 ==================
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/079a81f1/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
index 3584487..a4a7bc0 100644
--- a/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
@@ -37,6 +37,7 @@ import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.ZkCoreNodeProps;
import org.apache.solr.common.util.NamedList;
import org.junit.AfterClass;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
@@ -45,6 +46,7 @@ import org.slf4j.LoggerFactory;
public class LeaderVoteWaitTimeoutTest extends SolrCloudTestCase {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ private static final int NODE_COUNT = 4;
private static Map<JettySolrRunner, SocketProxy> proxies;
private static Map<URI, JettySolrRunner> jettys;
@@ -55,7 +57,7 @@ public class LeaderVoteWaitTimeoutTest extends SolrCloudTestCase {
System.setProperty("solr.ulog.numRecordsToKeep", "1000");
System.setProperty("leaderVoteWait", "2000");
- configureCluster(4)
+ configureCluster(NODE_COUNT)
.addConfig("conf", configset("cloud-minimal"))
.configure();
@@ -86,6 +88,13 @@ public class LeaderVoteWaitTimeoutTest extends SolrCloudTestCase {
System.clearProperty("leaderVoteWait");
}
+ @Before
+ public void setupTest() throws Exception {
+ SolrCloudTestCase.ensureRunningJettys(NODE_COUNT, 5);
+ cluster.deleteAllCollections();
+ cluster.getSolrClient().setDefaultCollection(null);
+ }
+
@Test
//28-June-2018 @BadApple(bugUrl="https://issues.apache.org/jira/browse/SOLR-12028") // 21-May-2018
public void basicTest() throws Exception {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/079a81f1/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java
index 5349936..c42d1e8 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java
@@ -64,6 +64,7 @@ import static org.apache.solr.common.cloud.ZkStateReader.SOLR_AUTOSCALING_CONF_P
@LogLevel("org.apache.solr.cloud.autoscaling=DEBUG;org.apache.solr.client.solrj.cloud.autoscaling=DEBUG")
public class TriggerIntegrationTest extends SolrCloudTestCase {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ private static final int NODE_COUNT = 2;
private static volatile CountDownLatch actionConstructorCalled;
private static volatile CountDownLatch actionInitCalled;
@@ -84,7 +85,7 @@ public class TriggerIntegrationTest extends SolrCloudTestCase {
@BeforeClass
public static void setupCluster() throws Exception {
- configureCluster(2)
+ configureCluster(NODE_COUNT)
.addConfig("conf", configset("cloud-minimal"))
.configure();
// disable .scheduled_maintenance
@@ -115,19 +116,7 @@ public class TriggerIntegrationTest extends SolrCloudTestCase {
@Before
public void setupTest() throws Exception {
- // ensure that exactly 2 jetty nodes are running
- int numJetties = cluster.getJettySolrRunners().size();
- log.info("Found {} jetty instances running", numJetties);
- for (int i = 2; i < numJetties; i++) {
- int r = random().nextInt(cluster.getJettySolrRunners().size());
- log.info("Shutdown extra jetty instance at port {}", cluster.getJettySolrRunner(r).getLocalPort());
- cluster.stopJettySolrRunner(r);
- }
- for (int i = cluster.getJettySolrRunners().size(); i < 2; i++) {
- // start jetty instances
- cluster.startJettySolrRunner();
- }
- cluster.waitForAllNodes(5);
+ SolrCloudTestCase.ensureRunningJettys(NODE_COUNT, 5);
NamedList<Object> overSeerStatus = cluster.getSolrClient().request(CollectionAdminRequest.getOverseerStatus());
String overseerLeader = (String) overSeerStatus.get("leader");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/079a81f1/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudTestCase.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudTestCase.java b/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudTestCase.java
index d0cc4c5..1b5f67b 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudTestCase.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudTestCase.java
@@ -371,4 +371,33 @@ public class SolrCloudTestCase extends SolrTestCaseJ4 {
return null;
}
+ /**
+ * Ensure that the given number of solr instances are running. If less instances are found then new instances are
+ * started. If extra instances are found then they are stopped.
+ * @param nodeCount the number of Solr instances that should be running at the end of this method
+ * @throws Exception on error
+ */
+ public static void ensureRunningJettys(int nodeCount, int timeoutSeconds) throws Exception {
+ // ensure that exactly nodeCount jetty nodes are running
+ List<JettySolrRunner> jettys = cluster.getJettySolrRunners();
+ List<JettySolrRunner> copyOfJettys = new ArrayList<>(jettys);
+ int numJetties = copyOfJettys.size();
+ for (int i = nodeCount; i < numJetties; i++) {
+ cluster.stopJettySolrRunner(copyOfJettys.get(i));
+ }
+ for (int i = copyOfJettys.size(); i < nodeCount; i++) {
+ // start jetty instances
+ cluster.startJettySolrRunner();
+ }
+ // refresh the count from the source
+ jettys = cluster.getJettySolrRunners();
+ numJetties = jettys.size();
+ for (int i = 0; i < numJetties; i++) {
+ if (!jettys.get(i).isRunning()) {
+ cluster.startJettySolrRunner(jettys.get(i));
+ }
+ }
+ cluster.waitForAllNodes(timeoutSeconds);
+ }
+
}