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 2017/12/12 09:30:07 UTC
lucene-solr:jira/solr-11285-sim: SOLR-11285: Javadocs + cleanup.
Repository: lucene-solr
Updated Branches:
refs/heads/jira/solr-11285-sim 9b2090a84 -> c50436b7e
SOLR-11285: Javadocs + cleanup.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/c50436b7
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/c50436b7
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/c50436b7
Branch: refs/heads/jira/solr-11285-sim
Commit: c50436b7ef3f6b70186dc1470d0193c9af6f4c58
Parents: 9b2090a
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Tue Dec 12 10:29:46 2017 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Tue Dec 12 10:29:46 2017 +0100
----------------------------------------------------------------------
.../sim/GenericDistributedQueueFactory.java | 2 +-
.../cloud/autoscaling/sim/SimCloudManager.java | 44 ++++++++++++++++----
.../sim/SimClusterStateProvider.java | 32 ++++++++++----
.../autoscaling/sim/SimDistribStateManager.java | 19 ++++++++-
.../autoscaling/sim/SimNodeStateProvider.java | 3 +-
.../autoscaling/sim/SimSolrCloudTestCase.java | 13 ++++--
.../sim/TestClusterStateProvider.java | 3 +-
.../autoscaling/sim/TestComputePlanAction.java | 2 +-
.../autoscaling/sim/TestExecutePlanAction.java | 2 +-
.../cloud/autoscaling/sim/TestLargeCluster.java | 6 ++-
.../autoscaling/sim/TestNodeAddedTrigger.java | 2 +-
.../autoscaling/sim/TestNodeLostTrigger.java | 2 +-
.../cloud/autoscaling/sim/TestPolicyCloud.java | 2 +-
.../autoscaling/sim/TestTriggerIntegration.java | 2 +-
.../cloud/autoscaling/sim/package-info.java | 21 ++++++++++
15 files changed, 123 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/GenericDistributedQueueFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/GenericDistributedQueueFactory.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/GenericDistributedQueueFactory.java
index d06698c..12b4af8 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/GenericDistributedQueueFactory.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/GenericDistributedQueueFactory.java
@@ -23,7 +23,7 @@ import org.apache.solr.client.solrj.cloud.DistributedQueueFactory;
import org.apache.solr.client.solrj.cloud.autoscaling.DistribStateManager;
/**
- *
+ * Factory for {@link GenericDistributedQueue}.
*/
public class GenericDistributedQueueFactory implements DistributedQueueFactory {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
index 92840c8..2d72f5f 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
@@ -106,6 +106,10 @@ public class SimCloudManager implements SolrCloudManager {
private static int nodeIdPort = 10000;
+ /**
+ * Create a simulated cluster.
+ * @param timeSource time source to use.
+ */
public SimCloudManager(TimeSource timeSource) throws Exception {
this.stateManager = new SimDistribStateManager();
this.loader = new SolrResourceLoader();
@@ -135,6 +139,12 @@ public class SimCloudManager implements SolrCloudManager {
// ---------- simulator setup methods -----------
+ /**
+ * Create a cluster with the specified number of nodes. Node metrics are pre-populated.
+ * @param numNodes number of nodes to create
+ * @param timeSource time source
+ * @return instance of simulated cluster
+ */
public static SimCloudManager createCluster(int numNodes, TimeSource timeSource) throws Exception {
SimCloudManager cloudManager = new SimCloudManager(timeSource);
for (int i = 1; i <= numNodes; i++) {
@@ -149,6 +159,12 @@ public class SimCloudManager implements SolrCloudManager {
return cloudManager;
}
+ /**
+ * Create a cluster initialized from the provided cluster state.
+ * @param initialState existing cluster state
+ * @param timeSource time source
+ * @return instance of simulated cluster with the same layout as the provided cluster state.
+ */
public static SimCloudManager createCluster(ClusterState initialState, TimeSource timeSource) throws Exception {
SimCloudManager cloudManager = new SimCloudManager(timeSource);
cloudManager.getSimClusterStateProvider().simSetClusterState(initialState);
@@ -159,8 +175,9 @@ public class SimCloudManager implements SolrCloudManager {
}
/**
- * Create node values (metrics) for a node.
- * @param nodeName node name (eg. '127.0.0.1:10000_solr')
+ * Create simulated node values (metrics) for a node.
+ * @param nodeName node name (eg. '127.0.0.1:10000_solr'). If null then a new node name will be
+ * created using sequentially increasing port number.
* @return node values
*/
public static Map<String, Object> createNodeValues(String nodeName) {
@@ -210,12 +227,16 @@ public class SimCloudManager implements SolrCloudManager {
return values;
}
+ /**
+ * Get the instance of {@link SolrResourceLoader} that is used by the cluster components.
+ */
public SolrResourceLoader getLoader() {
return loader;
}
/**
- * Add a new node and initialize its node values (metrics).
+ * Add a new node and initialize its node values (metrics). The
+ * /live_nodes list is updated with the new node id.
* @return new node id
*/
public String simAddNode() throws Exception {
@@ -229,6 +250,7 @@ public class SimCloudManager implements SolrCloudManager {
/**
* Remove a node from the cluster. This simulates a node lost scenario.
+ * Node id is removed from the /live_nodes list.
* @param nodeId node id
* @param withValues when true, remove also simulated node values. If false
* then node values are retained to later simulate
@@ -268,7 +290,7 @@ public class SimCloudManager implements SolrCloudManager {
/**
* Get the content of (simulated) .system collection.
- * @return documents in the collection.
+ * @return documents in the collection, in chronological order starting from the oldest.
*/
public List<SolrInputDocument> simGetSystemCollection() {
return systemColl;
@@ -276,7 +298,7 @@ public class SimCloudManager implements SolrCloudManager {
/**
* Get a {@link SolrClient} implementation where calls are forwarded to this
- * instance.
+ * instance of the cluster.
* @return simulated SolrClient.
*/
public SolrClient simGetSolrClient() {
@@ -296,7 +318,7 @@ public class SimCloudManager implements SolrCloudManager {
/**
* Simulate the effect of restarting Overseer leader - in this case this means restarting the
- * OverseerTriggerThread.
+ * OverseerTriggerThread and optionally killing a node.
* @param killNodeId optional nodeId to kill. If null then don't kill any node, just restart the thread
*/
public void simRestartOverseer(String killNodeId) throws Exception {
@@ -339,10 +361,18 @@ public class SimCloudManager implements SolrCloudManager {
return liveNodesSet;
}
+ /**
+ * Get the number and type of operations processed by this cluster.
+ */
public Map<String, AtomicLong> simGetOpCounts() {
return opCounts;
}
+ /**
+ * Get the number of processed operations of a specified type.
+ * @param op operation name, eg. MOVEREPLICA
+ * @return number of operations
+ */
public long simGetOpCount(String op) {
AtomicLong count = opCounts.get(op);
return count != null ? count.get() : 0L;
@@ -397,7 +427,7 @@ public class SimCloudManager implements SolrCloudManager {
}
/**
- * Handler for autoscaling requests. NOTE: only a specific subset of autoscaling requests is
+ * Handler method for autoscaling requests. NOTE: only a specific subset of autoscaling requests is
* supported!
* @param req autoscaling request
* @return results
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
index 563749f..24cb5d0 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
@@ -79,6 +79,19 @@ import static org.apache.solr.common.params.CommonParams.NAME;
/**
* Simulated {@link ClusterStateProvider}.
+ * <p>
+ * The following behaviors are supported:
+ * <ul>
+ * <li>using autoscaling policy for replica placements</li>
+ * <li>maintaining and up-to-date list of /live_nodes and nodeAdded / nodeLost markers</li>
+ * <li>running a simulated leader election on collection changes (with throttling), when needed</li>
+ * <li>maintaining an up-to-date /clusterstate.json (single file format), which also tracks replica states,
+ * leader election changes, replica property changes, etc. Note: this file is only written,
+ * but never read by the framework!</li>
+ * <li>maintaining an up-to-date /clusterprops.json. Note: this file is only written, but never read by the
+ * framework!</li>
+ * </ul>
+ * </p>
*/
public class SimClusterStateProvider implements ClusterStateProvider {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -119,7 +132,7 @@ public class SimClusterStateProvider implements ClusterStateProvider {
this.cloudManager = cloudManager;
this.stateManager = cloudManager.getSimDistribStateManager();
this.leaderThrottle = new ActionThrottle("leader", 5000, cloudManager.getTimeSource());
- // names are CollectionAction names, delays are in ms (simulated time)
+ // names are CollectionAction operation names, delays are in ms (simulated time)
defaultOpDelays.put(CollectionParams.CollectionAction.MOVEREPLICA.name(), 5000L);
defaultOpDelays.put(CollectionParams.CollectionAction.DELETEREPLICA.name(), 5000L);
defaultOpDelays.put(CollectionParams.CollectionAction.ADDREPLICA.name(), 500L);
@@ -234,8 +247,6 @@ public class SimClusterStateProvider implements ClusterStateProvider {
}
}
- // todo: maybe hook up DistribStateManager /clusterstate.json watchers?
-
/**
* Remove node from a cluster. This is equivalent to a situation when a node is lost.
* All replicas that were assigned to this node are marked as DOWN.
@@ -286,6 +297,11 @@ public class SimClusterStateProvider implements ClusterStateProvider {
}
}
+ /**
+ * Restore a previously removed node. This also simulates a short replica recovery state.
+ * @param nodeId node id to restore
+ * @return true when this operation restored any replicas, false otherwise (empty node).
+ */
public boolean simRestoreNode(String nodeId) throws Exception {
liveNodes.add(nodeId);
createEphemeralLiveNode(nodeId);
@@ -338,6 +354,7 @@ public class SimClusterStateProvider implements ClusterStateProvider {
message.getProperties()
);
simAddReplica(message.getStr(CoreAdminParams.NODE), ri, true);
+ results.add("success", "");
}
/**
@@ -363,9 +380,7 @@ public class SimClusterStateProvider implements ClusterStateProvider {
if (replicaInfo.getCore() == null) {
throw new Exception("Missing core: " + replicaInfo);
}
-// if (replicaInfo.getShard() == null) {
-// throw new Exception("Missing shard: " + replicaInfo);
-// }
+ // XXX replica info is not supposed to have this as a variable
replicaInfo.getVariables().remove(ZkStateReader.SHARD_ID_PROP);
if (replicaInfo.getName() == null) {
throw new Exception("Missing name: " + replicaInfo);
@@ -385,7 +400,7 @@ public class SimClusterStateProvider implements ClusterStateProvider {
List<ReplicaInfo> replicas = nodeReplicaMap.computeIfAbsent(nodeId, n -> new ArrayList<>());
// mark replica as active
replicaInfo.getVariables().put(ZkStateReader.STATE_PROP, Replica.State.ACTIVE.toString());
- // add property expected in tests
+ // add a property expected in tests
replicaInfo.getVariables().put(Suggestion.coreidxsize, 123450000);
// at this point nuke our cached DocCollection state
collectionsStatesRef.set(null);
@@ -1025,7 +1040,7 @@ public class SimClusterStateProvider implements ClusterStateProvider {
* @param collection collection name
* @param key property name
* @param value property value
- * @param divide if the value is a {@link Number} and this is true, then the value will be evenly
+ * @param divide if the value is a {@link Number} and this param is true, then the value will be evenly
* divided by the number of replicas.
*/
public void simSetCollectionValue(String collection, String key, Object value, boolean divide) throws Exception {
@@ -1153,7 +1168,6 @@ public class SimClusterStateProvider implements ClusterStateProvider {
props = new HashMap<>(ri.getVariables());
}
props.put(ZkStateReader.NODE_NAME_PROP, n);
- //props.put(ZkStateReader.SHARD_ID_PROP, ri.getShard());
props.put(ZkStateReader.CORE_NAME_PROP, ri.getCore());
props.put(ZkStateReader.REPLICA_TYPE, ri.getType().toString());
props.put(ZkStateReader.STATE_PROP, ri.getState().toString());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimDistribStateManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimDistribStateManager.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimDistribStateManager.java
index 12b38e7..6c2a9a6 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimDistribStateManager.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimDistribStateManager.java
@@ -248,14 +248,31 @@ public class SimDistribStateManager implements DistribStateManager {
this.errorRef.set(actionError);
}
+ /**
+ * Create a copy of this instance using a specified ephemeral owner id. This is useful when performing
+ * node operations that require using a specific id. Note: this instance should never be closed, it can
+ * be just discarded after use.
+ * @param id ephemeral owner id
+ */
public SimDistribStateManager withEphemeralId(String id) {
- return new SimDistribStateManager(id, watchersPool, root, throttleRef.get(), errorRef.get());
+ return new SimDistribStateManager(id, watchersPool, root, throttleRef.get(), errorRef.get()) {
+ @Override
+ public void close() throws IOException {
+ throw new UnsupportedOperationException("this instance should never be closed - instead close the parent instance.");
+ }
+ };
}
+ /**
+ * Get the root node of the tree used by this instance. It could be a static shared root node.
+ */
public Node getRoot() {
return root;
}
+ /**
+ * Clear this instance. All nodes, watchers and data is deleted.
+ */
public void clear() {
root.clear();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimNodeStateProvider.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimNodeStateProvider.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimNodeStateProvider.java
index a9b3b5b..e2147e4 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimNodeStateProvider.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimNodeStateProvider.java
@@ -234,7 +234,7 @@ public class SimNodeStateProvider implements NodeStateProvider {
return Collections.emptyMap();
}
Map<String, Object> result = new HashMap<>();
- Map<String, Object> metrics = getReplicaMetricsValues(node, tags.stream().filter(s -> s.startsWith("metrics:")).collect(Collectors.toList()));
+ Map<String, Object> metrics = getReplicaMetricsValues(node, tags.stream().filter(s -> s.startsWith("metrics:solr.core.")).collect(Collectors.toList()));
result.putAll(metrics);
Map<String, Object> values = nodeValues.get(node);
if (values == null) {
@@ -251,6 +251,7 @@ public class SimNodeStateProvider implements NodeStateProvider {
return Collections.emptyMap();
}
Map<String, Map<String, List<ReplicaInfo>>> res = new HashMap<>();
+ // TODO: probably needs special treatment for "metrics:solr.core..." tags
for (ReplicaInfo r : replicas) {
Map<String, List<ReplicaInfo>> perCollection = res.computeIfAbsent(r.getCollection(), s -> new HashMap<>());
List<ReplicaInfo> perShard = perCollection.computeIfAbsent(r.getShard(), s -> new ArrayList<>());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimSolrCloudTestCase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimSolrCloudTestCase.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimSolrCloudTestCase.java
index 9324be1..02c42ac 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimSolrCloudTestCase.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimSolrCloudTestCase.java
@@ -39,7 +39,14 @@ import org.junit.AfterClass;
import org.junit.Before;
/**
- * Base class for simulated test cases.
+ * Base class for simulated test cases. Tests that use this class should configure the simulated cluster
+ * in <code>@BeforeClass</code> like this:
+ * <pre>
+ * @BeforeClass
+ * public static void setupCluster() throws Exception {
+ * cluster = configureCluster(5, TimeSource.get("simTime:50"));
+ * }
+ * </pre>
*/
public class SimSolrCloudTestCase extends SolrTestCaseJ4 {
@@ -48,8 +55,8 @@ public class SimSolrCloudTestCase extends SolrTestCaseJ4 {
/** The cluster. */
protected static SimCloudManager cluster;
- protected static SimCloudManager configureCluster(int nodeCount, TimeSource timeSource) throws Exception {
- return SimCloudManager.createCluster(nodeCount, timeSource);
+ protected static void configureCluster(int nodeCount, TimeSource timeSource) throws Exception {
+ cluster = SimCloudManager.createCluster(nodeCount, timeSource);
}
@AfterClass
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestClusterStateProvider.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestClusterStateProvider.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestClusterStateProvider.java
index cb3bb4c..396edea 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestClusterStateProvider.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestClusterStateProvider.java
@@ -72,8 +72,7 @@ public class TestClusterStateProvider extends SolrCloudTestCase {
@BeforeClass
public static void setupCluster() throws Exception {
simulated = random().nextBoolean();
- simulated = true;
- LOG.info("####### Using simulated component? " + simulated);
+ LOG.info("####### Using simulated components? " + simulated);
configureCluster(NODE_COUNT)
.addConfig("conf", configset("cloud-minimal"))
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestComputePlanAction.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestComputePlanAction.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestComputePlanAction.java
index 89f3f68..020ec67 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestComputePlanAction.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestComputePlanAction.java
@@ -73,7 +73,7 @@ public class TestComputePlanAction extends SimSolrCloudTestCase {
@BeforeClass
public static void setupCluster() throws Exception {
- cluster = SimCloudManager.createCluster(1, TimeSource.get("simTime:50"));
+ configureCluster(1, TimeSource.get("simTime:50"));
}
@Before
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestExecutePlanAction.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestExecutePlanAction.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestExecutePlanAction.java
index 8c4c287..9f3e4cf 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestExecutePlanAction.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestExecutePlanAction.java
@@ -66,7 +66,7 @@ public class TestExecutePlanAction extends SimSolrCloudTestCase {
@BeforeClass
public static void setupCluster() throws Exception {
- cluster = SimCloudManager.createCluster(NODE_COUNT, TimeSource.get("simTime:50"));
+ configureCluster(NODE_COUNT, TimeSource.get("simTime:50"));
}
@Before
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestLargeCluster.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestLargeCluster.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestLargeCluster.java
index 5bd0d97..7be7edc 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestLargeCluster.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestLargeCluster.java
@@ -75,7 +75,7 @@ public class TestLargeCluster extends SimSolrCloudTestCase {
@BeforeClass
public static void setupCluster() throws Exception {
- cluster = SimCloudManager.createCluster(NUM_NODES, TimeSource.get("simTime:" + SPEED));
+ configureCluster(NUM_NODES, TimeSource.get("simTime:" + SPEED));
}
@Before
@@ -170,6 +170,7 @@ public class TestLargeCluster extends SimSolrCloudTestCase {
}
}
Collections.shuffle(nodes, random());
+ // create collection on these nodes
String collectionName = "testBasic";
CollectionAdminRequest.Create create = CollectionAdminRequest.createCollection(collectionName,
"conf", 5, 5, 5, 5);
@@ -184,7 +185,7 @@ public class TestLargeCluster extends SimSolrCloudTestCase {
for (int i = 0; i < KILL_NODES; i++) {
cluster.simRemoveNode(nodes.get(i), false);
}
-
+ // should fully recover
log.info("Ready after " + waitForState(collectionName, 90 * KILL_NODES, TimeUnit.SECONDS, clusterShape(5, 15)) + "ms");
log.info("OP COUNTS: " + cluster.simGetOpCounts());
@@ -210,6 +211,7 @@ public class TestLargeCluster extends SimSolrCloudTestCase {
log.info("OP COUNTS: " + cluster.simGetOpCounts());
long newMoveReplicaOps = cluster.simGetOpCount(CollectionParams.CollectionAction.MOVEREPLICA.name());
log.info("==== Flaky replicas: {}. Additional MOVEREPLICA count: {}", flakyReplicas, (newMoveReplicaOps - moveReplicaOps));
+ // flaky nodes lead to a number of MOVEREPLICA that is non-zero but lower than the number of flaky replicas
assertTrue("there should be new MOVERPLICA ops", newMoveReplicaOps - moveReplicaOps > 0);
assertTrue("there should be less than flakyReplicas=" + flakyReplicas + " MOVEREPLICA ops",
newMoveReplicaOps - moveReplicaOps < flakyReplicas);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeAddedTrigger.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeAddedTrigger.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeAddedTrigger.java
index c1f10d0..9b4e2bc 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeAddedTrigger.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeAddedTrigger.java
@@ -59,7 +59,7 @@ public class TestNodeAddedTrigger extends SimSolrCloudTestCase {
@BeforeClass
public static void setupCluster() throws Exception {
- cluster = SimCloudManager.createCluster(1, TimeSource.get("simTime:" + SPEED));
+ configureCluster(1, TimeSource.get("simTime:" + SPEED));
timeSource = cluster.getTimeSource();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeLostTrigger.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeLostTrigger.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeLostTrigger.java
index d7b7ecb..109cee3 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeLostTrigger.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestNodeLostTrigger.java
@@ -59,7 +59,7 @@ public class TestNodeLostTrigger extends SimSolrCloudTestCase {
@BeforeClass
public static void setupCluster() throws Exception {
- cluster = SimCloudManager.createCluster(5, TimeSource.get("simTime:" + SPEED));
+ configureCluster(5, TimeSource.get("simTime:" + SPEED));
timeSource = cluster.getTimeSource();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestPolicyCloud.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestPolicyCloud.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestPolicyCloud.java
index dd3a054..18ce4e9 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestPolicyCloud.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestPolicyCloud.java
@@ -61,7 +61,7 @@ public class TestPolicyCloud extends SimSolrCloudTestCase {
@BeforeClass
public static void setupCluster() throws Exception {
- cluster = SimCloudManager.createCluster(5, TimeSource.get("simTime:50"));
+ configureCluster(5, TimeSource.get("simTime:50"));
}
@After
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestTriggerIntegration.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestTriggerIntegration.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestTriggerIntegration.java
index e05b789..fec84c3 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestTriggerIntegration.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestTriggerIntegration.java
@@ -87,7 +87,7 @@ public class TestTriggerIntegration extends SimSolrCloudTestCase {
@BeforeClass
public static void setupCluster() throws Exception {
- cluster = SimCloudManager.createCluster(2, TimeSource.get("simTime:" + SPEED));
+ configureCluster(2, TimeSource.get("simTime:" + SPEED));
}
private static CountDownLatch getTriggerFiredLatch() {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c50436b7/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/package-info.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/package-info.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/package-info.java
new file mode 100644
index 0000000..0b412cb
--- /dev/null
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * Simulated environment for autoscaling tests.
+ */
+package org.apache.solr.cloud.autoscaling.sim;
+