mirror of https://github.com/apache/lucene.git
SOLR-10379: Adding testMultipleCollections() to TestPolicy
This commit is contained in:
parent
b21b0dcc22
commit
8e0247e94a
|
@ -27,7 +27,6 @@ import java.util.HashMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Predicate;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import org.apache.solr.SolrTestCaseJ4;
|
import org.apache.solr.SolrTestCaseJ4;
|
||||||
|
@ -510,6 +509,85 @@ public class TestPolicy extends SolrTestCaseJ4 {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testMultipleCollections() {
|
||||||
|
Map policies = (Map) Utils.fromJSONString("{" +
|
||||||
|
" 'cluster-preferences': [" +
|
||||||
|
" { 'maximize': 'freedisk', 'precision': 50}," +
|
||||||
|
" { 'minimize': 'cores', 'precision': 50}" +
|
||||||
|
" ]," +
|
||||||
|
" 'cluster-policy': [" +
|
||||||
|
" { 'replica': 0, 'nodeRole': 'overseer'}" +
|
||||||
|
" { 'replica': '<2', 'shard': '#EACH', 'node': '#ANY', 'collection':'newColl'}," +
|
||||||
|
" { 'replica': '<2', 'shard': '#EACH', 'node': '#ANY', 'collection':'newColl2', type : PULL}," +
|
||||||
|
" { 'replica': '<3', 'shard': '#EACH', 'node': '#ANY', 'collection':'newColl2'}," +
|
||||||
|
" { 'replica': 0, 'shard': '#EACH', sysprop.fs : '!ssd', type : TLOG }" +
|
||||||
|
" { 'replica': 0, 'shard': '#EACH', sysprop.fs : '!slowdisk' , type : PULL }" +
|
||||||
|
" ]" +
|
||||||
|
"}");
|
||||||
|
Map<String, Map> nodeValues = (Map<String, Map>) Utils.fromJSONString("{" +
|
||||||
|
"node1:{cores:12, freedisk: 334, heapUsage:10480, rack: rack4, sysprop.fs: slowdisk}," +
|
||||||
|
"node2:{cores:4, freedisk: 749, heapUsage:6873, rack: rack3}," +
|
||||||
|
"node3:{cores:7, freedisk: 262, heapUsage:7834, rack: rack2, sysprop.fs : ssd}," +
|
||||||
|
"node4:{cores:8, freedisk: 375, heapUsage:16900, nodeRole:overseer, rack: rack1}" +
|
||||||
|
"}");
|
||||||
|
Policy policy = new Policy(policies);
|
||||||
|
Policy.Suggester suggester = policy.createSession(getClusterDataProvider(nodeValues, clusterState))
|
||||||
|
.getSuggester(ADDREPLICA)
|
||||||
|
.hint(Hint.COLL, "newColl")
|
||||||
|
.hint(Hint.COLL, "newColl2")
|
||||||
|
.hint(Hint.REPLICATYPE, Replica.Type.PULL)
|
||||||
|
.hint(Hint.SHARD, "shard1");
|
||||||
|
SolrRequest op;
|
||||||
|
int countOp = 0;
|
||||||
|
int countNewCollOp = 0;
|
||||||
|
int countNewColl2Op = 0;
|
||||||
|
while ((op = suggester.getOperation()) != null) {
|
||||||
|
countOp++;
|
||||||
|
suggester = suggester.getSession().getSuggester(ADDREPLICA)
|
||||||
|
.hint(Hint.COLL, "newColl")
|
||||||
|
.hint(Hint.COLL, "newColl2")
|
||||||
|
.hint(Hint.REPLICATYPE, Replica.Type.PULL)
|
||||||
|
.hint(Hint.SHARD, "shard1");
|
||||||
|
assertEquals(Replica.Type.PULL.name(), op.getParams().get("type"));
|
||||||
|
String collection = op.getParams().get("collection");
|
||||||
|
assertTrue("Collection for replica is not as expected " + collection, collection.equals("newColl") || collection.equals("newColl2"));
|
||||||
|
if (collection.equals("newColl")) countNewCollOp++;
|
||||||
|
else countNewColl2Op++;
|
||||||
|
assertEquals("PULL type node must be in 'slowdisk' node","node1", op.getParams().get("node"));
|
||||||
|
}
|
||||||
|
assertEquals(2, countOp);
|
||||||
|
assertEquals(1, countNewCollOp);
|
||||||
|
assertEquals(1, countNewColl2Op);
|
||||||
|
|
||||||
|
countOp = 0;
|
||||||
|
countNewCollOp = 0;
|
||||||
|
countNewColl2Op = 0;
|
||||||
|
suggester = suggester.getSession()
|
||||||
|
.getSuggester(ADDREPLICA)
|
||||||
|
.hint(Hint.COLL, "newColl")
|
||||||
|
.hint(Hint.COLL, "newColl2")
|
||||||
|
.hint(Hint.REPLICATYPE, Replica.Type.TLOG)
|
||||||
|
.hint(Hint.SHARD, "shard2");
|
||||||
|
while ((op = suggester.getOperation()) != null) {
|
||||||
|
countOp++;
|
||||||
|
suggester = suggester.getSession()
|
||||||
|
.getSuggester(ADDREPLICA)
|
||||||
|
.hint(Hint.COLL, "newColl")
|
||||||
|
.hint(Hint.COLL, "newColl2")
|
||||||
|
.hint(Hint.REPLICATYPE, Replica.Type.TLOG)
|
||||||
|
.hint(Hint.SHARD, "shard2");
|
||||||
|
assertEquals(Replica.Type.TLOG.name(), op.getParams().get("type"));
|
||||||
|
String collection = op.getParams().get("collection");
|
||||||
|
assertTrue("Collection for replica is not as expected " + collection, collection.equals("newColl") || collection.equals("newColl2"));
|
||||||
|
if (collection.equals("newColl")) countNewCollOp++;
|
||||||
|
else countNewColl2Op++;
|
||||||
|
assertEquals("TLOG type node must be in 'ssd' node","node3", op.getParams().get("node"));
|
||||||
|
}
|
||||||
|
assertEquals(3, countOp);
|
||||||
|
assertEquals(1, countNewCollOp);
|
||||||
|
assertEquals(2, countNewColl2Op);
|
||||||
|
}
|
||||||
|
|
||||||
public void testRow() {
|
public void testRow() {
|
||||||
Row row = new Row("nodex", new Cell[]{new Cell(0, "node", "nodex")}, false, new HashMap<>(), new ArrayList<>(), true);
|
Row row = new Row("nodex", new Cell[]{new Cell(0, "node", "nodex")}, false, new HashMap<>(), new ArrayList<>(), true);
|
||||||
Row r1 = row.addReplica("c1", "s1", null);
|
Row r1 = row.addReplica("c1", "s1", null);
|
||||||
|
|
Loading…
Reference in New Issue