From a444e82babe2aec9a7bbaeb9c546df4fde5af91d Mon Sep 17 00:00:00 2001 From: Christine Poerschke Date: Tue, 3 Jul 2018 18:27:17 +0100 Subject: [PATCH] SOLR-12527: factor out a test-framework/ConfigRequest class --- solr/CHANGES.txt | 2 + .../solr/cloud/TestCloudSearcherWarming.java | 41 +------------- .../CustomHighlightComponentTest.java | 7 +-- .../org/apache/solr/cloud/ConfigRequest.java | 55 +++++++++++++++++++ 4 files changed, 60 insertions(+), 45 deletions(-) create mode 100644 solr/test-framework/src/java/org/apache/solr/cloud/ConfigRequest.java diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index eb1b40fd6ff..3a346c8b562 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -157,6 +157,8 @@ Other Changes * SOLR-12468: Upgrade Jetty to 9.4.11.v20180605 (Michael Braun, shalin) +* SOLR-12527: factor out a test-framework/ConfigRequest class (Christine Poerschke) + ================== 7.4.0 ================== Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release. diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudSearcherWarming.java b/solr/core/src/test/org/apache/solr/cloud/TestCloudSearcherWarming.java index fe637d919b7..10a6cff0c73 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestCloudSearcherWarming.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudSearcherWarming.java @@ -22,22 +22,16 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; -import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; -import org.apache.solr.client.solrj.SolrRequest; -import org.apache.solr.client.solrj.SolrResponse; import org.apache.solr.client.solrj.embedded.JettySolrRunner; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.client.solrj.request.RequestWriter; import org.apache.solr.client.solrj.response.QueryResponse; -import org.apache.solr.client.solrj.response.SolrResponseBase; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.cloud.CollectionStatePredicate; import org.apache.solr.common.cloud.CollectionStateWatcher; import org.apache.solr.common.cloud.DocCollection; import org.apache.solr.common.cloud.Replica; -import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.core.SolrCore; import org.apache.solr.core.SolrEventListener; @@ -52,8 +46,6 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.solr.common.params.CommonParams.JSON_MIME; - /** * Tests related to SOLR-6086 */ @@ -108,7 +100,7 @@ public class TestCloudSearcherWarming extends SolrCloudTestCase { "'add-listener' : {'name':'firstSearcherListener','event':'firstSearcher', 'class':'" + SleepingSolrEventListener.class.getName() + "'}" + "}"; - ConfigRequest request = new ConfigRequest(SolrRequest.METHOD.POST, "/config", addListenerCommand); + ConfigRequest request = new ConfigRequest(addListenerCommand); solrClient.request(request); solrClient.add(new SolrInputDocument("id", "1")); @@ -147,7 +139,7 @@ public class TestCloudSearcherWarming extends SolrCloudTestCase { "'add-listener' : {'name':'firstSearcherListener','event':'firstSearcher', 'class':'" + SleepingSolrEventListener.class.getName() + "'}" + "}"; - ConfigRequest request = new ConfigRequest(SolrRequest.METHOD.POST, "/config", addListenerCommand); + ConfigRequest request = new ConfigRequest(addListenerCommand); solrClient.request(request); solrClient.add(new SolrInputDocument("id", "1")); @@ -328,33 +320,4 @@ public class TestCloudSearcherWarming extends SolrCloudTestCase { } } } - - public static class ConfigRequest extends SolrRequest { - protected final String message; - - public ConfigRequest(METHOD m, String path, String message) { - super(m, path); - this.message = message; - } - - @Override - public SolrParams getParams() { - return null; - } - - /* @Override - public Collection getContentStreams() throws IOException { - return message != null ? Collections.singletonList(new ContentStreamBase.StringStream(message)) : null; - }*/ - - @Override - public RequestWriter.ContentWriter getContentWriter(String expectedType) { - return message == null? null: new RequestWriter.StringPayloadContentWriter(message, JSON_MIME); - } - - @Override - protected SolrResponse createResponse(SolrClient client) { - return new SolrResponseBase(); - } - } } diff --git a/solr/core/src/test/org/apache/solr/handler/component/CustomHighlightComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/CustomHighlightComponentTest.java index 5f740644d13..da7ea5727ba 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/CustomHighlightComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/CustomHighlightComponentTest.java @@ -23,14 +23,13 @@ import java.util.Map; import java.util.Set; import org.apache.solr.client.solrj.SolrQuery; -import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.cloud.AbstractDistribZkTestBase; +import org.apache.solr.cloud.ConfigRequest; import org.apache.solr.cloud.SolrCloudTestCase; -import org.apache.solr.cloud.TestCloudSearcherWarming.ConfigRequest; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.SimpleOrderedMap; import org.apache.solr.highlight.SolrFragmentsBuilder; @@ -145,8 +144,6 @@ public class CustomHighlightComponentTest extends SolrCloudTestCase { highlightComponentName = "customhighlight"+random().nextInt(); cluster.getSolrClient().request( new ConfigRequest( - SolrRequest.METHOD.POST, - "/config", "{\n" + " 'add-searchcomponent': {\n" + " 'name': '"+highlightComponentName+"',\n" + @@ -158,8 +155,6 @@ public class CustomHighlightComponentTest extends SolrCloudTestCase { // handler cluster.getSolrClient().request( new ConfigRequest( - SolrRequest.METHOD.POST, - "/config", "{\n" + " 'add-requesthandler': {\n" + " 'name' : '"+customSearchHandlerName+"',\n" + diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/ConfigRequest.java b/solr/test-framework/src/java/org/apache/solr/cloud/ConfigRequest.java new file mode 100644 index 00000000000..12b5a37df56 --- /dev/null +++ b/solr/test-framework/src/java/org/apache/solr/cloud/ConfigRequest.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.solr.cloud; + +import org.apache.solr.client.solrj.SolrClient; +import org.apache.solr.client.solrj.SolrRequest; +import org.apache.solr.client.solrj.SolrResponse; +import org.apache.solr.client.solrj.request.RequestWriter; +import org.apache.solr.client.solrj.response.SolrResponseBase; +import org.apache.solr.common.params.CommonParams; +import org.apache.solr.common.params.SolrParams; + +/** + * A class for making a request to the config handler. Tests can use this + * e.g. to add custom components, handlers, parsers, etc. to an otherwise + * generic configset. + */ +public class ConfigRequest extends SolrRequest { + + protected final String message; + + public ConfigRequest(String message) { + super(SolrRequest.METHOD.POST, "/config"); + this.message = message; + } + + @Override + public SolrParams getParams() { + return null; + } + + @Override + public RequestWriter.ContentWriter getContentWriter(String expectedType) { + return message == null? null: new RequestWriter.StringPayloadContentWriter(message, CommonParams.JSON_MIME); + } + + @Override + public SolrResponse createResponse(SolrClient client) { + return new SolrResponseBase(); + } +}