You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mk...@apache.org on 2019/06/25 05:50:15 UTC

[lucene-solr] branch master updated: SOLR-12866: Turn TestHdfsCloudBackupRestore ON. No changes yet.

This is an automated email from the ASF dual-hosted git repository.

mkhl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/master by this push:
     new 4589bbe  SOLR-12866: Turn TestHdfsCloudBackupRestore ON. No changes yet.
4589bbe is described below

commit 4589bbe47bd2ae46eb5418a3b538c020d9122ad3
Author: Mikhail Khludnev <mk...@apache.org>
AuthorDate: Tue Jun 25 08:48:52 2019 +0300

    SOLR-12866: Turn TestHdfsCloudBackupRestore ON. No changes yet.
---
 .../collections/TestHdfsCloudBackupRestore.java    |  3 -
 .../solr/autoscaling/testEmptyCollection.json      | 27 +++++++++
 .../client/solrj/cloud/autoscaling/TestPolicy.java | 68 ++++++++++++++++++++++
 3 files changed, 95 insertions(+), 3 deletions(-)

diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java
index 0d876db..2e7ea10 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestHdfsCloudBackupRestore.java
@@ -26,8 +26,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
-import org.apache.lucene.util.LuceneTestCase.AwaitsFix;
-
 import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
 import org.apache.commons.io.IOUtils;
 import org.apache.hadoop.conf.Configuration;
@@ -65,7 +63,6 @@ import static org.apache.solr.core.backup.BackupManager.ZK_STATE_DIR;
 @ThreadLeakFilters(defaultFilters = true, filters = {
     BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
 })
-@AwaitsFix(bugUrl = "https://issues.apache.org/jira/browse/SOLR-12866")
 public class TestHdfsCloudBackupRestore extends AbstractCloudBackupRestoreTestCase {
   public static final String SOLR_XML = "<solr>\n" +
       "\n" +
diff --git a/solr/solrj/src/test-files/solrj/solr/autoscaling/testEmptyCollection.json b/solr/solrj/src/test-files/solrj/solr/autoscaling/testEmptyCollection.json
new file mode 100644
index 0000000..7dd4295
--- /dev/null
+++ b/solr/solrj/src/test-files/solrj/solr/autoscaling/testEmptyCollection.json
@@ -0,0 +1,27 @@
+{"clusterstate":{"test_empty_collection":{
+  "pullReplicas":0,
+  "replicationFactor":1,
+  "shards":{
+    "shard2":{
+      "range":"0-7fffffff",
+      "state":"active",
+      "replicas":{}},
+    "shard1_1":{
+      "range":"c0000000-ffffffff",
+      "state":"active",
+      "replicas":{},
+      "stateTimestamp":"1540603288721383849"},
+    "shard1_0":{
+      "range":"80000000-bfffffff",
+      "state":"active",
+      "replicas":{},
+      "stateTimestamp":"1540603288721468797"}},
+  "router":{
+    "name":"compositeId",
+    "field":"shard_s"},
+  "maxShardsPerNode":"-1",
+  "autoAddReplicas":"false",
+  "nrtReplicas":1,
+  "tlogReplicas":0}},
+
+  "replicaInfo":{}}
\ No newline at end of file
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy.java b/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy.java
index a793995..63e87a2 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/cloud/autoscaling/TestPolicy.java
@@ -2938,6 +2938,74 @@ public class TestPolicy extends SolrTestCaseJ4 {
     assertEquals("s1", replicaPosition.shard); // sanity check
   }
 
+  public void testPolicyForEmptyCollection() throws IOException, InterruptedException {
+    Map m = (Map) loadFromResource("testEmptyCollection.json");
+    Map clusterStateMap = (Map) m.remove("clusterstate");
+    Map replicaInfoMap = (Map) m.remove("replicaInfo");
+
+    ClusterState clusterState = ClusterState.load(1, clusterStateMap, ImmutableSet.of("node1", "node2"), CLUSTER_STATE);
+
+    List<String> shards = Arrays.asList("shard1", "shard2", "shard3");
+
+    Assign.AssignRequest assignRequest = new Assign.AssignRequestBuilder()
+        .forCollection("test_empty_collection")
+        .forShard(shards)
+        .assignNrtReplicas(1)
+        .build();
+
+    DelegatingCloudManager cloudManager = new DelegatingCloudManager(null) {
+      @Override
+      public ClusterStateProvider getClusterStateProvider() {
+        return new DelegatingClusterStateProvider(null) {
+          @Override
+          public ClusterState getClusterState() {
+            return clusterState;
+          }
+
+          @Override
+          public Set<String> getLiveNodes() {
+            return clusterState.getLiveNodes();
+          }
+        };
+      }
+
+      @Override
+      public DistribStateManager getDistribStateManager() {
+        return new DelegatingDistribStateManager(null) {
+          @Override
+          public AutoScalingConfig getAutoScalingConfig() {
+            return new AutoScalingConfig(new HashMap<>());
+          }
+        };
+      }
+
+      public NodeStateProvider getNodeStateProvider() {
+        return new DelegatingNodeStateProvider(null) {
+          @Override
+          public Map<String, Object> getNodeValues(String node, Collection<String> keys) {
+            return Collections.EMPTY_MAP;
+          }
+
+          @Override
+          public Map<String, Map<String, List<ReplicaInfo>>> getReplicaInfo(String node, Collection<String> keys) {
+            //return Collections.EMPTY_MAP;
+            return replicaInfoMap;
+          }
+        };
+      }
+
+    };
+
+    Assign.AssignStrategyFactory assignStrategyFactory = new Assign.AssignStrategyFactory(cloudManager);
+    ClusterState state = cloudManager.getClusterStateProvider().getClusterState();
+    DocCollection collection = state.getCollection("test_empty_collection");
+
+    Assign.AssignStrategy assignStrategy = assignStrategyFactory.create(state, collection);
+    List<ReplicaPosition> replicaPositions = assignStrategy.assign(cloudManager, assignRequest);
+    assertEquals(2,replicaPositions.stream().map((rp)-> rp.node).distinct().count());
+    assertEquals(3,replicaPositions.stream().map((rp)-> rp.shard).distinct().count());
+  }
+
   /**
    * Tests that an empty policy should not persist implicitly added keys to MapWriter
    * <p>