You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ep...@apache.org on 2022/11/29 16:25:59 UTC
[solr] branch main updated: SOLR-16498: Tests to retrieve url from SolrClient (#1149)
This is an automated email from the ASF dual-hosted git repository.
epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 251136de064 SOLR-16498: Tests to retrieve url from SolrClient (#1149)
251136de064 is described below
commit 251136de064e7745b06be3ec3844ed86b68b3deb
Author: Joshua Ouma <jo...@gmail.com>
AuthorDate: Tue Nov 29 19:25:52 2022 +0300
SOLR-16498: Tests to retrieve url from SolrClient (#1149)
Reduce the casting to HttpSolrClient just to get the url out when we can instead access JettySolrRunner object that provides that variable. Also introduced a getHttpClient() method on SolrJettyTestBase that gets the Apache HttpClient that we use in many tests.
Started the process of referring to collection1 via the DEFAULT_TEST_COLLECTION_NAME constant.
Co-authored-by: Eric Pugh <ep...@opensourceconnections.com>
---
.../apache/solr/cloud/MultiThreadedOCPTest.java | 11 ++--
.../TestRequestStatusCollectionAPI.java | 5 +-
.../org/apache/solr/handler/TestBlobHandler.java | 3 +-
.../solr/handler/TestReplicationHandler.java | 59 ++++++++--------------
.../DistributedQueryElevationComponentTest.java | 2 +-
.../apache/solr/request/TestRemoteStreaming.java | 32 +++++++-----
.../apache/solr/schema/TestCloudManagedSchema.java | 4 +-
.../org/apache/solr/servlet/CacheHeaderTest.java | 32 ++++++------
.../apache/solr/servlet/CacheHeaderTestBase.java | 19 +++----
.../org/apache/solr/servlet/NoCacheHeaderTest.java | 22 ++++----
.../apache/solr/servlet/ResponseHeaderTest.java | 8 +--
.../solr/update/TestInPlaceUpdatesDistrib.java | 8 +++
.../client/solrj/SolrSchemalessExampleTest.java | 14 ++---
.../solr/client/solrj/TestSolrJErrorHandling.java | 4 +-
.../solrj/embedded/SolrExampleJettyTest.java | 16 +++---
.../java/org/apache/solr/SolrJettyTestBase.java | 7 +++
.../cloud/AbstractBasicDistributedZk2TestBase.java | 27 +++++-----
.../solr/cloud/AbstractFullDistribZkTestBase.java | 23 ++++-----
.../solr/cloud/AbstractSyncSliceTestBase.java | 5 +-
19 files changed, 145 insertions(+), 156 deletions(-)
diff --git a/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java b/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
index ea55fb02063..3f02637ff36 100644
--- a/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
@@ -23,7 +23,6 @@ import java.lang.invoke.MethodHandles;
import java.util.Random;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.CollectionAdminRequest.Create;
import org.apache.solr.client.solrj.request.CollectionAdminRequest.SplitShard;
@@ -51,7 +50,7 @@ public class MultiThreadedOCPTest extends AbstractFullDistribZkTestBase {
@Test
public void testFillWorkQueue() throws Exception {
- try (SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)))) {
+ try (SolrClient client = createNewSolrClient("", getBaseUrl(jettys.get(0)))) {
// This test does not make sense when the Collection API execution is distributed. There is no
// queue to fill
if (!new CollectionAdminRequest.RequestApiDistributedProcessing()
@@ -147,7 +146,7 @@ public class MultiThreadedOCPTest extends AbstractFullDistribZkTestBase {
@Test
public void testParallelCollectionAPICalls() throws IOException, SolrServerException {
final int ASYNC_SHIFT = 10000;
- try (SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)))) {
+ try (SolrClient client = createNewSolrClient("", getBaseUrl(jettys.get(0)))) {
for (int i = 1 + ASYNC_SHIFT; i <= NUM_COLLECTIONS + ASYNC_SHIFT; i++) {
CollectionAdminRequest.createCollection("ocptest" + i, "conf1", 3, 1)
.processAsync(String.valueOf(i), client);
@@ -188,7 +187,7 @@ public class MultiThreadedOCPTest extends AbstractFullDistribZkTestBase {
@Test
public void testTaskExclusivity() throws Exception, SolrServerException {
- try (SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)))) {
+ try (SolrClient client = createNewSolrClient("", getBaseUrl(jettys.get(0)))) {
Create createCollectionRequest =
CollectionAdminRequest.createCollection("ocptest_shardsplit", "conf1", 4, 1);
@@ -246,7 +245,7 @@ public class MultiThreadedOCPTest extends AbstractFullDistribZkTestBase {
@Test
public void testDeduplicationOfSubmittedTasks() throws IOException, SolrServerException {
- try (SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)))) {
+ try (SolrClient client = createNewSolrClient("", getBaseUrl(jettys.get(0)))) {
CollectionAdminRequest.createCollection("ocptest_shardsplit2", "conf1", 3, 1)
.processAsync("3000", client);
@@ -301,7 +300,7 @@ public class MultiThreadedOCPTest extends AbstractFullDistribZkTestBase {
}
};
indexThread.start();
- try (SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)))) {
+ try (SolrClient client = createNewSolrClient("", getBaseUrl(jettys.get(0)))) {
SplitShard splitShardRequest =
CollectionAdminRequest.splitShard("collection1").setShardName(SHARD1);
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestRequestStatusCollectionAPI.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestRequestStatusCollectionAPI.java
index 36e1e4e81f6..e5545ee8eab 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestRequestStatusCollectionAPI.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestRequestStatusCollectionAPI.java
@@ -22,7 +22,6 @@ import java.util.Arrays;
import java.util.Map;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.RequestStatusState;
import org.apache.solr.cloud.BasicDistributedZkTest;
@@ -222,9 +221,7 @@ public class TestRequestStatusCollectionAPI extends BasicDistributedZkTest {
QueryRequest request = new QueryRequest(params);
request.setPath("/admin/collections");
- String baseUrl =
- ((HttpSolrClient) shardToJetty.get(SHARD1).get(0).client.getSolrClient()).getBaseURL();
- baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
+ String baseUrl = shardToJetty.get(SHARD1).get(0).jetty.getBaseUrl().toString();
try (SolrClient baseServer = getHttpSolrClient(baseUrl, 15000)) {
return baseServer.request(request);
diff --git a/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java b/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
index 1e2b51e34b2..8d4e8c68ad9 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
@@ -36,7 +36,6 @@ import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudLegacySolrClient;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.response.CollectionAdminResponse;
import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
@@ -58,7 +57,7 @@ public class TestBlobHandler extends AbstractFullDistribZkTestBase {
@Test
public void doBlobHandlerTest() throws Exception {
- try (SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)))) {
+ try (SolrClient client = createNewSolrClient("", getBaseUrl(jettys.get(0)))) {
CollectionAdminResponse response1;
CollectionAdminRequest.Create createCollectionRequest =
CollectionAdminRequest.createCollection(".system", 1, 2);
diff --git a/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java b/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
index c4b502c06b6..780781bd02c 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
@@ -34,7 +34,6 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.List;
-import java.util.Properties;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.apache.lucene.index.DirectoryReader;
@@ -42,7 +41,7 @@ import org.apache.lucene.index.IndexReader;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.NIOFSDirectory;
-import org.apache.lucene.tests.util.LuceneTestCase.Nightly;
+import org.apache.lucene.tests.util.LuceneTestCase;
import org.apache.lucene.tests.util.TestUtil;
import org.apache.lucene.util.Constants;
import org.apache.solr.BaseDistributedSearchTestCase;
@@ -52,9 +51,7 @@ 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.SolrServerException;
-import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.GenericSolrRequest;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.request.UpdateRequest;
@@ -64,7 +61,6 @@ import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
@@ -76,7 +72,6 @@ import org.apache.solr.core.SolrCore;
import org.apache.solr.core.StandardDirectoryFactory;
import org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager;
import org.apache.solr.security.AllowListUrlChecker;
-import org.apache.solr.util.FileUtils;
import org.apache.solr.util.TestInjection;
import org.apache.solr.util.TimeOut;
import org.hamcrest.MatcherAssert;
@@ -92,7 +87,7 @@ import org.slf4j.LoggerFactory;
*
* @since 1.4
*/
-@Nightly
+@LuceneTestCase.Nightly
@SuppressSSL // Currently, unknown why SSL does not work with this test
public class TestReplicationHandler extends SolrTestCaseJ4 {
@@ -178,23 +173,11 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
}
static JettySolrRunner createAndStartJetty(SolrInstance instance) throws Exception {
- FileUtils.copyFile(
- new File(SolrTestCaseJ4.TEST_HOME(), "solr.xml"),
- new File(instance.getHomeDir(), "solr.xml"));
- Properties nodeProperties = new Properties();
- nodeProperties.setProperty("solr.data.dir", instance.getDataDir());
- JettyConfig jettyConfig = JettyConfig.builder().setContext("/solr").setPort(0).build();
- JettySolrRunner jetty = new JettySolrRunner(instance.getHomeDir(), nodeProperties, jettyConfig);
- jetty.start();
- return jetty;
+ return ReplicationTestHelper.createAndStartJetty(instance);
}
- static int index(SolrClient s, Object... fields) throws Exception {
- SolrInputDocument doc = new SolrInputDocument();
- for (int i = 0; i < fields.length; i += 2) {
- doc.addField((String) (fields[i]), fields[i + 1]);
- }
- return s.add(doc).getStatus();
+ static int index(SolrClient client, Object... fields) throws Exception {
+ return ReplicationTestHelper.index(client, fields);
}
NamedList<Object> query(String query, SolrClient s) throws SolrServerException, IOException {
@@ -261,7 +244,7 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
return res;
}
- private NamedList<Object> reloadCore(SolrClient s, String core) throws Exception {
+ private void reloadCore(JettySolrRunner jettySolrRunner, String core) throws Exception {
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("action", "reload");
@@ -269,15 +252,15 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
params.set("qt", "/admin/cores");
QueryRequest req = new QueryRequest(params);
- try (SolrClient adminClient = adminClient(s)) {
+ try (SolrClient adminClient = adminClient(jettySolrRunner)) {
NamedList<Object> res = adminClient.request(req);
assertNotNull("null response from server", res);
- return res;
}
}
- private SolrClient adminClient(SolrClient client) {
- String adminUrl = ((HttpSolrClient) client).getBaseURL().replace("/collection1", "");
+ private SolrClient adminClient(JettySolrRunner client) {
+ String adminUrl =
+ client.getBaseUrl().toString().replace("/" + DEFAULT_TEST_COLLECTION_NAME, "");
return getHttpSolrClient(adminUrl);
}
@@ -1019,10 +1002,10 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
assertEquals(totalDocs, leaderQueryResult.getNumFound());
// index fetch
- Date followerCoreStart = watchCoreStartAt(followerClient, null);
+ Date followerCoreStart = watchCoreStartAt(followerJetty, null);
pullFromTo(leaderJetty, followerJetty);
if (confCoreReload) {
- watchCoreStartAt(followerClient, followerCoreStart);
+ watchCoreStartAt(followerJetty, followerCoreStart);
}
// get docs from follower and check if number is equal to leader
@@ -1353,7 +1336,7 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
Object version = getIndexVersion(leaderClient).get("indexversion");
- reloadCore(leaderClient, "collection1");
+ reloadCore(leaderJetty, DEFAULT_TEST_COLLECTION_NAME);
assertEquals(version, getIndexVersion(leaderClient).get("indexversion"));
@@ -1433,7 +1416,7 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
rQuery(0, "*:*", followerClient); // sanity check w/retry
// record collection1's start time on follower
- final Date followerStartTime = watchCoreStartAt(followerClient, null);
+ final Date followerStartTime = watchCoreStartAt(followerJetty, null);
// add a doc with new field and commit on leader to trigger index fetch from follower.
index(leaderClient, "id", "2000", "name", "name = " + 2000, "newname", "n2000");
@@ -1441,7 +1424,7 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
rQuery(1, "newname:n2000", leaderClient); // sanity check
// wait for follower to reload core by watching updated startTime
- watchCoreStartAt(followerClient, followerStartTime);
+ watchCoreStartAt(followerJetty, followerStartTime);
NamedList<Object> leaderQueryRsp2 = rQuery(1, "id:2000", leaderClient);
SolrDocumentList leaderQueryResult2 = (SolrDocumentList) leaderQueryRsp2.get("response");
@@ -1780,22 +1763,22 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
}
/**
- * Polls the SolrCore stats using the specified client until the "startTime" time for collection
- * is after the specified "min". Will loop for at most "timeout" milliseconds before throwing an
- * assertion failure.
+ * Polls the SolrCore stats using the specified jettySolrRunner until the "startTime" time for
+ * collection is after the specified "min". Will loop for at most "timeout" milliseconds before
+ * throwing an assertion failure.
*
- * @param client The SolrClient to poll
+ * @param jettySolrRunner The JettySolrRunner to poll
* @param min the startTime value must exceed this value before the method will return, if null
* this method will return the first startTime value encountered.
* @return the startTime value of collection
*/
@SuppressWarnings("unchecked")
- private Date watchCoreStartAt(SolrClient client, final Date min)
+ private Date watchCoreStartAt(JettySolrRunner jettySolrRunner, final Date min)
throws InterruptedException, IOException, SolrServerException {
final long sleepInterval = 200;
long timeSlept = 0;
- try (SolrClient adminClient = adminClient(client)) {
+ try (SolrClient adminClient = adminClient(jettySolrRunner)) {
SolrParams p = params("action", "status", "core", "collection1");
while (timeSlept < TIMEOUT) {
QueryRequest req = new QueryRequest(p);
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java
index 8381e272910..2de368f74c5 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedQueryElevationComponentTest.java
@@ -166,7 +166,7 @@ public class DistributedQueryElevationComponentTest extends BaseDistributedSearc
assertEquals(true, document.getFieldValue("[elevated]"));
// Force javabin format
- final String clientUrl = ((HttpSolrClient) clients.get(0)).getBaseURL();
+ final String clientUrl = jettys.get(0).getBaseUrl() + "/collection1";
SolrClient client = getHttpSolrClient(clientUrl);
((HttpSolrClient) client).setParser(new BinaryResponseParser());
SolrQuery solrQuery =
diff --git a/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java b/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
index 8438b3a111a..f7db16a7c87 100644
--- a/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
+++ b/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
@@ -32,7 +32,7 @@ import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
@@ -46,12 +46,14 @@ import org.junit.Test;
@SuppressSSL // does not yet work with ssl yet - uses raw java.net.URL API rather than HttpClient
public class TestRemoteStreaming extends SolrJettyTestBase {
+ private static JettySolrRunner jettySolrRunner;
+
@BeforeClass
public static void beforeTest() throws Exception {
// this one has handleSelect=true which a test here needs
File solrHomeDirectory = createTempDir(LuceneTestCase.getTestClass().getSimpleName()).toFile();
setupJettyTestHome(solrHomeDirectory, "collection1");
- createAndStartJetty(solrHomeDirectory.getAbsolutePath());
+ jettySolrRunner = createAndStartJetty(solrHomeDirectory.getAbsolutePath());
}
@AfterClass
@@ -70,25 +72,30 @@ public class TestRemoteStreaming extends SolrJettyTestBase {
@Test
public void testMakeDeleteAllUrl() throws Exception {
- getUrlForString(makeDeleteAllUrl());
+ assertTrue(searchFindsIt());
+ attemptHttpGet(makeDeleteAllUrl());
assertFalse(searchFindsIt());
}
@Test
public void testStreamUrl() throws Exception {
- HttpSolrClient client = (HttpSolrClient) getSolrClient();
- String streamUrl = client.getBaseURL() + "/select?q=*:*&fl=id&wt=csv";
+ String streamUrl =
+ jettySolrRunner.getBaseUrl().toString()
+ + "/"
+ + DEFAULT_TEST_COLLECTION_NAME
+ + "/select?q=*:*&fl=id&wt=csv";
String getUrl =
- client.getBaseURL()
+ jettySolrRunner.getBaseUrl().toString()
+ + "/"
+ + DEFAULT_TEST_COLLECTION_NAME
+ "/debug/dump?wt=xml&stream.url="
+ URLEncoder.encode(streamUrl, "UTF-8");
- String content = getUrlForString(getUrl);
+ String content = attemptHttpGet(getUrl);
assertTrue(content.contains("1234"));
- // System.out.println(content);
}
- private String getUrlForString(String getUrl) throws IOException {
+ private String attemptHttpGet(String getUrl) throws IOException {
Object obj = new URL(getUrl).getContent();
if (obj instanceof InputStream) {
InputStream inputStream = (InputStream) obj;
@@ -113,11 +120,12 @@ public class TestRemoteStreaming extends SolrJettyTestBase {
assertSame(ErrorCode.BAD_REQUEST, ErrorCode.getErrorCode(se.code()));
}
- /** Compose an url that if you get it, it will delete all the data. */
+ /** Compose an HTTP GET url that will delete all the data. */
private String makeDeleteAllUrl() throws UnsupportedEncodingException {
- HttpSolrClient client = (HttpSolrClient) getSolrClient();
String deleteQuery = "<delete><query>*:*</query></delete>";
- return client.getBaseURL()
+ return jettySolrRunner.getBaseUrl().toString()
+ + "/"
+ + DEFAULT_TEST_COLLECTION_NAME
+ "/update?commit=true&stream.body="
+ URLEncoder.encode(deleteQuery, "UTF-8");
}
diff --git a/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchema.java b/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchema.java
index 5b6fe56d36c..3d9acdc61b1 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchema.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchema.java
@@ -55,8 +55,8 @@ public class TestCloudManagedSchema extends AbstractFullDistribZkTestBase {
int which = r.nextInt(clients.size());
HttpSolrClient client = (HttpSolrClient) clients.get(which);
String previousBaseURL = client.getBaseURL();
- // Strip /collection1 step from baseURL - requests fail otherwise
- client.setBaseURL(previousBaseURL.substring(0, previousBaseURL.lastIndexOf("/")));
+ // Set client to Solr root url - requests fail otherwise
+ client.setBaseURL(jettys.get(which).getBaseUrl().toString());
NamedList<?> namedListResponse = client.request(request);
client.setBaseURL(previousBaseURL); // Restore baseURL
NamedList<?> status = (NamedList<?>) namedListResponse.get("status");
diff --git a/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java b/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java
index 77e45711e08..b845cb179bd 100644
--- a/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java
+++ b/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java
@@ -59,7 +59,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
f.getCanonicalPath(),
CommonParams.STREAM_CONTENTTYPE,
"text/csv");
- HttpResponse response = getClient().execute(m);
+ HttpResponse response = getHttpClient().execute(m);
assertEquals(200, response.getStatusLine().getStatusCode());
checkVetoHeaders(response, true);
Files.delete(f.toPath());
@@ -69,7 +69,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
public void testCacheVetoException() throws Exception {
HttpRequestBase m = getSelectMethod("GET", "q", "xyz_ignore_exception:solr", "qt", "standard");
// We force an exception from Solr. This should emit "no-cache" HTTP headers
- HttpResponse response = getClient().execute(m);
+ HttpResponse response = getHttpClient().execute(m);
assertNotEquals(200, response.getStatusLine().getStatusCode());
checkVetoHeaders(response, false);
}
@@ -104,7 +104,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
// We do a first request to get the last modified
// This must result in a 200 OK response
HttpRequestBase get = getSelectMethod(method);
- HttpResponse response = getClient().execute(get);
+ HttpResponse response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
@@ -121,7 +121,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
get = getSelectMethod(method);
get.addHeader("If-Modified-Since", DateUtils.formatDate(new Date()));
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"Expected 304 NotModified response with current date",
@@ -131,7 +131,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
get = getSelectMethod(method);
get.addHeader(
"If-Modified-Since", DateUtils.formatDate(new Date(lastModified.getTime() - 10000)));
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"Expected 200 OK response with If-Modified-Since in the past",
@@ -143,7 +143,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
get.addHeader(
"If-Unmodified-Since", DateUtils.formatDate(new Date(lastModified.getTime() - 10000)));
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"Expected 412 Precondition failed with If-Unmodified-Since in the past",
@@ -152,7 +152,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
get = getSelectMethod(method);
get.addHeader("If-Unmodified-Since", DateUtils.formatDate(new Date()));
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"Expected 200 OK response with If-Unmodified-Since and current date",
@@ -164,7 +164,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
@Override
protected void doETag(String method) throws Exception {
HttpRequestBase get = getSelectMethod(method);
- HttpResponse response = getClient().execute(get);
+ HttpResponse response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
@@ -183,7 +183,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
// we set a non-matching ETag
get = getSelectMethod(method);
get.addHeader("If-None-Match", "\"xyz123456\"");
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"If-None-Match: Got no response code 200 in response to non matching ETag",
@@ -194,7 +194,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
get = getSelectMethod(method);
get.addHeader("If-None-Match", "\"xyz1223\"");
get.addHeader("If-None-Match", "\"1231323423\", \"1211211\", " + etag);
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"If-None-Match: Got no response 304 to matching ETag",
@@ -204,7 +204,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
// we now set the special star ETag
get = getSelectMethod(method);
get.addHeader("If-None-Match", "*");
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"If-None-Match: Got no response 304 for star ETag",
@@ -215,7 +215,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
// we set a non-matching ETag
get = getSelectMethod(method);
get.addHeader("If-Match", "\"xyz123456\"");
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"If-Match: Got no response code 412 in response to non matching ETag",
@@ -226,7 +226,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
get = getSelectMethod(method);
get.addHeader("If-Match", "\"xyz1223\"");
get.addHeader("If-Match", "\"1231323423\", \"1211211\", " + etag);
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"If-Match: Got no response 200 to matching ETag",
@@ -236,7 +236,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
// now we set the special star ETag
get = getSelectMethod(method);
get.addHeader("If-Match", "*");
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"If-Match: Got no response 200 to star ETag",
@@ -248,7 +248,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
protected void doCacheControl(String method) throws Exception {
if ("POST".equals(method)) {
HttpRequestBase m = getSelectMethod(method);
- HttpResponse response = getClient().execute(m);
+ HttpResponse response = getHttpClient().execute(m);
checkResponseBody(method, response);
Header head = response.getFirstHeader("Cache-Control");
@@ -258,7 +258,7 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
assertNull("We got an Expires header in response to POST", head);
} else {
HttpRequestBase m = getSelectMethod(method);
- HttpResponse response = getClient().execute(m);
+ HttpResponse response = getHttpClient().execute(m);
checkResponseBody(method, response);
Header head = response.getFirstHeader("Cache-Control");
diff --git a/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTestBase.java b/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTestBase.java
index 76f0484ba59..b372b4b3c8f 100644
--- a/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTestBase.java
+++ b/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTestBase.java
@@ -20,7 +20,6 @@ import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.client.methods.HttpPost;
@@ -29,13 +28,11 @@ import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.solr.SolrJettyTestBase;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.junit.Test;
public abstract class CacheHeaderTestBase extends SolrJettyTestBase {
protected HttpRequestBase getSelectMethod(String method, String... params) {
- HttpSolrClient client = (HttpSolrClient) getSolrClient();
HttpRequestBase m = null;
ArrayList<BasicNameValuePair> qparams = new ArrayList<>();
@@ -49,7 +46,9 @@ public abstract class CacheHeaderTestBase extends SolrJettyTestBase {
URI uri =
URI.create(
- client.getBaseURL()
+ jetty.getBaseUrl().toString()
+ + "/"
+ + DEFAULT_TEST_COLLECTION_NAME
+ "/select?"
+ URLEncodedUtils.format(qparams, StandardCharsets.UTF_8));
@@ -64,8 +63,7 @@ public abstract class CacheHeaderTestBase extends SolrJettyTestBase {
return m;
}
- protected HttpRequestBase getUpdateMethod(String method, String... params) {
- HttpSolrClient client = (HttpSolrClient) getSolrClient();
+ HttpRequestBase getUpdateMethod(String method, String... params) {
HttpRequestBase m = null;
ArrayList<BasicNameValuePair> qparams = new ArrayList<>();
@@ -75,7 +73,9 @@ public abstract class CacheHeaderTestBase extends SolrJettyTestBase {
URI uri =
URI.create(
- client.getBaseURL()
+ jetty.getBaseUrl()
+ + "/"
+ + DEFAULT_TEST_COLLECTION_NAME
+ "/update?"
+ URLEncodedUtils.format(qparams, StandardCharsets.UTF_8));
@@ -90,11 +90,6 @@ public abstract class CacheHeaderTestBase extends SolrJettyTestBase {
return m;
}
- protected HttpClient getClient() {
- HttpSolrClient client = (HttpSolrClient) getSolrClient();
- return client.getHttpClient();
- }
-
protected void checkResponseBody(String method, HttpResponse resp) throws Exception {
String responseBody = "";
diff --git a/solr/core/src/test/org/apache/solr/servlet/NoCacheHeaderTest.java b/solr/core/src/test/org/apache/solr/servlet/NoCacheHeaderTest.java
index 78bc6f05bca..02e5f2422be 100644
--- a/solr/core/src/test/org/apache/solr/servlet/NoCacheHeaderTest.java
+++ b/solr/core/src/test/org/apache/solr/servlet/NoCacheHeaderTest.java
@@ -63,7 +63,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
// We do a first request to get the last modified
// This must result in a 200 OK response
HttpRequestBase get = getSelectMethod(method);
- HttpResponse response = getClient().execute(get);
+ HttpResponse response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
@@ -78,7 +78,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
get = getSelectMethod(method);
get.addHeader("If-Modified-Since", DateUtils.formatDate(new Date()));
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"Expected 200 with If-Modified-Since header. We should never get a 304 here",
@@ -88,7 +88,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
get = getSelectMethod(method);
get.addHeader(
"If-Modified-Since", DateUtils.formatDate(new Date(System.currentTimeMillis() - 10000)));
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"Expected 200 with If-Modified-Since header. We should never get a 304 here",
@@ -100,7 +100,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
get.addHeader(
"If-Unmodified-Since", DateUtils.formatDate(new Date(System.currentTimeMillis() - 10000)));
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"Expected 200 with If-Unmodified-Since header. We should never get a 304 here",
@@ -109,7 +109,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
get = getSelectMethod(method);
get.addHeader("If-Unmodified-Since", DateUtils.formatDate(new Date()));
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"Expected 200 with If-Unmodified-Since header. We should never get a 304 here",
@@ -121,7 +121,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
@Override
protected void doETag(String method) throws Exception {
HttpRequestBase get = getSelectMethod(method);
- HttpResponse response = getClient().execute(get);
+ HttpResponse response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
@@ -136,7 +136,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
// we set a non-matching ETag
get = getSelectMethod(method);
get.addHeader("If-None-Match", "\"xyz123456\"");
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"If-None-Match: Got no response code 200 in response to non matching ETag",
@@ -146,7 +146,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
// we now set the special star ETag
get = getSelectMethod(method);
get.addHeader("If-None-Match", "*");
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"If-None-Match: Got no response 200 for star ETag",
@@ -157,7 +157,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
// we set a non-matching ETag
get = getSelectMethod(method);
get.addHeader("If-Match", "\"xyz123456\"");
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"If-Match: Got no response code 200 in response to non matching ETag",
@@ -167,7 +167,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
// now we set the special star ETag
get = getSelectMethod(method);
get.addHeader("If-Match", "*");
- response = getClient().execute(get);
+ response = getHttpClient().execute(get);
checkResponseBody(method, response);
assertEquals(
"If-Match: Got no response 200 to star ETag",
@@ -178,7 +178,7 @@ public class NoCacheHeaderTest extends CacheHeaderTestBase {
@Override
protected void doCacheControl(String method) throws Exception {
HttpRequestBase m = getSelectMethod(method);
- HttpResponse response = getClient().execute(m);
+ HttpResponse response = getHttpClient().execute(m);
checkResponseBody(method, response);
Header head = response.getFirstHeader("Cache-Control");
diff --git a/solr/core/src/test/org/apache/solr/servlet/ResponseHeaderTest.java b/solr/core/src/test/org/apache/solr/servlet/ResponseHeaderTest.java
index daa587369ee..62fd7fa6c22 100644
--- a/solr/core/src/test/org/apache/solr/servlet/ResponseHeaderTest.java
+++ b/solr/core/src/test/org/apache/solr/servlet/ResponseHeaderTest.java
@@ -22,11 +22,9 @@ import java.net.URI;
import org.apache.commons.io.FileUtils;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.solr.SolrJettyTestBase;
import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.handler.component.ResponseBuilder;
import org.apache.solr.handler.component.SearchComponent;
import org.junit.AfterClass;
@@ -57,11 +55,9 @@ public class ResponseHeaderTest extends SolrJettyTestBase {
@Test
public void testHttpResponse() throws IOException {
- HttpSolrClient client = (HttpSolrClient) getSolrClient();
- HttpClient httpClient = client.getHttpClient();
- URI uri = URI.create(client.getBaseURL() + "/withHeaders?q=*:*");
+ URI uri = URI.create(jetty.getBaseUrl() + "/collection1/withHeaders?q=*:*");
HttpGet httpGet = new HttpGet(uri);
- HttpResponse response = httpClient.execute(httpGet);
+ HttpResponse response = getHttpClient().execute(httpGet);
Header[] headers = response.getAllHeaders();
boolean containsWarningHeader = false;
for (Header header : headers) {
diff --git a/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java b/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java
index 64078919cf0..ec1f468e336 100644
--- a/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java
+++ b/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java
@@ -1489,6 +1489,14 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
return slice.getLeader().getCoreUrl();
}
+ protected String getBaseUrl(HttpSolrClient client) {
+ // take a complete Solr url that ends with /collection1 and truncates it to the root url
+ // that is used for admin api calls.
+ return client
+ .getBaseURL()
+ .substring(0, client.getBaseURL().length() - DEFAULT_COLLECTION.length() - 1);
+ }
+
UpdateRequest regularUpdateRequest(Object... fields) {
UpdateRequest ur = new UpdateRequest();
SolrInputDocument doc = sdoc(fields);
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java
index 16e18076799..daf9c2a677d 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java
@@ -75,15 +75,16 @@ public class SolrSchemalessExampleTest extends SolrExampleTestsBase {
@Test
public void testArbitraryJsonIndexing() throws Exception {
- HttpSolrClient client = (HttpSolrClient) getSolrClient();
+ SolrClient client = getSolrClient();
client.deleteByQuery("*:*");
client.commit();
assertNumFound("*:*", 0); // make sure it got in
// two docs, one with uniqueKey, another without it
String json = "{\"id\":\"abc1\", \"name\": \"name1\"} {\"name\" : \"name2\"}";
- HttpClient httpClient = client.getHttpClient();
- HttpPost post = new HttpPost(client.getBaseURL() + "/update/json/docs");
+ HttpClient httpClient = getHttpClient();
+ HttpPost post =
+ new HttpPost(jetty.getBaseUrl() + "/" + DEFAULT_TEST_COLLECTION_NAME + "/update/json/docs");
post.setHeader("Content-Type", "application/json");
post.setEntity(
new InputStreamEntity(new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)), -1));
@@ -97,7 +98,7 @@ public class SolrSchemalessExampleTest extends SolrExampleTestsBase {
@Test
public void testFieldMutating() throws Exception {
- HttpSolrClient client = (HttpSolrClient) getSolrClient();
+ SolrClient client = getSolrClient();
client.deleteByQuery("*:*");
client.commit();
assertNumFound("*:*", 0); // make sure it got in
@@ -110,8 +111,9 @@ public class SolrSchemalessExampleTest extends SolrExampleTestsBase {
+ "{\"p%q\" : \"name\"}"
+ "{\"p.q\" : \"name\"}"
+ "{\"a&b\" : \"name\"}";
- HttpClient httpClient = client.getHttpClient();
- HttpPost post = new HttpPost(client.getBaseURL() + "/update/json/docs");
+ HttpClient httpClient = getHttpClient();
+ HttpPost post =
+ new HttpPost(jetty.getBaseUrl() + "/" + DEFAULT_TEST_COLLECTION_NAME + "/update/json/docs");
post.setHeader("Content-Type", "application/json");
post.setEntity(
new InputStreamEntity(new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)), -1));
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/TestSolrJErrorHandling.java b/solr/solrj/src/test/org/apache/solr/client/solrj/TestSolrJErrorHandling.java
index 52249b35ac3..ab7840a1a35 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/TestSolrJErrorHandling.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/TestSolrJErrorHandling.java
@@ -270,9 +270,7 @@ public class TestSolrJErrorHandling extends SolrJettyTestBase {
// sometimes succeeds with this size, but larger can cause OOM from command line
String bodyString = getJsonDocs(200000);
- HttpSolrClient client = (HttpSolrClient) getSolrClient();
-
- String urlString = client.getBaseURL() + "/update";
+ String urlString = jetty.getBaseUrl() + "/" + DEFAULT_TEST_COLLECTION_NAME + "/update";
HttpURLConnection conn = null;
URL url = new URL(urlString);
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleJettyTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleJettyTest.java
index 57a026546f6..09a37dd01f1 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleJettyTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleJettyTest.java
@@ -34,6 +34,7 @@ import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.InputStreamEntity;
import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
+import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrExampleTests;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
@@ -72,15 +73,17 @@ public class SolrExampleJettyTest extends SolrExampleTests {
@Test
public void testArbitraryJsonIndexing() throws Exception {
- HttpSolrClient client = (HttpSolrClient) getSolrClient();
+ SolrClient client = getSolrClient();
client.deleteByQuery("*:*");
client.commit();
assertNumFound("*:*", 0); // make sure it got in
// two docs, one with uniqueKey, another without it
String json = "{\"id\":\"abc1\", \"name\": \"name1\"} {\"name\" : \"name2\"}";
- HttpClient httpClient = client.getHttpClient();
- HttpPost post = new HttpPost(getUri(client));
+ HttpClient httpClient = getHttpClient();
+ HttpPost post =
+ new HttpPost(
+ getRandomizedUpdateUri(jetty.getBaseUrl() + "/" + DEFAULT_TEST_COLLECTION_NAME));
post.setHeader("Content-Type", "application/json");
post.setEntity(
new InputStreamEntity(new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)), -1));
@@ -104,11 +107,10 @@ public class SolrExampleJettyTest extends SolrExampleTests {
assertEquals("name2", m.get("name"));
}
- private String getUri(HttpSolrClient client) {
- String baseURL = client.getBaseURL();
+ private String getRandomizedUpdateUri(String baseUrl) {
return random().nextBoolean()
- ? baseURL.replace("/collection1", "/____v2/cores/collection1/update")
- : baseURL + "/update/json/docs";
+ ? baseUrl.replace("/collection1", "/____v2/cores/collection1/update")
+ : baseUrl + "/update/json/docs";
}
@Test
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java b/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
index 42d3f6e7960..b3fb4237ada 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
@@ -28,10 +28,12 @@ import java.nio.file.Path;
import java.util.Properties;
import java.util.SortedMap;
import org.apache.commons.io.file.PathUtils;
+import org.apache.http.client.HttpClient;
import org.apache.lucene.tests.util.LuceneTestCase;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
+import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.util.DirectoryUtil;
import org.apache.solr.util.ExternalPaths;
import org.eclipse.jetty.servlet.ServletHolder;
@@ -164,6 +166,11 @@ public abstract class SolrJettyTestBase extends SolrTestCaseJ4 {
}
}
+ public HttpClient getHttpClient() {
+ HttpSolrClient client = (HttpSolrClient) getSolrClient();
+ return client.getHttpClient();
+ }
+
// Sets up the necessary config files for Jetty. At least some tests require that the solrconfig
// from the test file directory are used, but some also require that the solr.xml file be
// explicitly there as of SOLR-4817
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractBasicDistributedZk2TestBase.java b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractBasicDistributedZk2TestBase.java
index 24488e60685..2afb6ef2442 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractBasicDistributedZk2TestBase.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractBasicDistributedZk2TestBase.java
@@ -24,7 +24,7 @@ import org.apache.lucene.tests.util.LuceneTestCase;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.request.UpdateRequest;
@@ -176,8 +176,8 @@ public abstract class AbstractBasicDistributedZk2TestBase extends AbstractFullDi
ZkStateReader.from(cloudClient).getLeaderRetry(ONE_NODE_COLLECTION, SHARD1, 30000);
int docs = 2;
- for (SolrClient client : clients) {
- final String clientUrl = getBaseUrl((HttpSolrClient) client);
+ for (JettySolrRunner jetty : jettys) {
+ final String clientUrl = getBaseUrl(jetty);
addAndQueryDocs(clientUrl, docs);
docs += 2;
}
@@ -188,33 +188,34 @@ public abstract class AbstractBasicDistributedZk2TestBase extends AbstractFullDi
SolrQuery query = new SolrQuery("*:*");
- try (HttpSolrClient qclient = getHttpSolrClient(baseUrl + "/onenodecollection" + "core")) {
+ String collectionUrl = baseUrl + "/onenodecollection" + "core";
+ try (SolrClient client = getHttpSolrClient(collectionUrl)) {
// it might take a moment for the proxy node to see us in their cloud state
- waitForNon403or404or503(qclient);
+ waitForNon403or404or503(client, collectionUrl);
// add a doc
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", docs);
- qclient.add(doc);
- qclient.commit();
+ client.add(doc);
+ client.commit();
- QueryResponse results = qclient.query(query);
+ QueryResponse results = client.query(query);
assertEquals(docs - 1, results.getResults().getNumFound());
}
- try (SolrClient qclient = getHttpSolrClient(baseUrl + "/onenodecollection")) {
- QueryResponse results = qclient.query(query);
+ try (SolrClient client = getHttpSolrClient(baseUrl + "/onenodecollection")) {
+ QueryResponse results = client.query(query);
assertEquals(docs - 1, results.getResults().getNumFound());
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", docs + 1);
- qclient.add(doc);
- qclient.commit();
+ client.add(doc);
+ client.commit();
query = new SolrQuery("*:*");
query.set("rows", 0);
- results = qclient.query(query);
+ results = client.query(query);
assertEquals(docs, results.getResults().getNumFound());
}
}
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
index 4a3c47474eb..62ec5f66748 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
@@ -2082,7 +2082,7 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
CollectionAdminResponse res = new CollectionAdminResponse();
if (client == null) {
- final String baseUrl = getBaseUrl((HttpSolrClient) clients.get(clientIndex));
+ final String baseUrl = getBaseUrl(jettys.get(clientIndex));
try (SolrClient adminClient = createNewSolrClient("", baseUrl)) {
res.setResponse(adminClient.request(request));
}
@@ -2207,10 +2207,8 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
}
}
- protected String getBaseUrl(HttpSolrClient client) {
- return client
- .getBaseURL()
- .substring(0, client.getBaseURL().length() - DEFAULT_COLLECTION.length() - 1);
+ protected String getBaseUrl(JettySolrRunner jetty) {
+ return jetty.getBaseUrl().toString();
}
public static SolrInputDocument getDoc(Object... fields) throws Exception {
@@ -2341,7 +2339,8 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
throw new RuntimeException("Could not find a live node for collection:" + collection);
}
- public static void waitForNon403or404or503(HttpSolrClient collectionClient) throws Exception {
+ public static void waitForNon403or404or503(SolrClient collectionClient, String baseUrl)
+ throws Exception {
SolrException exp = null;
final TimeOut timeout = new TimeOut(30, TimeUnit.SECONDS, TimeSource.NANO_TIME);
@@ -2363,11 +2362,7 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
Thread.sleep(50);
}
- fail(
- "Could not find the new collection - "
- + exp.code()
- + " : "
- + collectionClient.getBaseURL());
+ fail("Could not find the new collection - " + exp.code() + " : " + baseUrl);
}
protected void createCollection(
@@ -2841,8 +2836,10 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
}
protected void setupRestTestHarnesses() {
- for (final SolrClient client : clients) {
- RestTestHarness harness = new RestTestHarness(() -> ((HttpSolrClient) client).getBaseURL());
+ for (final JettySolrRunner jetty : jettys) {
+ RestTestHarness harness =
+ new RestTestHarness(
+ () -> jetty.getBaseUrl().toString() + "/" + DEFAULT_TEST_COLLECTION_NAME);
restTestHarnesses.add(harness);
}
}
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractSyncSliceTestBase.java b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractSyncSliceTestBase.java
index 6efa386ff38..6b177d3dc5e 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractSyncSliceTestBase.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractSyncSliceTestBase.java
@@ -29,7 +29,6 @@ import java.util.stream.Collectors;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.common.SolrInputDocument;
@@ -102,9 +101,7 @@ public abstract class AbstractSyncSliceTestBase extends AbstractFullDistribZkTes
QueryRequest request = new QueryRequest(params);
request.setPath("/admin/collections");
- String baseUrl =
- ((HttpSolrClient) shardToJetty.get("shard1").get(2).client.solrClient).getBaseURL();
- baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
+ String baseUrl = shardToJetty.get(SHARD1).get(2).jetty.getBaseUrl().toString();
// we only set the connect timeout, not so timeout
try (SolrClient baseClient = getHttpSolrClient(baseUrl, 30000)) {