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 2017/06/30 03:11:46 UTC
lucene-solr:feature/autoscaling: SOLR-10397: Hardness
AutoAddReplicasPlanActionTest
Repository: lucene-solr
Updated Branches:
refs/heads/feature/autoscaling b18cf30dd -> 492eebc89
SOLR-10397: Hardness AutoAddReplicasPlanActionTest
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/492eebc8
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/492eebc8
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/492eebc8
Branch: refs/heads/feature/autoscaling
Commit: 492eebc8953dd37cdd4f5ac256dec46225443daa
Parents: b18cf30
Author: Cao Manh Dat <da...@apache.org>
Authored: Fri Jun 30 10:11:34 2017 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Fri Jun 30 10:11:34 2017 +0700
----------------------------------------------------------------------
.../AutoAddReplicasPlanActionTest.java | 43 ++++++++++++++------
1 file changed, 31 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/492eebc8/solr/core/src/test/org/apache/solr/cloud/autoscaling/AutoAddReplicasPlanActionTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/AutoAddReplicasPlanActionTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/AutoAddReplicasPlanActionTest.java
index ebefba2..ef7e3e9 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/AutoAddReplicasPlanActionTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/AutoAddReplicasPlanActionTest.java
@@ -18,6 +18,7 @@
package org.apache.solr.cloud.autoscaling;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -26,6 +27,7 @@ import java.util.stream.Collectors;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
+import org.apache.solr.cloud.CloudDescriptor;
import org.apache.solr.cloud.SolrCloudTestCase;
import org.apache.solr.common.cloud.ClusterStateUtil;
import org.apache.solr.common.cloud.ZkStateReader;
@@ -82,14 +84,14 @@ public class AutoAddReplicasPlanActionTest extends SolrCloudTestCase{
JettySolrRunner lostJetty = random().nextBoolean()? jetty1 : jetty2;
String lostNodeName = lostJetty.getNodeName();
- Set<String> coreNodeNames = lostJetty.getCoreContainer().getCores().stream()
- .map(solrCore -> solrCore.getCoreDescriptor().getCloudDescriptor().getCoreNodeName())
- .collect(Collectors.toSet());
+ List<CloudDescriptor> cloudDescriptors = lostJetty.getCoreContainer().getCores().stream()
+ .map(solrCore -> solrCore.getCoreDescriptor().getCloudDescriptor())
+ .collect(Collectors.toList());
lostJetty.stop();
waitForNodeLeave(lostNodeName);
List<SolrRequest> operations = getOperations(jetty3, lostNodeName);
- assertOperations(collection1, operations, lostNodeName,coreNodeNames, null);
+ assertOperations(collection1, operations, lostNodeName, cloudDescriptors, null);
lostJetty.start();
ClusterStateUtil.waitForAllActiveAndLiveReplicas(cluster.getSolrClient().getZkStateReader(), 30000);
@@ -103,14 +105,14 @@ public class AutoAddReplicasPlanActionTest extends SolrCloudTestCase{
lostJetty = random().nextBoolean()? jetty1 : jetty2;
lostNodeName = lostJetty.getNodeName();
- coreNodeNames = lostJetty.getCoreContainer().getCores().stream()
- .map(solrCore -> solrCore.getCoreDescriptor().getCloudDescriptor().getCoreNodeName())
- .collect(Collectors.toSet());
+ cloudDescriptors = lostJetty.getCoreContainer().getCores().stream()
+ .map(solrCore -> solrCore.getCoreDescriptor().getCloudDescriptor())
+ .collect(Collectors.toList());
lostJetty.stop();
waitForNodeLeave(lostNodeName);
operations = getOperations(jetty3, lostNodeName);
- assertOperations(collection1, operations, lostNodeName, coreNodeNames, jetty3);
+ assertOperations(collection1, operations, lostNodeName, cloudDescriptors, jetty3);
}
private void waitForNodeLeave(String lostNodeName) throws InterruptedException {
@@ -131,9 +133,10 @@ public class AutoAddReplicasPlanActionTest extends SolrCloudTestCase{
return operations;
}
- private void assertOperations(String collection, List<SolrRequest> operations, String lostNodeName, Set<String> coreNodeNames, JettySolrRunner destJetty) {
+ private void assertOperations(String collection, List<SolrRequest> operations, String lostNodeName,
+ List<CloudDescriptor> cloudDescriptors, JettySolrRunner destJetty) {
assertEquals("Replicas of " + collection + " is not fully moved, operations="+operations,
- 2, operations.size());
+ cloudDescriptors.stream().filter(cd -> cd.getCollectionName().equals(collection)).count(), operations.size());
for (SolrRequest solrRequest : operations) {
assertTrue(solrRequest instanceof CollectionAdminRequest.MoveReplica);
SolrParams params = solrRequest.getParams();
@@ -141,12 +144,28 @@ public class AutoAddReplicasPlanActionTest extends SolrCloudTestCase{
assertEquals(params.get("collection"), collection);
String replica = params.get("replica");
- assertTrue("Can not find "+replica+ " in node " + lostNodeName, coreNodeNames.contains(replica));
+ boolean found = false;
+ Iterator<CloudDescriptor> it = cloudDescriptors.iterator();
+ while (it.hasNext()) {
+ CloudDescriptor cd = it.next();
+ if (cd.getCollectionName().equals(collection) && cd.getCoreNodeName().equals(replica)) {
+ found = true;
+ it.remove();
+ break;
+ }
+ }
+ assertTrue("Can not find "+replica+ " in node " + lostNodeName, found);
String targetNode = params.get("targetNode");
assertFalse("Target node match the lost one " + lostNodeName, lostNodeName.equals(targetNode));
if (destJetty != null) {
- assertEquals("Target not is expected", destJetty.getNodeName(), targetNode);
+ assertEquals("Target node is not as expectation", destJetty.getNodeName(), targetNode);
+ }
+ }
+
+ for (CloudDescriptor cd : cloudDescriptors) {
+ if (cd.getCollectionName().equals(collection)) {
+ fail("Exist replica which is not moved " + cd);
}
}
}