This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch branch_10x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_10x by this push:
     new 9eb1f7ea013 SOLR-18332: More qt-removal from tests, rd 2 (#4713)
9eb1f7ea013 is described below

commit 9eb1f7ea013bcd05466d30cbd9b2de195d019a8c
Author: Jason Gerlowski <[email protected]>
AuthorDate: Sat Aug 8 14:59:07 2026 -0400

    SOLR-18332: More qt-removal from tests, rd 2 (#4713)
    
    The 'qt' parameter and several related methods in SolrJ are deprecated.
    This deprecation may not stick, but it's still worth minimizing use of this
    feature as much as possible.
    
    Many tests rely on it unnecessarily; this PR is one in a number of batches
    slowly removing these usages. This one in particular focuses on
    solr-core tests, especially those descended from
    BaseDistributedSearchTestCase and that rely on certain query() test
    helpers available to this class.
    
    (cherry picked from commit d5ee8873eb1342ccac9a59dc34eaab9afe88d4a8)
---
 .../org/apache/solr/TestDistributedSearch.java     |  44 +--
 .../apache/solr/cloud/BasicDistributedZkTest.java  |   2 +-
 .../apache/solr/cloud/DistribCursorPagingTest.java |   4 +-
 .../solr/cloud/DistributedVersionInfoTest.java     |   3 +-
 .../org/apache/solr/cloud/HttpPartitionTest.java   |   2 +-
 .../solr/cloud/NestedShardedAtomicUpdateTest.java  |  13 +-
 .../org/apache/solr/cloud/ShardRoutingTest.java    |   3 +-
 .../solr/cloud/TestDistribDocBasedVersion.java     |   5 +-
 .../apache/solr/cloud/TestRandomFlRTGCloud.java    |   4 +-
 .../solr/handler/admin/DaemonStreamApiTest.java    |   6 +-
 .../component/CombinedQueryComponentTest.java      | 109 ++++---
 .../component/CombinedQuerySolrCloudTest.java      |  24 +-
 .../DistributedCombinedQueryComponentTest.java     | 312 ++++++++++-----------
 .../component/DistributedMLTComponentTest.java     | 280 +++++++++---------
 .../DistributedQueryElevationComponentTest.java    | 135 +++++----
 .../DistributedSpellCheckComponentTest.java        |  51 ++--
 .../component/DistributedSuggestComponentTest.java |  25 +-
 .../component/DistributedTermsComponentTest.java   | 147 ++++------
 .../TermVectorComponentDistributedTest.java        | 280 +++++++++---------
 .../solr/handler/component/UpdateLogCloudTest.java |   5 +-
 .../json/TestJsonRequestWithEdismaxDefType.java    |   2 +-
 .../test/org/apache/solr/update/PeerSyncTest.java  |   9 +-
 .../solr/update/PeerSyncWithBufferUpdatesTest.java |   9 +-
 .../PeerSyncWithIndexFingerprintCachingTest.java   |  12 +-
 ...ncWithLeaderAndIndexFingerprintCachingTest.java |   9 +-
 .../apache/solr/update/PeerSyncWithLeaderTest.java |   9 +-
 26 files changed, 733 insertions(+), 771 deletions(-)

diff --git a/solr/core/src/test/org/apache/solr/TestDistributedSearch.java 
b/solr/core/src/test/org/apache/solr/TestDistributedSearch.java
index 9c9ceefa616..bcadbec3583 100644
--- a/solr/core/src/test/org/apache/solr/TestDistributedSearch.java
+++ b/solr/core/src/test/org/apache/solr/TestDistributedSearch.java
@@ -35,6 +35,7 @@ import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
 import org.apache.solr.client.solrj.RemoteSolrException;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.request.SolrQuery;
 import org.apache.solr.client.solrj.response.FacetField;
 import org.apache.solr.client.solrj.response.FieldStatsInfo;
@@ -615,18 +616,13 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
 
     // basic spellcheck testing
     query(
-        "q",
-        "toyata",
-        "fl",
-        "id,lowerfilt",
-        "spellcheck",
-        true,
-        "spellcheck.q",
-        "toyata",
-        "qt",
         "/spellCheckCompRH_Direct",
-        "shards.qt",
-        "/spellCheckCompRH_Direct");
+        params(
+            "q", "toyata",
+            "fl", "id,lowerfilt",
+            "spellcheck", "true",
+            "spellcheck.q", "toyata",
+            "shards.qt", "/spellCheckCompRH_Direct"));
 
     stress = 0; // turn off stress... we want to tex max combos in min time
     for (int i = 0; i < 25 * RANDOM_MULTIPLIER; i++) {
@@ -1592,6 +1588,7 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
     Thread.sleep(100);
 
     queryPartialResults(
+        "/select",
         upShards,
         upClients,
         "q",
@@ -1610,6 +1607,7 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
         "true");
 
     queryPartialResults(
+        "/select",
         upShards,
         upClients,
         "q",
@@ -1627,6 +1625,7 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
 
     // test group query
     queryPartialResults(
+        "/select",
         upShards,
         upClients,
         "q",
@@ -1651,6 +1650,7 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
         "true");
 
     queryPartialResults(
+        "/select",
         upShards,
         upClients,
         "q",
@@ -1665,6 +1665,7 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
         "true");
 
     queryPartialResults(
+        "/spellCheckCompRH_Direct",
         upShards,
         upClients,
         "q",
@@ -1673,8 +1674,6 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
         "true",
         "spellcheck.q",
         "toyata",
-        "qt",
-        "/spellCheckCompRH_Direct",
         "shards.qt",
         "/spellCheckCompRH_Direct",
         ShardParams.SHARDS_INFO,
@@ -1907,7 +1906,11 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
   }
 
   protected void queryPartialResults(
-      final List<String> upShards, final List<SolrClient> upClients, Object... 
q) throws Exception {
+      String requestHandler,
+      final List<String> upShards,
+      final List<SolrClient> upClients,
+      Object... q)
+      throws Exception {
 
     final ModifiableSolrParams params = new ModifiableSolrParams();
 
@@ -1916,7 +1919,8 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
     }
     // TODO: look into why passing true causes fails
     params.set("distrib", "false");
-    final QueryResponse controlRsp = controlClient.query(params);
+    final QueryResponse controlRsp =
+        new QueryRequest(requestHandler, params).process(controlClient);
     // if time.allowed is specified then even a control response can return a 
partialResults header
     if (params.get(CommonParams.TIME_ALLOWED) == null) {
       validateControlData(controlRsp);
@@ -1928,7 +1932,7 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
     if (upClients.size() == 0) {
       return;
     }
-    QueryResponse rsp = queryRandomUpServer(params, upClients);
+    QueryResponse rsp = queryRandomUpServer(requestHandler, params, upClients);
 
     comparePartialResponses(rsp, upShards);
 
@@ -1948,7 +1952,9 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
                   int which = r.nextInt(upClients.size());
                   SolrClient client = upClients.get(which);
                   try {
-                    QueryResponse rsp = client.query(new 
ModifiableSolrParams(params));
+                    QueryResponse rsp =
+                        new QueryRequest(requestHandler, new 
ModifiableSolrParams(params))
+                            .process(client);
                     if (verifyStress) {
                       comparePartialResponses(rsp, upShards);
                     }
@@ -1971,7 +1977,7 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
   }
 
   protected QueryResponse queryRandomUpServer(
-      ModifiableSolrParams params, List<SolrClient> upClients)
+      String requestHandler, ModifiableSolrParams params, List<SolrClient> 
upClients)
       throws SolrServerException, IOException {
     // query a random "up" server
     SolrClient client;
@@ -1982,7 +1988,7 @@ public class TestDistributedSearch extends 
BaseDistributedSearchTestCase {
       client = upClients.get(which);
     }
 
-    return client.query(params);
+    return new QueryRequest(requestHandler, params).process(client);
   }
 
   protected void comparePartialResponses(QueryResponse rsp, List<String> 
upShards) {
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java 
b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
index 1608b90f57d..88be1ee8861 100644
--- a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
@@ -1250,7 +1250,7 @@ public class BasicDistributedZkTest extends 
AbstractFullDistribZkTestBase {
       expected.add(val);
     }
 
-    QueryRequest qr = new QueryRequest(params("qt", "/get", "id", "1000"));
+    QueryRequest qr = new QueryRequest("/get", params("id", "1000"));
     for (SolrClient client : clients) {
       val += 10;
       NamedList<?> rsp = client.request(qr);
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java 
b/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java
index b70615e499a..b6452a5e61e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DistribCursorPagingTest.java
@@ -36,6 +36,7 @@ import org.apache.solr.CursorPagingTest;
 import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.request.LukeRequest;
+import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrDocumentList;
@@ -883,11 +884,12 @@ public class DistribCursorPagingTest extends 
AbstractFullDistribZkTestBase {
   public void assertFullWalkNoDups(SolrParams params, Consumer<SolrDocument> 
consumer)
       throws Exception {
 
+    final String requestHandler = params.get(CommonParams.QT, "/select");
     String cursorMark = CURSOR_MARK_START;
     int docsOnThisPage = Integer.MAX_VALUE;
     while (0 < docsOnThisPage) {
       final SolrParams p = p(params, CURSOR_MARK_PARAM, cursorMark);
-      QueryResponse rsp = cloudClient.query(p);
+      QueryResponse rsp = new QueryRequest(requestHandler, 
p).process(cloudClient);
       String nextCursorMark = assertHashNextCursorMark(rsp);
       SolrDocumentList docs = extractDocList(rsp);
       docsOnThisPage = docs.size();
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java 
b/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java
index 6df1bea6cfc..b6b1f977240 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java
@@ -359,8 +359,7 @@ public class DistributedVersionInfoTest extends 
SolrCloudTestCase {
    */
   protected Long assertDocExists(SolrClient solr, String docId, Long expVers) 
throws Exception {
     QueryRequest qr =
-        new QueryRequest(
-            params("qt", "/get", "id", docId, "distrib", "false", "fl", 
"id,_version_"));
+        new QueryRequest("/get", params("id", docId, "distrib", "false", "fl", 
"id,_version_"));
     NamedList<?> rsp = solr.request(qr);
     SolrDocument doc = (SolrDocument) rsp.get("doc");
     String match = JSONTestUtil.matchObj("/id", doc, docId);
diff --git a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java 
b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
index 48396c63d31..ee536f12ae1 100644
--- a/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java
@@ -553,7 +553,7 @@ public class HttpPartitionTest extends 
AbstractFullDistribZkTestBase {
 
   private NamedList<Object> realTimeGetDocId(SolrClient solr, String docId)
       throws SolrServerException, IOException {
-    QueryRequest qr = new QueryRequest(params("qt", "/get", "id", docId, 
"distrib", "false"));
+    QueryRequest qr = new QueryRequest("/get", params("id", docId, "distrib", 
"false"));
     return solr.request(qr);
   }
 
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/NestedShardedAtomicUpdateTest.java 
b/solr/core/src/test/org/apache/solr/cloud/NestedShardedAtomicUpdateTest.java
index 8aaeda4779a..455b202f1d3 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/NestedShardedAtomicUpdateTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/NestedShardedAtomicUpdateTest.java
@@ -27,6 +27,7 @@ import org.apache.solr.client.solrj.SolrClient;
 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.QueryRequest;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.SolrDocument;
@@ -130,7 +131,8 @@ public class NestedShardedAtomicUpdateTest extends 
SolrCloudTestCase {
 
       // assert RTG request respects _route_ param
       QueryResponse routeRsp =
-          getRandomSolrClient().query(params("qt", "/get", "id", "2", 
"_route_", "1"));
+          new QueryRequest("/get", params("id", "2", "_route_", "1"))
+              .process(getRandomSolrClient());
       SolrDocument results = (SolrDocument) routeRsp.getResponse().get("doc");
       assertNotNull(
           "RTG should find doc because _route_ was set to the root documents' 
ID", results);
@@ -142,7 +144,8 @@ public class NestedShardedAtomicUpdateTest extends 
SolrCloudTestCase {
 
       // assert all docs are indexed inside the same block
       QueryResponse rsp =
-          getRandomSolrClient().query(params("qt", "/get", "id", "1", "fl", 
"*, [child]"));
+          new QueryRequest("/get", params("id", "1", "fl", "*, [child]"))
+              .process(getRandomSolrClient());
       SolrDocument val = (SolrDocument) rsp.getResponse().get("doc");
       assertEquals("1", val.getFieldValue("id"));
       @SuppressWarnings({"unchecked"})
@@ -234,7 +237,8 @@ public class NestedShardedAtomicUpdateTest extends 
SolrCloudTestCase {
       if (random().nextBoolean()) {
         // assert RTG request respects _route_ param
         QueryResponse routeRsp =
-            getRandomSolrClient().query(params("qt", "/get", "id", "2", 
"_route_", "1"));
+            new QueryRequest("/get", params("id", "2", "_route_", "1"))
+                .process(getRandomSolrClient());
         SolrDocument results = (SolrDocument) 
routeRsp.getResponse().get("doc");
         assertNotNull(
             "RTG should find doc because _route_ was set to the root 
documents' ID", results);
@@ -249,7 +253,8 @@ public class NestedShardedAtomicUpdateTest extends 
SolrCloudTestCase {
       if (random().nextBoolean()) {
         // assert all docs are indexed inside the same block
         QueryResponse rsp =
-            getRandomSolrClient().query(params("qt", "/get", "id", "1", "fl", 
"*, [child]"));
+            new QueryRequest("/get", params("id", "1", "fl", "*, [child]"))
+                .process(getRandomSolrClient());
         SolrDocument val = (SolrDocument) rsp.getResponse().get("doc");
         assertEquals("1", val.getFieldValue("id"));
         assertInplaceCounter(id1InPlaceCounter, val);
diff --git a/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java 
b/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java
index 1d705df29fe..cf12d1d18f5 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.SequencedMap;
 import org.apache.solr.client.solrj.SolrClient;
+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.common.params.ShardParams;
@@ -325,7 +326,7 @@ public class ShardRoutingTest extends 
AbstractFullDistribZkTestBase {
       client.add(sdoc("id", "b!doc", "foo_i", map("inc", 1)));
       expectedVal++;
 
-      QueryResponse rsp = client.query(params("qt", "/get", "id", "b!doc"));
+      QueryResponse rsp = new QueryRequest("/get", params("id", 
"b!doc")).process(client);
       Object val = ((Map) rsp.getResponse().get("doc")).get("foo_i");
       assertEquals((Integer) expectedVal, val);
     }
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java 
b/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java
index e3bcfe7b998..982a9777145 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Map;
 import org.apache.solr.client.solrj.SolrClient;
 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.common.SolrDocument;
@@ -336,9 +337,9 @@ public class TestDistribDocBasedVersion extends 
AbstractFullDistribZkTestBase {
       expectedIds.put(strs.get(i), Long.valueOf(verS.get(i)));
     }
 
-    solrClient.query(params("qt", "/get", "ids", ids));
+    new QueryRequest("/get", params("ids", ids)).process(solrClient);
 
-    QueryResponse rsp = cloudClient.query(params("qt", "/get", "ids", ids));
+    QueryResponse rsp = new QueryRequest("/get", params("ids", 
ids)).process(cloudClient);
     Map<String, Object> obtainedIds = new HashMap<>();
     for (SolrDocument doc : rsp.getResults()) {
       obtainedIds.put((String) doc.get("id"), doc.get(vfield));
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java 
b/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java
index 53c9fe0b3ac..cdbab82b654 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java
@@ -417,7 +417,7 @@ public class TestRandomFlRTGCloud extends SolrCloudTestCase 
{
 
     // NOTE: not using SolrClient.getById or getByIds because we want to force 
choice of "id" vs
     // "ids" params
-    final ModifiableSolrParams params = params("qt", "/get");
+    final ModifiableSolrParams params = params();
 
     // random fq -- nothing fancy, secondary concern for our test
     final Integer FQ_MAX = usually() ? null : random().nextInt();
@@ -481,7 +481,7 @@ public class TestRandomFlRTGCloud extends SolrCloudTestCase 
{
 
     final Object rsp; // only here for an assertion message
 
-    var qr = new QueryRequest(params);
+    var qr = new QueryRequest("/get", params);
     final SolrDocumentList docs =
         switch (wt) {
           case "javabin" -> { // the most common case
diff --git 
a/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java 
b/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java
index b7f82ac616b..cb0d11714f7 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/DaemonStreamApiTest.java
@@ -29,6 +29,7 @@ import org.apache.solr.client.solrj.io.Tuple;
 import org.apache.solr.client.solrj.io.stream.SolrStream;
 import org.apache.solr.client.solrj.io.stream.TupleStream;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
+import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.cloud.MiniSolrCloudCluster;
 import org.apache.solr.common.params.SolrParams;
@@ -261,11 +262,12 @@ public class DaemonStreamApiTest extends SolrTestCaseJ4 {
       throws IOException, SolrServerException {
     SolrClient client = cluster.getSolrClient();
     // create a daemon
-    QueryResponse resp = client.query(CHECKPOINT_COLL, params("expr", 
daemonDef, "qt", "/stream"));
+    QueryResponse resp =
+        new QueryRequest("/stream", params("expr", daemonDef)).process(client, 
CHECKPOINT_COLL);
     assertEquals(errMsg, 0, resp.getStatus());
 
     // This should close and replace the current daemon and NOT leak threads.
-    resp = client.query(CHECKPOINT_COLL, params("expr", daemonDef, "qt", 
"/stream"));
+    resp = new QueryRequest("/stream", params("expr", 
daemonDef)).process(client, CHECKPOINT_COLL);
     assertEquals(errMsg, 0, resp.getStatus());
   }
 
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/CombinedQueryComponentTest.java
 
b/solr/core/src/test/org/apache/solr/handler/component/CombinedQueryComponentTest.java
index 224c59bb1b7..c9d5e9f8a28 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/CombinedQueryComponentTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/CombinedQueryComponentTest.java
@@ -107,14 +107,14 @@ public class CombinedQueryComponentTest extends 
BaseDistributedSearchTestCase {
     prepareIndexDocs();
     QueryResponse rsp =
         query(
-            CommonParams.JSON,
-            "{\"queries\":"
-                + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test for 
doc 5\"}}},"
-                + "\"limit\":5,"
-                + "\"fields\":[\"id\",\"score\",\"title\"],"
-                + 
"\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\"]}}",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                "{\"queries\":"
+                    + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test 
for doc 5\"}}},"
+                    + "\"limit\":5,"
+                    + "\"fields\":[\"id\",\"score\",\"title\"],"
+                    + 
"\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\"]}}"));
     assertEquals(5, rsp.getResults().size());
   }
 
@@ -123,16 +123,16 @@ public class CombinedQueryComponentTest extends 
BaseDistributedSearchTestCase {
     prepareIndexDocs();
     QueryResponse rsp =
         query(
-            CommonParams.JSON,
-            "{\"queries\":"
-                + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test for 
doc 1\"}},"
-                + "\"lexical2\":{\"lucene\":{\"query\":\"text:test text for 
doc 2\"}}},"
-                + "\"limit\":5,"
-                + "\"fields\":[\"id\",\"score\",\"title\"],"
-                + 
"\"params\":{\"combiner\":true,\"debug\":[\"results\"],\"combiner.query\":[\"lexical1\",\"lexical2\"],"
-                + "\"rid\": \"test-1\"}}",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                "{\"queries\":"
+                    + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test 
for doc 1\"}},"
+                    + "\"lexical2\":{\"lucene\":{\"query\":\"text:test text 
for doc 2\"}}},"
+                    + "\"limit\":5,"
+                    + "\"fields\":[\"id\",\"score\",\"title\"],"
+                    + 
"\"params\":{\"combiner\":true,\"debug\":[\"results\"],\"combiner.query\":[\"lexical1\",\"lexical2\"],"
+                    + "\"rid\": \"test-1\"}}"));
     assertEquals(10, rsp.getResults().getNumFound());
     assertTrue(rsp.getDebugMap().containsKey("combinerExplanations"));
   }
@@ -143,15 +143,15 @@ public class CombinedQueryComponentTest extends 
BaseDistributedSearchTestCase {
     prepareIndexDocs();
     QueryResponse rsp =
         query(
-            CommonParams.JSON,
-            "{\"queries\":"
-                + "{\"lexical1\":{\"lucene\":{\"query\":\"title:Solr is the 
blazing-fast, open source search platform\"}},"
-                + "\"lexical2\":{\"lucene\":{\"query\":\"text:Solr powers the 
search\"}}},"
-                + "\"limit\":5,"
-                + "\"fields\":[\"id\",\"score\",\"title\"],"
-                + 
"\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\",\"lexical2\"]}}",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                "{\"queries\":"
+                    + "{\"lexical1\":{\"lucene\":{\"query\":\"title:Solr is 
the blazing-fast, open source search platform\"}},"
+                    + "\"lexical2\":{\"lucene\":{\"query\":\"text:Solr powers 
the search\"}}},"
+                    + "\"limit\":5,"
+                    + "\"fields\":[\"id\",\"score\",\"title\"],"
+                    + 
"\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\",\"lexical2\"]}}"));
     assertEquals(0, rsp.getResults().size());
   }
 
@@ -164,16 +164,16 @@ public class CombinedQueryComponentTest extends 
BaseDistributedSearchTestCase {
             SolrException.class,
             () ->
                 query(
-                    CommonParams.JSON,
-                    "{\"queries\":"
-                        + "{\"lexical1\":{\"lucene\":{\"query\":\"id:(2^=2 OR 
3^=1)\"}},"
-                        + "\"vector\":{\"knn\":{ \"f\": \"vector\", \"topK\": 
5, \"query\": \"[1.0, 2.0, 3.0, 4.0]\"}},"
-                        + "\"lexical2\":{\"lucene\":{\"query\":\"text:test 
text for doc 2\"}}},"
-                        + "\"limit\":5,"
-                        + "\"fields\":[\"id\",\"score\",\"title\"],"
-                        + 
"\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\",\"vector\", 
\"lexical2\"]}}",
-                    CommonParams.QT,
-                    "/search"));
+                    "/search",
+                    params(
+                        CommonParams.JSON,
+                        "{\"queries\":"
+                            + "{\"lexical1\":{\"lucene\":{\"query\":\"id:(2^=2 
OR 3^=1)\"}},"
+                            + "\"vector\":{\"knn\":{ \"f\": \"vector\", 
\"topK\": 5, \"query\": \"[1.0, 2.0, 3.0, 4.0]\"}},"
+                            + "\"lexical2\":{\"lucene\":{\"query\":\"text:test 
text for doc 2\"}}},"
+                            + "\"limit\":5,"
+                            + "\"fields\":[\"id\",\"score\",\"title\"],"
+                            + 
"\"params\":{\"combiner\":true,\"combiner.query\":[\"lexical1\",\"vector\", 
\"lexical2\"]}}")));
     assertTrue(exceptionThrown.getMessage().contains("Too many queries to 
combine: limit is 2"));
   }
 
@@ -186,16 +186,16 @@ public class CombinedQueryComponentTest extends 
BaseDistributedSearchTestCase {
     prepareIndexDocs();
     QueryResponse rsp =
         query(
-            CommonParams.JSON,
-            "{\"queries\":"
-                + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test for 
doc 1\"}},"
-                + "\"lexical2\":{\"lucene\":{\"query\":\"text:test text for 
doc 2\"}}},"
-                + "\"limit\":5,"
-                + "\"fields\":[\"id\",\"score\",\"title\"],"
-                + 
"\"params\":{\"combiner\":true,\"combiner.algorithm\":test,\"combiner.query\""
-                + ":[\"lexical1\",\"lexical2\"],\"debug\":[\"results\"]}}",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                "{\"queries\":"
+                    + "{\"lexical1\":{\"lucene\":{\"query\":\"title:title test 
for doc 1\"}},"
+                    + "\"lexical2\":{\"lucene\":{\"query\":\"text:test text 
for doc 2\"}}},"
+                    + "\"limit\":5,"
+                    + "\"fields\":[\"id\",\"score\",\"title\"],"
+                    + 
"\"params\":{\"combiner\":true,\"combiner.algorithm\":test,\"combiner.query\""
+                    + 
":[\"lexical1\",\"lexical2\"],\"debug\":[\"results\"]}}"));
     assertEquals(10, rsp.getResults().getNumFound());
     assertEquals(
         "org.apache.lucene.search.Explanation:30 = this is test combiner\n",
@@ -225,25 +225,14 @@ public class CombinedQueryComponentTest extends 
BaseDistributedSearchTestCase {
             SolrException.class,
             () ->
                 query(
-                    CommonParams.JSON,
-                    combinedQueryStr,
-                    CommonParams.QT,
                     "/search",
-                    "cursorMark",
-                    CURSOR_MARK_START));
+                    params(CommonParams.JSON, combinedQueryStr, "cursorMark", 
CURSOR_MARK_START)));
     assertTrue(
         exceptionThrown.getMessage().contains("Unsupported functionality for 
Combined Queries."));
     exceptionThrown =
         expectThrows(
             SolrException.class,
-            () ->
-                query(
-                    CommonParams.JSON,
-                    combinedQueryStr,
-                    CommonParams.QT,
-                    "/search",
-                    "group",
-                    "true"));
+            () -> query("/search", params(CommonParams.JSON, combinedQueryStr, 
"group", "true")));
     assertTrue(
         exceptionThrown.getMessage().contains("Unsupported functionality for 
Combined Queries."));
   }
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/CombinedQuerySolrCloudTest.java
 
b/solr/core/src/test/org/apache/solr/handler/component/CombinedQuerySolrCloudTest.java
index b4b72e0f2e5..6c455e0d1ce 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/CombinedQuerySolrCloudTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/CombinedQuerySolrCloudTest.java
@@ -136,7 +136,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
           "fields": ["id", "score", "title"],
           "params": {"combiner": true, "combiner.query": ["lexical1"]}
         }""";
-    QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, 
"/search");
+    QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery));
     assertEquals(1, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "2");
   }
@@ -160,7 +160,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
           "fields": ["id", "score", "title"],
           "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
         }""";
-    QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, 
"/search");
+    QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery));
     assertEquals(5, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6", "3");
   }
@@ -185,7 +185,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
           "fields": ["id", "score", "title"],
           "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
         }""";
-    QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, 
"/search");
+    QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery));
     assertEquals(5, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "5", "2", "8", "7", "10");
   }
@@ -208,7 +208,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
           "fields": ["id", "score", "title"],
           "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
         }""";
-    QueryResponse rsp = query(CommonParams.JSON, jsonQueryAll, 
CommonParams.QT, "/search");
+    QueryResponse rsp = query("/search", params(CommonParams.JSON, 
jsonQueryAll));
     // ideal ordering
     assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6", "3", "10", 
"8");
     String jsonQueryLimit2 =
@@ -222,7 +222,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
           "fields": ["id", "score", "title"],
           "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
         }""";
-    rsp = query(CommonParams.JSON, jsonQueryLimit2, CommonParams.QT, 
"/search");
+    rsp = query("/search", params(CommonParams.JSON, jsonQueryLimit2));
     // assert proper ordering due to presence of shards.rows
     assertFieldValues(rsp.getResults(), id, "7", "2");
     String jsonQueryWithShardRows =
@@ -236,7 +236,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
           "fields": ["id", "score", "title"],
           "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"], "shards.rows": 10}
         }""";
-    rsp = query(CommonParams.JSON, jsonQueryWithShardRows, CommonParams.QT, 
"/search");
+    rsp = query("/search", params(CommonParams.JSON, jsonQueryWithShardRows));
     assertFieldValues(rsp.getResults(), id, "5", "7");
     // assert improper ordering due to lack of shards.rows
     String jsonQueryPage =
@@ -251,7 +251,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
           "fields": ["id", "score", "title"],
           "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
         }""";
-    rsp = query(CommonParams.JSON, jsonQueryPage, CommonParams.QT, "/search");
+    rsp = query("/search", params(CommonParams.JSON, jsonQueryPage));
     assertEquals(4, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "6", "3", "10", "8");
   }
@@ -281,7 +281,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
             "combiner.query": ["lexical"]
           }
         }""";
-    QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, 
"/search");
+    QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery));
     assertEquals(3, rsp.getResults().size());
     assertEquals(4, rsp.getResults().getNumFound());
     assertEquals("[0 (2), 2 (2)]", 
rsp.getFacetFields().getFirst().getValues().toString());
@@ -314,7 +314,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
             "hl.q": "test doc"
           }
         }""";
-    QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, 
"/search");
+    QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery));
     assertEquals(4, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6");
     assertEquals("mod3_idv", rsp.getFacetFields().getFirst().getName());
@@ -356,7 +356,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
             "hl.q": "test doc"
           }
         }""";
-    QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, 
"/search-elevate");
+    QueryResponse rsp = query("/search-elevate", params(CommonParams.JSON, 
jsonQuery));
     assertEquals(4, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "6", "10", "5", "7");
     assertEquals("mod3_idv", rsp.getFacetFields().getFirst().getName());
@@ -419,7 +419,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
             }
         }""";
     handle.put("expanded", UNORDERED);
-    QueryResponse rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, 
"/search");
+    QueryResponse rsp = query("/search", params(CommonParams.JSON, jsonQuery));
     assertEquals(3, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "CO!2", "CO!10", "CO!3");
     assertEquals("id", rsp.getFacetFields().getFirst().getName());
@@ -462,7 +462,7 @@ public class CombinedQuerySolrCloudTest extends 
AbstractFullDistribZkTestBase {
   /** Tests {@link ResponseBuilder#setForcedDistrib(boolean)} had the desired 
effect. */
   @Test
   public void testForcedDistrib() throws Exception {
-    QueryResponse rsp = query("qt", "/forcedDistribTest", "q", "*:*", "rows", 
"0");
+    QueryResponse rsp = query("/forcedDistribTest", params("q", "*:*", "rows", 
"0"));
     // ForcedDistribSearchHandler would trigger a failure if this didn't work
   }
 }
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedCombinedQueryComponentTest.java
 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedCombinedQueryComponentTest.java
index 55f2a87a723..3c8044f4619 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedCombinedQueryComponentTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedCombinedQueryComponentTest.java
@@ -128,155 +128,155 @@ public class DistributedCombinedQueryComponentTest 
extends BaseDistributedSearch
     // Single lexical query
     QueryResponse rsp =
         query(
-            CommonParams.JSON,
-            """
-            {
-              "queries": {
-                "lexical1": {"lucene": {"query": "id:2^=10"}}
-              },
-              "limit": 5,
-              "fields": ["id", "score", "title"],
-              "params": {"combiner": true, "combiner.query": ["lexical1"]}
-            }""",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                """
+                {
+                  "queries": {
+                    "lexical1": {"lucene": {"query": "id:2^=10"}}
+                  },
+                  "limit": 5,
+                  "fields": ["id", "score", "title"],
+                  "params": {"combiner": true, "combiner.query": ["lexical1"]}
+                }"""));
     assertEquals(1, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "2");
 
     // Multiple lexical queries
     rsp =
         query(
-            CommonParams.JSON,
-            """
-            {
-              "queries": {
-                "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 
5^=1)"}},
-                "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 
10^=2)"}}
-              },
-              "limit": 5,
-              "fields": ["id", "score", "title"],
-              "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
-            }""",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                """
+                {
+                  "queries": {
+                    "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 
OR 5^=1)"}},
+                    "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 
OR 10^=2)"}}
+                  },
+                  "limit": 5,
+                  "fields": ["id", "score", "title"],
+                  "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
+                }"""));
     assertEquals(5, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6", "3");
 
     // Multiple queries with sort
     rsp =
         query(
-            CommonParams.JSON,
-            """
-            {
-              "queries": {
-                "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 
5^=1)"}},
-                "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 
10^=2)"}}
-              },
-              "limit": 5,
-              "sort": "mod3_idv desc, score desc",
-              "fields": ["id", "score", "title"],
-              "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
-            }""",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                """
+                {
+                  "queries": {
+                    "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 
OR 5^=1)"}},
+                    "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 
OR 10^=2)"}}
+                  },
+                  "limit": 5,
+                  "sort": "mod3_idv desc, score desc",
+                  "fields": ["id", "score", "title"],
+                  "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
+                }"""));
     assertEquals(5, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "5", "2", "7", "10", "4");
 
     // Pagination: no limit (all results), ideal ordering
     rsp =
         query(
-            CommonParams.JSON,
-            """
-            {
-              "queries": {
-                "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 
5^=1)"}},
-                "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 
10^=2)"}}
-              },
-              "fields": ["id", "score", "title"],
-              "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
-            }""",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                """
+                {
+                  "queries": {
+                    "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 
OR 5^=1)"}},
+                    "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 
OR 10^=2)"}}
+                  },
+                  "fields": ["id", "score", "title"],
+                  "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
+                }"""));
     assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6", "3", "10", 
"4");
 
     // Pagination: limit 1 without shards.rows gives non-ideal ordering
     rsp =
         query(
-            CommonParams.JSON,
-            """
-            {
-              "queries": {
-                "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 
5^=1)"}},
-                "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 
10^=2)"}}
-              },
-              "limit": 1,
-              "fields": ["id", "score", "title"],
-              "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
-            }""",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                """
+                {
+                  "queries": {
+                    "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 
OR 5^=1)"}},
+                    "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 
OR 10^=2)"}}
+                  },
+                  "limit": 1,
+                  "fields": ["id", "score", "title"],
+                  "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
+                }"""));
     assertFieldValues(rsp.getResults(), id, "7");
 
     // Pagination: limit 1 with shards.rows gives ideal ordering
     rsp =
         query(
-            CommonParams.JSON,
-            """
-            {
-              "queries": {
-                "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 
5^=1)"}},
-                "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 
10^=2)"}}
-              },
-              "limit": 1,
-              "fields": ["id", "score", "title"],
-              "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"], "shards.rows": 10}
-            }""",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                """
+                {
+                  "queries": {
+                    "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 
OR 5^=1)"}},
+                    "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 
OR 10^=2)"}}
+                  },
+                  "limit": 1,
+                  "fields": ["id", "score", "title"],
+                  "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"], "shards.rows": 10}
+                }"""));
     assertFieldValues(rsp.getResults(), id, "5");
 
     // Pagination: limit 4, offset 3
     rsp =
         query(
-            CommonParams.JSON,
-            """
-            {
-              "queries": {
-                "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 
5^=1)"}},
-                "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 
10^=2)"}}
-              },
-              "limit": 4,
-              "offset": 3,
-              "fields": ["id", "score", "title"],
-              "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
-            }""",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                """
+                {
+                  "queries": {
+                    "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 
OR 5^=1)"}},
+                    "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 
OR 10^=2)"}}
+                  },
+                  "limit": 4,
+                  "offset": 3,
+                  "fields": ["id", "score", "title"],
+                  "params": {"combiner": true, "combiner.query": ["lexical1", 
"lexical2"]}
+                }"""));
     assertEquals(4, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "6", "3", "10", "4");
 
     // Faceting
     rsp =
         query(
-            CommonParams.JSON,
-            """
-            {
-              "queries": {
-                "lexical": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 
5^=1)"}}
-              },
-              "limit": 3,
-              "offset": 1,
-              "fields": ["id", "score", "title"],
-              "params": {
-                "combiner": true,
-                "facet": true,
-                "facet.field": "mod3_idv",
-                "facet.mincount": 1,
-                "combiner.query": ["lexical"]
-              }
-            }""",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                """
+                {
+                  "queries": {
+                    "lexical": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 
OR 5^=1)"}}
+                  },
+                  "limit": 3,
+                  "offset": 1,
+                  "fields": ["id", "score", "title"],
+                  "params": {
+                    "combiner": true,
+                    "facet": true,
+                    "facet.field": "mod3_idv",
+                    "facet.mincount": 1,
+                    "combiner.query": ["lexical"]
+                  }
+                }"""));
     assertEquals(3, rsp.getResults().size());
     assertEquals(4, rsp.getResults().getNumFound());
     assertEquals("[0 (2), 2 (2)]", 
rsp.getFacetFields().getFirst().getValues().toString());
@@ -284,27 +284,27 @@ public class DistributedCombinedQueryComponentTest 
extends BaseDistributedSearch
     // Faceting + highlighting
     rsp =
         query(
-            CommonParams.JSON,
-            """
-            {
-              "queries": {
-                "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 OR 
5^=1)"}},
-                "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 OR 
10^=2)"}}
-              },
-              "limit": 4,
-              "fields": ["id", "score", "title"],
-              "params": {
-                "combiner": true,
-                "facet": true,
-                "facet.field": "mod3_idv",
-                "combiner.query": ["lexical1", "lexical2"],
-                "hl": true,
-                "hl.fl": "title",
-                "hl.q": "test doc"
-              }
-            }""",
-            CommonParams.QT,
-            "/search");
+            "/search",
+            params(
+                CommonParams.JSON,
+                """
+                {
+                  "queries": {
+                    "lexical1": {"lucene": {"query": "id:(2^=4 OR 3^=2 OR 6^=3 
OR 5^=1)"}},
+                    "lexical2": {"lucene": {"query": "id:(4^=1 OR 5^=3 OR 7^=4 
OR 10^=2)"}}
+                  },
+                  "limit": 4,
+                  "fields": ["id", "score", "title"],
+                  "params": {
+                    "combiner": true,
+                    "facet": true,
+                    "facet.field": "mod3_idv",
+                    "combiner.query": ["lexical1", "lexical2"],
+                    "hl": true,
+                    "hl.fl": "title",
+                    "hl.q": "test doc"
+                  }
+                }"""));
     assertEquals(4, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "5", "7", "2", "6");
     assertEquals("mod3_idv", rsp.getFacetFields().getFirst().getName());
@@ -321,29 +321,29 @@ public class DistributedCombinedQueryComponentTest 
extends BaseDistributedSearch
     handle.put("debug", SKIP);
     rsp =
         query(
-            CommonParams.JSON,
-            """
-            {
-              "queries": {
-                "lexical1": {"lucene": {"query": "id:(2^=2 OR 3^=1 OR 6^=2 OR 
1^=3)"}},
-                "lexical2": {"lucene": {"query": "id:(4^=1 OR 1^=2 OR 7^=3 OR 
10^=2)"}}
-              },
-              "limit": 4,
-              "fields": ["id", "score", "title"],
-              "params": {
-                "combiner": true,
-                "elevateIds": "10,6",
-                "combiner.query": ["lexical1", "lexical2"],
-                "facet": true,
-                "facet.field": "mod3_idv",
-                "hl": true,
-                "hl.fl": "title",
-                "hl.q": "test doc",
-                "debug": "true"
-              }
-            }""",
-            CommonParams.QT,
-            "/search-elevate");
+            "/search-elevate",
+            params(
+                CommonParams.JSON,
+                """
+                {
+                  "queries": {
+                    "lexical1": {"lucene": {"query": "id:(2^=2 OR 3^=1 OR 6^=2 
OR 1^=3)"}},
+                    "lexical2": {"lucene": {"query": "id:(4^=1 OR 1^=2 OR 7^=3 
OR 10^=2)"}}
+                  },
+                  "limit": 4,
+                  "fields": ["id", "score", "title"],
+                  "params": {
+                    "combiner": true,
+                    "elevateIds": "10,6",
+                    "combiner.query": ["lexical1", "lexical2"],
+                    "facet": true,
+                    "facet.field": "mod3_idv",
+                    "hl": true,
+                    "hl.fl": "title",
+                    "hl.q": "test doc",
+                    "debug": "true"
+                  }
+                }"""));
     assertEquals(4, rsp.getResults().size());
     assertFieldValues(rsp.getResults(), id, "10", "6", "1", "7");
     assertEquals("mod3_idv", rsp.getFacetFields().getFirst().getName());
@@ -365,7 +365,7 @@ public class DistributedCombinedQueryComponentTest extends 
BaseDistributedSearch
   @Test
   @ShardsFixed(num = 2)
   public void testForcedDistrib() throws Exception {
-    QueryResponse rsp = query("qt", "/forcedDistribTest", "q", "*:*", "rows", 
"0");
+    QueryResponse rsp = query("/forcedDistribTest", params("q", "*:*", "rows", 
"0"));
     // ForcedDistribSearchHandler would trigger a failure if this didn't work
   }
 
@@ -478,7 +478,7 @@ public class DistributedCombinedQueryComponentTest extends 
BaseDistributedSearch
     handle.put("expanded", UNORDERED);
     QueryResponse rsp;
     try {
-      rsp = query(CommonParams.JSON, jsonQuery, CommonParams.QT, "/search");
+      rsp = query("/search", params(CommonParams.JSON, jsonQuery));
     } finally {
       handle.remove("expanded");
     }
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java
 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java
index 9145b7cf013..f7ce38519b6 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedMLTComponentTest.java
@@ -189,28 +189,20 @@ public class DistributedMLTComponentTest extends 
BaseDistributedSearchTestCase {
     handle.put("17", UNORDERED);
 
     query(
-        "q",
-        "match_none",
-        "mlt",
-        "true",
-        "mlt.fl",
-        "lowerfilt",
-        "qt",
         requestHandlerName,
-        "shards.qt",
-        requestHandlerName);
+        params(
+            "q", "match_none",
+            "mlt", "true",
+            "mlt.fl", "lowerfilt",
+            "shards.qt", requestHandlerName));
 
     query(
-        "q",
-        "lowerfilt:sonata",
-        "mlt",
-        "true",
-        "mlt.fl",
-        "lowerfilt",
-        "qt",
         requestHandlerName,
-        "shards.qt",
-        requestHandlerName);
+        params(
+            "q", "lowerfilt:sonata",
+            "mlt", "true",
+            "mlt.fl", "lowerfilt",
+            "shards.qt", requestHandlerName));
 
     handle.put("24", UNORDERED);
     handle.put("23", UNORDERED);
@@ -234,116 +226,116 @@ public class DistributedMLTComponentTest extends 
BaseDistributedSearchTestCase {
     // we ask for a mlt.count of 20 to ensure both include all results
 
     query(
-        "q",
-        "lowerfilt:moon",
-        "fl",
-        id,
-        MoreLikeThisParams.MIN_TERM_FREQ,
-        2,
-        MoreLikeThisParams.MIN_DOC_FREQ,
-        1,
-        "sort",
-        "id_i1 desc",
-        "mlt",
-        "true",
-        "mlt.fl",
-        "lowerfilt",
-        "qt",
         requestHandlerName,
-        "shards.qt",
-        requestHandlerName,
-        "mlt.count",
-        "20");
+        params(
+            "q",
+            "lowerfilt:moon",
+            "fl",
+            id,
+            MoreLikeThisParams.MIN_TERM_FREQ,
+            "2",
+            MoreLikeThisParams.MIN_DOC_FREQ,
+            "1",
+            "sort",
+            "id_i1 desc",
+            "mlt",
+            "true",
+            "mlt.fl",
+            "lowerfilt",
+            "shards.qt",
+            requestHandlerName,
+            "mlt.count",
+            "20"));
 
     query(
-        "q",
-        "lowerfilt:fox",
-        "fl",
-        id,
-        MoreLikeThisParams.MIN_TERM_FREQ,
-        1,
-        MoreLikeThisParams.MIN_DOC_FREQ,
-        1,
-        "sort",
-        "id_i1 desc",
-        "mlt",
-        "true",
-        "mlt.fl",
-        "lowerfilt",
-        "qt",
         requestHandlerName,
-        "shards.qt",
-        requestHandlerName,
-        "mlt.count",
-        "20");
+        params(
+            "q",
+            "lowerfilt:fox",
+            "fl",
+            id,
+            MoreLikeThisParams.MIN_TERM_FREQ,
+            "1",
+            MoreLikeThisParams.MIN_DOC_FREQ,
+            "1",
+            "sort",
+            "id_i1 desc",
+            "mlt",
+            "true",
+            "mlt.fl",
+            "lowerfilt",
+            "shards.qt",
+            requestHandlerName,
+            "mlt.count",
+            "20"));
 
     query(
-        "q",
-        "lowerfilt:the red fox",
-        "fl",
-        id,
-        MoreLikeThisParams.MIN_TERM_FREQ,
-        1,
-        MoreLikeThisParams.MIN_DOC_FREQ,
-        1,
-        "sort",
-        "id_i1 desc",
-        "mlt",
-        "true",
-        "mlt.fl",
-        "lowerfilt",
-        "qt",
-        requestHandlerName,
-        "shards.qt",
         requestHandlerName,
-        "mlt.count",
-        "20");
+        params(
+            "q",
+            "lowerfilt:the red fox",
+            "fl",
+            id,
+            MoreLikeThisParams.MIN_TERM_FREQ,
+            "1",
+            MoreLikeThisParams.MIN_DOC_FREQ,
+            "1",
+            "sort",
+            "id_i1 desc",
+            "mlt",
+            "true",
+            "mlt.fl",
+            "lowerfilt",
+            "shards.qt",
+            requestHandlerName,
+            "mlt.count",
+            "20"));
 
     query(
-        "q",
-        "lowerfilt:blue moon",
-        "fl",
-        id,
-        MoreLikeThisParams.MIN_TERM_FREQ,
-        1,
-        MoreLikeThisParams.MIN_DOC_FREQ,
-        1,
-        "sort",
-        "id_i1 desc",
-        "mlt",
-        "true",
-        "mlt.fl",
-        "lowerfilt",
-        "qt",
-        requestHandlerName,
-        "shards.qt",
         requestHandlerName,
-        "mlt.count",
-        "20");
-
-    // let's query by specifying multiple mlt.fl as comma-separated values
-    QueryResponse response =
-        query(
+        params(
             "q",
-            "lowerfilt:moon",
+            "lowerfilt:blue moon",
             "fl",
             id,
             MoreLikeThisParams.MIN_TERM_FREQ,
-            2,
+            "1",
             MoreLikeThisParams.MIN_DOC_FREQ,
-            1,
+            "1",
             "sort",
             "id_i1 desc",
             "mlt",
             "true",
             "mlt.fl",
-            "lowerfilt1,lowerfilt",
-            "qt",
-            requestHandlerName,
+            "lowerfilt",
             "shards.qt",
             requestHandlerName,
             "mlt.count",
-            "20");
+            "20"));
+
+    // let's query by specifying multiple mlt.fl as comma-separated values
+    QueryResponse response =
+        query(
+            requestHandlerName,
+            params(
+                "q",
+                "lowerfilt:moon",
+                "fl",
+                id,
+                MoreLikeThisParams.MIN_TERM_FREQ,
+                "2",
+                MoreLikeThisParams.MIN_DOC_FREQ,
+                "1",
+                "sort",
+                "id_i1 desc",
+                "mlt",
+                "true",
+                "mlt.fl",
+                "lowerfilt1,lowerfilt",
+                "shards.qt",
+                requestHandlerName,
+                "mlt.count",
+                "20"));
     NamedList<Object> moreLikeThis = (NamedList<Object>) 
response.getResponse().get("moreLikeThis");
     Map<String, Long> idVsMLTCount = new HashMap<>();
     for (Map.Entry<String, Object> entry : moreLikeThis) {
@@ -354,58 +346,58 @@ public class DistributedMLTComponentTest extends 
BaseDistributedSearchTestCase {
     // let's query by specifying multiple mlt.fl as multiple request parameters
     response =
         query(
+            requestHandlerName,
+            params(
+                "q",
+                "lowerfilt:moon",
+                "fl",
+                id,
+                MoreLikeThisParams.MIN_TERM_FREQ,
+                "2",
+                MoreLikeThisParams.MIN_DOC_FREQ,
+                "1",
+                "sort",
+                "id_i1 desc",
+                "mlt",
+                "true",
+                "mlt.fl",
+                "lowerfilt1",
+                "mlt.fl",
+                "lowerfilt",
+                "shards.qt",
+                requestHandlerName,
+                "mlt.count",
+                "20"));
+    moreLikeThis = (NamedList<Object>) 
response.getResponse().get("moreLikeThis");
+    for (Map.Entry<String, Object> entry : moreLikeThis) {
+      String key = entry.getKey();
+      Long expected = idVsMLTCount.get(key);
+      Long actual = ((SolrDocumentList) entry.getValue()).getNumFound();
+      assertEquals("MLT mismatch for id=" + key, expected, actual);
+    }
+    // test boost mlt.qf
+    query(
+        requestHandlerName,
+        params(
             "q",
             "lowerfilt:moon",
             "fl",
             id,
             MoreLikeThisParams.MIN_TERM_FREQ,
-            2,
+            "2",
             MoreLikeThisParams.MIN_DOC_FREQ,
-            1,
+            "1",
             "sort",
             "id_i1 desc",
             "mlt",
             "true",
             "mlt.fl",
-            "lowerfilt1",
-            "mlt.fl",
-            "lowerfilt",
-            "qt",
-            requestHandlerName,
+            "lowerfilt1,lowerfilt",
+            "mlt.qf",
+            "lowerfilt1^1.2 lowerfilt^3.4",
             "shards.qt",
             requestHandlerName,
             "mlt.count",
-            "20");
-    moreLikeThis = (NamedList<Object>) 
response.getResponse().get("moreLikeThis");
-    for (Map.Entry<String, Object> entry : moreLikeThis) {
-      String key = entry.getKey();
-      Long expected = idVsMLTCount.get(key);
-      Long actual = ((SolrDocumentList) entry.getValue()).getNumFound();
-      assertEquals("MLT mismatch for id=" + key, expected, actual);
-    }
-    // test boost mlt.qf
-    query(
-        "q",
-        "lowerfilt:moon",
-        "fl",
-        id,
-        MoreLikeThisParams.MIN_TERM_FREQ,
-        2,
-        MoreLikeThisParams.MIN_DOC_FREQ,
-        1,
-        "sort",
-        "id_i1 desc",
-        "mlt",
-        "true",
-        "mlt.fl",
-        "lowerfilt1,lowerfilt",
-        "mlt.qf",
-        "lowerfilt1^1.2 lowerfilt^3.4",
-        "qt",
-        requestHandlerName,
-        "shards.qt",
-        requestHandlerName,
-        "mlt.count",
-        "20");
+            "20"));
   }
 }
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 6a794b8d768..0d1f6759606 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
@@ -18,6 +18,7 @@ package org.apache.solr.handler.component;
 
 import org.apache.lucene.util.Constants;
 import org.apache.solr.BaseDistributedSearchTestCase;
+import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.request.SolrQuery;
 import org.apache.solr.client.solrj.response.JavaBinResponseParser;
 import org.apache.solr.client.solrj.response.QueryResponse;
@@ -71,92 +72,91 @@ public class DistributedQueryElevationComponentTest extends 
BaseDistributedSearc
     handle.put("shards.qt", SKIP);
     handle.put("shards", SKIP);
     handle.put("q", SKIP);
-    handle.put("qt", SKIP);
     query(
-        "q",
-        "*:*",
-        "qt",
         "/elevate",
-        "shards.qt",
-        "/elevate",
-        "rows",
-        "500",
-        "sort",
-        "id desc",
-        CommonParams.FL,
-        "id, score, [elevated]");
+        params(
+            "q",
+            "*:*",
+            "shards.qt",
+            "/elevate",
+            "rows",
+            "500",
+            "sort",
+            "id desc",
+            CommonParams.FL,
+            "id, score, [elevated]"));
 
     query(
-        "q",
-        "ZZZZ",
-        "qt",
-        "/elevate",
-        "shards.qt",
         "/elevate",
-        "rows",
-        "500",
-        CommonParams.FL,
-        "*, [elevated]",
-        "forceElevation",
-        "true",
-        "sort",
-        "int_i desc");
+        params(
+            "q",
+            "ZZZZ",
+            "shards.qt",
+            "/elevate",
+            "rows",
+            "500",
+            CommonParams.FL,
+            "*, [elevated]",
+            "forceElevation",
+            "true",
+            "sort",
+            "int_i desc"));
 
     query(
-        "q",
-        "solr",
-        "qt",
-        "/elevate",
-        "shards.qt",
         "/elevate",
-        "rows",
-        "500",
-        CommonParams.FL,
-        "*, [elevated]",
-        "forceElevation",
-        "true",
-        "sort",
-        "int_i asc");
+        params(
+            "q",
+            "solr",
+            "shards.qt",
+            "/elevate",
+            "rows",
+            "500",
+            CommonParams.FL,
+            "*, [elevated]",
+            "forceElevation",
+            "true",
+            "sort",
+            "int_i asc"));
 
     query(
-        "q",
-        "ZZZZ",
-        "qt",
         "/elevate",
-        "shards.qt",
-        "/elevate",
-        "rows",
-        "500",
-        CommonParams.FL,
-        "*, [elevated]",
-        "forceElevation",
-        "true",
-        "sort",
-        "id desc");
-
-    // See SOLR-4854 for background on following test code
-
-    // Uses XML response format by default
-    QueryResponse response =
-        query(
+        params(
             "q",
-            "XXXX",
-            "qt",
-            "/elevate",
+            "ZZZZ",
             "shards.qt",
             "/elevate",
             "rows",
             "500",
             CommonParams.FL,
-            "id, [elevated]",
-            "enableElevation",
-            "true",
+            "*, [elevated]",
             "forceElevation",
             "true",
-            "elevateIds",
-            "6",
             "sort",
-            "id desc");
+            "id desc"));
+
+    // See SOLR-4854 for background on following test code
+
+    // Uses XML response format by default
+    QueryResponse response =
+        query(
+            "/elevate",
+            params(
+                "q",
+                "XXXX",
+                "shards.qt",
+                "/elevate",
+                "rows",
+                "500",
+                CommonParams.FL,
+                "id, [elevated]",
+                "enableElevation",
+                "true",
+                "forceElevation",
+                "true",
+                "elevateIds",
+                "6",
+                "sort",
+                "id desc"));
 
     assertTrue(response.getResults().getNumFound() > 0);
     SolrDocument document = response.getResults().get(0);
@@ -167,7 +167,6 @@ public class DistributedQueryElevationComponentTest extends 
BaseDistributedSearc
     assertTrue(client.getParser() instanceof JavaBinResponseParser);
     SolrQuery solrQuery =
         new SolrQuery("XXXX")
-            .setParam("qt", "/elevate")
             .setParam("shards.qt", "/elevate")
             .setRows(500)
             .setFields("id,[elevated]")
@@ -176,7 +175,7 @@ public class DistributedQueryElevationComponentTest extends 
BaseDistributedSearc
             .setParam("elevateIds", "6")
             .setSort("id", SolrQuery.ORDER.desc);
     setDistributedParams(solrQuery);
-    response = client.query(DEFAULT_TEST_CORENAME, solrQuery);
+    response = new QueryRequest("/elevate", solrQuery).process(client, 
DEFAULT_TEST_CORENAME);
 
     assertTrue(response.getResults().getNumFound() > 0);
     document = response.getResults().get(0);
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java
 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java
index 3337e87d057..e073ee13b6e 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedSpellCheckComponentTest.java
@@ -22,8 +22,10 @@ import java.util.List;
 import org.apache.lucene.tests.util.LuceneTestCase.SuppressTempFileChecks;
 import org.apache.solr.BaseDistributedSearchTestCase;
 import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.request.QueryRequest;
 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.params.SpellingParams;
 import org.apache.solr.common.util.NamedList;
 import org.junit.BeforeClass;
@@ -44,20 +46,15 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
     useFactory(null); // need an FS factory
   }
 
-  private void q(Object... q) throws Exception {
-    final ModifiableSolrParams params = new ModifiableSolrParams();
-
-    for (int i = 0; i < q.length; i += 2) {
-      params.add(q[i].toString(), q[i + 1].toString());
-    }
-
-    controlClient.query(params);
+  private void q(String handler, SolrParams params) throws Exception {
+    new QueryRequest(handler, params).process(controlClient);
 
     // query a random server
-    params.set("shards", shards);
+    final ModifiableSolrParams distribParams = new 
ModifiableSolrParams(params);
+    distribParams.set("shards", shards);
     int which = r.nextInt(clients.size());
     SolrClient client = clients.get(which);
-    client.query(params);
+    new QueryRequest(handler, distribParams).process(client);
   }
 
   @Override
@@ -140,14 +137,17 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
     String maxResults = SpellingParams.SPELLCHECK_MAX_RESULTS_FOR_SUGGEST;
 
     // Build the dictionary for IndexBasedSpellChecker
-    q(buildRequest("*:*", false, "/spellCheckCompRH", false, build, "true"));
+    q("/spellCheckCompRH", buildRequest("*:*", false, "/spellCheckCompRH", 
false, build, "true"));
 
     // Test Basic Functionality
     query(
+        requestHandlerName,
         buildRequest("toyata", true, requestHandlerName, 
random().nextBoolean(), (String[]) null));
     query(
+        requestHandlerName,
         buildRequest("toyata", true, requestHandlerName, 
random().nextBoolean(), extended, "true"));
     query(
+        requestHandlerName,
         buildRequest(
             "bluo",
             true,
@@ -160,6 +160,7 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
 
     // Test Collate functionality
     query(
+        requestHandlerName,
         buildRequest(
             "The quick reb fox jumped over the lazy brown dogs",
             false,
@@ -172,6 +173,7 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
             collate,
             "true"));
     query(
+        requestHandlerName,
         buildRequest(
             "lowerfilt:(+quock +reb)",
             false,
@@ -190,6 +192,7 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
             collateExtended,
             "true"));
     query(
+        requestHandlerName,
         buildRequest(
             "lowerfilt:(+quock +reb)",
             false,
@@ -208,6 +211,7 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
             collateExtended,
             "false"));
     query(
+        requestHandlerName,
         buildRequest(
             "lowerfilt:(+quock +reb)",
             false,
@@ -228,6 +232,7 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
 
     // Test context-sensitive collate
     query(
+        requestHandlerName,
         buildRequest(
             "lowerfilt:(\"quick red fox\")",
             false,
@@ -250,6 +255,7 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
             maxResults,
             "10"));
     query(
+        requestHandlerName,
         buildRequest(
             "lowerfilt:(\"rod fix\")",
             false,
@@ -272,6 +278,7 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
             maxResults,
             "10"));
     query(
+        requestHandlerName,
         buildRequest(
             "lowerfilt:(\"rod fix\")",
             false,
@@ -298,6 +305,7 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
 
     // Test word-break spellchecker
     query(
+        reqHandlerWithWordbreak,
         buildRequest(
             "lowerfilt:(+quock +redfox +jum +ped)",
             false,
@@ -316,6 +324,7 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
             collateExtended,
             "true"));
     query(
+        reqHandlerWithWordbreak,
         buildRequest(
             "lowerfilt:(+rodfix)",
             false,
@@ -334,6 +343,7 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
             collateExtended,
             "true"));
     query(
+        reqHandlerWithWordbreak,
         buildRequest(
             "lowerfilt:(+son +ata)",
             false,
@@ -362,10 +372,9 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
     commit();
 
     query(
+        "/spellCheckCompRH_Direct",
         true,
         params(
-            "qt",
-            "/spellCheckCompRH_Direct",
             "shards.qt",
             "/spellCheckCompRH_Direct",
             "rows",
@@ -386,19 +395,22 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
             Boolean.toString(random().nextBoolean()),
             collateExtended,
             Boolean.toString(random().nextBoolean()),
+            // "0" is correctly spelled, in more docs than configured 
maxQueryFrequency
             "test.expected.suggestions",
-            "0", // this word is correctly spelled, in more docs then 
configured maxQueryFrequency
+            "0",
+            // echoParams=all needed so validateControlData can see our
+            // test.expected.suggestions
             "echoParams",
-            "all")); // needed so validateControlData can see our 
test.expected.suggestions
+            "all"));
   }
 
-  private Object[] buildRequest(
+  private SolrParams buildRequest(
       String q,
       boolean useSpellcheckQ,
       String handlerName,
       boolean useGrouping,
       String... addlParams) {
-    List<Object> params = new ArrayList<>();
+    List<String> params = new ArrayList<>();
 
     params.add("q");
     params.add(useSpellcheckQ ? "*:*" : q);
@@ -411,9 +423,6 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
     params.add("fl");
     params.add("id,lowerfilt");
 
-    params.add("qt");
-    params.add(handlerName);
-
     params.add("shards.qt");
     params.add(handlerName);
 
@@ -431,6 +440,6 @@ public class DistributedSpellCheckComponentTest extends 
BaseDistributedSearchTes
     if (addlParams != null) {
       params.addAll(Arrays.asList(addlParams));
     }
-    return params.toArray(new Object[0]);
+    return params(params.toArray(new String[0]));
   }
 }
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java
 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java
index e1947ea85c1..6bb4aca627f 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedSuggestComponentTest.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
 import java.util.List;
 import org.apache.solr.BaseDistributedSearchTestCase;
 import org.apache.solr.client.solrj.response.QueryResponse;
+import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.spelling.suggest.SuggesterParams;
@@ -92,28 +93,37 @@ public class DistributedSuggestComponentTest extends 
BaseDistributedSearchTestCa
 
     // Build the suggest dictionary
     if (random().nextBoolean()) { // build all the suggesters in one go
-      query(buildRequest("", true, requestHandlerName, buildAll, "true"));
+      query(requestHandlerName, buildRequest("", true, requestHandlerName, 
buildAll, "true"));
     } else { // build suggesters individually
-      query(buildRequest("", true, requestHandlerName, build, "true", 
dictionaryName, docDictName));
       query(
+          requestHandlerName,
+          buildRequest("", true, requestHandlerName, build, "true", 
dictionaryName, docDictName));
+      query(
+          requestHandlerName,
           buildRequest(
               "", true, requestHandlerName, build, "true", dictionaryName, 
docExprDictName));
     }
 
     // Test Basic Functionality
     query(
+        requestHandlerName,
         buildRequest(
             "exampel", false, requestHandlerName, dictionaryName, docDictName, 
count, "2"));
     query(
+        requestHandlerName,
         buildRequest(
             "Yet", false, requestHandlerName, dictionaryName, docExprDictName, 
count, "2"));
     query(
+        requestHandlerName,
         buildRequest(
             "blah", true, requestHandlerName, dictionaryName, docExprDictName, 
count, "2"));
-    query(buildRequest("blah", true, requestHandlerName, dictionaryName, 
docDictName, count, "2"));
+    query(
+        requestHandlerName,
+        buildRequest("blah", true, requestHandlerName, dictionaryName, 
docDictName, count, "2"));
 
     // Test multiSuggester
     query(
+        requestHandlerName,
         buildRequest(
             "exampel",
             false,
@@ -126,9 +136,9 @@ public class DistributedSuggestComponentTest extends 
BaseDistributedSearchTestCa
             "2"));
   }
 
-  private Object[] buildRequest(
+  private SolrParams buildRequest(
       String q, boolean useSuggestQ, String handlerName, String... addlParams) 
{
-    List<Object> params = new ArrayList<>();
+    List<String> params = new ArrayList<>();
 
     if (useSuggestQ) {
       params.add("suggest.q");
@@ -137,15 +147,12 @@ public class DistributedSuggestComponentTest extends 
BaseDistributedSearchTestCa
     }
     params.add(q);
 
-    params.add("qt");
-    params.add(handlerName);
-
     params.add("shards.qt");
     params.add(handlerName);
 
     if (addlParams != null) {
       params.addAll(Arrays.asList(addlParams));
     }
-    return params.toArray(new Object[0]);
+    return params(params.toArray(new String[0]));
   }
 }
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
index a64d5d5bfaf..aeb6a34adf6 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
@@ -17,11 +17,8 @@
 package org.apache.solr.handler.component;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Random;
-import java.util.stream.Stream;
 import org.apache.solr.BaseDistributedSearchTestCase;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
@@ -49,11 +46,11 @@ public class DistributedTermsComponentTest extends 
BaseDistributedSearchTestCase
     del("*:*");
 
     index(id, random.nextInt(), "b_t", "snake a,b spider shark snail slug 
seal", "foo_i_p", "1");
-    query("qt", "/terms", "terms.fl", "foo_i_p");
+    query("/terms", params("terms.fl", "foo_i_p"));
     del("*:*");
 
     // verify point field on empty index
-    query("qt", "/terms", "terms.fl", "foo_i_p");
+    query("/terms", params("terms.fl", "foo_i_p"));
 
     index(id, random.nextInt(), "b_t", "snake a,b spider shark snail slug 
seal", "foo_i", "1");
     index(
@@ -102,118 +99,87 @@ public class DistributedTermsComponentTest extends 
BaseDistributedSearchTestCase
     handle.clear();
     handle.put("terms", UNORDERED);
 
-    query("qt", "/terms", "terms.fl", "b_t");
-    query("qt", "/terms", "terms.limit", 5, "terms.fl", "b_t", "terms.lower", 
"s");
+    query("/terms", params("terms.fl", "b_t"));
+    query("/terms", params("terms.limit", "5", "terms.fl", "b_t", 
"terms.lower", "s"));
     query(
-        "qt",
         "/terms",
-        "terms.limit",
-        5,
-        "terms.fl",
-        "b_t",
-        "terms.prefix",
-        "sn",
-        "terms.lower",
-        "sn");
+        params("terms.limit", "5", "terms.fl", "b_t", "terms.prefix", "sn", 
"terms.lower", "sn"));
     query(
-        "qt",
         "/terms",
-        "terms.limit",
-        5,
-        "terms.fl",
-        "b_t",
-        "terms.prefix",
-        "s",
-        "terms.lower",
-        "s",
-        "terms.upper",
-        "sn");
+        params(
+            "terms.limit", "5",
+            "terms.fl", "b_t",
+            "terms.prefix", "s",
+            "terms.lower", "s",
+            "terms.upper", "sn"));
     // terms.sort
     query(
-        "qt",
         "/terms",
-        "terms.limit",
-        5,
-        "terms.fl",
-        "b_t",
-        "terms.prefix",
-        "s",
-        "terms.lower",
-        "s",
-        "terms.sort",
-        "index");
+        params(
+            "terms.limit", "5",
+            "terms.fl", "b_t",
+            "terms.prefix", "s",
+            "terms.lower", "s",
+            "terms.sort", "index"));
     query(
-        "qt",
         "/terms",
-        "terms.limit",
-        5,
-        "terms.fl",
-        "b_t",
-        "terms.prefix",
-        "s",
-        "terms.lower",
-        "s",
-        "terms.upper",
-        "sn",
-        "terms.sort",
-        "index");
-    query("qt", "/terms", "terms.fl", "b_t", "terms.sort", "index");
+        params(
+            "terms.limit", "5",
+            "terms.fl", "b_t",
+            "terms.prefix", "s",
+            "terms.lower", "s",
+            "terms.upper", "sn",
+            "terms.sort", "index"));
+    query("/terms", params("terms.fl", "b_t", "terms.sort", "index"));
     // terms.list
-    query("qt", "/terms", "terms.fl", "b_t", "terms.list", 
"snake,zebra,ant,bad");
-    query("qt", "/terms", "terms.fl", "foo_i", "terms.list", "2,3,1");
-    query("qt", "/terms", "terms.fl", "foo_i", "terms.stats", "true", 
"terms.list", "2,3,1");
-    query("qt", "/terms", "terms.fl", "b_t", "terms.list", "snake,zebra", 
"terms.ttf", "true");
+    query("/terms", params("terms.fl", "b_t", "terms.list", 
"snake,zebra,ant,bad"));
+    query("/terms", params("terms.fl", "foo_i", "terms.list", "2,3,1"));
+    query("/terms", params("terms.fl", "foo_i", "terms.stats", "true", 
"terms.list", "2,3,1"));
+    query("/terms", params("terms.fl", "b_t", "terms.list", "snake,zebra", 
"terms.ttf", "true"));
     query(
-        "qt",
         "/terms",
-        "terms.fl",
-        "b_t",
-        "terms.fl",
-        "c_t",
-        "terms.list",
-        "snake,ant,zebra",
-        "terms.ttf",
-        "true");
+        params(
+            "terms.fl", "b_t",
+            "terms.fl", "c_t",
+            "terms.list", "snake,ant,zebra",
+            "terms.ttf", "true"));
 
     // for date point field
-    query("qt", "/terms", "terms.fl", "foo_date_p");
+    query("/terms", params("terms.fl", "foo_date_p"));
     // terms.ttf=true doesn't work for point fields
-    // query("qt", "/terms",  "terms.fl", "foo_date_p", "terms.ttf", "true");
+    // query("/terms", params("terms.fl", "foo_date_p", "terms.ttf", "true"));
   }
 
   @Override
-  protected QueryResponse query(Object... q) throws Exception {
-    if (Stream.of(q).noneMatch(s -> s.equals("terms.list"))) {
+  protected QueryResponse query(String requestHandler, SolrParams p) throws 
Exception {
+    if (p.get("terms.list") == null) {
       // SOLR-9243 doesn't support max/min count
-      for (int i = 0; i < q.length; i += 2) {
-        if ((q[i].equals("terms.sort") && q[i + 1].equals("index")) || 
rarely()) {
-          List<Object> params = new ArrayList<>(Arrays.asList(q));
-          if (usually()) {
-            params.add("terms.mincount");
-            params.add(random().nextInt(4) - 1);
-          }
-          if (usually()) {
-            params.add("terms.maxcount");
-            params.add(random().nextInt(4) - 1);
-          }
-          q = params.toArray(new Object[0]);
-          break;
+      if ("index".equals(p.get("terms.sort")) || rarely()) {
+        ModifiableSolrParams params = new ModifiableSolrParams(p);
+        if (usually()) {
+          params.set("terms.mincount", String.valueOf(random().nextInt(4) - 
1));
+        }
+        if (usually()) {
+          params.set("terms.maxcount", String.valueOf(random().nextInt(4) - 
1));
         }
+        p = params;
       }
     }
-    return super.query(q);
+    return super.query(requestHandler, p);
   }
 
   @Override
-  protected QueryResponse query(boolean setDistribParams, SolrParams p) throws 
Exception {
-    QueryResponse queryResponse = super.query(setDistribParams, p);
+  protected QueryResponse query(String requestHandler, boolean 
setDistribParams, SolrParams p)
+      throws Exception {
+    QueryResponse queryResponse = super.query(requestHandler, 
setDistribParams, p);
 
     final ModifiableSolrParams params = new ModifiableSolrParams(p);
     // TODO: look into why passing true causes fails
     params.set("distrib", "false");
 
     for (ResponseParser responseParser : getResponseParsers()) {
-      final NamedList<Object> controlRsp = queryClient(controlClient, params, 
responseParser);
+      final NamedList<Object> controlRsp =
+          queryClient(controlClient, requestHandler, params, responseParser);
       params.remove("distrib");
       if (setDistribParams) {
         setDistributedParams(params);
@@ -222,7 +188,7 @@ public class DistributedTermsComponentTest extends 
BaseDistributedSearchTestCase
       // query a random server
       int which = r.nextInt(clients.size());
       SolrClient client = clients.get(which);
-      NamedList<Object> rsp = queryClient(client, params, responseParser);
+      NamedList<Object> rsp = queryClient(client, requestHandler, params, 
responseParser);
 
       // flags needs to be called here since only terms response is passed to 
compare
       // other way is to pass whole response to compare
@@ -241,9 +207,12 @@ public class DistributedTermsComponentTest extends 
BaseDistributedSearchTestCase
    * responseParser}
    */
   private NamedList<Object> queryClient(
-      SolrClient solrClient, final ModifiableSolrParams params, ResponseParser 
responseParser)
+      SolrClient solrClient,
+      String requestHandler,
+      final ModifiableSolrParams params,
+      ResponseParser responseParser)
       throws SolrServerException, IOException {
-    QueryRequest queryRequest = new QueryRequest(params);
+    QueryRequest queryRequest = new QueryRequest(requestHandler, params);
     queryRequest.setResponseParser(responseParser);
     return solrClient.request(queryRequest);
   }
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java
 
b/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java
index 0389ed1b189..6a8457fde0c 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/TermVectorComponentDistributedTest.java
@@ -135,181 +135,181 @@ public class TermVectorComponentDistributedTest extends 
BaseDistributedSearchTes
 
     for (String q : new String[] {"id:0", "id:7", "id:[3 TO 6]", "*:*"}) {
       query(
-          "sort",
-          "id desc",
-          "qt",
           tv,
-          "q",
-          q,
-          TermVectorComponent.COMPONENT_NAME,
-          "true",
-          TermVectorParams.TF,
-          "true");
+          params(
+              "sort",
+              "id desc",
+              "q",
+              q,
+              TermVectorComponent.COMPONENT_NAME,
+              "true",
+              TermVectorParams.TF,
+              "true"));
 
       // tv.fl diff from fl
       query(
-          "sort",
-          "id asc",
-          "qt",
           tv,
-          "q",
-          q,
-          "fl",
-          "*,score",
-          "tv.fl",
-          "test_basictv,test_offtv",
-          TermVectorComponent.COMPONENT_NAME,
-          "true",
-          TermVectorParams.TF,
-          "true");
+          params(
+              "sort",
+              "id asc",
+              "q",
+              q,
+              "fl",
+              "*,score",
+              "tv.fl",
+              "test_basictv,test_offtv",
+              TermVectorComponent.COMPONENT_NAME,
+              "true",
+              TermVectorParams.TF,
+              "true"));
 
       // multi-valued tv.fl
       query(
-          "sort",
-          "id asc",
-          "qt",
           tv,
-          "q",
-          q,
-          "fl",
-          "*,score",
-          "tv.fl",
-          "test_basictv",
-          "tv.fl",
-          "test_offtv",
-          TermVectorComponent.COMPONENT_NAME,
-          "true",
-          TermVectorParams.TF,
-          "true");
+          params(
+              "sort",
+              "id asc",
+              "q",
+              q,
+              "fl",
+              "*,score",
+              "tv.fl",
+              "test_basictv",
+              "tv.fl",
+              "test_offtv",
+              TermVectorComponent.COMPONENT_NAME,
+              "true",
+              TermVectorParams.TF,
+              "true"));
       // re-use fl glob
       query(
-          "sort",
-          "id desc",
-          "qt",
           tv,
-          "q",
-          q,
-          "fl",
-          "*,score",
-          TermVectorComponent.COMPONENT_NAME,
-          "true",
-          TermVectorParams.TF,
-          "true");
+          params(
+              "sort",
+              "id desc",
+              "q",
+              q,
+              "fl",
+              "*,score",
+              TermVectorComponent.COMPONENT_NAME,
+              "true",
+              TermVectorParams.TF,
+              "true"));
       // re-use fl, ignore things we can't handle
       query(
-          "sort",
-          "id desc",
-          "qt",
           tv,
-          "q",
-          q,
-          "fl",
-          "score,test_basictv,[docid],test_postv,val:sum(3,4)",
-          TermVectorComponent.COMPONENT_NAME,
-          "true",
-          TermVectorParams.TF,
-          "true");
+          params(
+              "sort",
+              "id desc",
+              "q",
+              q,
+              "fl",
+              "score,test_basictv,[docid],test_postv,val:sum(3,4)",
+              TermVectorComponent.COMPONENT_NAME,
+              "true",
+              TermVectorParams.TF,
+              "true"));
 
       // re-use (multi-valued) fl, ignore things we can't handle
       query(
-          "sort",
-          "id desc",
-          "qt",
           tv,
-          "q",
-          q,
-          "fl",
-          "score,test_basictv",
-          "fl",
-          "[docid],test_postv,val:sum(3,4)",
-          TermVectorComponent.COMPONENT_NAME,
-          "true",
-          TermVectorParams.TF,
-          "true");
+          params(
+              "sort",
+              "id desc",
+              "q",
+              q,
+              "fl",
+              "score,test_basictv",
+              "fl",
+              "[docid],test_postv,val:sum(3,4)",
+              TermVectorComponent.COMPONENT_NAME,
+              "true",
+              TermVectorParams.TF,
+              "true"));
 
       // test some other options
 
       query(
-          "sort",
-          "id asc",
-          "qt",
           tv,
-          "q",
-          q,
-          TermVectorComponent.COMPONENT_NAME,
-          "true",
-          TermVectorParams.TF,
-          "true",
-          TermVectorParams.DF,
-          "true",
-          TermVectorParams.OFFSETS,
-          "true",
-          TermVectorParams.POSITIONS,
-          "true",
-          TermVectorParams.TF_IDF,
-          "true");
+          params(
+              "sort",
+              "id asc",
+              "q",
+              q,
+              TermVectorComponent.COMPONENT_NAME,
+              "true",
+              TermVectorParams.TF,
+              "true",
+              TermVectorParams.DF,
+              "true",
+              TermVectorParams.OFFSETS,
+              "true",
+              TermVectorParams.POSITIONS,
+              "true",
+              TermVectorParams.TF_IDF,
+              "true"));
 
       query(
-          "sort",
-          "id desc",
-          "qt",
           tv,
-          "q",
-          q,
-          TermVectorComponent.COMPONENT_NAME,
-          "true",
-          TermVectorParams.ALL,
-          "true");
+          params(
+              "sort",
+              "id desc",
+              "q",
+              q,
+              TermVectorComponent.COMPONENT_NAME,
+              "true",
+              TermVectorParams.ALL,
+              "true"));
 
       query(
-          "sort",
-          "id desc",
-          "qt",
           tv,
-          "q",
-          q,
-          "rows",
-          1,
-          ShardParams.DISTRIB_SINGLE_PASS,
-          "true",
-          TermVectorComponent.COMPONENT_NAME,
-          "true",
-          TermVectorParams.ALL,
-          "true");
+          params(
+              "sort",
+              "id desc",
+              "q",
+              q,
+              "rows",
+              "1",
+              ShardParams.DISTRIB_SINGLE_PASS,
+              "true",
+              TermVectorComponent.COMPONENT_NAME,
+              "true",
+              TermVectorParams.ALL,
+              "true"));
 
       // per field stuff
 
       query(
-          "sort",
-          "id desc",
-          "qt",
           tv,
-          "q",
-          q,
-          TermVectorComponent.COMPONENT_NAME,
-          "true",
-          TermVectorParams.TF,
-          "true",
-          TermVectorParams.DF,
-          "true",
-          TermVectorParams.OFFSETS,
-          "true",
-          TermVectorParams.POSITIONS,
-          "true",
-          TermVectorParams.TF_IDF,
-          "true",
-          TermVectorParams.FIELDS,
-          "test_basictv,test_notv,test_postv,test_offtv,test_posofftv",
-          "f.test_posofftv." + TermVectorParams.POSITIONS,
-          "false",
-          "f.test_offtv." + TermVectorParams.OFFSETS,
-          "false",
-          "f.test_basictv." + TermVectorParams.DF,
-          "false",
-          "f.test_basictv." + TermVectorParams.TF,
-          "false",
-          "f.test_basictv." + TermVectorParams.TF_IDF,
-          "false");
+          params(
+              "sort",
+              "id desc",
+              "q",
+              q,
+              TermVectorComponent.COMPONENT_NAME,
+              "true",
+              TermVectorParams.TF,
+              "true",
+              TermVectorParams.DF,
+              "true",
+              TermVectorParams.OFFSETS,
+              "true",
+              TermVectorParams.POSITIONS,
+              "true",
+              TermVectorParams.TF_IDF,
+              "true",
+              TermVectorParams.FIELDS,
+              "test_basictv,test_notv,test_postv,test_offtv,test_posofftv",
+              "f.test_posofftv." + TermVectorParams.POSITIONS,
+              "false",
+              "f.test_offtv." + TermVectorParams.OFFSETS,
+              "false",
+              "f.test_basictv." + TermVectorParams.DF,
+              "false",
+              "f.test_basictv." + TermVectorParams.TF,
+              "false",
+              "f.test_basictv." + TermVectorParams.TF_IDF,
+              "false"));
     }
   }
 }
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/UpdateLogCloudTest.java 
b/solr/core/src/test/org/apache/solr/handler/component/UpdateLogCloudTest.java
index c36da38c8cd..fcc0efde3ba 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/UpdateLogCloudTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/UpdateLogCloudTest.java
@@ -129,7 +129,7 @@ public class UpdateLogCloudTest extends SolrCloudTestCase {
   @SuppressWarnings("unchecked")
   private void implTest(SolrClient solrClient, int numExpected) throws 
Exception {
 
-    final QueryRequest reqV = new QueryRequest(params("qt", "/get", 
"getVersions", "12345"));
+    final QueryRequest reqV = new QueryRequest("/get", params("getVersions", 
"12345"));
     final NamedList<?> rspV = solrClient.request(reqV, COLLECTION);
     final List<Long> versions = (List<Long>) rspV.get("versions");
     assertEquals(versions.toString(), numExpected, versions.size());
@@ -145,9 +145,8 @@ public class UpdateLogCloudTest extends SolrCloudTestCase {
     for (boolean skipDbq : new boolean[] {false, true}) {
       final QueryRequest reqU =
           new QueryRequest(
+              "/get",
               params(
-                  "qt",
-                  "/get",
                   "getUpdates",
                   minVersion + "..." + maxVersion,
                   "skipDbq",
diff --git 
a/solr/core/src/test/org/apache/solr/search/json/TestJsonRequestWithEdismaxDefType.java
 
b/solr/core/src/test/org/apache/solr/search/json/TestJsonRequestWithEdismaxDefType.java
index 806c57f72c8..9ff6bd8db81 100644
--- 
a/solr/core/src/test/org/apache/solr/search/json/TestJsonRequestWithEdismaxDefType.java
+++ 
b/solr/core/src/test/org/apache/solr/search/json/TestJsonRequestWithEdismaxDefType.java
@@ -66,7 +66,7 @@ public class TestJsonRequestWithEdismaxDefType extends 
SolrTestCaseJ4 {
   private static void doQuery(SolrClient client) throws Exception {
     final var jsonQuery =
         "{\"query\":{\"bool\":{\"should\":[{\"lucene\":{\"query\":\"id:1\"}}, 
\"id:2\"]}}}";
-    final var req = new QueryRequest(params("json", jsonQuery, "qt", 
"/query"), METHOD.POST);
+    final var req = new QueryRequest("/query", params("json", jsonQuery), 
METHOD.POST);
     final var rsp = req.process(client);
     assertEquals(2, rsp.getResults().getNumFound());
   }
diff --git a/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java 
b/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java
index ebb46d43e81..9e733abc19e 100644
--- a/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java
+++ b/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java
@@ -421,13 +421,10 @@ public class PeerSyncTest extends 
BaseDistributedSearchTestCase {
       throws IOException, SolrServerException {
     QueryRequest qr =
         new QueryRequest(
+            "/get",
             params(
-                "qt",
-                "/get",
-                "getVersions",
-                Integer.toString(numVersions),
-                "sync",
-                StrUtils.join(Arrays.asList(syncWith), ',')));
+                "getVersions", Integer.toString(numVersions),
+                "sync", StrUtils.join(Arrays.asList(syncWith), ',')));
     NamedList<?> rsp = client.request(qr);
     assertEquals(expectedResult, (Boolean) rsp.get("sync"));
   }
diff --git 
a/solr/core/src/test/org/apache/solr/update/PeerSyncWithBufferUpdatesTest.java 
b/solr/core/src/test/org/apache/solr/update/PeerSyncWithBufferUpdatesTest.java
index f1fa5587115..d3932f7a304 100644
--- 
a/solr/core/src/test/org/apache/solr/update/PeerSyncWithBufferUpdatesTest.java
+++ 
b/solr/core/src/test/org/apache/solr/update/PeerSyncWithBufferUpdatesTest.java
@@ -193,13 +193,8 @@ public class PeerSyncWithBufferUpdatesTest extends 
BaseDistributedSearchTestCase
       throws IOException, SolrServerException {
     QueryRequest qr =
         new QueryRequest(
-            params(
-                "qt",
-                "/get",
-                "getVersions",
-                Integer.toString(numVersions),
-                "syncWithLeader",
-                syncWith));
+            "/get",
+            params("getVersions", Integer.toString(numVersions), 
"syncWithLeader", syncWith));
     NamedList<?> rsp = client.request(qr);
     assertEquals(true, rsp.get("syncWithLeader"));
   }
diff --git 
a/solr/core/src/test/org/apache/solr/update/PeerSyncWithIndexFingerprintCachingTest.java
 
b/solr/core/src/test/org/apache/solr/update/PeerSyncWithIndexFingerprintCachingTest.java
index 02e62252efa..b08f5764127 100644
--- 
a/solr/core/src/test/org/apache/solr/update/PeerSyncWithIndexFingerprintCachingTest.java
+++ 
b/solr/core/src/test/org/apache/solr/update/PeerSyncWithIndexFingerprintCachingTest.java
@@ -91,8 +91,7 @@ public class PeerSyncWithIndexFingerprintCachingTest extends 
BaseDistributedSear
 
   IndexFingerprint getFingerprint(SolrClient client, long maxVersion)
       throws IOException, SolrServerException {
-    QueryRequest qr =
-        new QueryRequest(params("qt", "/get", "getFingerprint", 
Long.toString(maxVersion)));
+    QueryRequest qr = new QueryRequest("/get", params("getFingerprint", 
Long.toString(maxVersion)));
     NamedList<?> rsp = client.request(qr);
     return IndexFingerprint.fromObject(rsp.get("fingerprint"));
   }
@@ -101,13 +100,10 @@ public class PeerSyncWithIndexFingerprintCachingTest 
extends BaseDistributedSear
       throws IOException, SolrServerException {
     QueryRequest qr =
         new QueryRequest(
+            "/get",
             params(
-                "qt",
-                "/get",
-                "getVersions",
-                Integer.toString(numVersions),
-                "sync",
-                StrUtils.join(Arrays.asList(syncWith), ',')));
+                "getVersions", Integer.toString(numVersions),
+                "sync", StrUtils.join(Arrays.asList(syncWith), ',')));
     NamedList<?> rsp = client.request(qr);
     assertEquals(true, rsp.get("sync"));
   }
diff --git 
a/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderAndIndexFingerprintCachingTest.java
 
b/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderAndIndexFingerprintCachingTest.java
index 0f048e79c47..6b0d5365eeb 100644
--- 
a/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderAndIndexFingerprintCachingTest.java
+++ 
b/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderAndIndexFingerprintCachingTest.java
@@ -32,13 +32,10 @@ public class 
PeerSyncWithLeaderAndIndexFingerprintCachingTest
       throws IOException, SolrServerException {
     QueryRequest qr =
         new QueryRequest(
+            "/get",
             params(
-                "qt",
-                "/get",
-                "getVersions",
-                Integer.toString(numVersions),
-                "syncWithLeader",
-                StrUtils.join(Arrays.asList(syncWith), ',')));
+                "getVersions", Integer.toString(numVersions),
+                "syncWithLeader", StrUtils.join(Arrays.asList(syncWith), 
',')));
     @SuppressWarnings({"rawtypes"})
     NamedList rsp = client.request(qr);
     assertEquals(true, (Boolean) rsp.get("syncWithLeader"));
diff --git 
a/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderTest.java 
b/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderTest.java
index 6e83e278c63..c84cbd51ba3 100644
--- a/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderTest.java
+++ b/solr/core/src/test/org/apache/solr/update/PeerSyncWithLeaderTest.java
@@ -53,13 +53,10 @@ public class PeerSyncWithLeaderTest extends PeerSyncTest {
       throws IOException, SolrServerException {
     QueryRequest qr =
         new QueryRequest(
+            "/get",
             params(
-                "qt",
-                "/get",
-                "getVersions",
-                Integer.toString(numVersions),
-                "syncWithLeader",
-                StrUtils.join(Arrays.asList(syncWith), ',')));
+                "getVersions", Integer.toString(numVersions),
+                "syncWithLeader", StrUtils.join(Arrays.asList(syncWith), 
',')));
     NamedList<?> rsp = client.request(qr);
     assertEquals(expectedResult, rsp.get("syncWithLeader"));
   }

Reply via email to