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

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


The following commit(s) were added to refs/heads/main by this push:
     new f14328f97b0 Test framework code review and clean ups (#3920)
f14328f97b0 is described below

commit f14328f97b06e0bd5a5663c93f2fe826968e1627
Author: Eric Pugh <[email protected]>
AuthorDate: Thu Dec 18 07:55:14 2025 -0500

    Test framework code review and clean ups (#3920)
    
    This PR contains a multitude of typo fixing, especially in our comments.  
We also cleaned up methods that aren't actually used, except in some Builder 
oriented classes where they are meant to be called by other classes, expecially 
outside of Solr.  Lastly we cleaned up some Java lint errors, parameters passed 
into methods that aren't actually used, and updated some return types to void 
when the return value wasn't used.
---
 .../apache/solr/cloud/BasicDistributedZkTest.java  |   5 +-
 .../component/DistributedFacetPivotLargeTest.java  |   2 +-
 .../apache/solr/BaseDistributedSearchTestCase.java |  43 +++----
 .../src/java/org/apache/solr/JSONTestUtil.java     |   2 +-
 .../org/apache/solr/SolrIgnoredThreadsFilter.java  |   4 +-
 .../java/org/apache/solr/SolrJettyTestBase.java    |   2 +-
 .../src/java/org/apache/solr/SolrTestCase.java     |   7 +-
 .../src/java/org/apache/solr/SolrTestCaseJ4.java   |  63 ++++-----
 .../solr/cloud/AbstractFullDistribZkTestBase.java  |  59 +++------
 .../org/apache/solr/cloud/AbstractZkTestCase.java  |   4 +-
 .../java/org/apache/solr/cloud/ChaosMonkey.java    |  15 +--
 .../org/apache/solr/cloud/CloudInspectUtil.java    |   4 +-
 .../cloud/FullThrottleStoppableIndexingThread.java |   2 +-
 .../src/java/org/apache/solr/cloud/IpTables.java   |   9 --
 .../apache/solr/cloud/MiniSolrCloudCluster.java    |  43 +------
 .../org/apache/solr/cloud/MockZkStateReader.java   |   2 +-
 .../apache/solr/cloud/MultiSolrCloudTestCase.java  |   3 +-
 .../apache/solr/cloud/SolrCloudAuthTestCase.java   |  13 +-
 .../org/apache/solr/cloud/SolrCloudTestCase.java   |  15 +--
 .../apache/solr/cloud/StoppableIndexingThread.java |   8 --
 .../java/org/apache/solr/cloud/ZkTestServer.java   | 142 +--------------------
 .../collections/AbstractBackupRepositoryTest.java  |   2 +-
 .../AbstractCloudBackupRestoreTestCase.java        |  14 +-
 ...bstractCollectionsAPIDistributedZkTestBase.java |   6 +-
 .../collections/AbstractIncrementalBackupTest.java |   5 +-
 .../api/collections/AbstractInstallShardTest.java  |   7 +-
 .../apache/solr/cluster/placement/Builders.java    |   8 +-
 .../org/apache/solr/core/MockDirectoryFactory.java |   2 +-
 .../apache/solr/core/MockFSDirectoryFactory.java   |   2 +-
 .../org/apache/solr/embedded/JettySolrRunner.java  |  20 +--
 .../apache/solr/handler/BackupStatusChecker.java   |  34 +++--
 .../component/TrackingShardHandlerFactory.java     |   1 -
 .../solr/search/CallerSpecificQueryLimit.java      |   5 -
 .../org/apache/solr/search/facet/DebugAgg.java     |  18 ++-
 .../processor/RecordingUpdateProcessorFactory.java |   1 -
 .../processor/TrackingUpdateProcessorFactory.java  |   1 -
 .../update/processor/UpdateProcessorTestBase.java  |   2 +-
 .../solr/util/BadZookeeperThreadsFilter.java       |  36 ------
 .../java/org/apache/solr/util/BaseTestHarness.java |   6 +-
 .../java/org/apache/solr/util/CallerMatcher.java   |   2 +-
 .../java/org/apache/solr/util/DirectoryUtil.java   |   2 +-
 .../java/org/apache/solr/util/ErrorLogMuter.java   |  20 +--
 .../src/java/org/apache/solr/util/LogListener.java |  30 +++--
 .../org/apache/solr/util/MockCoreContainer.java    |  39 ------
 .../apache/solr/util/NotSecurePseudoRandomSpi.java |  35 +----
 .../java/org/apache/solr/util/QueryMatchers.java   |   2 +-
 .../java/org/apache/solr/util/RandomizeSSL.java    |  22 ++--
 .../java/org/apache/solr/util/RestTestHarness.java |  30 -----
 .../java/org/apache/solr/util/SSLTestConfig.java   |   8 +-
 .../java/org/apache/solr/util/ServletFixtures.java |   1 -
 .../src/java/org/apache/solr/util/SocketProxy.java |   3 +-
 .../org/apache/solr/util/SolrClientTestRule.java   |   2 +-
 .../org/apache/solr/util/SolrMetricTestUtils.java  |  15 +--
 .../solr/util/SolrTestNonSecureRandomProvider.java |   2 +-
 .../src/java/org/apache/solr/util/TestHarness.java |  12 +-
 .../solrj/apache/SolrPortAwareCookieSpecTest.java  |   8 +-
 .../solr/cloud/MiniSolrCloudClusterTest.java       |   5 +-
 .../org/apache/solr/util/TestErrorLogMuter.java    |  10 +-
 .../apache/solr/util/TestLogLevelAnnotations.java  |   2 +-
 59 files changed, 218 insertions(+), 649 deletions(-)

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 f9779cfb551..1732cd487d0 100644
--- a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
@@ -207,10 +207,7 @@ public class BasicDistributedZkTest extends 
AbstractFullDistribZkTestBase {
     int foo_i_counter = 0;
     for (SolrClient client : clients) {
       foo_i_counter++;
-      indexDoc(
-          client,
-          params("commit", "true"), // SOLR-4923
-          sdoc(id, 1, i1, 100, tlong, 100, "foo_i", foo_i_counter));
+      indexDoc(client, sdoc(id, 1, i1, 100, tlong, 100, "foo_i", 
foo_i_counter));
       // after every update+commit, check all the shards consistency
       queryAndCompareShards(
           params("q", "id:1", "distrib", "false", "sanity_check", 
"non_distrib_id_1_lookup"));
diff --git 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLargeTest.java
 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLargeTest.java
index 9ce0684fdf0..a5cad568b11 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLargeTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLargeTest.java
@@ -1548,7 +1548,7 @@ public class DistributedFacetPivotLargeTest extends 
BaseDistributedSearchTestCas
    * Builds up a SolrInputDocument using the specified fields, then adds it to 
the specified client
    * as well as the control client
    *
-   * @see #indexDoc(SolrClient, SolrParams, SolrInputDocument)
+   * @see #indexDoc(SolrClient, SolrInputDocument)
    * @see #sdoc
    */
   private void addPivotDoc(SolrClient client, Object... fields)
diff --git 
a/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
 
b/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
index 27876850858..465c771ee2c 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
@@ -77,20 +77,20 @@ import org.slf4j.LoggerFactory;
 /**
  * Helper base class for distributed search test cases
  *
- * <p>By default, for Nightly runs, all tests in sub-classes will execute with 
1, 2, ...
+ * <p>By default, for Nightly runs, all tests in subclasses will execute with 
1, 2, ...
  * DEFAULT_MAX_SHARD_COUNT number of shards set up repeatedly. For non-nightly 
tests, they will
  * execute with 2 shards, to speed up total execution time.
  *
- * <p>In general, it's preferable to annotate the tests in sub-classes with a
+ * <p>In general, it's preferable to annotate the tests in subclasses with a
  * {@literal @}ShardsFixed(num = N) or a {@literal @}ShardsRepeat(min = M, max 
= N) to indicate
  * whether the test should be called once, with a fixed number of shards, or 
called repeatedly for
  * number of shards = M to N.
  *
  * <p>In some cases though, if the number of shards has to be fixed, but the 
number itself is
- * dynamic, or if it has to be set as a default for all sub-classes of a 
sub-class, there's a
+ * dynamic, or if it has to be set as a default for all subclasses of a 
subclass, there's a
  * fixShardCount(N) available, which is identical to {@literal 
@}ShardsFixed(num = N) for all tests
  * without annotations in that class hierarchy. Ideally this function should 
be retired in favour of
- * better annotations..
+ * better annotations.
  *
  * @since solr 1.5
  */
@@ -123,13 +123,13 @@ public abstract class BaseDistributedSearchTestCase 
extends SolrTestCaseJ4 {
   @SuppressWarnings("deprecation")
   @BeforeClass
   // Sets the solr.security.allow.urls.enable=false, disabling the need to 
provide an allow list.
-  public static void setSolrEnableUrlUrlAllowList() throws Exception {
+  public static void setSolrEnableUrlUrlAllowList() {
     systemSetPropertyEnableUrlAllowList(false);
   }
 
   @SuppressWarnings("deprecation")
   @AfterClass
-  public static void clearSolrEnableUrlUrlAllowList() throws Exception {
+  public static void clearSolrEnableUrlUrlAllowList() {
     systemClearPropertySolrEnableUrlAllowList();
   }
 
@@ -453,7 +453,7 @@ public abstract class BaseDistributedSearchTestCase extends 
SolrTestCaseJ4 {
     for (int i = 0; i < fields.length; i += 2) {
       doc.addField((String) (fields[i]), fields[i + 1]);
     }
-  } // add random fields to the documet before indexing
+  } // add random fields to the document before indexing
 
   protected void indexr(Object... fields) throws Exception {
     SolrInputDocument doc = new SolrInputDocument();
@@ -480,10 +480,10 @@ public abstract class BaseDistributedSearchTestCase 
extends SolrTestCaseJ4 {
 
   /** Indexes the document in both the control client, and a randomly selected 
client */
   protected void indexDoc(SolrInputDocument doc) throws IOException, 
SolrServerException {
-    indexDoc(clientFor(doc), null, doc);
+    indexDoc(clientFor(doc), doc);
   }
 
-  protected void indexDoc(SolrClient client, SolrParams params, 
SolrInputDocument doc)
+  protected void indexDoc(SolrClient client, SolrInputDocument doc)
       throws IOException, SolrServerException {
     controlClient.add(doc);
     if (shardCount == 0) { // mostly for temp debugging
@@ -675,7 +675,7 @@ public abstract class BaseDistributedSearchTestCase extends 
SolrTestCaseJ4 {
 
   public QueryResponse queryAndCompare(SolrParams params, SolrClient... 
clients)
       throws SolrServerException, IOException {
-    return queryAndCompare(params, Arrays.<SolrClient>asList(clients));
+    return queryAndCompare(params, Arrays.asList(clients));
   }
 
   public QueryResponse queryAndCompare(SolrParams params, Iterable<SolrClient> 
clients)
@@ -721,7 +721,7 @@ public abstract class BaseDistributedSearchTestCase extends 
SolrTestCaseJ4 {
         Object prev = mapB.put(b.getName(i), b.getVal(i));
       }
 
-      return compare(mapA, mapB, flags, handle);
+      return compare(mapA, mapB, handle);
     }
 
     int posa = 0, posb = 0;
@@ -786,7 +786,6 @@ public abstract class BaseDistributedSearchTestCase extends 
SolrTestCaseJ4 {
   public static String compare1(
       @SuppressWarnings({"rawtypes"}) Map a,
       @SuppressWarnings({"rawtypes"}) Map b,
-      int flags,
       Map<String, Integer> handle) {
     String cmp;
 
@@ -808,17 +807,15 @@ public abstract class BaseDistributedSearchTestCase 
extends SolrTestCaseJ4 {
   public static String compare(
       @SuppressWarnings({"rawtypes"}) Map a,
       @SuppressWarnings({"rawtypes"}) Map b,
-      int flags,
       Map<String, Integer> handle) {
     String cmp;
-    cmp = compare1(a, b, flags, handle);
+    cmp = compare1(a, b, handle);
     if (cmp != null) return cmp;
-    return compare1(b, a, flags, handle);
+    return compare1(b, a, handle);
   }
 
-  public static String compare(
-      SolrDocument a, SolrDocument b, int flags, Map<String, Integer> handle) {
-    return compare(a.getFieldValuesMap(), b.getFieldValuesMap(), flags, 
handle);
+  public static String compare(SolrDocument a, SolrDocument b, Map<String, 
Integer> handle) {
+    return compare(a.getFieldValuesMap(), b.getFieldValuesMap(), handle);
   }
 
   public static String compare(
@@ -851,7 +848,7 @@ public abstract class BaseDistributedSearchTestCase extends 
SolrTestCaseJ4 {
     // only for completely ordered results (ties might be in a different order)
     if (ordered) {
       for (int i = 0; i < a.size(); i++) {
-        cmp = compare(a.get(i), b.get(i), 0, handle);
+        cmp = compare(a.get(i), b.get(i), handle);
         if (cmp != null) return "[" + i + "]" + cmp;
       }
       return null;
@@ -872,7 +869,7 @@ public abstract class BaseDistributedSearchTestCase extends 
SolrTestCaseJ4 {
         }
       }
       // if (docb == null) return "[id="+key+"]";
-      cmp = compare(doc, docb, 0, handle);
+      cmp = compare(doc, docb, handle);
       if (cmp != null) return "[id=" + key + "]" + cmp;
     }
     return null;
@@ -902,11 +899,11 @@ public abstract class BaseDistributedSearchTestCase 
extends SolrTestCaseJ4 {
     }
 
     if (a instanceof SolrDocument && b instanceof SolrDocument) {
-      return compare((SolrDocument) a, (SolrDocument) b, flags, handle);
+      return compare((SolrDocument) a, (SolrDocument) b, handle);
     }
 
     if (a instanceof Map && b instanceof Map) {
-      return compare((Map) a, (Map) b, flags, handle);
+      return compare((Map) a, (Map) b, handle);
     }
 
     if (a instanceof Object[] && b instanceof Object[]) {
@@ -1192,7 +1189,7 @@ public abstract class BaseDistributedSearchTestCase 
extends SolrTestCaseJ4 {
    * @see #CORE_PROPERTIES_FILENAME
    */
   private void seedCoreRootDirWithDefaultTestCore(Path coreRootDirectory) 
throws IOException {
-    // Kludgy and brittle with assumptions about writeCoreProperties, but i 
don't want to
+    // Kludgy and brittle with assumptions about writeCoreProperties, but I 
don't want to
     // try to change the semantics of that method to ignore existing files
     Path coreDir = coreRootDirectory.resolve(DEFAULT_TEST_CORENAME);
     if (Files.notExists(coreDir.resolve(CORE_PROPERTIES_FILENAME))) {
diff --git a/solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java 
b/solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java
index b6b95ef6d7f..08df42a6c8f 100644
--- a/solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java
+++ b/solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java
@@ -187,7 +187,7 @@ class CollectionTester {
         sb.append(seg);
         sb.append(']');
       } else {
-        sb.append(seg.toString());
+        sb.append(seg);
       }
     }
     return sb.toString();
diff --git 
a/solr/test-framework/src/java/org/apache/solr/SolrIgnoredThreadsFilter.java 
b/solr/test-framework/src/java/org/apache/solr/SolrIgnoredThreadsFilter.java
index 4c65603d9c5..298b89d38da 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrIgnoredThreadsFilter.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrIgnoredThreadsFilter.java
@@ -33,7 +33,7 @@ public class SolrIgnoredThreadsFilter implements ThreadFilter 
{
 
     String threadName = t.getName();
 
-    // due to netty - will stop on it's own
+    // due to netty - will stop on its own
     if (threadName.startsWith("globalEventExecutor")) {
       return true;
     }
@@ -43,7 +43,7 @@ public class SolrIgnoredThreadsFilter implements ThreadFilter 
{
       return true;
     }
 
-    // These is a java pool for the collection stream api
+    // This is a java pool for the collection stream api
     if (threadName.startsWith("ForkJoinPool.")) {
       return true;
     }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java 
b/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
index 69b9606f4eb..93e5424c824 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
@@ -114,7 +114,7 @@ public abstract class SolrJettyTestBase extends 
SolrTestCaseJ4 {
   }
 
   /**
-   * Create a new solr client. If createJetty was called, a http 
implementation will be created,
+   * Create a new solr client. If createJetty was called, an http 
implementation will be created,
    * otherwise an embedded implementation will be created. Subclasses should 
override for other
    * options.
    */
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java 
b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
index 4493be05eb0..a29e3d0da43 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
@@ -81,9 +81,6 @@ public class SolrTestCase extends LuceneTestCase {
 
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
-  private static final Pattern NAMING_CONVENTION_TEST_SUFFIX =
-      Pattern.compile("(.+\\.)([^.]+)(Test)");
-
   private static final Pattern NAMING_CONVENTION_TEST_PREFIX =
       Pattern.compile("(.+\\.)(Test)([^.]+)");
 
@@ -151,7 +148,7 @@ public class SolrTestCase extends LuceneTestCase {
           ExternalPaths.DEFAULT_CONFIGSET);
     }
 
-    // set solr.install.dir needed by some test configs outside of the test 
sandbox (!)
+    // set solr.install.dir needed by some test configs outside the test 
sandbox (!)
     if (ExternalPaths.SOURCE_HOME != null) {
       System.setProperty("solr.install.dir", 
ExternalPaths.SOURCE_HOME.toString());
     }
@@ -167,7 +164,7 @@ public class SolrTestCase extends LuceneTestCase {
 
   /**
    * Special hook for sanity checking if any tests trigger failures when an 
Assumption failure
-   * occures in a {@link BeforeClass} method
+   * occurs in a {@link BeforeClass} method
    *
    * @lucene.internal
    */
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java 
b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
index 09691e4222f..b216fd980e6 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -27,7 +27,6 @@ import com.carrotsearch.randomizedtesting.RandomizedTest;
 import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
-import java.io.Reader;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.io.UncheckedIOException;
@@ -229,7 +228,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
 
   /**
    * Annotation for test classes that want to disable PointFields. PointFields 
will otherwise
-   * randomly used by some schemas.
+   * randomly be used by some schemas.
    */
   @Documented
   @Inherited
@@ -375,7 +374,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
           "SOLR-11606: ByteBuddy used by Mockito is not working with this JVM 
version.",
           e.getTargetException());
     } catch (ReflectiveOperationException e) {
-      fail("ByteBuddy and Mockito are not available on classpath: " + 
e.toString());
+      fail("ByteBuddy and Mockito are not available on classpath: " + e);
     }
   }
 
@@ -403,7 +402,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
     changedFactory = true;
   }
 
-  public static void resetFactory() throws Exception {
+  public static void resetFactory() {
     if (!changedFactory) return;
     changedFactory = false;
     if (savedFactory != null) {
@@ -425,7 +424,9 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
       // TestMiniSolrCloudClusterSSL.testSslAndClientAuth as well.
       sslRandomizer =
           new SSLRandomizer(
-              sslRandomizer.ssl, 0.0D, (sslRandomizer.debug + " w/ MAC_OS_X 
supressed clientAuth"));
+              sslRandomizer.ssl,
+              0.0D,
+              (sslRandomizer.debug + " w/ MAC_OS_X suppressed clientAuth"));
     }
 
     SSLTestConfig result = sslRandomizer.createSSLTestConfig();
@@ -443,13 +444,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
     return (isSSLMode() ? "https" : "http") + "://127.0.0.1:" + port + "/solr";
   }
 
-  protected static MockTokenizer whitespaceMockTokenizer(Reader input) throws 
IOException {
-    MockTokenizer mockTokenizer = new MockTokenizer(MockTokenizer.WHITESPACE, 
false);
-    mockTokenizer.setReader(input);
-    return mockTokenizer;
-  }
-
-  protected static MockTokenizer whitespaceMockTokenizer(String input) throws 
IOException {
+  protected static MockTokenizer whitespaceMockTokenizer(String input) {
     MockTokenizer mockTokenizer = new MockTokenizer(MockTokenizer.WHITESPACE, 
false);
     mockTokenizer.setReader(new StringReader(input));
     return mockTokenizer;
@@ -528,9 +523,9 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
    * re-initialize a new value. All directories returned by any calls to this 
method will
    * automatically be cleaned up per {@link #createTempDir}
    *
-   * <p>NOTE: calling this method is not requried, it will be implicitly 
called as needed when
+   * <p>NOTE: calling this method is not required, it will be implicitly 
called as needed when
    * initializing cores. Callers that don't care about using {@link #initCore} 
and just want a
-   * temporary directory to put data in sould instead be using {@link 
#createTempDir} directly.
+   * temporary directory to put data in should instead be using {@link 
#createTempDir} directly.
    *
    * @see #initCoreDataDir
    */
@@ -551,7 +546,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
    * Counter for ensuring we don't ask {@link #createTempDir} to try and 
re-create the same dir
    * prefix over and over.
    *
-   * <p>(createTempDir has it's own counter for uniqueness, but it tries all 
numbers in a loop until
+   * <p>(createTempDir has its own counter for uniqueness, but it tries all 
numbers in a loop until
    * it finds one available. No reason to force that O(N^2) behavior when we 
know we've already
    * created N previous directories with the same prefix.)
    */
@@ -651,10 +646,6 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
     return getTestClass().getName();
   }
 
-  protected static String getSimpleClassName() {
-    return getTestClass().getSimpleName();
-  }
-
   protected static String configString;
   protected static String schemaString;
   protected static Path testSolrHome;
@@ -709,8 +700,6 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
    *   <li>initializes the LocalRequestFactory lrf using sensible defaults.
    * </ul>
    */
-  private static String factoryProp;
-
   public static void initCore() throws Exception {
     log.info("####initCore");
 
@@ -830,12 +819,10 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase 
{
       h.close();
     }
 
-    if (factoryProp == null) {
-      System.clearProperty("solr.directoryFactory");
-    }
+    System.clearProperty("solr.directoryFactory");
 
     if (System.getProperty(UPDATELOG_SYSPROP) != null) {
-      // clears the updatelog sysprop at the end of the test run
+      // clears the updatelog system property at the end of the test run
       System.clearProperty(UPDATELOG_SYSPROP);
     }
 
@@ -1002,7 +989,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase {
       }
 
       for (String test : tests) {
-        if (test == null || test.length() == 0) continue;
+        if (test == null || test.isEmpty()) continue;
         String testJSON = json(test);
 
         try {
@@ -1197,7 +1184,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase 
{
     Map<String, String[]> params = new HashMap<>();
     MultiMapSolrParams mmparams = new MultiMapSolrParams(params);
     params.put(UpdateParams.UPDATE_CHAIN, new String[] 
{updateRequestProcessorChain});
-    SolrQueryRequestBase req = new SolrQueryRequestBase(h.getCore(), 
(SolrParams) mmparams) {};
+    SolrQueryRequestBase req = new SolrQueryRequestBase(h.getCore(), mmparams) 
{};
 
     UpdateRequestHandler handler = new UpdateRequestHandler();
     handler.init(null);
@@ -1209,7 +1196,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase 
{
   }
 
   /**
-   * Generates an &lt;add&gt;&lt;doc&gt;... XML String with options on the add.
+   * Generates a &lt;add&gt;&lt;doc&gt;... XML String with options on the add.
    *
    * @param doc the Document to add
    * @param args 0th and Even numbered args are param names, Odds are param 
values.
@@ -1338,10 +1325,10 @@ public abstract class SolrTestCaseJ4 extends 
SolrTestCase {
   /**
    * Does a low level delete of all docs in the index.
    *
-   * <p>The behavior of this method is slightly different then doing a normal 
<code>*:*</code> DBQ
+   * <p>The behavior of this method is slightly different from doing a normal 
<code>*:*</code> DBQ
    * because it takes advantage of internal methods to ensure all index data 
is wiped, regardless of
    * optimistic concurrency version constraints -- making it suitable for 
tests that create
-   * synthetic versions, and/or require a completely pristine index w/o any 
field metdata.
+   * synthetic versions, and/or require a completely pristine index w/o any 
field metadata.
    *
    * @see #deleteByQueryAndGetVersion
    */
@@ -1418,7 +1405,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase 
{
 
   /**
    * Converts "test JSON" strings into JSON parseable by our JSON parser. For 
example, this method
-   * changed single quoted strings into double quoted strings before the 
parser could natively
+   * changed single quoted strings into double-quoted strings before the 
parser could natively
    * handle them.
    *
    * <p>This transformation is automatically applied to JSON test strings 
(like assertJQ).
@@ -1826,10 +1813,6 @@ public abstract class SolrTestCaseJ4 extends 
SolrTestCase {
     public IVals numValues;
     public Vals vals;
 
-    public FldType(String fname, Vals vals) {
-      this(fname, ZERO_ONE, vals);
-    }
-
     public FldType(String fname, IVals numValues, Vals vals) {
       this.fname = fname;
       this.numValues = numValues;
@@ -2160,7 +2143,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase 
{
     }
     throw new RuntimeException(
         "Cannot find resource in classpath or in file-system (relative to 
CWD): "
-            + Path.of(name).toAbsolutePath());
+            + file.toAbsolutePath());
   }
 
   public static Path TEST_HOME() {
@@ -2678,7 +2661,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase 
{
   }
 
   /**
-   * We want "realistic" unicode strings beyond simple ascii, but because our 
updates use XML we
+   * We want "realistic" Unicode strings beyond simple ascii, but because our 
updates use XML we
    * need to ensure we don't get "special" code block.
    */
   public static String randomXmlUsableUnicodeString() {
@@ -2721,7 +2704,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase 
{
   }
 
   @BeforeClass
-  public static void assertNonBlockingRandomGeneratorAvailable() throws 
InterruptedException {
+  public static void assertNonBlockingRandomGeneratorAvailable() {
     final String EGD = "java.security.egd";
     final String URANDOM = "file:/dev/./urandom";
     final String ALLOWED = "test.solr.allowed.securerandom";
@@ -2854,7 +2837,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase 
{
     final boolean useDV = random().nextBoolean();
     System.setProperty(NUMERIC_DOCVALUES_SYSPROP, "" + useDV);
 
-    // consume a consistent amount of random data even if sysprop/annotation 
is set
+    // consume a consistent amount of random data even if system 
property/annotation is set
     final boolean randUsePoints = 0 != random().nextInt(5); // 80% likelihood
 
     final String usePointsStr = System.getProperty(USE_NUMERIC_POINTS_SYSPROP);
@@ -2904,7 +2887,7 @@ public abstract class SolrTestCaseJ4 extends SolrTestCase 
{
   }
 
   /**
-   * Cleans up the randomized sysproperties and variables set by {@link
+   * Cleans up the randomized system properties and variables set by {@link
    * #randomizeNumericTypesProperties}
    *
    * @see #randomizeNumericTypesProperties
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
 
b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
index 5a24a1f2f4d..67922db5a42 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
@@ -131,11 +131,10 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
   private static final String ZOOKEEPER_FORCE_SYNC = "zookeeper.forceSync";
   protected static final String DEFAULT_COLLECTION = "collection1";
   protected volatile ZkTestServer zkServer;
-  private final AtomicInteger homeCount = new AtomicInteger();
 
   @BeforeClass
   public static void beforeThisClass() throws Exception {
-    // Only For Manual Testing: this will force an fs based dir factory
+    // Only For Manual Testing: this will force a fs based dir factory
     // useFactory(null);
   }
 
@@ -217,10 +216,6 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
 
     public CloudSolrServerClient() {}
 
-    public CloudSolrServerClient(SolrClient client) {
-      this.solrClient = client;
-    }
-
     public SolrClient getSolrClient() {
       return solrClient;
     }
@@ -321,10 +316,10 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
         }
       }
     }
-    if (useTlogReplicas()) {
-      log.info("Will use {} replicas unless explicitly asked otherwise", 
Replica.Type.TLOG);
-    } else {
-      log.info("Will use {} replicas unless explicitly asked otherwise", 
Replica.Type.NRT);
+    if (log.isInfoEnabled()) {
+      log.info(
+          "Will use {} replicas unless explicitly asked otherwise",
+          useTlogReplicas() ? Replica.Type.TLOG : Replica.Type.NRT);
     }
   }
 
@@ -366,7 +361,7 @@ public abstract class AbstractFullDistribZkTestBase extends 
BaseDistributedSearc
     return dataDir;
   }
 
-  protected void initCloud() throws Exception {
+  protected void initCloud() {
     assert (cloudInit == false);
     cloudInit = true;
     cloudClient = createCloudClient(DEFAULT_COLLECTION);
@@ -554,7 +549,6 @@ public abstract class AbstractFullDistribZkTestBase extends 
BaseDistributedSearc
                 }
               });
 
-          addedReplicas++;
         } else {
           if (log.isInfoEnabled()) {
             log.info(
@@ -592,9 +586,8 @@ public abstract class AbstractFullDistribZkTestBase extends 
BaseDistributedSearc
                   throw new RuntimeException(e);
                 }
               });
-
-          addedReplicas++;
         }
+        addedReplicas++;
       } else {
         log.info(
             "create jetty {} in directory {} of type {} for shard{}",
@@ -715,7 +708,7 @@ public abstract class AbstractFullDistribZkTestBase extends 
BaseDistributedSearc
 
   protected void waitForActiveReplicaCount(
       CloudSolrClient client, String collection, int expectedNumReplicas)
-      throws TimeoutException, NotInClusterStateException {
+      throws NotInClusterStateException {
     log.info(
         "Waiting to see {} active replicas in collection: {}", 
expectedNumReplicas, collection);
     AtomicInteger nReplicas = new AtomicInteger();
@@ -764,7 +757,7 @@ public abstract class AbstractFullDistribZkTestBase extends 
BaseDistributedSearc
    * status.
    *
    * @deprecated This method is virtually useless as it does not consider the 
status of either the
-   *     shard or replica, nor wether the node hosting each replica is alive.
+   *     shard or replica, nor whether the node hosting each replica is alive.
    */
   @Deprecated
   protected int getTotalReplicas(DocCollection c, String collection) {
@@ -1095,7 +1088,7 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
       throws Exception {
     UpdateRequest up = new UpdateRequest();
     up.add(batch);
-    NamedList resp = null;
+    NamedList resp;
     int numRetries = 0;
     while (true) {
       try {
@@ -1111,7 +1104,7 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
               waitBeforeRetry);
           Thread.sleep(waitBeforeRetry * 1000L);
         } else {
-          log.error("No more retries available! Add batch failed due to: {}", 
rootCause);
+          log.error("No more retries available! Add batch failed", rootCause);
           throw exc;
         }
       }
@@ -1267,7 +1260,7 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
               Slice slice = entry.getValue();
               if (slice.getState()
                   == Slice.State
-                      .CONSTRUCTION) { // similar to replica recovering; 
pretend its the same
+                      .CONSTRUCTION) { // similar to replica recovering; 
pretend it's the same
                 // thing
                 if (verbose) System.out.println("Found a slice in construction 
state; will wait.");
                 sawLiveRecovering = true;
@@ -1292,7 +1285,7 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
               }
             }
             if (!sawLiveRecovering) {
-              if (verbose) System.out.println("no one is recoverying");
+              if (verbose) System.out.println("no one is recovering");
               return true;
             } else {
               return false;
@@ -1352,7 +1345,7 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
             return false;
           });
     } catch (TimeoutException e) {
-      // If we failed to get a new leader, print some diagnotics before the 
test fails
+      // If we failed to get a new leader, print some diagnostics before the 
test fails
       Diagnostics.logThreadDumps("Could not find new leader in specified 
timeout");
       zkStateReader.getZkClient().printLayoutToStream(System.out);
       fail("Could not find new leader even after waiting for 15s");
@@ -2034,7 +2027,7 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
     long controlCount = controlClient.query(new 
SolrQuery("*:*")).getResults().getNumFound();
 
     // do some really inefficient mapping...
-    Map<String, Slice> slices = null;
+    Map<String, Slice> slices;
     ClusterState clusterState;
     try (ZkStateReader zk =
         new ZkStateReader(
@@ -2270,7 +2263,7 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
     ConfigSetUploadTool tool = new ConfigSetUploadTool(runtime);
 
     int res = tool.runTool(SolrCLI.processCommandLineArgs(tool, args));
-    assertEquals("Tool should have returned 0 for success, returned: " + res, 
res, 0);
+    assertEquals("Tool should have returned 0 for success, returned: " + res, 
0, res);
   }
 
   @Override
@@ -2353,15 +2346,15 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
                   ZkStateReader.REPLICATION_FACTOR);
     }
     if (numNrtReplicas == null) {
-      numNrtReplicas = Integer.valueOf(0);
+      numNrtReplicas = 0;
     }
     Integer numTlogReplicas = (Integer) 
collectionProps.get(ZkStateReader.TLOG_REPLICAS);
     if (numTlogReplicas == null) {
-      numTlogReplicas = Integer.valueOf(0);
+      numTlogReplicas = 0;
     }
     Integer numPullReplicas = (Integer) 
collectionProps.get(ZkStateReader.PULL_REPLICAS);
     if (numPullReplicas == null) {
-      numPullReplicas = Integer.valueOf(0);
+      numPullReplicas = 0;
     }
     if (confSetName != null) {
       params.set("collection.configName", confSetName);
@@ -3023,18 +3016,6 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
     }
   }
 
-  protected void waitForAllWarmingSearchers() throws InterruptedException {
-    log.info("waitForAllWarmingSearchers");
-    for (JettySolrRunner jetty : jettys) {
-      if (!jetty.isRunning()) {
-        continue;
-      }
-      for (SolrCore core : jetty.getCoreContainer().getCores()) {
-        waitForWarming(core);
-      }
-    }
-  }
-
   protected long getIndexVersion(Replica replica) throws IOException {
     try (SolrClient client =
         new HttpSolrClient.Builder(replica.getBaseUrl())
@@ -3124,7 +3105,7 @@ public abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
       } catch (InterruptedException e) {
         Thread.currentThread().interrupt();
         throw new RuntimeException(
-            "Interrupted whie waiting for request completion. Last state seen: 
" + state, e);
+            "Interrupted while waiting for request completion. Last state 
seen: " + state, e);
       }
     }
 
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java
index 653e9f3773c..2c423d3f973 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java
@@ -49,7 +49,7 @@ public abstract class AbstractZkTestCase extends 
SolrTestCaseJ4 {
   protected static volatile Path zkDir;
 
   @BeforeClass
-  public static void azt_beforeClass() throws Exception {
+  public static void aztBeforeClass() throws Exception {
     zkDir = createTempDir("zkData");
     zkServer = new ZkTestServer(zkDir);
     zkServer.run();
@@ -65,7 +65,7 @@ public abstract class AbstractZkTestCase extends 
SolrTestCaseJ4 {
   }
 
   @AfterClass
-  public static void azt_afterClass() throws Exception {
+  public static void aztAfterClass() throws Exception {
 
     try {
       deleteCore();
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
index 7aba886eeb6..5d0a6c5e260 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
@@ -77,7 +77,7 @@ public class ChaosMonkey {
   // NOTE: CONN_LOSS and EXP are currently being set to "false" intentionally 
here. Remove the
   // default value once we know tests pass reliably under those conditions
   private static final String CONN_LOSS =
-      System.getProperty("solr.tests.cloud.cm.connloss", "false");
+      System.getProperty("solr.tests.cloud.cm.connloss.enabled", "false");
   private static final String EXP = 
System.getProperty("solr.tests.cloud.cm.exp", "false");
 
   private ZkTestServer zkServer;
@@ -101,7 +101,7 @@ public class ChaosMonkey {
 
   /**
    * Our own Random, seeded from LuceneTestCase on init, so that we can 
produce a consistent
-   * sequence of random chaos regardless of if/how othe threads access the 
test randomness in other
+   * sequence of random chaos regardless of if/how the threads access the test 
randomness in other
    * threads
    *
    * @see LuceneTestCase#random()
@@ -248,13 +248,6 @@ public class ChaosMonkey {
     }
   }
 
-  public void stopShard(String slice) throws Exception {
-    List<CloudJettyRunner> jetties = shardToJetty.get(slice);
-    for (CloudJettyRunner jetty : jetties) {
-      stopJetty(jetty);
-    }
-  }
-
   public void stopShardExcept(String slice, String shardName) throws Exception 
{
     List<CloudJettyRunner> jetties = shardToJetty.get(slice);
     for (CloudJettyRunner jetty : jetties) {
@@ -360,7 +353,7 @@ public class ChaosMonkey {
     }
 
     int chance = chaosRandom.nextInt(10);
-    CloudJettyRunner cjetty = null;
+    CloudJettyRunner cjetty;
     if (chance <= 5 && aggressivelyKillLeaders && canKillIndexer) {
       // if killLeader, really aggressively go after leaders
       cjetty = shardToLeaderJetty.get(slice);
@@ -381,7 +374,7 @@ public class ChaosMonkey {
         }
       }
 
-      ZkNodeProps leader = null;
+      ZkNodeProps leader;
       try {
         leader = zkStateReader.getLeaderRetry(collection, slice);
       } catch (Throwable t) {
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java
index fbf5c52ddf2..e529a2e3f4a 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/CloudInspectUtil.java
@@ -165,9 +165,9 @@ public class CloudInspectUtil {
       sb.append(" numFound=").append(lst.getNumFound());
     }
     sb.append("]=");
-    sb.append(lst.subList(0, maxSz / 2).toString());
+    sb.append(lst.subList(0, maxSz / 2));
     sb.append(" , [...] , ");
-    sb.append(lst.subList(lst.size() - maxSz / 2, lst.size()).toString());
+    sb.append(lst.subList(lst.size() - maxSz / 2, lst.size()));
 
     return sb.toString();
   }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/FullThrottleStoppableIndexingThread.java
 
b/solr/test-framework/src/java/org/apache/solr/cloud/FullThrottleStoppableIndexingThread.java
index dab85c10a8d..8ca5646f03e 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/FullThrottleStoppableIndexingThread.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/FullThrottleStoppableIndexingThread.java
@@ -55,7 +55,7 @@ class FullThrottleStoppableIndexingThread extends 
StoppableIndexingThread {
       boolean doDeletes,
       int clientSoTimeout) {
     super(controlClient, cloudClient, id, doDeletes);
-    setName("FullThrottleStopableIndexingThread");
+    setName("FullThrottleStoppableIndexingThread");
     setDaemon(true);
     this.clients = clients;
     this.httpClient = httpClient;
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/IpTables.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/IpTables.java
index 901813ae913..4011e4f74db 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/IpTables.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/IpTables.java
@@ -33,15 +33,6 @@ public class IpTables {
   private static final Set<Integer> BLOCK_PORTS =
       Collections.synchronizedSet(new HashSet<Integer>());
 
-  public static void blockPort(int port) throws IOException, 
InterruptedException {
-    if (ENABLED) {
-      log.info("Block port with iptables: {}", port);
-      BLOCK_PORTS.add(port);
-      runCmd(("iptables -A INPUT -p tcp --dport " + port + " -j 
DROP").split("\\s"));
-      runCmd(("iptables -A OUTPUT -p tcp --dport " + port + " -j 
DROP").split("\\s"));
-    }
-  }
-
   public static void unblockPort(int port) throws IOException, 
InterruptedException {
     if (ENABLED && BLOCK_PORTS.contains(port)) {
       log.info("Unblock port with iptables: {}", port);
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
index a632928d361..aca47b08e53 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
@@ -152,7 +152,7 @@ public class MiniSolrCloudCluster {
           + "</solr>\n";
 
   private final Object startupWait = new Object();
-  private volatile ZkTestServer zkServer; // non-final due to injectChaos()
+  private volatile ZkTestServer zkServer;
   private final boolean externalZkServer;
   private final List<JettySolrRunner> jettys = new CopyOnWriteArrayList<>();
   private final Path baseDir;
@@ -214,7 +214,7 @@ public class MiniSolrCloudCluster {
 
   /**
    * Create a MiniSolrCloudCluster. Note - this constructor visibility is 
changed to package
-   * protected so as to discourage its usage. Ideally *new* functionality 
should use {@linkplain
+   * protected to discourage its usage. Ideally *new* functionality should use 
{@linkplain
    * SolrCloudTestCase} to configure any additional parameters.
    *
    * @param numServers number of Solr servers to start
@@ -247,7 +247,7 @@ public class MiniSolrCloudCluster {
 
   /**
    * Create a MiniSolrCloudCluster. Note - this constructor visibility is 
changed to package
-   * protected so as to discourage its usage. Ideally *new* functionality 
should use {@linkplain
+   * protected to discourage its usage. Ideally *new* functionality should use 
{@linkplain
    * SolrCloudTestCase} to configure any additional parameters.
    *
    * @param numServers number of Solr servers to start
@@ -542,7 +542,7 @@ public class MiniSolrCloudCluster {
    * Stop a Solr instance
    *
    * @param index the index of node in collection returned by {@link 
#getJettySolrRunners()}
-   * @return the shut down node
+   * @return the now shut down node
    */
   public JettySolrRunner stopJettySolrRunner(int index) throws Exception {
     JettySolrRunner jetty = jettys.get(index);
@@ -592,7 +592,7 @@ public class MiniSolrCloudCluster {
             }
           });
 
-      reader.createClusterStateWatchersAndUpdate(); // up to date aliases & 
collections
+      reader.createClusterStateWatchersAndUpdate(); // up-to-date aliases & 
collections
       reader.aliasesManager.applyModificationAndExportToZk(aliases -> 
Aliases.EMPTY);
       for (String collection : reader.getClusterState().getCollectionNames()) {
         
CollectionAdminRequest.deleteCollection(collection).process(solrClient);
@@ -800,32 +800,6 @@ public class MiniSolrCloudCluster {
     ChaosMonkey.expireSession(jetty, zkServer);
   }
 
-  // Currently not used ;-(
-  public synchronized void injectChaos(Random random) throws Exception {
-
-    // sometimes we restart one of the jetty nodes
-    if (random.nextBoolean()) {
-      JettySolrRunner jetty = jettys.get(random.nextInt(jettys.size()));
-      jetty.stop();
-      log.info("============ Restarting jetty");
-      jetty.start();
-    }
-
-    // sometimes we restart zookeeper
-    if (random.nextBoolean()) {
-      zkServer.shutdown();
-      log.info("============ Restarting zookeeper");
-      zkServer = new ZkTestServer(zkServer.getZkDir(), zkServer.getPort());
-      zkServer.run(false);
-    }
-
-    // sometimes we cause a connection loss - sometimes it will hit the 
overseer
-    if (random.nextBoolean()) {
-      JettySolrRunner jetty = jettys.get(random.nextInt(jettys.size()));
-      ChaosMonkey.causeConnectionLoss(jetty);
-    }
-  }
-
   public Overseer getOpenOverseer() {
     List<Overseer> overseers = new ArrayList<>();
     for (int i = 0; i < jettys.size(); i++) {
@@ -996,13 +970,6 @@ public class MiniSolrCloudCluster {
       metrics.setHandler(chain);
       return metrics;
     }
-
-    /**
-     * @return optional subj. It may be null, if it's not yet created.
-     */
-    public MetricRegistry getMetricRegistry() {
-      return metricRegistry;
-    }
   }
 
   private static class Config {
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/MockZkStateReader.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/MockZkStateReader.java
index 7375d3212f2..8be6099c5e8 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/MockZkStateReader.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/MockZkStateReader.java
@@ -39,7 +39,7 @@ public class MockZkStateReader extends ZkStateReader {
   @Override
   public void registerDocCollectionWatcher(String collection, 
DocCollectionWatcher stateWatcher) {
     // the doc collection will never be changed by this mock
-    // so we just call onStateChanged once with the existing DocCollection 
object an return
+    // so we just call onStateChanged once with the existing DocCollection 
object and return
     stateWatcher.onStateChanged(clusterState.getCollectionOrNull(collection));
   }
 }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/MultiSolrCloudTestCase.java
 
b/solr/test-framework/src/java/org/apache/solr/cloud/MultiSolrCloudTestCase.java
index a621c04fbbb..0ef706b4e0a 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/MultiSolrCloudTestCase.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/MultiSolrCloudTestCase.java
@@ -85,8 +85,7 @@ public abstract class MultiSolrCloudTestCase extends 
SolrTestCaseJ4 {
   protected static void doSetupClusters(
       final String[] clusterIds,
       final Function<String, MiniSolrCloudCluster> createFunc,
-      final BiConsumer<String, MiniSolrCloudCluster> initFunc)
-      throws Exception {
+      final BiConsumer<String, MiniSolrCloudCluster> initFunc) {
 
     for (final String clusterId : clusterIds) {
       assertFalse("duplicate clusterId " + clusterId, 
clusterId2cluster.containsKey(clusterId));
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudAuthTestCase.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudAuthTestCase.java
index b5d9e805922..5f1081e05fb 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudAuthTestCase.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudAuthTestCase.java
@@ -78,9 +78,6 @@ public class SolrCloudAuthTestCase extends SolrCloudTestCase {
   @SuppressWarnings({"rawtypes"})
   public static final Predicate NOT_NULL_PREDICATE = o -> o != null;
 
-  private static final List<String> AUDIT_METRICS_KEYS = 
Arrays.asList("count");
-  private static final List<String> AUDIT_METRICS_TO_COMPARE = 
Arrays.asList("count");
-
   @BeforeClass
   public static void enableMetrics() {
     System.setProperty("metricsEnabled", "true");
@@ -98,8 +95,7 @@ public class SolrCloudAuthTestCase extends SolrCloudTestCase {
       int passThrough,
       int failWrongCredentials,
       int failMissingCredentials,
-      int errors)
-      throws InterruptedException {
+      int errors) {
     String handler = "/authentication/pki";
     String registryName = "solr.node";
     Labels labels =
@@ -137,8 +133,7 @@ public class SolrCloudAuthTestCase extends 
SolrCloudTestCase {
       int passThrough,
       int failWrongCredentials,
       int failMissingCredentials,
-      int errors)
-      throws InterruptedException {
+      int errors) {
     String handler = "/authentication";
     String registryName = "solr.node";
     Labels labels =
@@ -371,8 +366,8 @@ public class SolrCloudAuthTestCase extends 
SolrCloudTestCase {
    *
    * <p>This can be useful in a {@link TimeOut#waitFor} loop to monitor a 
cluster and "wait for" A
    * change in security settings to affect all nodes by comparing the objects 
in the current Map
-   * with the one in use prior to executing some test command. (providing a 
work around for the
-   * security user experienence limitations identified in <a
+   * with the one in use prior to executing some test command. (providing a 
workaround for the
+   * security user experience limitations identified in <a
    * href="https://issues.apache.org/jira/browse/SOLR-13464";>SOLR-13464</a> )
    *
    * @param url A REST url (or any arbitrary String) ending in 
<code>"authentication"</code> or
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudTestCase.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudTestCase.java
index b2499fc7e2a..7f589e48b23 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudTestCase.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/SolrCloudTestCase.java
@@ -115,7 +115,8 @@ public class SolrCloudTestCase extends SolrTestCaseJ4 {
    * @param nodeCount the number of nodes
    */
   protected static MiniSolrCloudCluster.Builder configureCluster(int 
nodeCount) {
-    // By default the MiniSolrCloudCluster being built will randomly (seed 
based) decide which
+    // Default behavior is the MiniSolrCloudCluster being built will randomly 
(seed based) decide
+    // which
     // collection API strategy to use (distributed or Overseer based) and 
whether to use PRS
 
     configurePrsDefault();
@@ -370,9 +371,7 @@ public class SolrCloudTestCase extends SolrTestCaseJ4 {
   protected static Slice getRandomShard(DocCollection collection) {
     List<Slice> shards = new ArrayList<>(collection.getActiveSlices());
     if (shards.size() == 0)
-      fail(
-          "Couldn't get random shard for collection as it has no shards!\n"
-              + collection.toString());
+      fail("Couldn't get random shard for collection as it has no shards!\n" + 
collection);
     Collections.shuffle(shards, random());
     return shards.get(0);
   }
@@ -381,7 +380,7 @@ public class SolrCloudTestCase extends SolrTestCaseJ4 {
   protected static Replica getRandomReplica(Slice slice) {
     List<Replica> replicas = new ArrayList<>(slice.getReplicas());
     if (replicas.size() == 0)
-      fail("Couldn't get random replica from shard as it has no replicas!\n" + 
slice.toString());
+      fail("Couldn't get random replica from shard as it has no replicas!\n" + 
slice);
     Collections.shuffle(replicas, random());
     return replicas.get(0);
   }
@@ -390,12 +389,12 @@ public class SolrCloudTestCase extends SolrTestCaseJ4 {
   protected static Replica getRandomReplica(Slice slice, Predicate<Replica> 
matchPredicate) {
     List<Replica> replicas = new ArrayList<>(slice.getReplicas());
     if (replicas.size() == 0)
-      fail("Couldn't get random replica from shard as it has no replicas!\n" + 
slice.toString());
+      fail("Couldn't get random replica from shard as it has no replicas!\n" + 
slice);
     Collections.shuffle(replicas, random());
     for (Replica replica : replicas) {
       if (matchPredicate.test(replica)) return replica;
     }
-    fail("Couldn't get random replica that matched conditions\n" + 
slice.toString());
+    fail("Couldn't get random replica that matched conditions\n" + slice);
     return null; // just to keep the compiler happy - fail will always throw 
an Exception
   }
 
@@ -476,7 +475,7 @@ public class SolrCloudTestCase extends SolrTestCaseJ4 {
       for (Replica replica : slice.getReplicas()) {
         String coreUrl = replica.getCoreUrl();
         // It seems replica reports its core URL with a trailing slash while 
shard
-        // info returned from the query doesn't. Oh well. We will include 
both, just in case
+        // info returned from the query doesn't. Oh, well. We will include 
both, just in case
         replicaTypeMap.put(coreUrl, replica.getType().toString());
         if (coreUrl.endsWith("/")) {
           replicaTypeMap.put(
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/StoppableIndexingThread.java
 
b/solr/test-framework/src/java/org/apache/solr/cloud/StoppableIndexingThread.java
index 355f6e38c2f..5ed3b89337b 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/StoppableIndexingThread.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/StoppableIndexingThread.java
@@ -192,12 +192,4 @@ public class StoppableIndexingThread extends 
AbstractFullDistribZkTestBase.Stopp
     ureq.add(docs);
     ureq.process(cloudClient);
   }
-
-  public int getNumDeletes() {
-    return numDeletes;
-  }
-
-  public int getNumAdds() {
-    return numAdds;
-  }
 }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
index b18f255e8bf..1b501e52995 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/ZkTestServer.java
@@ -19,17 +19,11 @@ package org.apache.solr.cloud;
 import static org.apache.solr.cloud.SolrZkServer.ZK_WHITELIST_PROPERTY;
 import static org.junit.Assert.assertTrue;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
 import java.lang.invoke.MethodHandles;
 import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -39,7 +33,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicReference;
-import javax.management.JMException;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkNodeProps;
@@ -48,11 +41,9 @@ import org.apache.solr.common.util.ObjectReleaseTracker;
 import org.apache.solr.common.util.Utils;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
 import org.apache.zookeeper.ZooDefs;
 import org.apache.zookeeper.data.Stat;
-import org.apache.zookeeper.jmx.ManagedUtil;
 import org.apache.zookeeper.server.NIOServerCnxnFactory;
 import org.apache.zookeeper.server.Request;
 import org.apache.zookeeper.server.ServerCnxn;
@@ -62,7 +53,6 @@ import org.apache.zookeeper.server.ZKDatabase;
 import org.apache.zookeeper.server.ZooKeeperServer;
 import org.apache.zookeeper.server.command.FourLetterCommands;
 import org.apache.zookeeper.server.persistence.FileTxnSnapLog;
-import org.apache.zookeeper.server.quorum.QuorumPeerConfig.ConfigException;
 import org.apache.zookeeper.test.ClientBase;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -118,23 +108,6 @@ public class ZkTestServer {
     private volatile LimitViolationAction violationReportAction = 
LimitViolationAction.REPORT;
     private volatile WatchLimiter limiter = new WatchLimiter(1, 
LimitViolationAction.IGNORE);
 
-    protected void initializeAndRun(String[] args) throws ConfigException, 
IOException {
-      try {
-        ManagedUtil.registerLog4jMBeans();
-      } catch (JMException e) {
-        log.warn("Unable to register log4j JMX control", e);
-      }
-
-      ServerConfig config = new ServerConfig();
-      if (args.length == 1) {
-        config.parse(args[0]);
-      } else {
-        config.parse(args);
-      }
-
-      runFromConfig(config);
-    }
-
     private class WatchLimit {
       private long limit;
       private final String desc;
@@ -182,13 +155,6 @@ public class ZkTestServer {
         }
       }
 
-      public void updateForFire(WatchedEvent event) {
-        if (log.isDebugEnabled()) {
-          log.debug("Watch fired: {}: {}", desc, event.getPath());
-        }
-        counters.get(event.getPath()).decrementAndGet();
-      }
-
       private String reportLimitViolations() {
         String[] maxKeys = maxCounters.keySet().toArray(new String[0]);
         Arrays.sort(
@@ -245,29 +211,6 @@ public class ZkTestServer {
             + dataLimit.reportLimitViolations()
             + childrenLimit.reportLimitViolations();
       }
-
-      private void updateForFire(WatchedEvent event) {
-        switch (event.getType()) {
-          case None:
-            break;
-          case NodeCreated:
-          case NodeDeleted:
-            statLimit.updateForFire(event);
-            break;
-          case NodeDataChanged:
-            dataLimit.updateForFire(event);
-            break;
-          case NodeChildrenChanged:
-            childrenLimit.updateForFire(event);
-            break;
-          case ChildWatchRemoved:
-            break;
-          case DataWatchRemoved:
-            break;
-          case PersistentWatchRemoved:
-            break;
-        }
-      }
     }
 
     private static class TestZKDatabase extends ZKDatabase {
@@ -658,72 +601,6 @@ public class ZkTestServer {
     ObjectReleaseTracker.release(this);
   }
 
-  public static class HostPort {
-    String host;
-    int port;
-
-    HostPort(String host, int port) {
-      assert !host.contains(":") : host;
-      this.host = host;
-      this.port = port;
-    }
-  }
-
-  /**
-   * Send the 4letterword
-   *
-   * @param host the destination host
-   * @param port the destination port
-   * @param cmd the 4letterword
-   * @return server response
-   */
-  public static String send4LetterWord(String host, int port, String cmd) 
throws IOException {
-    log.info("connecting to {} {}", host, port);
-    BufferedReader reader = null;
-    try (Socket sock = new Socket(host, port)) {
-      OutputStream outstream = sock.getOutputStream();
-      outstream.write(cmd.getBytes(StandardCharsets.US_ASCII));
-      outstream.flush();
-      // this replicates NC - close the output stream before reading
-      sock.shutdownOutput();
-
-      reader =
-          new BufferedReader(
-              new InputStreamReader(sock.getInputStream(), 
StandardCharsets.US_ASCII));
-      StringBuilder sb = new StringBuilder();
-      String line;
-      while ((line = reader.readLine()) != null) {
-        sb.append(line).append("\n");
-      }
-      return sb.toString();
-    } finally {
-      if (reader != null) {
-        reader.close();
-      }
-    }
-  }
-
-  public static List<HostPort> parseHostPortList(String hplist) {
-    log.info("parse host and port list: {}", hplist);
-    ArrayList<HostPort> alist = new ArrayList<>();
-    for (String hp : hplist.split(",")) {
-      int idx = hp.lastIndexOf(':');
-      String host = hp.substring(0, idx);
-      int port;
-      try {
-        port = Integer.parseInt(hp.substring(idx + 1));
-      } catch (RuntimeException e) {
-        throw new RuntimeException("Problem parsing " + hp + e.toString());
-      }
-      alist.add(new HostPort(host, port));
-    }
-    return alist;
-  }
-
-  public int getTheTickTime() {
-    return theTickTime;
-  }
-
   public void setTheTickTime(int theTickTime) {
     this.theTickTime = theTickTime;
   }
@@ -740,22 +617,6 @@ public class ZkTestServer {
     return zkServer.getLimiter();
   }
 
-  public int getMaxSessionTimeout() {
-    return maxSessionTimeout;
-  }
-
-  public int getMinSessionTimeout() {
-    return minSessionTimeout;
-  }
-
-  public void setMaxSessionTimeout(int maxSessionTimeout) {
-    this.maxSessionTimeout = maxSessionTimeout;
-  }
-
-  public void setMinSessionTimeout(int minSessionTimeout) {
-    this.minSessionTimeout = minSessionTimeout;
-  }
-
   void buildZooKeeper(String config, String schema) throws Exception {
     buildZooKeeper(SOLRHOME, config, schema);
   }
@@ -854,6 +715,7 @@ public class ZkTestServer {
     }
   }
 
+  /** Used for debugging */
   protected void printLayout() throws Exception {
     rootClient.printLayoutToStream(System.out);
   }
@@ -873,7 +735,7 @@ public class ZkTestServer {
             "ZkTestServer requires the 'stat' command, temporarily 
manipulating your whitelist");
         System.setProperty(ZK_WHITELIST_PROPERTY, "*");
         FourLetterCommands.resetWhiteList();
-        // This call to isEnabled should force ZK to "re-read" the system 
property in it's static
+        // This call to isEnabled should force ZK to "re-read" the system 
property in its static
         // vrs
         assertTrue(
             "Temporary manipulation of ZK Whitelist didn't work?",
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractBackupRepositoryTest.java
 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractBackupRepositoryTest.java
index 2254c7311a0..af8f5dbc3ce 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractBackupRepositoryTest.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractBackupRepositoryTest.java
@@ -195,7 +195,7 @@ public abstract class AbstractBackupRepositoryTest extends 
SolrTestCaseJ4 {
   }
 
   @Test
-  public void testDirectoryCreationFailsIfParentDoesntExist() throws Exception 
{
+  public void testDirectoryCreationFailsIfParentDoesNotExist() throws 
Exception {
     try (BackupRepository repo = getRepository()) {
       final URI nonExistentParentUri = repo.resolve(getBaseUri(), 
"nonExistentParent");
       final URI nestedUri = repo.resolve(nonExistentParentUri, 
"childDirectoryToCreate");
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractCloudBackupRestoreTestCase.java
 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractCloudBackupRestoreTestCase.java
index 5dc62e94ed2..a54b2af37b3 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractCloudBackupRestoreTestCase.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractCloudBackupRestoreTestCase.java
@@ -64,8 +64,6 @@ public abstract class AbstractCloudBackupRestoreTestCase 
extends SolrCloudTestCa
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   protected static final int NUM_SHARDS = 2; // granted we sometimes shard 
split to get more
-  protected static final int NUM_SPLIT_SHARDS =
-      3; // We always split shard1 so total shards post split will be 3
   protected static final String BACKUPNAME_PREFIX = "mytestbackup";
 
   int replFactor;
@@ -340,19 +338,19 @@ public abstract class AbstractCloudBackupRestoreTestCase 
extends SolrCloudTestCa
     String restoreCollectionName = collectionName + "_restored";
     boolean sameConfig = random().nextBoolean();
 
-    int restoreReplcationFactor = replFactor;
+    int restoreReplicationFactor = replFactor;
     int restoreTlogReplicas = numTlogReplicas;
     int restorePullReplicas = numPullReplicas;
     boolean setExternalReplicationFactor = false;
     if (random().nextBoolean()) { // Override replicationFactor / tLogReplicas 
/ pullReplicas
       setExternalReplicationFactor = true;
       restoreTlogReplicas = TestUtil.nextInt(random(), 0, 1);
-      restoreReplcationFactor = TestUtil.nextInt(random(), 1, 2);
+      restoreReplicationFactor = TestUtil.nextInt(random(), 1, 2);
       restorePullReplicas = TestUtil.nextInt(random(), 0, 1);
     }
     int numShards = backupCollection.getActiveSlices().size();
 
-    int restoreReplFactor = restoreReplcationFactor + restoreTlogReplicas + 
restorePullReplicas;
+    int restoreReplFactor = restoreReplicationFactor + restoreTlogReplicas + 
restorePullReplicas;
 
     CollectionAdminRequest.Restore restore =
         CollectionAdminRequest.restoreCollection(restoreCollectionName, 
backupName)
@@ -361,7 +359,7 @@ public abstract class AbstractCloudBackupRestoreTestCase 
extends SolrCloudTestCa
 
     // explicitly specify the 
replicationFactor/pullReplicas/nrtReplicas/tlogReplicas.
     if (setExternalReplicationFactor) {
-      restore.setReplicationFactor(restoreReplcationFactor);
+      restore.setReplicationFactor(restoreReplicationFactor);
       restore.setTlogReplicas(restoreTlogReplicas);
       restore.setPullReplicas(restorePullReplicas);
     }
@@ -427,11 +425,11 @@ public abstract class AbstractCloudBackupRestoreTestCase 
extends SolrCloudTestCa
 
     assertEquals(
         restoreCollection.toString(),
-        restoreReplcationFactor,
+        restoreReplicationFactor,
         restoreCollection.getReplicationFactor().intValue());
     assertEquals(
         restoreCollection.toString(),
-        restoreReplcationFactor,
+        restoreReplicationFactor,
         restoreCollection.getNumReplicas(Replica.Type.NRT));
     assertEquals(
         restoreCollection.toString(),
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractCollectionsAPIDistributedZkTestBase.java
 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractCollectionsAPIDistributedZkTestBase.java
index 1fe728e757a..d2c5ed6df91 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractCollectionsAPIDistributedZkTestBase.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractCollectionsAPIDistributedZkTestBase.java
@@ -20,7 +20,6 @@ import static 
org.apache.solr.common.cloud.ZkStateReader.CORE_NAME_PROP;
 import static org.apache.solr.common.cloud.ZkStateReader.REPLICATION_FACTOR;
 
 import java.io.IOException;
-import java.lang.invoke.MethodHandles;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
@@ -66,8 +65,6 @@ import org.apache.solr.util.TimeOut;
 import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Tests the Cloud Collections API.
@@ -76,7 +73,6 @@ import org.slf4j.LoggerFactory;
  * creation to subclasses
  */
 public abstract class AbstractCollectionsAPIDistributedZkTestBase extends 
SolrCloudTestCase {
-  private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   @BeforeClass
   public static void setupCluster() {
@@ -604,7 +600,7 @@ public abstract class 
AbstractCollectionsAPIDistributedZkTestBase extends SolrCl
       if (entry.getValue().size() > 1) {
         fail(
             "We have shards using the same indexDir. E.g. shards "
-                + entry.getValue().toString()
+                + entry.getValue()
                 + " all use indexDir "
                 + entry.getKey());
       }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractIncrementalBackupTest.java
 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractIncrementalBackupTest.java
index e5d501b8528..0df483d8b35 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractIncrementalBackupTest.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractIncrementalBackupTest.java
@@ -310,7 +310,7 @@ public abstract class AbstractIncrementalBackupTest extends 
SolrCloudTestCase {
       simpleRestoreAndCheckDocCount(solrClient, backupLocation, backupName);
 
       // test purge backups
-      // purging first since there may corrupted files were uploaded
+      // purging first since there may be corrupted files that were uploaded
       resp =
           CollectionAdminRequest.deleteBackupPurgeUnusedFiles(backupName)
               .setRepositoryName(BACKUP_REPO_NAME)
@@ -638,7 +638,7 @@ public abstract class AbstractIncrementalBackupTest extends 
SolrCloudTestCase {
       this.maxNumberOfBackupToKeep = maxNumberOfBackupToKeep;
     }
 
-    @SuppressWarnings({"rawtypes", "unchecked"})
+    @SuppressWarnings({"unchecked"})
     private void backupThenWait() throws SolrServerException, IOException {
       CollectionAdminRequest.Backup backup =
           CollectionAdminRequest.backupCollection(getCollectionName(), 
backupName)
@@ -661,7 +661,6 @@ public abstract class AbstractIncrementalBackupTest extends 
SolrCloudTestCase {
         Map<String, Object> resp = (Map<String, Object>) 
rsp.getResponse().get("response");
         numBackup++;
         assertEquals(numBackup, resp.get("backupId"));
-        ;
       }
     }
 
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractInstallShardTest.java
 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractInstallShardTest.java
index eae246c0486..d0dce8e9b6d 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractInstallShardTest.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractInstallShardTest.java
@@ -82,7 +82,7 @@ public abstract class AbstractInstallShardTest extends 
SolrCloudTestCase {
   }
 
   @Before
-  public void clearCollsToDelete() {
+  public void clearCollectionsToDelete() {
     collectionsToDelete = new ArrayList<>();
   }
 
@@ -233,7 +233,7 @@ public abstract class AbstractInstallShardTest extends 
SolrCloudTestCase {
     deleteAfterTest(collectionName);
     enableReadOnly(collectionName);
 
-    runParallelShardInstalls(collectionName, multiShardUris);
+    runParallelShardInstalls(collectionName);
 
     assertCollectionHasNumDocs(collectionName, multiShardNumDocs);
   }
@@ -382,8 +382,7 @@ public abstract class AbstractInstallShardTest extends 
SolrCloudTestCase {
         .process(cluster.getSolrClient());
   }
 
-  private void runParallelShardInstalls(String collectionName, URI[] 
dataLocations)
-      throws Exception {
+  private void runParallelShardInstalls(String collectionName) throws 
Exception {
     final SolrClient solrClient = cluster.getSolrClient();
     final List<Callable<Exception>> tasks = new ArrayList<>();
     for (int i = 0; i < multiShardUris.length; i++) {
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cluster/placement/Builders.java 
b/solr/test-framework/src/java/org/apache/solr/cluster/placement/Builders.java
index 7185472b7a9..03cc9522838 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cluster/placement/Builders.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cluster/placement/Builders.java
@@ -325,8 +325,8 @@ public class Builders {
           replicas.add(replicaBuilder);
 
           // No way to specify which replica is the leader. Could be done by 
adding a "*" to the
-          // replica definition for example in the passed shardsReplicas but 
not implementing this
-          // until it is needed :)
+          // replica definition for example in the provided shardsReplicas, 
but not implementing
+          // this until it is needed :)
           if (leader == null && type != Replica.ReplicaType.PULL) {
             leader = replicaBuilder;
           }
@@ -344,7 +344,7 @@ public class Builders {
      * Initializes shard and replica builders for the collection based on 
passed parameters.
      * Replicas are assigned round-robin to the nodes. The shard leader is the 
first NRT replica of
      * each shard (or first TLOG is no NRT). Shard and replica configuration 
can be modified
-     * afterwards, the returned builder hierarchy is a convenient starting 
point.
+     * afterward, the returned builder hierarchy is a convenient starting 
point.
      *
      * @param countShards number of shards to create
      * @param countNrtReplicas number of NRT replicas per shard
@@ -366,7 +366,7 @@ public class Builders {
      * Initializes shard and replica builders for the collection based on 
passed parameters.
      * Replicas are assigned round-robin to the nodes. The shard leader is the 
first NRT replica of
      * each shard (or first TLOG is no NRT). Shard and replica configuration 
can be modified
-     * afterwards, the returned builder hierarchy is a convenient starting 
point.
+     * afterward, the returned builder hierarchy is a convenient starting 
point.
      *
      * @param countShards number of shards to create
      * @param countNrtReplicas number of NRT replicas per shard
diff --git 
a/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java 
b/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java
index 4ba58c5645b..ba5a82112d4 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java
@@ -89,7 +89,7 @@ public class MockDirectoryFactory extends 
EphemeralDirectoryFactory {
   @Override
   public boolean isAbsolute(String path) {
     // TODO: kind of a hack - we don't know what the delegate is, so
-    // we treat it as file based since this works on most ephem impls
+    // we treat it as file based since this works on most ephemeral 
implementations
     return Path.of(path).isAbsolute();
   }
 }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/core/MockFSDirectoryFactory.java 
b/solr/test-framework/src/java/org/apache/solr/core/MockFSDirectoryFactory.java
index 30f8cdd266c..6f6eb5b9de8 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/core/MockFSDirectoryFactory.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/core/MockFSDirectoryFactory.java
@@ -51,7 +51,7 @@ public class MockFSDirectoryFactory extends 
StandardDirectoryFactory {
   @Override
   public boolean isAbsolute(String path) {
     // TODO: kind of a hack - we don't know what the delegate is, so
-    // we treat it as file based since this works on most ephem impls
+    // we treat it as file based since this works on most ephemeral 
implementations
     return Path.of(path).isAbsolute();
   }
 
diff --git 
a/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java 
b/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java
index 86a379e248e..522ec25491e 100644
--- a/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java
+++ b/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java
@@ -112,7 +112,6 @@ public class JettySolrRunner {
   volatile FilterHolder dispatchFilter;
   volatile FilterHolder debugFilter;
 
-  private boolean waitOnSolr = false;
   private int jettyPort = -1;
 
   private final JettyConfig config;
@@ -370,7 +369,7 @@ public class JettySolrRunner {
           new CoreContainerProvider() {
             @Override
             public void contextInitialized(ServletContextEvent event) {
-              // awkwardly, parts of Solr want to know the port but we don't 
know that until now
+              // awkwardly, parts of Solr want to know the port, but we don't 
know that until now
               jettyPort = getFirstConnectorPort();
               int port = jettyPort;
               if (proxyPort != -1) port = proxyPort;
@@ -514,7 +513,6 @@ public class JettySolrRunner {
 
       // if started before, make a new server
       if (startedBefore) {
-        waitOnSolr = false;
         init(port);
       } else {
         startedBefore = true;
@@ -701,7 +699,7 @@ public class JettySolrRunner {
     }
   }
 
-  public void dumpCoresInfo(PrintStream pw) throws IOException {
+  public void dumpCoresInfo(PrintStream pw) {
     if (getCoreContainer() != null) {
       final var coreStatusReq = new CoresApi.GetAllCoreStatus();
       coreStatusReq.setIndexInfo(true);
@@ -755,7 +753,7 @@ public class JettySolrRunner {
   }
 
   /**
-   * Sets the port of a local socket proxy that sits infront of this server; 
if set then all client
+   * Sets the port of a local socket proxy that sits in front of this server; 
if set then all client
    * traffic will flow through the proxy, giving us the ability to simulate 
network partitions very
    * easily.
    */
@@ -767,9 +765,7 @@ public class JettySolrRunner {
   public URL getBaseUrl() {
     try {
       return new URI(protocol, null, host, jettyPort, "/solr", null, 
null).toURL();
-    } catch (URISyntaxException e) {
-      throw new RuntimeException(e);
-    } catch (MalformedURLException e) {
+    } catch (URISyntaxException | MalformedURLException e) {
       throw new RuntimeException(e);
     }
   }
@@ -777,9 +773,7 @@ public class JettySolrRunner {
   public URL getBaseURLV2() {
     try {
       return new URI(protocol, null, host, jettyPort, "/api", null, 
null).toURL();
-    } catch (MalformedURLException e) {
-      throw new RuntimeException(e);
-    } catch (URISyntaxException e) {
+    } catch (MalformedURLException | URISyntaxException e) {
       throw new RuntimeException(e);
     }
   }
@@ -791,9 +785,7 @@ public class JettySolrRunner {
   public URL getProxyBaseUrl() {
     try {
       return new URI(protocol, null, host, getLocalPort(), "/solr", null, 
null).toURL();
-    } catch (MalformedURLException e) {
-      throw new RuntimeException(e);
-    } catch (URISyntaxException e) {
+    } catch (MalformedURLException | URISyntaxException e) {
       throw new RuntimeException(e);
     }
   }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/handler/BackupStatusChecker.java 
b/solr/test-framework/src/java/org/apache/solr/handler/BackupStatusChecker.java
index 6210fe19477..ca4ecde51d0 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/handler/BackupStatusChecker.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/handler/BackupStatusChecker.java
@@ -61,7 +61,7 @@ public final class BackupStatusChecker {
   }
 
   /**
-   * Convinience wrapper
+   * Convenience wrapper
    *
    * @see #waitForBackupSuccess(String,TimeOut)
    */
@@ -72,7 +72,7 @@ public final class BackupStatusChecker {
   }
 
   /**
-   * Polls the replication handler's status until the it reports that the 
specified backupName is
+   * Polls the replication handler's status until it reports that the 
specified backupName is
    * completed as a <code>"success"</code> (in which case the method returns 
the directoryName of
    * the backup) or either <code>"exception"</code> is reported or the 
<code>timeOut</code> expires
    * (in either case an assertion is thrown)
@@ -105,7 +105,7 @@ public final class BackupStatusChecker {
   }
 
   /**
-   * Convinience wrapper
+   * Convenience wrapper
    *
    * @see #waitForDifferentBackupDir(String,TimeOut)
    */
@@ -117,20 +117,19 @@ public final class BackupStatusChecker {
   }
 
   /**
-   * Polls the replication handler's status until the it reports that 
<em>any</em> backup has
-   * completed as a <code>"success"</code> with a different 
<code>"directoryName"</code> then the
-   * one specified (in which case the method returns the new directoryName) or 
either an <code>
+   * Polls the replication handler's status until it reports that <em>any</em> 
backup has completed
+   * as a <code>"success"</code> with a different <code>"directoryName"</code> 
then the one
+   * specified (in which case the method returns the new directoryName) or 
either an <code>
    * "exception"</code> is reported or the <code>timeOut</code> expires (in 
either case an assertion
    * is thrown)
    *
    * <p><b>NOTE:</b> this method is <em>NOT</em> suitable/safe to use in a 
test where multiple
    * backups are being taken/deleted concurrently, because the replication 
handler API provides no
-   * reliable way to determine if the most recently reported status to the a 
particular backup
-   * request.
+   * reliable way to determine if the most recently reported status to a 
particular backup request.
    *
    * @param directoryName to compare to, may be null
    * @param timeOut limiting how long we wait
-   * @return the (new) directoryName of the latests successful backup
+   * @return the (new) directoryName of the latest successful backup
    * @see #checkBackupSuccess()
    */
   public String waitForDifferentBackupDir(final String directoryName, final 
TimeOut timeOut)
@@ -154,17 +153,16 @@ public final class BackupStatusChecker {
   }
 
   /**
-   * Does a single check of the replication handler's status to determine if 
the mostrecently
+   * Does a single check of the replication handler's status to determine if 
the most recently
    * completed backup was a success. Throws a test assertion failure if any 
<code>"exception"</code>
    * message is ever encountered (The Replication Handler API does not make it 
possible to know
    * <em>which</em> backup this exception was related to)
    *
    * <p><b>NOTE:</b> this method is <em>NOT</em> suitable/safe to use in a 
test where multiple
    * backups are being taken/deleted concurrently, because the replication 
handler API provides no
-   * reliable way to determine if the most recently reported status to the a 
particular backup
-   * request.
+   * reliable way to determine if the most recently reported status to a 
particular backup request.
    *
-   * @return the "directoryName" of the backup if the response indicates that 
a is completed
+   * @return the "directoryName" of the backup if the response indicates that 
is completed
    *     successfully, otherwise null
    */
   public String checkBackupSuccess() throws Exception {
@@ -187,7 +185,7 @@ public final class BackupStatusChecker {
     return _checkBackupSuccess(backupName);
   }
 
-  /** Helper method that works with either named or unnamemed backups */
+  /** Helper method that works with either named or unnamed backups */
   private String _checkBackupSuccess(final String backupName) throws Exception 
{
     final String label = (null == backupName ? "latest backup" : backupName);
     final SimpleSolrResponse rsp =
@@ -220,7 +218,7 @@ public final class BackupStatusChecker {
   }
 
   /**
-   * Convinience wrapper
+   * Convenience wrapper
    *
    * @see #waitForBackupDeletionSuccess(String,TimeOut)
    */
@@ -231,7 +229,7 @@ public final class BackupStatusChecker {
   }
 
   /**
-   * Polls the replication handler's status until the it reports that the 
specified backupName is
+   * Polls the replication handler's status until it reports that the 
specified backupName is
    * deleted or either <code>"Unable to delete"</code> status is reported or 
the <code>timeOut
    * </code> expires (in either case an assertion is thrown)
    *
@@ -246,7 +244,7 @@ public final class BackupStatusChecker {
    */
   public void waitForBackupDeletionSuccess(final String backupName, final 
TimeOut timeOut)
       throws Exception {
-    assertNotNull("backumpName must not be null", backupName);
+    assertNotNull("backupName must not be null", backupName);
     while (!timeOut.hasTimedOut()) {
       if (checkBackupDeletionSuccess(backupName)) {
         return;
@@ -270,7 +268,7 @@ public final class BackupStatusChecker {
    * @see #waitForBackupDeletionSuccess(String,TimeOut)
    */
   public boolean checkBackupDeletionSuccess(final String backupName) throws 
Exception {
-    assertNotNull("backumpName must not be null", backupName);
+    assertNotNull("backupName must not be null", backupName);
     final SimpleSolrResponse rsp =
         new GenericSolrRequest(
                 GenericSolrRequest.METHOD.GET,
diff --git 
a/solr/test-framework/src/java/org/apache/solr/handler/component/TrackingShardHandlerFactory.java
 
b/solr/test-framework/src/java/org/apache/solr/handler/component/TrackingShardHandlerFactory.java
index d8c1e039f78..cfafc590cd1 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/handler/component/TrackingShardHandlerFactory.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/handler/component/TrackingShardHandlerFactory.java
@@ -157,7 +157,6 @@ public class TrackingShardHandlerFactory extends 
HttpShardHandlerFactory {
         ShardHandlerFactory factory = container.getShardHandlerFactory();
         assert factory instanceof TrackingShardHandlerFactory
             : "not a TrackingShardHandlerFactory: " + factory.getClass();
-        @SuppressWarnings("resource")
         TrackingShardHandlerFactory trackingShardHandlerFactory =
             (TrackingShardHandlerFactory) factory;
         trackingShardHandlerFactory.setTrackingQueue(queue);
diff --git 
a/solr/test-framework/src/java/org/apache/solr/search/CallerSpecificQueryLimit.java
 
b/solr/test-framework/src/java/org/apache/solr/search/CallerSpecificQueryLimit.java
index 559a798296b..d78cb4fbad8 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/search/CallerSpecificQueryLimit.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/search/CallerSpecificQueryLimit.java
@@ -16,12 +16,9 @@
  */
 package org.apache.solr.search;
 
-import java.lang.invoke.MethodHandles;
 import java.util.Collection;
 import java.util.Set;
 import org.apache.solr.util.CallerMatcher;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Helper class to simulate query timeouts at specific points in various 
components that call {@link
@@ -29,8 +26,6 @@ import org.slf4j.LoggerFactory;
  * information and enforce the count limits.
  */
 public class CallerSpecificQueryLimit implements QueryLimit {
-  private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
   private final CallerMatcher callerMatcher;
 
   /**
diff --git 
a/solr/test-framework/src/java/org/apache/solr/search/facet/DebugAgg.java 
b/solr/test-framework/src/java/org/apache/solr/search/facet/DebugAgg.java
index b5c25e6a67d..fe57495e6a9 100644
--- a/solr/test-framework/src/java/org/apache/solr/search/facet/DebugAgg.java
+++ b/solr/test-framework/src/java/org/apache/solr/search/facet/DebugAgg.java
@@ -38,14 +38,12 @@ class DebugAgg extends AggValueSource {
       parses.incrementAndGet();
       final String what = fp.hasMoreArguments() ? fp.parseId() : "wrap";
 
-      switch (what) {
-        case "wrap":
-          return new DebugAgg(fp);
-        case "numShards":
-          return new DebugAggNumShards();
-        default: /* No-Op */
-      }
-      throw new RuntimeException("No idea what to do with " + what);
+      /* No-Op */
+      return switch (what) {
+        case "wrap" -> new DebugAgg(fp);
+        case "numShards" -> new DebugAggNumShards();
+        default -> throw new RuntimeException("No idea what to do with " + 
what);
+      };
     }
   }
 
@@ -172,7 +170,7 @@ class DebugAgg extends AggValueSource {
 
     @Override
     public SlotAcc createSlotAcc(FacetContext fcontext, long numDocs, int 
numSlots) {
-      return new NumShardsAcc(fcontext, numDocs, numSlots);
+      return new NumShardsAcc(fcontext);
     }
 
     @Override
@@ -186,7 +184,7 @@ class DebugAgg extends AggValueSource {
     }
 
     public static class NumShardsAcc extends SlotAcc {
-      public NumShardsAcc(FacetContext fcontext, long numDocs, int numSlots) {
+      public NumShardsAcc(FacetContext fcontext) {
         super(fcontext);
       }
 
diff --git 
a/solr/test-framework/src/java/org/apache/solr/update/processor/RecordingUpdateProcessorFactory.java
 
b/solr/test-framework/src/java/org/apache/solr/update/processor/RecordingUpdateProcessorFactory.java
index 3bac27571d2..7e3d8c42642 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/update/processor/RecordingUpdateProcessorFactory.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/update/processor/RecordingUpdateProcessorFactory.java
@@ -61,7 +61,6 @@ public final class RecordingUpdateProcessorFactory extends 
UpdateRequestProcesso
   }
 
   @Override
-  @SuppressWarnings("resource")
   public synchronized UpdateRequestProcessor getInstance(
       SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor 
next) {
     return recording ? new RecordingUpdateRequestProcessor(commandQueue, next) 
: next;
diff --git 
a/solr/test-framework/src/java/org/apache/solr/update/processor/TrackingUpdateProcessorFactory.java
 
b/solr/test-framework/src/java/org/apache/solr/update/processor/TrackingUpdateProcessorFactory.java
index 89efbdbe699..96f42e3b379 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/update/processor/TrackingUpdateProcessorFactory.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/update/processor/TrackingUpdateProcessorFactory.java
@@ -99,7 +99,6 @@ public final class TrackingUpdateProcessorFactory extends 
UpdateRequestProcessor
   }
 
   @Override
-  @SuppressWarnings("resource")
   public synchronized UpdateRequestProcessor getInstance(
       SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor 
next) {
     final List<UpdateCommand> commands = groupToCommands.get(group);
diff --git 
a/solr/test-framework/src/java/org/apache/solr/update/processor/UpdateProcessorTestBase.java
 
b/solr/test-framework/src/java/org/apache/solr/update/processor/UpdateProcessorTestBase.java
index 97227e5e3a0..5afa8e6b0b7 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/update/processor/UpdateProcessorTestBase.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/update/processor/UpdateProcessorTestBase.java
@@ -66,7 +66,7 @@ public class UpdateProcessorTestBase extends SolrTestCaseJ4 {
 
       UpdateRequestProcessor processor = pc.createProcessor(req, rsp);
       if (null != processor) {
-        // test chain might be empty or short circuited.
+        // test chain might be empty or short-circuited.
         processor.processAdd(cmd);
       }
 
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/BadZookeeperThreadsFilter.java
 
b/solr/test-framework/src/java/org/apache/solr/util/BadZookeeperThreadsFilter.java
deleted file mode 100644
index c04100d60a4..00000000000
--- 
a/solr/test-framework/src/java/org/apache/solr/util/BadZookeeperThreadsFilter.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.util;
-
-import com.carrotsearch.randomizedtesting.ThreadFilter;
-
-public class BadZookeeperThreadsFilter implements ThreadFilter {
-
-  @Override
-  public boolean reject(Thread t) {
-    String name = t.getName();
-
-    StackTraceElement[] stack = t.getStackTrace();
-    if (name.startsWith("Thread-")
-        && stack.length > 1
-        && stack[stack.length - 
2].getClassName().equals("org.apache.zookeeper.Login$1")) {
-      return true; // see ZOOKEEPER-2100
-    }
-
-    return false;
-  }
-}
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java 
b/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java
index 91b411168c1..c88d7ba690a 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java
@@ -117,7 +117,7 @@ public abstract class BaseTestHarness {
   }
 
   /**
-   * A helper that creates an xml &lt;doc&gt; containing all of the fields and 
values specified
+   * A helper that creates a xml &lt;doc&gt; containing all fields and values 
specified
    *
    * @param fieldsAndValues 0 and Even numbered args are fields names odds are 
field values.
    */
@@ -185,7 +185,7 @@ public abstract class BaseTestHarness {
   }
 
   /**
-   * Helper that returns an &lt;optimize&gt; String with optional key/val 
pairs.
+   * Helper that returns a &lt;optimize&gt; String with optional key/val pairs.
    *
    * @param args 0 and Even numbered args are params, Odd numbered args are 
values.
    */
@@ -204,7 +204,7 @@ public abstract class BaseTestHarness {
   }
 
   /**
-   * Helper that returns an &lt;commit&gt; String with optional key/val pairs.
+   * Helper that returns a &lt;commit&gt; String with optional key/val pairs.
    *
    * @param args 0 and Even numbered args are params, Odd numbered args are 
values.
    */
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/CallerMatcher.java 
b/solr/test-framework/src/java/org/apache/solr/util/CallerMatcher.java
index 22030d357e3..dc6ba4b49af 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/CallerMatcher.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/CallerMatcher.java
@@ -72,7 +72,7 @@ public class CallerMatcher {
    *
    * @param callerExprs list of expressions in the format of <code>
    *     ( simpleClassName[.methodName] | * )[:NNN]</code>. If the list is 
empty or null then the
-   *     first call to {@link #checkCaller()} ()} from any caller will match.
+   *     first call to {@link #checkCaller()} from any caller will match.
    */
   public CallerMatcher(Collection<String> callerExprs, Collection<String> 
excludeExprs) {
     for (String callerExpr : callerExprs) {
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/DirectoryUtil.java 
b/solr/test-framework/src/java/org/apache/solr/util/DirectoryUtil.java
index 6a341dcecdd..d3c74b5d386 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/DirectoryUtil.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/DirectoryUtil.java
@@ -34,7 +34,7 @@ public class DirectoryUtil {
    * </pre>
    *
    * will copy the contents of src directly into dst. This will not create a 
new "src" folder inside
-   * of dst.
+   * the dst.
    */
   public static void copyDirectoryContents(final Path source, final Path 
destination)
       throws IOException {
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/ErrorLogMuter.java 
b/solr/test-framework/src/java/org/apache/solr/util/ErrorLogMuter.java
index 4de7e2ec1cf..e02fadd460f 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/ErrorLogMuter.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/ErrorLogMuter.java
@@ -50,13 +50,14 @@ import org.apache.solr.common.util.SuppressForbidden;
  * Throwable#getCause}es of an included <code>Throwable</code>.
  *
  * <p>Matching ERROR messages are "muted" by filtering them out of the ROOT 
logger. Any Appenders
- * attached to more specific Loggers may still include these "muted" ERRROR 
messages.
+ * attached to more specific Loggers may still include these "muted" ERROR 
messages.
  */
 @SuppressForbidden(
     reason = "We need to use log4J2 classes directly to check that the 
ErrorLogMuter is working")
 public final class ErrorLogMuter implements Closeable, AutoCloseable {
 
-  // far easier to use FQN for our (one) slf4j Logger then to use a FQN every 
time we refe to log4j2
+  // far easier to use FQN for our (one) slf4j Logger then to use a FQN every 
time we refer to
+  // log4j2
   // Logger
   private static final org.slf4j.Logger log =
       org.slf4j.LoggerFactory.getLogger(
@@ -69,7 +70,7 @@ public final class ErrorLogMuter implements Closeable, 
AutoCloseable {
    */
   private static final AtomicInteger ID_GEN = new AtomicInteger(0);
 
-  /** generate a unique name for each muter to use in it's own lifecycle 
logging */
+  /** generate a unique name for each muter to use in its own lifecycle 
logging */
   private static String createName(final String type) {
     return MethodHandles.lookup().lookupClass().getSimpleName()
         + "-"
@@ -134,8 +135,8 @@ public final class ErrorLogMuter implements Closeable, 
AutoCloseable {
   }
 
   /**
-   * The number of ERROR messages muted (by this instance) so far in it's 
lifecycle. This number may
-   * be less then the number of ERROR messages expected if multiple 
ErrorLogMuter objects are in use
+   * The number of ERROR messages muted (by this instance) so far in its 
lifecycle. This number may
+   * be less than the number of ERROR messages expected if multiple 
ErrorLogMuter objects are in use
    * which match the same ERROR log messages
    */
   public int getCount() {
@@ -144,11 +145,11 @@ public final class ErrorLogMuter implements Closeable, 
AutoCloseable {
 
   @Override
   public void close() {
-    if (!closed.getAndSet(true)) { // Don't muck with log4j if we accidently 
get a double close
+    if (!closed.getAndSet(true)) { // Don't muck with log4j if we accidentally 
get a double close
       CTX.getConfiguration().getRootLogger().removeFilter(rootFilter);
       CTX.updateLoggers();
       if (log.isInfoEnabled()) {
-        log.info("Closing {} after mutting {} log messages", this.name, 
getCount());
+        log.info("Closing {} after muting {} log messages", this.name, 
getCount());
       }
     }
   }
@@ -196,7 +197,8 @@ public final class ErrorLogMuter implements Closeable, 
AutoCloseable {
 
     // NOTE: This is inspired by log4j's RegexFilter, but with an eye to being 
more "garbage-free"
     // friendly
-    // Oddly, StringMatchFilter does things differnetly and acts like it needs 
to (re?) format msgs
+    // Oddly, StringMatchFilter does things differently and acts like it needs 
to (re?) format
+    // messages
     // when params are provided
     // Since RegexFilter has tests, and StringMatchFilter doesn't, we assume 
RegexFilter knows what
     // it's doing...
@@ -373,7 +375,7 @@ public final class ErrorLogMuter implements Closeable, 
AutoCloseable {
     public Result filter(LogEvent event) {
       // NOTE: For our usage, we're not worried about needing to filter 
LogEvents rom remote JVMs
       // with ThrowableProxy
-      // stand ins for Throwabls that don't exist in our classloader...
+      // stand ins for Throwables that don't exist in our classloader...
       return doFilter(
           event.getLevel(), event.getMessage().getFormattedMessage(), 
event.getThrown());
     }
diff --git a/solr/test-framework/src/java/org/apache/solr/util/LogListener.java 
b/solr/test-framework/src/java/org/apache/solr/util/LogListener.java
index 17039025517..0646d103f0d 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/LogListener.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/LogListener.java
@@ -52,7 +52,7 @@ import org.apache.solr.common.util.SuppressForbidden;
  *
  * <p><code>
  * // simplest possible usage...
- * // Listen for any erors from the SolrCore logger, and assert that there are 
none...
+ * // Listen for any errors from the SolrCore logger, and assert that there 
are none...
  * try (LogListener errLog = LogListener.error(SolrCore.class)) {
  *   // ... some test code ...
  *
@@ -64,7 +64,7 @@ import org.apache.solr.common.util.SuppressForbidden;
  * try (LogListener secWarnLog = 
LogListener.warn("org.apache.solr.security").substring("PKI")) {
  *   // ... some test code ...
  *
- *   // convinience method for only dealing with Message String of the LogEvent
+ *   // convenience method for only dealing with Message String of the LogEvent
  *   assertThat(secWarnLog.pollMessage(), containsString("hoss"));
  *   assertThat(secWarnLog.getQueue().isEmpty()); // no other WARNings 
matching PKI
  *
@@ -78,9 +78,9 @@ import org.apache.solr.common.util.SuppressForbidden;
  * </code>
  *
  * <p>Each <code>LogListener</code> captures &amp; queues matching Log events 
until it is {@link
- * #close()}ed. By default the Queue is bounded at a max capacity of 100. 
Regardless of what Queue
- * is used, if a Log event can't be queued (due to capacity limiting), or if 
events are still left
- * in the Queue when the listener is closed, then the {@link #close()} method 
will cause a test
+ * #close()}ed. The default Queue is bounded at a max capacity of 100. 
Regardless of what Queue is
+ * used, if a Log event can't be queued (due to capacity limiting), or if 
events are still left in
+ * the Queue when the listener is closed, then the {@link #close()} method 
will cause a test
  * failure.
  *
  * <p>Filtering methods such {@link #substring} and {@link #regex} can be used 
to restrict which Log
@@ -97,7 +97,8 @@ import org.apache.solr.common.util.SuppressForbidden;
 @SuppressForbidden(reason = "We need to use log4J2 classes directly")
 public final class LogListener implements Closeable, AutoCloseable {
 
-  // far easier to use FQN for our (one) slf4j Logger then to use a FQN every 
time we refe to log4j2
+  // far easier to use FQN for our (one) slf4j Logger then to use a FQN every 
time we refer to
+  // log4j2
   // Logger
   private static final org.slf4j.Logger log =
       org.slf4j.LoggerFactory.getLogger(
@@ -110,7 +111,7 @@ public final class LogListener implements Closeable, 
AutoCloseable {
    */
   private static final AtomicInteger ID_GEN = new AtomicInteger(0);
 
-  /** generate a unique name for each instance to use in it's own lifecycle 
logging */
+  /** generate a unique name for each instance to use in its own lifecycle 
logging */
   private static String createName(final Level level) {
     return MethodHandles.lookup().lookupClass().getSimpleName()
         + "-"
@@ -217,8 +218,9 @@ public final class LogListener implements Closeable, 
AutoCloseable {
     }
 
     // Note: we don't just pass our level to addAppender, because that would 
only require it be "as
-    // specifc"
-    // we use a wrapper that requres an exact level match (and other 
predicates can be added to this
+    // specific"
+    // we use a wrapper that requires an exact level match (and other 
predicates can be added to
+    // this
     // filter later)...
     this.filter = new MutablePredicateFilter(level);
     this.loggerAppender = new QueueAppender(name);
@@ -229,7 +231,7 @@ public final class LogListener implements Closeable, 
AutoCloseable {
 
   @Override
   public void close() {
-    if (!closed.getAndSet(true)) { // Don't muck with log4j if we accidently 
get a double close
+    if (!closed.getAndSet(true)) { // Don't muck with log4j if we accidentally 
get a double close
       final LoggerConfig loggerConfig = 
CTX.getConfiguration().getLoggerConfig(loggerName);
       loggerConfig.removeAppender(loggerAppender.getName());
       if (null != resetLevelWhenDone) {
@@ -243,7 +245,7 @@ public final class LogListener implements Closeable, 
AutoCloseable {
       }
       assertEquals(
           this.name
-              + " processed log events that it could not record beause queue 
capacity was exceeded",
+              + " processed log events that it could not record because queue 
capacity was exceeded",
           0,
           loggerAppender.getNumCapacityExceeded());
       assertEquals(
@@ -364,7 +366,7 @@ public final class LogListener implements Closeable, 
AutoCloseable {
    * Convenience method for tests that want to assert things about the 
(formated) message string at
    * the head of the queue, waiting up to the specified timeout for the 
message to arrive.
    *
-   * @param timeout the duation value
+   * @param timeout the duration value
    * @param unit the duration unit
    * @return the formatted message string of head of the queue, or null if the 
queue remained empty
    *     until the specified timeout.
@@ -381,7 +383,7 @@ public final class LogListener implements Closeable, 
AutoCloseable {
   }
 
   /**
-   * The total number of Log events so far processed by this instance, 
regardless of wether they
+   * The total number of Log events so far processed by this instance, 
regardless of whether they
    * have already been removed from the queue, or if they could not be added 
to the queue due to
    * capacity restrictions.
    */
@@ -589,7 +591,7 @@ public final class LogListener implements Closeable, 
AutoCloseable {
     public Result filter(LogEvent event) {
       // NOTE: For our usage, we're not worried about needing to filter 
LogEvents rom remote JVMs
       // with ThrowableProxy
-      // stand ins for Throwabls that don't exist in our classloader...
+      // stand ins for Throwables that don't exist in our classloader...
       return doFilter(
           event.getLevel(), event.getMessage().getFormattedMessage(), 
event.getThrown());
     }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/MockCoreContainer.java 
b/solr/test-framework/src/java/org/apache/solr/util/MockCoreContainer.java
deleted file mode 100644
index 06fcc1796be..00000000000
--- a/solr/test-framework/src/java/org/apache/solr/util/MockCoreContainer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.util;
-
-import java.nio.file.Path;
-import java.util.Collections;
-import org.apache.solr.core.CoreContainer;
-import org.apache.solr.core.CoreDescriptor;
-
-public class MockCoreContainer extends CoreContainer {
-  public static class MockCoreDescriptor extends CoreDescriptor {
-    public MockCoreDescriptor() {
-      super("mock", Path.of("path").toAbsolutePath(), Collections.emptyMap(), 
null, null);
-    }
-  }
-
-  public MockCoreContainer() {
-    super(new Object());
-  }
-
-  @Override
-  public Path getCoreRootDirectory() {
-    return Path.of("coreroot");
-  }
-}
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/NotSecurePseudoRandomSpi.java
 
b/solr/test-framework/src/java/org/apache/solr/util/NotSecurePseudoRandomSpi.java
index a5e0bc42a91..b5441d350c6 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/util/NotSecurePseudoRandomSpi.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/util/NotSecurePseudoRandomSpi.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.util;
 
-import java.security.SecureRandomParameters;
 import java.security.SecureRandomSpi;
 import java.util.Random;
 import java.util.concurrent.ThreadLocalRandom;
@@ -24,7 +23,7 @@ import java.util.concurrent.ThreadLocalRandom;
 /**
  * A mocked up instance of SecureRandom that just uses {@link Random} under 
the covers. This is to
  * prevent blocking issues that arise in platform default SecureRandom 
instances due to too many
- * instances / not enough random entropy. Tests do not need secure SSL.
+ * instances / not enough random entropy. Tests do not need to use a secure 
SSL.
  */
 public class NotSecurePseudoRandomSpi extends SecureRandomSpi {
 
@@ -42,47 +41,19 @@ public class NotSecurePseudoRandomSpi extends 
SecureRandomSpi {
   }
 
   /**
-   * Helper method that can be used to fill an array with non-zero data. 
(Attempted workarround of
+   * Helper method that can be used to fill an array with non-zero data. 
(Attempted workaround of
    * Solaris SSL Padding bug: SOLR-9068)
    */
-  private static final byte[] fillData(byte[] data) {
+  private static void fillData(byte[] data) {
     ThreadLocalRandom.current().nextBytes(data);
-    return data;
   }
 
   public NotSecurePseudoRandomSpi() {
     super();
   }
 
-  /** returns a new byte[] filled with static data */
-  public byte[] generateSeed(int numBytes) {
-    return fillData(new byte[numBytes]);
-  }
-
   /** fills the byte[] with static data */
   public void nextBytes(byte[] bytes) {
     fillData(bytes);
   }
-
-  public void nextBytes(byte[] bytes, SecureRandomParameters params) {
-    fillData(bytes);
-  }
-
-  /** NOOP */
-  public void setSeed(byte[] seed) {
-    /* NOOP */
-  }
-
-  /** NOOP */
-  public void setSeed(long seed) {
-    /* NOOP */
-  }
-
-  public void reseed() {
-    /* NOOP */
-  }
-
-  public void reseed(SecureRandomParameters params) {
-    /* NOOP */
-  }
 }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/QueryMatchers.java 
b/solr/test-framework/src/java/org/apache/solr/util/QueryMatchers.java
index bbe78b2027c..a5b236a7917 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/QueryMatchers.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/QueryMatchers.java
@@ -58,7 +58,7 @@ public class QueryMatchers {
 
   /**
    * Matches is a Query object's toString result is equal to this query 
string. A useful shortcut
-   * when constructing complex queries with deterministic string repr
+   * when constructing complex queries with deterministic string 
representation.
    *
    * <p>Note: Do not use this in place of DisjunctionMaxQuery, but safe to use 
for the disjunct
    * clauses
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/RandomizeSSL.java 
b/solr/test-framework/src/java/org/apache/solr/util/RandomizeSSL.java
index 475f49d6aec..54e19285363 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/RandomizeSSL.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/RandomizeSSL.java
@@ -42,12 +42,12 @@ public @interface RandomizeSSL {
   // we don't choose ssl that often by default because of SOLR-5776
   public static final double DEFAULT_ODDS = 0.2D;
 
-  /** Comment to inlcude when logging details of SSL randomization */
+  /** Comment to include when logging details of SSL randomization */
   public String reason() default "";
 
   /**
    * Odds (as ratio relative to 1) that SSL should be selected in a typical 
run. Must either be
-   * betwen 0.0 and 1.0 (inclusively) or NaN in which case a sensible should 
be used. Actual Odds
+   * between 0.0 and 1.0 (inclusively) or NaN in which case a sensible should 
be used. Actual Odds
    * used for randomization may be higher depending on runner options such as 
<code>tests.multiplier
    * </code> or <code>tests.nightly</code>
    *
@@ -59,7 +59,7 @@ public @interface RandomizeSSL {
 
   /**
    * Odds (as ratio relative to 1) that SSL should be selected in a typical 
run. Must either be
-   * betwen 0.0 and 1.0 (inclusively) or NaN in which case the effective value 
of {@link #ssl}
+   * between 0.0 and 1.0 (inclusively) or NaN in which case the effective 
value of {@link #ssl}
    * should be used. Actual Odds used for randomization may be higher 
depending on runner options
    * such as <code>tests.multiplier</code> or <code>tests.nightly</code>
    *
@@ -143,14 +143,14 @@ public @interface RandomizeSSL {
 
       assert 0 < multiplier;
 
-      // negate the odds so we can then divide it by our multipling factors
+      // negate the odds so we can then divide it by our multiplying factors
       // to increase the final odds
       return 1.0D
           - ((1.0D - declaredOdds) / ((nightly ? 1.1D : 1.0D) * (1.0D + 
Math.log(multiplier))));
     }
 
     /** Returns an SSLRandomizer suitable for the specified (test) class */
-    public static final SSLRandomizer getSSLRandomizerForClass(Class<?> clazz) 
{
+    public static SSLRandomizer getSSLRandomizerForClass(Class<?> clazz) {
 
       final SuppressSSL suppressSSL = clazz.getAnnotation(SuppressSSL.class);
       if (null != suppressSSL) {
@@ -172,24 +172,18 @@ public @interface RandomizeSSL {
       final double def = Double.isNaN(randomizeSSL.value()) ? DEFAULT_ODDS : 
randomizeSSL.value();
       if (def < 0.0D || 1.0D < def) {
         throw new IllegalArgumentException(
-            clazz.getName()
-                + ": default value is not a ratio between 0 and 1: "
-                + randomizeSSL.toString());
+            clazz.getName() + ": default value is not a ratio between 0 and 1: 
" + randomizeSSL);
       }
       final double ssl = Double.isNaN(randomizeSSL.ssl()) ? def : 
randomizeSSL.ssl();
       if (ssl < 0.0D || 1.0D < ssl) {
         throw new IllegalArgumentException(
-            clazz.getName()
-                + ": ssl value is not a ratio between 0 and 1: "
-                + randomizeSSL.toString());
+            clazz.getName() + ": ssl value is not a ratio between 0 and 1: " + 
randomizeSSL);
       }
       final double clientAuth =
           Double.isNaN(randomizeSSL.clientAuth()) ? ssl : 
randomizeSSL.clientAuth();
       if (clientAuth < 0.0D || 1 < clientAuth) {
         throw new IllegalArgumentException(
-            clazz.getName()
-                + ": clientAuth value is not a ratio between 0 and 1: "
-                + randomizeSSL.toString());
+            clazz.getName() + ": clientAuth value is not a ratio between 0 and 
1: " + randomizeSSL);
       }
       return new SSLRandomizer(ssl, clientAuth, randomizeSSL.toString());
     }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/RestTestHarness.java 
b/solr/test-framework/src/java/org/apache/solr/util/RestTestHarness.java
index 93a2eef3a68..18c1f3355ce 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/RestTestHarness.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/RestTestHarness.java
@@ -60,36 +60,6 @@ public class RestTestHarness extends BaseTestHarness 
implements Closeable {
     return getBaseURL().replace("/collection1", "");
   }
 
-  /**
-   * Validates an XML "query" response against an array of XPath test strings
-   *
-   * @param request the Query to process
-   * @return null if all good, otherwise the first test that fails.
-   * @exception Exception any exception in the response.
-   * @exception java.io.IOException if there is a problem writing the XML
-   */
-  public String validateQuery(String request, String... tests) throws 
Exception {
-
-    String res = query(request);
-    return validateXPath(res, tests);
-  }
-
-  /**
-   * Validates an XML PUT response against an array of XPath test strings
-   *
-   * @param request the PUT request to process
-   * @param content the content to send with the PUT request
-   * @param tests the validating XPath tests
-   * @return null if all good, otherwise the first test that fails.
-   * @exception Exception any exception in the response.
-   * @exception java.io.IOException if there is a problem writing the XML
-   */
-  public String validatePut(String request, String content, String... tests) 
throws Exception {
-
-    String res = put(request, content);
-    return validateXPath(res, tests);
-  }
-
   /**
    * Processes a "query" using a URL path (with no context path) + optional 
query params, e.g.
    * "/schema/fields?indent=off"
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java 
b/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
index 78be26e2e34..70f26d6405e 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
@@ -210,7 +210,7 @@ public class SSLTestConfig {
    *
    * <p>NOTE: Uses a completely insecure {@link SecureRandom} instance to 
prevent tests from
    * blocking due to lack of entropy, also explicitly allows the use of 
self-signed certificates
-   * (since that's what is almost always used during testing). almost always 
used during testing).
+   * (since that's what is almost always used during testing).
    */
   public SSLConfig buildServerSSLConfig() {
     if (!isSSLMode()) {
@@ -330,16 +330,16 @@ public class SSLTestConfig {
   /**
    * A mocked up instance of SecureRandom that just uses {@link Random} under 
the covers. This is to
    * prevent blocking issues that arise in platform default SecureRandom 
instances due to too many
-   * instances / not enough random entropy. Tests do not need secure SSL.
+   * instances / not enough random entropy. Tests do not need to use secure 
SSL.
    */
   private static class NotSecurePseudoRandom extends SecureRandom {
     public static final SecureRandom INSTANCE = new NotSecurePseudoRandom();
 
     /**
-     * Helper method that can be used to fill an array with non-zero data. 
(Attempted workarround of
+     * Helper method that can be used to fill an array with non-zero data. 
(Attempted workaround of
      * Solaris SSL Padding bug: SOLR-9068)
      */
-    private static final byte[] fillData(byte[] data) {
+    private static byte[] fillData(byte[] data) {
       ThreadLocalRandom.current().nextBytes(data);
       return data;
     }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/ServletFixtures.java 
b/solr/test-framework/src/java/org/apache/solr/util/ServletFixtures.java
index 3405f34b6a2..b3551fa8a90 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/ServletFixtures.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/ServletFixtures.java
@@ -154,7 +154,6 @@ public class ServletFixtures {
     }
 
     private void setCookies(HttpServletRequest req) {
-      Cookie[] ck = req.getCookies();
       cookies = req.getCookies();
     }
 
diff --git a/solr/test-framework/src/java/org/apache/solr/util/SocketProxy.java 
b/solr/test-framework/src/java/org/apache/solr/util/SocketProxy.java
index fed9355847f..2e0c6ea388b 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/SocketProxy.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/SocketProxy.java
@@ -78,14 +78,13 @@ public class SocketProxy {
   }
 
   public SocketProxy(int port, boolean useSSL) throws Exception {
-    int listenPort = port;
     this.usesSSL = useSSL;
     serverSocket = createServerSocket(useSSL);
     serverSocket.setReuseAddress(true);
     if (receiveBufferSize > 0) {
       serverSocket.setReceiveBufferSize(receiveBufferSize);
     }
-    serverSocket.bind(new InetSocketAddress(listenPort), acceptBacklog);
+    serverSocket.bind(new InetSocketAddress(port), acceptBacklog);
     this.listenPort = serverSocket.getLocalPort();
   }
 
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/SolrClientTestRule.java 
b/solr/test-framework/src/java/org/apache/solr/util/SolrClientTestRule.java
index cb2d74ff204..653c165b16c 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/SolrClientTestRule.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/SolrClientTestRule.java
@@ -44,7 +44,7 @@ public abstract class SolrClientTestRule extends 
ExternalResource {
 
   /**
    * Starts the Solr server with the given solrHome. If solrHome contains a 
solr.xml file, it is
-   * used. Otherwise a default testing configuration is used.
+   * used. Otherwise, a default testing configuration is used.
    */
   public abstract void startSolr(Path solrHome);
 
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/SolrMetricTestUtils.java 
b/solr/test-framework/src/java/org/apache/solr/util/SolrMetricTestUtils.java
index a201c9227bd..5b4afc579a2 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/SolrMetricTestUtils.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/SolrMetricTestUtils.java
@@ -40,24 +40,13 @@ import org.apache.solr.metrics.SolrMetricsContext;
 public final class SolrMetricTestUtils {
 
   private static final int MAX_ITERATIONS = 100;
-  private static final SolrInfoBean.Category CATEGORIES[] = 
SolrInfoBean.Category.values();
+  private static final SolrInfoBean.Category[] CATEGORIES = 
SolrInfoBean.Category.values();
 
   // Cache name constants
   public static final String QUERY_RESULT_CACHE = "queryResultCache";
   public static final String FILTER_CACHE = "filterCache";
-  public static final String DOCUMENT_CACHE = "documentCache";
   public static final String PER_SEG_FILTER_CACHE = "perSegFilter";
 
-  public static String getRandomScope(Random random) {
-    return getRandomScope(random, random.nextBoolean());
-  }
-
-  public static String getRandomScope(Random random, boolean 
shouldDefineScope) {
-    return shouldDefineScope
-        ? TestUtil.randomSimpleString(random, 5, 10)
-        : null; // must be simple string for JMX publishing
-  }
-
   public static SolrInfoBean.Category getRandomCategory(Random random) {
     return CATEGORIES[TestUtil.nextInt(random, 0, CATEGORIES.length - 1)];
   }
@@ -88,7 +77,7 @@ public final class SolrMetricTestUtils {
   /**
    * Looks up the first {@link MetricSnapshot} named {@code metricName}, and 
returns the first
    * {@link DataPointSnapshot} having exactly these {@code labels}. Null if 
not found. The result is
-   * typically casted to something useful.
+   * typically cast to something useful.
    */
   public static DataPointSnapshot getDataPointSnapshot(
       PrometheusMetricReader reader, String metricName, Labels labels) {
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/SolrTestNonSecureRandomProvider.java
 
b/solr/test-framework/src/java/org/apache/solr/util/SolrTestNonSecureRandomProvider.java
index ac9eed8b946..5aef6bf2fb5 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/util/SolrTestNonSecureRandomProvider.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/util/SolrTestNonSecureRandomProvider.java
@@ -49,7 +49,7 @@ public class SolrTestNonSecureRandomProvider extends Provider 
{
 
     // Assert that new SecureRandom() and
     // SecureRandom.getInstance("SHA1PRNG") return a SecureRandom backed
-    // by our non secure test provider.
+    // by our non-secure test provider.
     SecureRandom rng1 = new SecureRandom();
     if 
(!SolrTestNonSecureRandomProvider.class.equals(rng1.getProvider().getClass())) {
       throw new SecurityException(
diff --git a/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java 
b/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java
index de02f1b2ccf..b05da370d4d 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/TestHarness.java
@@ -77,14 +77,6 @@ public class TestHarness extends BaseTestHarness {
     }
   }
 
-  /**
-   * Creates a SolrConfig object for the default test core using {@link
-   * #createConfig(Path,String,String)}
-   */
-  public static SolrConfig createConfig(Path solrHome, String confFile) {
-    return createConfig(solrHome, SolrTestCaseJ4.DEFAULT_TEST_CORENAME, 
confFile);
-  }
-
   public TestHarness(CoreContainer coreContainer) {
     this.container = coreContainer;
     this.coreName = SolrTestCaseJ4.DEFAULT_TEST_CORENAME;
@@ -124,7 +116,7 @@ public class TestHarness extends BaseTestHarness {
   }
 
   /**
-   * Helper method to let us do some home sys prop check in delegated 
construtor. in "real" code
+   * Helper method to let us do some home sys prop check in delegated 
constructor. in "real" code
    * SolrDispatchFilter takes care of checking this sys prop when building 
NodeConfig/CoreContainer
    */
   private static Path checkAndReturnSolrHomeSysProp() {
@@ -421,7 +413,7 @@ public class TestHarness extends BaseTestHarness {
      *       the "qtype", "start", "limit", and "args" properties of this 
factory are ignored.</b>
      * </ul>
      *
-     * TODO: this isn't really safe in the presense of core reloads! Perhaps 
the best we could do is
+     * TODO: this isn't really safe in the presence of core reloads! Perhaps 
the best we could do is
      * increment the core reference count and decrement it in the request 
close() method?
      */
     @SuppressWarnings({"unchecked"})
diff --git 
a/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/SolrPortAwareCookieSpecTest.java
 
b/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/SolrPortAwareCookieSpecTest.java
index 73b1536a3c5..b88ce8faee0 100644
--- 
a/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/SolrPortAwareCookieSpecTest.java
+++ 
b/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/SolrPortAwareCookieSpecTest.java
@@ -40,7 +40,7 @@ public class SolrPortAwareCookieSpecTest extends 
SolrTestCaseJ4 {
   }
 
   @Test
-  public void testDomainHostPortMatch() throws Exception {
+  public void testDomainHostPortMatch() {
     final BasicClientCookie cookie = new BasicClientCookie("name", "value");
     final CookieOrigin origin = new CookieOrigin("myhost", 80, "/", false);
     final CookieAttributeHandler h = new 
SolrPortAwareCookieSpecFactory.PortAwareDomainHandler();
@@ -120,7 +120,7 @@ public class SolrPortAwareCookieSpecTest extends 
SolrTestCaseJ4 {
   }
 
   @Test
-  public void testDomainMatch1() throws Exception {
+  public void testDomainMatch1() {
     final BasicClientCookie cookie = new BasicClientCookie("name", "value");
     final CookieOrigin origin = new CookieOrigin("www.somedomain.com", 80, 
"/", false);
     final CookieAttributeHandler h = new 
SolrPortAwareCookieSpecFactory.PortAwareDomainHandler();
@@ -133,7 +133,7 @@ public class SolrPortAwareCookieSpecTest extends 
SolrTestCaseJ4 {
   }
 
   @Test
-  public void testDomainMatch2() throws Exception {
+  public void testDomainMatch2() {
     final BasicClientCookie cookie = new BasicClientCookie("name", "value");
     final CookieOrigin origin = new 
CookieOrigin("www.whatever.somedomain.com", 80, "/", false);
     final CookieAttributeHandler h = new 
SolrPortAwareCookieSpecFactory.PortAwareDomainHandler();
@@ -143,7 +143,7 @@ public class SolrPortAwareCookieSpecTest extends 
SolrTestCaseJ4 {
   }
 
   @Test
-  public void testDomainInvalidInput() throws Exception {
+  public void testDomainInvalidInput() {
     final CookieAttributeHandler h = new 
SolrPortAwareCookieSpecFactory.PortAwareDomainHandler();
     SolrTestCaseJ4.expectThrows(IllegalArgumentException.class, () -> 
h.match(null, null));
     SolrTestCaseJ4.expectThrows(
diff --git 
a/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java
 
b/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java
index 8c8243e172c..0d17dc41d92 100644
--- 
a/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java
+++ 
b/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java
@@ -190,7 +190,8 @@ public class MiniSolrCloudClusterTest extends 
SolrTestCaseJ4 {
 
   public void testJettyUsingSysProp() throws Exception {
     try {
-      // this cluster will use a sysprop to communicate zkHost to it's nodes 
-- not node props in
+      // this cluster will use a system property to communicate zkHost to its 
nodes -- not node
+      // props in
       // the servlet context
       final MiniSolrCloudCluster x =
           new MiniSolrCloudCluster(1, createTempDir(), 
JettyConfig.builder().build()) {
@@ -234,6 +235,6 @@ public class MiniSolrCloudClusterTest extends 
SolrTestCaseJ4 {
 
   private static void assertZkHost(
       final String msg, final String zkHost, final JettySolrRunner node) {
-    assertEquals(zkHost, 
node.getCoreContainer().getNodeConfig().getCloudConfig().getZkHost());
+    assertEquals(msg, zkHost, 
node.getCoreContainer().getNodeConfig().getCloudConfig().getZkHost());
   }
 }
diff --git 
a/solr/test-framework/src/test/org/apache/solr/util/TestErrorLogMuter.java 
b/solr/test-framework/src/test/org/apache/solr/util/TestErrorLogMuter.java
index 976a75c4462..452bc7e3d1c 100644
--- a/solr/test-framework/src/test/org/apache/solr/util/TestErrorLogMuter.java
+++ b/solr/test-framework/src/test/org/apache/solr/util/TestErrorLogMuter.java
@@ -33,7 +33,7 @@ public class TestErrorLogMuter extends SolrTestCaseJ4 {
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   @LogLevel("=WARN")
-  public void testErrorMutingRegex() throws Exception {
+  public void testErrorMutingRegex() {
 
     try (LogListener rootWarnCheck = LogListener.warn("");
         LogListener rootErrorCheck = LogListener.error("")) {
@@ -54,7 +54,7 @@ public class TestErrorLogMuter extends SolrTestCaseJ4 {
         log.error(
             "This {} because of the {} msg",
             "error",
-            "thowable",
+            "throwable",
             new Exception("outer", new Exception("inner eRrOr Log 
throwable")));
         assertEquals(2, x.getCount());
       }
@@ -66,7 +66,7 @@ public class TestErrorLogMuter extends SolrTestCaseJ4 {
   }
 
   @LogLevel("=WARN")
-  public void testMultipleMuters() throws Exception {
+  public void testMultipleMuters() {
 
     try (LogListener rootWarnCheck = LogListener.warn("").substring("xxx");
         LogListener rootErrorCheck = LogListener.error("")) {
@@ -88,7 +88,7 @@ public class TestErrorLogMuter extends SolrTestCaseJ4 {
 
         // a warning shouldn't be muted...
         log.warn("xxx  yyy");
-        assertEquals(rootWarnCheck.pollMessage(), "xxx  yyy");
+        assertEquals("xxx  yyy", rootWarnCheck.pollMessage());
 
         log.error("abc", new Exception("yyy"));
 
@@ -104,7 +104,7 @@ public class TestErrorLogMuter extends SolrTestCaseJ4 {
   }
 
   @LogLevel("=WARN")
-  public void testDeprecatedBaseClassMethods() throws Exception {
+  public void testDeprecatedBaseClassMethods() {
 
     // NOTE: using the same queue for both interceptors (mainly as proof that 
you can)
     try (LogListener rootWarnCheck = LogListener.warn("");
diff --git 
a/solr/test-framework/src/test/org/apache/solr/util/TestLogLevelAnnotations.java
 
b/solr/test-framework/src/test/org/apache/solr/util/TestLogLevelAnnotations.java
index ebfad4ea63c..06c708957c3 100644
--- 
a/solr/test-framework/src/test/org/apache/solr/util/TestLogLevelAnnotations.java
+++ 
b/solr/test-framework/src/test/org/apache/solr/util/TestLogLevelAnnotations.java
@@ -51,7 +51,7 @@ public class TestLogLevelAnnotations extends SolrTestCase {
    * modifying the log4j run time configuration. The <code>@LogLevel</code> 
configuration of this
    * class <em>should</em> not affect the "root" Logger, but setting this in 
static class
    * initialization protect us (as best we can) against the possibility that 
it <em>might</em> due
-   * to an unforseen (future) bug.
+   * to an unforeseen (future) bug.
    *
    * @see #checkLogLevelsBeforeClass
    */

Reply via email to