You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2016/03/14 12:57:27 UTC
lucene-solr git commit: SOLR-8029: FIxed failing tests and added a
testcase
Repository: lucene-solr
Updated Branches:
refs/heads/apiv2 b1b1e97cf -> bbb81e0bb
SOLR-8029: FIxed failing tests and added a testcase
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/bbb81e0b
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/bbb81e0b
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/bbb81e0b
Branch: refs/heads/apiv2
Commit: bbb81e0bb6881b8233a99650afe59a270334b9fc
Parents: b1b1e97
Author: Noble Paul <no...@apache.org>
Authored: Mon Mar 14 17:27:07 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Mon Mar 14 17:27:07 2016 +0530
----------------------------------------------------------------------
.../java/org/apache/solr/api/V2HttpCall.java | 4 +
.../apache/solr/handler/DumpRequestHandler.java | 11 +++
.../apache/solr/servlet/SolrRequestParsers.java | 8 ++
.../apache/solr/core/TestSolrConfigHandler.java | 85 +++++++++++++++++---
.../solr/handler/admin/TestApiFramework.java | 16 ++--
.../java/org/apache/solr/common/util/Map2.java | 55 ++++++-------
6 files changed, 129 insertions(+), 50 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bbb81e0b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/api/V2HttpCall.java b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
index 9b09c12..988a4c8 100644
--- a/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
+++ b/solr/core/src/java/org/apache/solr/api/V2HttpCall.java
@@ -268,6 +268,10 @@ public class V2HttpCall extends HttpSolrCall {
}
}
+ public Map<String,String> getUrlParts(){
+ return parts;
+ }
+
@Override
protected QueryResponseWriter getResponseWriter() {
String wt = solrReq.getParams().get(WT, JSON);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bbb81e0b/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java
index 9b0f959..7dd69a5 100644
--- a/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java
@@ -19,7 +19,9 @@ package org.apache.solr.handler;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.apache.solr.common.util.ContentStream;
@@ -39,6 +41,15 @@ public class DumpRequestHandler extends RequestHandlerBase
{
// Show params
rsp.add( "params", req.getParams().toNamedList() );
+ String[] parts = req.getParams().getParams("urlPart");
+ if (parts != null && parts.length > 0) {
+ Map map = new LinkedHashMap<>();
+ rsp.getValues().add("urlPart", map);
+ for (String part : parts) {
+ map.put(part, req.getPathValues().get(part));
+ }
+ }
+
String[] returnParams = req.getParams().getParams("param");
if(returnParams !=null) {
NamedList params = (NamedList) rsp.getValues().get("params");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bbb81e0b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
index f277cbe..12a6c41 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
@@ -237,6 +237,14 @@ public class SolrRequestParsers
}
return Collections.emptyList();
}
+
+ @Override
+ public Map<String, String> getPathValues() {
+ if (httpSolrCall != null && httpSolrCall instanceof V2HttpCall) {
+ return ((V2HttpCall) httpSolrCall).getUrlParts();
+ }
+ return Collections.EMPTY_MAP;
+ }
};
if( streams != null && streams.size() > 0 ) {
q.setContentStreams( streams );
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bbb81e0b/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java b/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
index fbdbd4d..ee3c1e4 100644
--- a/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
+++ b/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
@@ -33,9 +33,11 @@ import com.google.common.collect.ImmutableList;
import org.apache.commons.io.FileUtils;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
+import org.apache.solr.common.util.Predicate;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.common.util.Utils;
import org.apache.solr.handler.TestBlobHandler;
+import org.apache.solr.handler.TestSolrConfigHandlerCloud;
import org.apache.solr.handler.TestSolrConfigHandlerConcurrent;
import org.apache.solr.util.RESTfulServerProvider;
import org.apache.solr.util.RestTestBase;
@@ -80,12 +82,7 @@ public class TestSolrConfigHandler extends RestTestBase {
"/solr", true, extraServlets);
if (random().nextBoolean()) {
log.info("These tests are run with V2 API");
- restTestHarness.setServerProvider(new RESTfulServerProvider() {
- @Override
- public String getBaseURL() {
- return jetty.getBaseUrl().toString() + "/v2/cores/" + DEFAULT_TEST_CORENAME;
- }
- });
+ restTestHarness.setServerProvider(() -> jetty.getBaseUrl().toString() + "/v2/cores/" + DEFAULT_TEST_CORENAME);
}
}
@@ -457,9 +454,20 @@ public class TestSolrConfigHandler extends RestTestBase {
continue;
}
- if (Objects.equals(expected, Utils.getObjectByPath(m, false, jsonPath))) {
- success = true;
- break;
+ Object actual = Utils.getObjectByPath(m, false, jsonPath);
+
+ if (expected instanceof Predicate) {
+ Predicate predicate = (Predicate) expected;
+ if (predicate.test(actual) == null) {
+ success = true;
+ break;
+ }
+
+ } else {
+ if (Objects.equals(expected, actual)) {
+ success = true;
+ break;
+ }
}
Thread.sleep(100);
@@ -677,6 +685,65 @@ public class TestSolrConfigHandler extends RestTestBase {
null,
10);
+ payload = "{\n" +
+ " 'create-requesthandler': {\n" +
+ " 'name': 'aRequestHandler',\n" +
+ " 'registerPath': '/v2',\n" +
+ " 'class': 'org.apache.solr.handler.DumpRequestHandler',\n" +
+ " 'spec': {\n" +
+ " 'methods': [\n" +
+ " 'GET',\n" +
+ " 'POST'\n" +
+ " ],\n" +
+ " 'url': {\n" +
+ " 'paths': [\n" +
+ " '/something/{part1}/fixed/{part2}'\n" +
+ " ]\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ "}";
+
+ TestSolrConfigHandler.runConfigCommand(harness, "/config?wt=json", payload);
+ TestSolrConfigHandler.testForResponseElement(harness,
+ null,
+ "/config/overlay?wt=json",
+ null,
+ Arrays.asList("overlay", "requestHandler", "aRequestHandler", "class"),
+ "org.apache.solr.handler.DumpRequestHandler",
+ 10);
+ RESTfulServerProvider oldProvider = restTestHarness.getServerProvider();
+ restTestHarness.setServerProvider(new RESTfulServerProvider() {
+ @Override
+ public String getBaseURL() {
+ return jetty.getBaseUrl().toString() + "/v2/cores/" + DEFAULT_TEST_CORENAME;
+ }
+ });
+
+ Map rsp = TestSolrConfigHandler.testForResponseElement(
+ harness,
+ null,
+ "/something/part1_Value/fixed/part2_Value?urlPart=part1&urlPart=part2",
+ null,
+ Arrays.asList("urlPart"),
+ (Predicate) new Predicate() {
+ @Override
+ public String test(Object o) {
+ if (o instanceof Map) {
+ Map m = (Map) o;
+ if ("part1_Value".equals(m.get("part1")) && "part2_Value".equals(m.get("part2"))) return null;
+
+ }
+ return "no match";
+ }
+
+ @Override
+ public String toString() {
+ return "{part1:part1_Value, part2 : part2_Value]";
+ }
+ },
+ 10);
+ restTestHarness.setServerProvider(oldProvider);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bbb81e0b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
index 60f7dde..daf257a 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java
@@ -64,22 +64,21 @@ public class TestApiFramework extends SolrTestCaseJ4 {
Map<String, String> parts = new HashMap<>();
String fullPath = "/collections/hello/shards";
- Api api = V2HttpCall.getApiInfo(containerHandlers, fullPath, "GET",
+ Api api = V2HttpCall.getApiInfo(containerHandlers, fullPath, "POST",
mockCC, "collections", fullPath, parts);
assertNotNull(api);
assertConditions(api.getSpec(), Utils.makeMap(
- "/methods[0]", "GET",
- "/methods[1]", "POST",
+ "/methods[0]", "POST",
"/commands/create", NOT_NULL));
assertEquals("hello", parts.get("collection"));
+
+
parts = new HashMap<>();
- api = V2HttpCall.getApiInfo(containerHandlers, "/collections/hello/shards/shard1", "GET",
+ api = V2HttpCall.getApiInfo(containerHandlers, "/collections/hello/shards/shard1", "POST",
mockCC, "collections", null, parts);
assertConditions(api.getSpec(), Utils.makeMap(
"/methods[0]", "POST",
- "/methods[1]", "GET",
- "/methods[2]", "DELETE",
"/commands/split", NOT_NULL,
"/commands/add-replica", NOT_NULL,
"/commands/force-leader", NOT_NULL
@@ -89,11 +88,10 @@ public class TestApiFramework extends SolrTestCaseJ4 {
parts = new HashMap<>();
- api = V2HttpCall.getApiInfo(containerHandlers, "/collections/hello/shards/shard1/replica1", "GET",
+ api = V2HttpCall.getApiInfo(containerHandlers, "/collections/hello/shards/shard1/replica1", "POST",
mockCC, "collections", null, parts);
assertConditions(api.getSpec(), Utils.makeMap(
- "/methods[0]", "GET",
- "/methods[1]", "POST",
+ "/methods[0]", "POST",
"/commands/set", NOT_NULL
));
assertEquals("hello", parts.get("collection"));
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bbb81e0b/solr/solrj/src/java/org/apache/solr/common/util/Map2.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/Map2.java b/solr/solrj/src/java/org/apache/solr/common/util/Map2.java
index 4ac3ca7..b5306a1 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/Map2.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/Map2.java
@@ -29,6 +29,7 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import org.noggit.JSONParser;
@@ -40,46 +41,36 @@ import static java.util.Collections.unmodifiableSet;
public class Map2<K, V> implements Map<K, V> {
- public static final Predicate<Object> NOT_NULL = new Predicate<Object>() {
- @Override
- public String test(Object o) {
- if (o == null) return " Must not be NULL";
- return null;
- }
-
+ public static final Predicate<Object> NOT_NULL = o -> {
+ if (o == null) return " Must not be NULL";
+ return null;
};
- public static final Predicate<Pair> NOT_NULL_OF_TYPE = new Predicate<Pair>() {
- @Override
- public String test(Pair pair) {
- if (pair.getKey() == null) return " Must not be NULL";
- if (pair.getValue() instanceof Class) {
- return ((Class) pair.getValue()).isAssignableFrom(pair.getKey().getClass()) ?
- null :
- " Must be of type " + ((Class) pair.getValue()).getName();
- }
- return " Unknown Type";
+ public static final Predicate<Pair> NOT_NULL_OF_TYPE = pair -> {
+ if (pair.getKey() == null) return " Must not be NULL";
+ if (pair.getValue() instanceof Class) {
+ return ((Class) pair.getValue()).isAssignableFrom(pair.getKey().getClass()) ?
+ null :
+ " Must be of type " + ((Class) pair.getValue()).getName();
}
+ return " Unknown Type";
};
- public static final Predicate<Pair> ENUM_OF = new Predicate<Pair>() {
- @Override
- public String test(Pair pair) {
- if (pair.getValue() instanceof Set) {
- Set set = (Set) pair.getValue();
- if (pair.getKey() instanceof Collection) {
- for (Object o : (Collection) pair.getKey()) {
- if (!set.contains(o)) {
- return " Must be one of " + pair.getValue();
- }
+ public static final Predicate<Pair> ENUM_OF = pair -> {
+ if (pair.getValue() instanceof Set) {
+ Set set = (Set) pair.getValue();
+ if (pair.getKey() instanceof Collection) {
+ for (Object o : (Collection) pair.getKey()) {
+ if (!set.contains(o)) {
+ return " Must be one of " + pair.getValue();
}
- } else {
- if (!set.contains(pair.getKey())) return " Must be one of " + pair.getValue() + ", got " + pair.getKey();
}
- return null;
} else {
- return " Unknown type";
+ if (!set.contains(pair.getKey())) return " Must be one of " + pair.getValue() + ", got " + pair.getKey();
}
-
+ return null;
+ } else {
+ return " Unknown type";
}
+
};
private final Map<K, V> delegate;