You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2018/05/16 12:00:02 UTC
lucene-solr:master: SOLR-12181: Improve test stability.
Repository: lucene-solr
Updated Branches:
refs/heads/master b3894d7f1 -> b809d633c
SOLR-12181: Improve test stability.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b809d633
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b809d633
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b809d633
Branch: refs/heads/master
Commit: b809d633ce6744b210e39d3c7ca72c4f8bfe8f4e
Parents: b3894d7
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Wed May 16 13:58:52 2018 +0200
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Wed May 16 13:59:55 2018 +0200
----------------------------------------------------------------------
.../org/apache/solr/cloud/CloudTestUtils.java | 14 ++++-
.../cloud/autoscaling/IndexSizeTriggerTest.java | 55 ++++++++++++++------
2 files changed, 51 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b809d633/solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java b/solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java
index 768cd91..5a05d4b 100644
--- a/solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java
+++ b/solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java
@@ -113,12 +113,24 @@ public class CloudTestUtils {
/**
* Return a {@link CollectionStatePredicate} that returns true if a collection has the expected
- * number of shards and replicas
+ * number of active shards and replicas
+ * @param expectedShards expected number of active shards
+ * @param expectedReplicas expected number of active replicas
*/
public static CollectionStatePredicate clusterShape(int expectedShards, int expectedReplicas) {
return clusterShape(expectedShards, expectedReplicas, false);
}
+ /**
+ * Return a {@link CollectionStatePredicate} that returns true if a collection has the expected
+ * number of shards and replicas.
+ * <p>Note: for shards marked as inactive the current Solr behavior is that replicas remain active.
+ * {@link org.apache.solr.cloud.autoscaling.sim.SimCloudManager} follows this behavior.</p>
+ * @param expectedShards expected number of shards
+ * @param expectedReplicas expected number of active replicas
+ * @param withInactive if true then count also inactive shards
+ * @return
+ */
public static CollectionStatePredicate clusterShape(int expectedShards, int expectedReplicas, boolean withInactive) {
return (liveNodes, collectionState) -> {
if (collectionState == null) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b809d633/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerTest.java
index 265a6c6..6acc1de 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/IndexSizeTriggerTest.java
@@ -146,7 +146,7 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
long waitForSeconds = 3 + random().nextInt(5);
Map<String, Object> props = createTriggerProps(waitForSeconds);
- try (IndexSizeTrigger trigger = new IndexSizeTrigger("index_size_trigger")) {
+ try (IndexSizeTrigger trigger = new IndexSizeTrigger("index_size_trigger1")) {
trigger.configure(loader, cloudManager, props);
trigger.init();
trigger.setProcessor(noFirstRunProcessor);
@@ -242,14 +242,15 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
CloudTestUtils.clusterShape(2, 2));
long waitForSeconds = 3 + random().nextInt(5);
+ // add disabled trigger
String setTriggerCommand = "{" +
"'set-trigger' : {" +
- "'name' : 'index_size_trigger'," +
+ "'name' : 'index_size_trigger2'," +
"'event' : 'indexSize'," +
"'waitFor' : '" + waitForSeconds + "s'," +
"'aboveDocs' : 10," +
"'belowDocs' : 4," +
- "'enabled' : true," +
+ "'enabled' : false," +
"'actions' : [{'name' : 'compute_plan', 'class' : 'solr.ComputePlanAction'}," +
"{'name' : 'execute_plan', 'class' : '" + ExecutePlanAction.class.getName() + "'}]" +
"}}";
@@ -261,7 +262,7 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
"'set-listener' : " +
"{" +
"'name' : 'capturing'," +
- "'trigger' : 'index_size_trigger'," +
+ "'trigger' : 'index_size_trigger2'," +
"'stage' : ['STARTED','ABORTED','SUCCEEDED','FAILED']," +
"'beforeAction' : ['compute_plan','execute_plan']," +
"'afterAction' : ['compute_plan','execute_plan']," +
@@ -276,7 +277,7 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
"'set-listener' : " +
"{" +
"'name' : 'finished'," +
- "'trigger' : 'index_size_trigger'," +
+ "'trigger' : 'index_size_trigger2'," +
"'stage' : ['SUCCEEDED']," +
"'class' : '" + FinishedProcessingListener.class.getName() + "'" +
"}" +
@@ -286,17 +287,27 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
assertEquals(response.get("result").toString(), "success");
- for (int i = 0; i < 25; i++) {
+ for (int i = 0; i < 50; i++) {
SolrInputDocument doc = new SolrInputDocument("id", "id-" + i);
solrClient.add(collectionName, doc);
}
solrClient.commit(collectionName);
+ // enable the trigger
+ String resumeTriggerCommand = "{" +
+ "'resume-trigger' : {" +
+ "'name' : 'index_size_trigger2'" +
+ "}" +
+ "}";
+ req = createAutoScalingRequest(SolrRequest.METHOD.POST, resumeTriggerCommand);
+ response = solrClient.request(req);
+ assertEquals(response.get("result").toString(), "success");
+
timeSource.sleep(TimeUnit.MILLISECONDS.convert(waitForSeconds + 1, TimeUnit.SECONDS));
boolean await = finished.await(60000 / SPEED, TimeUnit.MILLISECONDS);
assertTrue("did not finish processing in time", await);
- CloudTestUtils.waitForState(cloudManager, collectionName, 10, TimeUnit.SECONDS, CloudTestUtils.clusterShape(4, 2));
+ CloudTestUtils.waitForState(cloudManager, collectionName, 20, TimeUnit.SECONDS, CloudTestUtils.clusterShape(6, 2, true));
assertEquals(1, listenerEvents.size());
List<CapturedEvent> events = listenerEvents.get("capturing");
assertNotNull("'capturing' events not found", events);
@@ -351,12 +362,12 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
long waitForSeconds = 3 + random().nextInt(5);
String setTriggerCommand = "{" +
"'set-trigger' : {" +
- "'name' : 'index_size_trigger'," +
+ "'name' : 'index_size_trigger3'," +
"'event' : 'indexSize'," +
"'waitFor' : '" + waitForSeconds + "s'," +
"'aboveDocs' : 40," +
"'belowDocs' : 4," +
- "'enabled' : true," +
+ "'enabled' : false," +
"'actions' : [{'name' : 'compute_plan', 'class' : 'solr.ComputePlanAction'}," +
"{'name' : 'execute_plan', 'class' : '" + ExecutePlanAction.class.getName() + "'}]" +
"}}";
@@ -368,7 +379,7 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
"'set-listener' : " +
"{" +
"'name' : 'capturing'," +
- "'trigger' : 'index_size_trigger'," +
+ "'trigger' : 'index_size_trigger3'," +
"'stage' : ['STARTED','ABORTED','SUCCEEDED','FAILED']," +
"'beforeAction' : ['compute_plan','execute_plan']," +
"'afterAction' : ['compute_plan','execute_plan']," +
@@ -383,7 +394,7 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
"'set-listener' : " +
"{" +
"'name' : 'finished'," +
- "'trigger' : 'index_size_trigger'," +
+ "'trigger' : 'index_size_trigger3'," +
"'stage' : ['SUCCEEDED']," +
"'class' : '" + FinishedProcessingListener.class.getName() + "'" +
"}" +
@@ -398,9 +409,19 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
}
solrClient.commit(collectionName);
+ // enable the trigger
+ String resumeTriggerCommand = "{" +
+ "'resume-trigger' : {" +
+ "'name' : 'index_size_trigger3'" +
+ "}" +
+ "}";
+ req = createAutoScalingRequest(SolrRequest.METHOD.POST, resumeTriggerCommand);
+ response = solrClient.request(req);
+ assertEquals(response.get("result").toString(), "success");
+
timeSource.sleep(TimeUnit.MILLISECONDS.convert(waitForSeconds + 1, TimeUnit.SECONDS));
- boolean await = finished.await(60000 / SPEED, TimeUnit.MILLISECONDS);
+ boolean await = finished.await(90000 / SPEED, TimeUnit.MILLISECONDS);
assertTrue("did not finish processing in time", await);
assertEquals(1, listenerEvents.size());
List<CapturedEvent> events = listenerEvents.get("capturing");
@@ -483,7 +504,7 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
// and have them capture all events once the trigger is enabled
String setTriggerCommand = "{" +
"'set-trigger' : {" +
- "'name' : 'index_size_trigger'," +
+ "'name' : 'index_size_trigger4'," +
"'event' : 'indexSize'," +
"'waitFor' : '" + waitForSeconds + "s'," +
// don't hit this limit when indexing
@@ -506,7 +527,7 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
"'set-listener' : " +
"{" +
"'name' : 'capturing'," +
- "'trigger' : 'index_size_trigger'," +
+ "'trigger' : 'index_size_trigger4'," +
"'stage' : ['STARTED','ABORTED','SUCCEEDED','FAILED']," +
"'beforeAction' : ['compute_plan','execute_plan']," +
"'afterAction' : ['compute_plan','execute_plan']," +
@@ -521,7 +542,7 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
"'set-listener' : " +
"{" +
"'name' : 'finished'," +
- "'trigger' : 'index_size_trigger'," +
+ "'trigger' : 'index_size_trigger4'," +
"'stage' : ['SUCCEEDED']," +
"'class' : '" + FinishedProcessingListener.class.getName() + "'" +
"}" +
@@ -533,7 +554,7 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
// now enable the trigger
String resumeTriggerCommand = "{" +
"'resume-trigger' : {" +
- "'name' : 'index_size_trigger'" +
+ "'name' : 'index_size_trigger4'" +
"}" +
"}";
req = createAutoScalingRequest(SolrRequest.METHOD.POST, resumeTriggerCommand);
@@ -590,7 +611,7 @@ public class IndexSizeTriggerTest extends SolrCloudTestCase {
// suspend the trigger first so that we can safely delete all docs
String suspendTriggerCommand = "{" +
"'suspend-trigger' : {" +
- "'name' : 'index_size_trigger'" +
+ "'name' : 'index_size_trigger4'" +
"}" +
"}";
req = createAutoScalingRequest(SolrRequest.METHOD.POST, suspendTriggerCommand);