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;