From 9df85237eec59785d8afd089e8fa69637a4d58d8 Mon Sep 17 00:00:00 2001 From: Stephen Allen Date: Mon, 21 Aug 2017 21:51:14 -0400 Subject: [PATCH 1/2] Set path for known RequestHandlers in EmbeddedSolrServer --- .../apache/solr/client/solrj/embedded/EmbeddedSolrServer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java b/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java index def4250d1581..0c7ea25f1835 100644 --- a/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java +++ b/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java @@ -127,6 +127,7 @@ public NamedList request(SolrRequest request, String coreName) throws So if (handler != null) { try { SolrQueryRequest req = _parser.buildRequestFrom(null, request.getParams(), request.getContentStreams()); + req.getContext().put(PATH, path); SolrQueryResponse resp = new SolrQueryResponse(); handler.handleRequest(req, resp); checkForExceptions(resp); From 67d77231a1a48b52690585f3f8fac39c42ab3e1b Mon Sep 17 00:00:00 2001 From: Stephen Allen Date: Mon, 21 Aug 2017 21:53:21 -0400 Subject: [PATCH 2/2] Unit test for EmbeddedSolrServer context path --- ...estEmbeddedSolrServerWithKnownHandler.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerWithKnownHandler.java diff --git a/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerWithKnownHandler.java b/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerWithKnownHandler.java new file mode 100644 index 000000000000..7a8a935f4c4c --- /dev/null +++ b/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerWithKnownHandler.java @@ -0,0 +1,60 @@ +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collection; + +import org.apache.solr.SolrTestCaseJ4; +import org.apache.solr.client.solrj.SolrClient; +import org.apache.solr.client.solrj.SolrRequest; +import org.apache.solr.client.solrj.SolrServerException; +import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer; +import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.common.params.ModifiableSolrParams; +import org.apache.solr.common.params.SolrParams; +import org.apache.solr.common.util.ContentStream; +import org.apache.solr.common.util.NamedList; +import org.apache.solr.core.NodeConfig; +import org.apache.solr.core.SolrResourceLoader; +import org.junit.Test; + +public class TestEmbeddedSolrServerWithKnownHandler extends SolrTestCaseJ4 { + + @Test + public void testPathIsAddedToContext() throws IOException, SolrServerException { + final Path path = createTempDir(); + + final SolrResourceLoader loader = new SolrResourceLoader(path); + final NodeConfig config = new NodeConfig.NodeConfigBuilder("testnode", loader) + .setConfigSetBaseDirectory(Paths.get(TEST_HOME()).resolve("configsets").toString()) + .build(); + + try (final EmbeddedSolrServer server = new EmbeddedSolrServer(config, "collection1")) { + final SystemInfoRequest info = new SystemInfoRequest(); + final NamedList response = server.request(info); + assertTrue(response.size() > 0); + } + } + + private static class SystemInfoRequest extends SolrRequest { + + public SystemInfoRequest() { + super(METHOD.GET, "/admin/info/system"); + } + + @Override + public SolrParams getParams() { + return new ModifiableSolrParams(); + } + + @Override + public Collection getContentStreams() throws IOException { + return null; + } + + @Override + protected QueryResponse createResponse(final SolrClient client) { + return new QueryResponse(); + } + } + +}