You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2017/05/12 13:43:40 UTC

[47/50] [abbrv] lucene-solr:jira/solr-8668: SOLR-10408: v2 API introspect should return useful message for non-existent command

SOLR-10408: v2 API introspect should return useful message for non-existent command


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/f6b3337b
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/f6b3337b
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/f6b3337b

Branch: refs/heads/jira/solr-8668
Commit: f6b3337b6514515e5c8dc91e3d0ed6c372fabfb0
Parents: 5a25ef0
Author: Cao Manh Dat <da...@apache.org>
Authored: Fri May 12 09:54:19 2017 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Fri May 12 09:54:19 2017 +0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  2 +
 .../src/java/org/apache/solr/api/ApiBag.java    |  7 +-
 .../solr/handler/V2ApiIntegrationTest.java      | 67 +++++++-------------
 3 files changed, 31 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f6b3337b/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 530a065..9608da1 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -100,6 +100,8 @@ Bug Fixes
 * SOLR-9837: Fix 55% performance regression of FieldCache uninvert time of
   numeric fields.  (yonik)
 
+* SOLR-10408: v2 API introspect should return useful message for non-existent command (Cao Manh Dat)
+
 Optimizations
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f6b3337b/solr/core/src/java/org/apache/solr/api/ApiBag.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/api/ApiBag.java b/solr/core/src/java/org/apache/solr/api/ApiBag.java
index 14d029f..4ea8d0d 100644
--- a/solr/core/src/java/org/apache/solr/api/ApiBag.java
+++ b/solr/core/src/java/org/apache/solr/api/ApiBag.java
@@ -154,7 +154,12 @@ public class ApiBag {
         ValidatingJsonMap commands = specCopy.getMap("commands", null);
         if (commands != null) {
           ValidatingJsonMap m = commands.getMap(cmd, null);
-          specCopy.put("commands", Collections.singletonMap(cmd, m));
+          if (m == null) {
+            specCopy.put("commands", Collections.singletonMap(cmd, "Command not found!"));
+          } else {
+            specCopy.put("commands", Collections.singletonMap(cmd, m));
+          }
+
         }
         result = specCopy;
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f6b3337b/solr/core/src/test/org/apache/solr/handler/V2ApiIntegrationTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/V2ApiIntegrationTest.java b/solr/core/src/test/org/apache/solr/handler/V2ApiIntegrationTest.java
index 4eb3de2..e478b0c 100644
--- a/solr/core/src/test/org/apache/solr/handler/V2ApiIntegrationTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/V2ApiIntegrationTest.java
@@ -18,16 +18,19 @@
 package org.apache.solr.handler;
 
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.solr.client.solrj.embedded.JettySolrRunner;
+import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
+import org.apache.solr.client.solrj.request.V2Request;
 import org.apache.solr.cloud.SolrCloudTestCase;
+import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.Utils;
-import org.apache.solr.core.TestSolrConfigHandler;
-import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -37,29 +40,6 @@ public class V2ApiIntegrationTest extends SolrCloudTestCase {
 
   private static String COLL_NAME = "collection1";
 
-  private void setupHarnesses() {
-    for (final JettySolrRunner jettySolrRunner : cluster.getJettySolrRunners()) {
-      RestTestHarness harness = new RestTestHarness(new ServerProvider(jettySolrRunner));
-      restTestHarnesses.add(harness);
-    }
-  }
-  static class ServerProvider implements RESTfulServerProvider {
-
-    final JettySolrRunner jettySolrRunner;
-    String baseurl;
-
-    ServerProvider(JettySolrRunner jettySolrRunner) {
-      this.jettySolrRunner = jettySolrRunner;
-      baseurl = jettySolrRunner.getBaseUrl().toString() + "/" + COLL_NAME;
-    }
-
-    @Override
-    public String getBaseURL() {
-      return baseurl;
-    }
-
-  }
-
   @BeforeClass
   public static void createCluster() throws Exception {
     System.setProperty("managed.schema.mutable", "true");
@@ -71,28 +51,27 @@ public class V2ApiIntegrationTest extends SolrCloudTestCase {
   }
 
   @Test
-  public void test() throws Exception {
-    try {
-      setupHarnesses();
-      testApis();
-
-    } finally {
-      for (RestTestHarness r : restTestHarnesses) {
-        r.close();
-      }
-    }
+  public void testIntrospect() throws Exception {
+    ModifiableSolrParams params = new ModifiableSolrParams();
+    params.set("command","XXXX");
+    params.set("method", "POST");
+    Map result = resAsMap(cluster.getSolrClient(),
+        new V2Request.Builder("/c/"+COLL_NAME+"/_introspect")
+            .withParams(params).build());
+    assertEquals("Command not found!", Utils.getObjectByPath(result, false, "/spec[0]/commands/XXXX"));
   }
 
-  private void testApis() throws Exception {
-    RestTestHarness restHarness = restTestHarnesses.get(0);
-    ServerProvider serverProvider = (ServerProvider) restHarness.getServerProvider();
-    serverProvider.baseurl = serverProvider.jettySolrRunner.getBaseUrl()+"/____v2/c/"+ COLL_NAME;
-    Map result = TestSolrConfigHandler.getRespMap("/get/_introspect", restHarness);
+  @Test
+  public void testCollectionsApi() throws Exception {
+    CloudSolrClient client = cluster.getSolrClient();
+    Map result = resAsMap(client, new V2Request.Builder("/c/"+COLL_NAME+"/get/_introspect").build());
     assertEquals("/c/collection1/get", Utils.getObjectByPath(result, true, "/spec[0]/url/paths[0]"));
-    serverProvider.baseurl = serverProvider.jettySolrRunner.getBaseUrl()+"/____v2/collections/"+ COLL_NAME;
-    result = TestSolrConfigHandler.getRespMap("/get/_introspect", restHarness);
+    result = resAsMap(client, new V2Request.Builder("/collections/"+COLL_NAME+"/get/_introspect").build());
     assertEquals("/collections/collection1/get", Utils.getObjectByPath(result, true, "/spec[0]/url/paths[0]"));
+  }
 
-
+  private Map resAsMap(CloudSolrClient client, V2Request request) throws SolrServerException, IOException {
+    NamedList<Object> rsp = client.request(request);
+    return rsp.asMap(100);
   }
 }