SOLR-13736: reduce code duplication in TestPolicy.testNodeLostMultipleReplica

This commit is contained in:
Christine Poerschke 2019-09-04 15:51:36 +01:00
parent a8c0b9a6fa
commit ca0f289f37
1 changed files with 34 additions and 53 deletions

View File

@ -1080,36 +1080,24 @@ public class TestPolicy extends SolrTestCaseJ4 {
} }
config = new AutoScalingConfig(policies); config = new AutoScalingConfig(policies);
policy = config.getPolicy(); policy = config.getPolicy();
session = policy.createSession(provider); session = null;
suggester = session.getSuggester(MOVEREPLICA) for (String expectedReplica : new String[] { "r3", "r5", "r1", null }) {
.hint(Hint.SRC_NODE, "node1"); if (session == null) {
session = policy.createSession(provider);
operation = suggester.getSuggestion(); } else {
assertNotNull(operation); session = suggester.getSession();
assertEquals("node2", operation.getParams().get("targetNode")); }
assertEquals("r3", operation.getParams().get("replica")); suggester = session.getSuggester(MOVEREPLICA)
.hint(Hint.SRC_NODE, "node1");
session = suggester.getSession(); operation = suggester.getSuggestion();
suggester = session.getSuggester(MOVEREPLICA) if (expectedReplica == null) {
.hint(Hint.SRC_NODE, "node1"); assertNull(operation);
operation = suggester.getSuggestion(); } else {
assertNotNull(operation); assertNotNull(operation);
assertEquals("node2", operation.getParams().get("targetNode")); assertEquals("node2", operation.getParams().get("targetNode"));
assertEquals("r5", operation.getParams().get("replica")); assertEquals(expectedReplica, operation.getParams().get("replica"));
}
session = suggester.getSession(); }
suggester = session.getSuggester(MOVEREPLICA)
.hint(Hint.SRC_NODE, "node1");
operation = suggester.getSuggestion();
assertNotNull(operation);
assertEquals("node2", operation.getParams().get("targetNode"));
assertEquals("r1", operation.getParams().get("replica"));
session = suggester.getSession();
suggester = session.getSuggester(MOVEREPLICA)
.hint(Hint.SRC_NODE, "node1");
operation = suggester.getSuggestion();
assertNull(operation);
// now lets change the policy such that a node can have 2 shard2 replicas // now lets change the policy such that a node can have 2 shard2 replicas
policies = (Map) Utils.fromJSONString("{" + policies = (Map) Utils.fromJSONString("{" +
@ -1139,30 +1127,23 @@ public class TestPolicy extends SolrTestCaseJ4 {
} }
config = new AutoScalingConfig(policies); config = new AutoScalingConfig(policies);
policy = config.getPolicy(); policy = config.getPolicy();
session = policy.createSession(provider);
suggester = session.getSuggester(MOVEREPLICA)
.hint(Hint.SRC_NODE, "node1");
operation = suggester.getSuggestion(); session = null;
assertNotNull(operation); final String[] expectedReplica = new String[] { "r3", "r5", "r1" };
assertEquals("node2", operation.getParams().get("targetNode")); final String[] expectedTargetNode = new String[] { "node2", "node2", "node3" };
assertEquals("r3", operation.getParams().get("replica")); for (int ii = 0; ii < expectedReplica.length; ++ii) {
if (session == null) {
session = suggester.getSession(); session = policy.createSession(provider);
suggester = session.getSuggester(MOVEREPLICA) } else {
.hint(Hint.SRC_NODE, "node1"); session = suggester.getSession();
operation = suggester.getSuggestion(); }
assertNotNull(operation); suggester = session.getSuggester(MOVEREPLICA)
assertEquals("node2", operation.getParams().get("targetNode")); .hint(Hint.SRC_NODE, "node1");
assertEquals("r5", operation.getParams().get("replica")); operation = suggester.getSuggestion();
assertNotNull(operation);
session = suggester.getSession(); assertEquals(expectedTargetNode[ii], operation.getParams().get("targetNode"));
suggester = session.getSuggester(MOVEREPLICA) assertEquals(expectedReplica[ii], operation.getParams().get("replica"));
.hint(Hint.SRC_NODE, "node1"); }
operation = suggester.getSuggestion();
assertNotNull(operation);
assertEquals("node3", operation.getParams().get("targetNode"));
assertEquals("r1", operation.getParams().get("replica"));
} }
private static SolrCloudManager cloudManagerWithData(String data) { private static SolrCloudManager cloudManagerWithData(String data) {