You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/07/14 02:12:13 UTC
[lucene-solr] branch reference_impl updated: #130 - Harden test.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/reference_impl by this push:
new c968122 #130 - Harden test.
c968122 is described below
commit c96812277624f24a6feb5588ecd22ebdbeda61be
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Mon Jul 13 21:11:58 2020 -0500
#130 - Harden test.
---
.../routing/AffinityReplicaListTransformer.java | 8 +-
.../solrj/routing/ReplicaListTransformer.java | 3 +
.../RequestReplicaListTransformerGenerator.java | 8 +-
.../routing/ShufflingReplicaListTransformer.java | 8 +-
.../solrj/routing/ReplicaListTransformerTest.java | 127 ++++++++++++---------
5 files changed, 94 insertions(+), 60 deletions(-)
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/AffinityReplicaListTransformer.java b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/AffinityReplicaListTransformer.java
index f6dbf61..864105a 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/AffinityReplicaListTransformer.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/AffinityReplicaListTransformer.java
@@ -16,6 +16,7 @@
*/
package org.apache.solr.client.solrj.routing;
+import java.io.Closeable;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
@@ -30,7 +31,7 @@ import org.apache.solr.common.util.Hash;
* either explicitly configured hash routing parameter, or the hash of a query parameter (configurable, usually related
* to the main query).
*/
-public class AffinityReplicaListTransformer implements ReplicaListTransformer {
+public class AffinityReplicaListTransformer implements ReplicaListTransformer, Closeable {
private final int routingDividend;
@@ -83,6 +84,11 @@ public class AffinityReplicaListTransformer implements ReplicaListTransformer {
}
}
+ @Override
+ public void close() {
+
+ }
+
private static final class SortableChoice {
private final Object choice;
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/ReplicaListTransformer.java b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/ReplicaListTransformer.java
index e2344c6..d8003ca 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/ReplicaListTransformer.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/ReplicaListTransformer.java
@@ -32,4 +32,7 @@ public interface ReplicaListTransformer {
*/
public void transform(List<?> choices);
+ default void close() {
+
+ }
}
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/RequestReplicaListTransformerGenerator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/RequestReplicaListTransformerGenerator.java
index 4853787..9ca7d0d 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/RequestReplicaListTransformerGenerator.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/RequestReplicaListTransformerGenerator.java
@@ -16,6 +16,7 @@
*/
package org.apache.solr.client.solrj.routing;
+import java.io.Closeable;
import java.lang.invoke.MethodHandles;
import java.util.Arrays;
import java.util.Iterator;
@@ -124,7 +125,7 @@ public class RequestReplicaListTransformerGenerator {
* and subsequently reordering any equivalent replica sets according to behavior specified
* by the baseReplicaListTransformer.
*/
- private static final class TopLevelReplicaListTransformer implements ReplicaListTransformer {
+ private static final class TopLevelReplicaListTransformer implements ReplicaListTransformer, Closeable {
private final NodePreferenceRulesComparator replicaComp;
private final ReplicaListTransformer baseReplicaListTransformer;
@@ -185,6 +186,11 @@ public class RequestReplicaListTransformerGenerator {
}
}
}
+
+ @Override
+ public void close() {
+
+ }
}
}
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/ShufflingReplicaListTransformer.java b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/ShufflingReplicaListTransformer.java
index 7c37129..7d529a6 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/ShufflingReplicaListTransformer.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/ShufflingReplicaListTransformer.java
@@ -16,11 +16,12 @@
*/
package org.apache.solr.client.solrj.routing;
+import java.io.Closeable;
import java.util.Collections;
import java.util.List;
import java.util.Random;
-public class ShufflingReplicaListTransformer implements ReplicaListTransformer {
+public class ShufflingReplicaListTransformer implements ReplicaListTransformer, Closeable {
private final Random r;
@@ -36,4 +37,9 @@ public class ShufflingReplicaListTransformer implements ReplicaListTransformer {
}
}
+ @Override
+ public void close() {
+
+ }
+
}
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/routing/ReplicaListTransformerTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/routing/ReplicaListTransformerTest.java
index 0331ef5..75afe70 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/routing/ReplicaListTransformerTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/routing/ReplicaListTransformerTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.solr.client.solrj.routing;
+import java.io.Closeable;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
@@ -41,7 +42,7 @@ public class ReplicaListTransformerTest extends SolrTestCase {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
// A transformer that keeps only matching choices
- private static class ToyMatchingReplicaListTransformer implements ReplicaListTransformer {
+ private static class ToyMatchingReplicaListTransformer implements ReplicaListTransformer, Closeable {
private final String regex;
@@ -73,10 +74,15 @@ public class ReplicaListTransformerTest extends SolrTestCase {
}
}
+ @Override
+ public void close() {
+
+ }
+
}
// A transformer that makes no transformation
- private static class ToyNoOpReplicaListTransformer implements ReplicaListTransformer {
+ private static class ToyNoOpReplicaListTransformer implements ReplicaListTransformer, Closeable {
public ToyNoOpReplicaListTransformer()
{
@@ -88,6 +94,11 @@ public class ReplicaListTransformerTest extends SolrTestCase {
log.info("No-Op transform ignoring input: {}", choices);
}
+ @Override
+ public void close() {
+
+ }
+
}
@Test
@@ -95,72 +106,74 @@ public class ReplicaListTransformerTest extends SolrTestCase {
final String regex = ".*" + random().nextInt(10) + ".*";
- final ReplicaListTransformer transformer;
- if (random().nextBoolean()) {
- log.info("Using ToyMatching Transfomer");
- transformer = new ToyMatchingReplicaListTransformer(regex);
+ ReplicaListTransformer transformer = null;
+ try {
+ if (random().nextBoolean()) {
+ log.info("Using ToyMatching Transfomer");
+ transformer = new ToyMatchingReplicaListTransformer(regex);
- } else {
- log.info("Using conditional Transfomer");
- transformer = new HttpShardHandlerFactory() {
+ } else {
+ log.info("Using conditional Transfomer");
+ transformer = new HttpShardHandlerFactory() {
- @Override
- protected ReplicaListTransformer getReplicaListTransformer(final SolrQueryRequest req)
- {
- final SolrParams params = req.getParams();
+ @Override
+ protected ReplicaListTransformer getReplicaListTransformer(final SolrQueryRequest req) {
+ final SolrParams params = req.getParams();
- if (params.getBool("toyNoTransform", false)) {
- return new ToyNoOpReplicaListTransformer();
- }
+ if (params.getBool("toyNoTransform", false)) {
+ return new ToyNoOpReplicaListTransformer();
+ }
- final String regex = params.get("toyRegEx");
- if (regex != null) {
- return new ToyMatchingReplicaListTransformer(regex);
+ final String regex = params.get("toyRegEx");
+ if (regex != null) {
+ return new ToyMatchingReplicaListTransformer(regex);
+ }
+
+ return super.getReplicaListTransformer(req);
}
- return super.getReplicaListTransformer(req);
- }
+ }.getReplicaListTransformer(
+ new LocalSolrQueryRequest(null,
+ new ModifiableSolrParams().add("toyRegEx", regex)));
+ }
- }.getReplicaListTransformer(
- new LocalSolrQueryRequest(null,
- new ModifiableSolrParams().add("toyRegEx", regex)));
- }
+ final List<Replica> inputs = new ArrayList<>();
+ final List<Replica> expectedTransformed = new ArrayList<>();
+
+ final List<String> urls = createRandomUrls();
+ for (int ii = 0; ii < urls.size(); ++ii) {
+
+ final String name = "replica" + (ii + 1);
+ final String url = urls.get(ii);
+ final Map<String, Object> propMap = new HashMap<String, Object>();
+ propMap.put("base_url", url);
+ propMap.put("core", "test_core");
+ propMap.put("node_name", "test_node");
+ propMap.put("type", "NRT");
+ // a skeleton replica, good enough for this test's purposes
+ final Replica replica = new Replica(name, propMap, "c1", "s1");
+
+ inputs.add(replica);
+ final String coreUrl = replica.getCoreUrl();
+ if (coreUrl.matches(regex)) {
+ log.info("adding replica=[{}] to expected due to core url ({}) regex match on {} ",
+ replica, coreUrl, regex);
+ expectedTransformed.add(replica);
+ } else {
+ log.info("NOT expecting replica=[{}] due to core url ({}) regex mismatch ({})",
+ replica, coreUrl, regex);
+ }
- final List<Replica> inputs = new ArrayList<>();
- final List<Replica> expectedTransformed = new ArrayList<>();
-
- final List<String> urls = createRandomUrls();
- for (int ii=0; ii<urls.size(); ++ii) {
-
- final String name = "replica"+(ii+1);
- final String url = urls.get(ii);
- final Map<String,Object> propMap = new HashMap<String,Object>();
- propMap.put("base_url", url);
- propMap.put("core", "test_core");
- propMap.put("node_name", "test_node");
- propMap.put("type", "NRT");
- // a skeleton replica, good enough for this test's purposes
- final Replica replica = new Replica(name, propMap,"c1","s1");
-
- inputs.add(replica);
- final String coreUrl = replica.getCoreUrl();
- if (coreUrl.matches(regex)) {
- log.info("adding replica=[{}] to expected due to core url ({}) regex match on {} ",
- replica, coreUrl, regex);
- expectedTransformed.add(replica);
- } else {
- log.info("NOT expecting replica=[{}] due to core url ({}) regex mismatch ({})",
- replica, coreUrl, regex);
}
-
- }
- final List<Replica> actualTransformed = new ArrayList<>(inputs);
- transformer.transform(actualTransformed);
+ final List<Replica> actualTransformed = new ArrayList<>(inputs);
+ transformer.transform(actualTransformed);
- assertEquals(expectedTransformed, actualTransformed);
- if (transformer instanceof HttpShardHandlerFactory) {
- ((HttpShardHandlerFactory) transformer).close();
+ assertEquals(expectedTransformed, actualTransformed);
+ } finally {
+ if (transformer != null) {
+ transformer.close();
+ }
}
}