You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/08/29 12:12:11 UTC

[lucene-solr] 16/22: Re-enable a few client tests in impl package, still WIP

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

markrmiller pushed a commit to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit a82a6a51fc41555fb9bdec3f3a0f0f00ca84bcda
Author: Timothy Potter <th...@gmail.com>
AuthorDate: Fri Aug 28 14:09:20 2020 -0600

    Re-enable a few client tests in impl package, still WIP
---
 .../client/solrj/impl/CloudHttp2SolrClient.java    |   4 +-
 .../solr/client/solrj/impl/LBHttpSolrClient.java   |   4 +-
 .../client/solrj/impl/CloudSolrClientTest.java     |   4 +-
 .../impl/ConcurrentUpdateHttp2SolrClientTest.java  |   2 +-
 .../ConcurrentUpdateSolrClientBadInputTest.java    |   4 +-
 ...currentUpdateSolrClientMultiCollectionTest.java |   3 +-
 .../solrj/impl/ConcurrentUpdateSolrClientTest.java |  30 +++---
 .../impl/Http2SolrClientCompatibilityTest.java     |  12 +--
 .../client/solrj/impl/Http2SolrClientTest.java     |   6 +-
 .../solrj/impl/HttpSolrClientConPoolTest.java      | 101 ++++++++++-----------
 .../solrj/impl/LBHttpSolrClientBadInputTest.java   |   4 +-
 11 files changed, 81 insertions(+), 93 deletions(-)

diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java
index 4d45fe1..1f7ad8f 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java
@@ -70,10 +70,10 @@ public class CloudHttp2SolrClient  extends BaseCloudSolrClient {
     this.clientIsInternal = builder.httpClient == null;
     this.myClient = (builder.httpClient == null) ? new Http2SolrClient.Builder().withHeaders(builder.headers).build() : builder.httpClient;
     if (builder.stateProvider == null) {
-      if (builder.zkHosts != null && builder.solrUrls != null) {
+      if ((builder.zkHosts != null && !builder.zkHosts.isEmpty()) && builder.solrUrls != null) {
         throw new IllegalArgumentException("Both zkHost(s) & solrUrl(s) have been specified. Only specify one.");
       }
-      if (builder.zkHosts != null) {
+      if (builder.zkHosts != null && !builder.zkHosts.isEmpty()) {
         this.zkStateReader = new ZkStateReader(ZkClientClusterStateProvider.buildZkHostString(builder.zkHosts, builder.zkChroot), 40000, 15000);
         this.zkStateReader.createClusterStateWatchersAndUpdate();
         this.stateProvider = new ZkClientClusterStateProvider(zkStateReader, false);
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
index 98443ff..055c0f0 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
@@ -360,7 +360,9 @@ public class LBHttpSolrClient extends LBSolrClient {
      * requires that the core is specified on all requests.
      */
     public Builder withBaseSolrUrl(String baseSolrUrl) {
-      this.baseSolrUrls.add(baseSolrUrl);
+      if (baseSolrUrl != null) {
+        this.baseSolrUrls.add(baseSolrUrl);
+      }
       return this;
     }
  
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
index 6dae1b7..59e8bba 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java
@@ -88,7 +88,7 @@ import org.slf4j.LoggerFactory;
  * This test would be faster if we simulated the zk state instead.
  */
 @Slow
-@Ignore // nocommit debug
+@Ignore // nocommit debug, TJP WIP ...
 public class CloudSolrClientTest extends SolrCloudTestCase {
 
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -244,7 +244,7 @@ public class CloudSolrClientTest extends SolrCloudTestCase {
     if (getRandomClient().isDirectUpdatesToLeadersOnly()) {
       checkSingleServer(response);
     }
-    CloudSolrClient.RouteResponse rr = (CloudSolrClient.RouteResponse) response;
+    BaseCloudSolrClient.RouteResponse rr = (BaseCloudSolrClient.RouteResponse) response;
     Map<String,LBHttpSolrClient.Req> routes = rr.getRoutes();
     Iterator<Map.Entry<String,LBHttpSolrClient.Req>> it = routes.entrySet()
         .iterator();
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateHttp2SolrClientTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateHttp2SolrClientTest.java
index 178f923..6d83d58 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateHttp2SolrClientTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateHttp2SolrClientTest.java
@@ -37,7 +37,7 @@ import org.junit.BeforeClass;
 import org.junit.Ignore;
 import org.junit.Test;
 
-@Ignore // nocommit debug
+@Ignore // nocommit debug, TJP ~ still problematic
 public class ConcurrentUpdateHttp2SolrClientTest extends SolrJettyTestBase {
 
   private static JettySolrRunner jetty;
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientBadInputTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientBadInputTest.java
index 68230ef..c7afbe2 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientBadInputTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientBadInputTest.java
@@ -27,12 +27,10 @@ import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.embedded.JettyConfig;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.hamcrest.core.StringContains.containsString;
 
-@Ignore // nocommit debug
 public class ConcurrentUpdateSolrClientBadInputTest extends SolrJettyTestBase {
   private static final List<String> NULL_STR_LIST = null;
   private static final List<String> EMPTY_STR_LIST = new ArrayList<>();
@@ -83,7 +81,7 @@ public class ConcurrentUpdateSolrClientBadInputTest extends SolrJettyTestBase {
     }
   }
 
-  private void assertExceptionThrownWithMessageContaining(Class expectedType, List<String> expectedStrings, LuceneTestCase.ThrowingRunnable runnable) {
+  private void assertExceptionThrownWithMessageContaining(Class<? extends Exception> expectedType, List<String> expectedStrings, LuceneTestCase.ThrowingRunnable runnable) {
     Throwable thrown = expectThrows(expectedType, runnable);
 
     if (expectedStrings != null) {
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientMultiCollectionTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientMultiCollectionTest.java
index 255e19d..a9a3edc 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientMultiCollectionTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientMultiCollectionTest.java
@@ -16,6 +16,7 @@
  */
 
 package org.apache.solr.client.solrj.impl;
+
 import java.io.File;
 import java.io.IOException;
 
@@ -29,14 +30,12 @@ import org.apache.solr.util.ExternalPaths;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
  * {@link ConcurrentUpdateSolrClient} reuses the same HTTP connection to send multiple requests.  These tests ensure
  * that this connection-reuse never results in documents being sent to the wrong collection.  See SOLR-12803
  */
-@Ignore // nocommit debug
 public class ConcurrentUpdateSolrClientMultiCollectionTest extends SolrCloudTestCase {
 
   private static final String COLLECTION_ONE_NAME = "collection1";
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTest.java
index 841bf8e..50c8dfa 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTest.java
@@ -16,6 +16,20 @@
  */
 package org.apache.solr.client.solrj.impl;
 
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
 import org.apache.http.HttpResponse;
 import org.apache.solr.SolrJettyTestBase;
 import org.apache.solr.client.solrj.SolrClient;
@@ -30,24 +44,8 @@ import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-@Ignore // nocommit debug
 public class ConcurrentUpdateSolrClientTest extends SolrJettyTestBase {
 
   private static JettySolrRunner jetty;
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientCompatibilityTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientCompatibilityTest.java
index 9e050f7..c9f268f 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientCompatibilityTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientCompatibilityTest.java
@@ -28,15 +28,11 @@ import org.apache.solr.util.LogLevel;
 import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP;
 import org.eclipse.jetty.http2.client.http.HttpClientTransportOverHTTP2;
 import org.eclipse.jetty.servlet.ServletHolder;
-import org.junit.Ignore;
 
 @LogLevel("org.eclipse.jetty.client=DEBUG;org.eclipse.jetty.util=DEBUG")
 @SolrTestCaseJ4.SuppressSSL
-@Ignore // nocommit flakey
 public class Http2SolrClientCompatibilityTest extends SolrJettyTestBase {
 
-  private JettySolrRunner jetty;
-
   public void testSystemPropertyFlag() {
     System.setProperty("solr.http1", "true");
     try (Http2SolrClient client = new Http2SolrClient.Builder()
@@ -56,9 +52,9 @@ public class Http2SolrClientCompatibilityTest extends SolrJettyTestBase {
         .withServlet(new ServletHolder(Http2SolrClientTest.DebugServlet.class), "/debug/*")
         .useOnlyHttp1(true)
         .build();
-    createAndStartJetty(legacyExampleCollection1SolrHome(), jettyConfig);
+    JettySolrRunner jetty = createAndStartJetty(legacyExampleCollection1SolrHome(), jettyConfig);
 
-    try (Http2SolrClient client = new Http2SolrClient.Builder(jetty.getBaseUrl().toString() + "/debug/foo")
+    try (Http2SolrClient client = new Http2SolrClient.Builder(jetty.getBaseUrl() + "/debug/foo")
         .useHttp1_1(true)
         .build()) {
       assertTrue(client.getHttpClient().getTransport() instanceof HttpClientTransportOverHTTP);
@@ -76,7 +72,7 @@ public class Http2SolrClientCompatibilityTest extends SolrJettyTestBase {
         .withServlet(new ServletHolder(Http2SolrClientTest.DebugServlet.class), "/debug/*")
         .useOnlyHttp1(false)
         .build();
-    createAndStartJetty(legacyExampleCollection1SolrHome(), jettyConfig);
+    JettySolrRunner jetty = createAndStartJetty(legacyExampleCollection1SolrHome(), jettyConfig);
 
     try (Http2SolrClient client = new Http2SolrClient.Builder(jetty.getBaseUrl().toString() + "/debug/foo")
         .useHttp1_1(true)
@@ -97,7 +93,7 @@ public class Http2SolrClientCompatibilityTest extends SolrJettyTestBase {
         .withServlet(new ServletHolder(Http2SolrClientTest.DebugServlet.class), "/debug/*")
         .useOnlyHttp1(true)
         .build();
-    createAndStartJetty(legacyExampleCollection1SolrHome(), jettyConfig);
+    JettySolrRunner jetty = createAndStartJetty(legacyExampleCollection1SolrHome(), jettyConfig);
 
     System.clearProperty("solr.http1");
     try (Http2SolrClient client = new Http2SolrClient.Builder(jetty.getBaseUrl().toString() + "/debug/foo")
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientTest.java
index a42da1d..a843be8 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/Http2SolrClientTest.java
@@ -47,14 +47,12 @@ import org.apache.solr.common.util.SuppressForbidden;
 import org.eclipse.jetty.servlet.ServletHolder;
 import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
-@Ignore // nocommit debug
 public class Http2SolrClientTest extends SolrJettyTestBase {
 
   private static final String EXPECTED_USER_AGENT = "Solr[" + Http2SolrClient.class.getName() + "] 2.0";
-  private JettySolrRunner jetty;
+  private static JettySolrRunner jetty;
 
   public static class DebugServlet extends HttpServlet {
     public static void clear() {
@@ -158,7 +156,7 @@ public class Http2SolrClientTest extends SolrJettyTestBase {
         .withServlet(new ServletHolder(DebugServlet.class), "/debug/*")
         .withSSLConfig(sslConfig.buildServerSSLConfig())
         .build();
-    createAndStartJetty(legacyExampleCollection1SolrHome(), jettyConfig);
+    jetty = createAndStartJetty(legacyExampleCollection1SolrHome(), jettyConfig);
   }
 
   private Http2SolrClient getHttp2SolrClient(String url, int connectionTimeOut, int socketTimeout) {
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientConPoolTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientConPoolTest.java
index 9d1e023..4926720 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientConPoolTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientConPoolTest.java
@@ -37,25 +37,21 @@ import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 
-@Ignore // nocommit debug later
 public class HttpSolrClientConPoolTest extends SolrJettyTestBase {
 
   protected static JettySolrRunner yetty;
-  private static String fooUrl;
-  private static String barUrl;
+  private static String jettyUrl;
+  private static String yettyUrl;
   protected static JettySolrRunner jetty;
 
   @BeforeClass
   public static void beforeTest() throws Exception {
-    createAndStartJetty(legacyExampleCollection1SolrHome());
-    // stealing the first made jetty
-    yetty =  createAndStartJetty(legacyExampleCollection1SolrHome());;
-    barUrl = yetty.getBaseUrl().toString() + "/" + "collection1";
+    yetty = createAndStartJetty(legacyExampleCollection1SolrHome());
+    yettyUrl = yetty.getBaseUrl() + "/" + "collection1";
     
     jetty = createAndStartJetty(legacyExampleCollection1SolrHome());
-
+    jettyUrl = jetty.getBaseUrl() + "/" + "collection1";
   }
   
   @AfterClass
@@ -64,54 +60,55 @@ public class HttpSolrClientConPoolTest extends SolrJettyTestBase {
       yetty.stop();
       yetty = null;
     }
+    if (null != jetty) {
+      jetty.stop();
+      jetty = null;
+    }
   }
   
   public void testPoolSize() throws SolrServerException, IOException {
 
-    final Http2SolrClient client1;
-    final String fooUrl;
-    {
-      fooUrl = jetty.getBaseUrl().toString() + "/" + "collection1";
-      client1 = getHttpSolrClient(fooUrl);
-    }
-    final String barUrl = yetty.getBaseUrl().toString() + "/" + "collection1";
-
-    {
-      client1.setBaseUrl(fooUrl);
+    Http2SolrClient client1 = null;
+    try {
+      client1 = getHttpSolrClient(jettyUrl);
+      client1.setBaseUrl(jettyUrl);
       client1.deleteByQuery("*:*");
-      client1.setBaseUrl(barUrl);
+      client1.setBaseUrl(yettyUrl);
       client1.deleteByQuery("*:*");
-    }
 
-    List<String> urls = new ArrayList<>();
-    for (int i = 0; i < 17; i++) {
-      urls.add(fooUrl);
-    }
-    for (int i = 0; i < 31; i++) {
-      urls.add(barUrl);
-    }
+      List<String> urls = new ArrayList<>();
+      for (int i = 0; i < 17; i++) {
+        urls.add(jettyUrl);
+      }
+      for (int i = 0; i < 31; i++) {
+        urls.add(yettyUrl);
+      }
 
-    Collections.shuffle(urls, random());
+      Collections.shuffle(urls, random());
 
 
-    int i = 0;
-    for (String url : urls) {
-      if (!client1.getBaseURL().equals(url)) {
-        client1.setBaseUrl(url);
+      int i = 0;
+      for (String url : urls) {
+        if (!client1.getBaseURL().equals(url)) {
+          client1.setBaseUrl(url);
+        }
+        client1.add(new SolrInputDocument("id", "" + (i++)));
+      }
+      client1.setBaseUrl(jettyUrl);
+      client1.commit();
+      assertEquals(17, client1.query(new SolrQuery("*:*")).getResults().getNumFound());
+
+      client1.setBaseUrl(yettyUrl);
+      client1.commit();
+      assertEquals(31, client1.query(new SolrQuery("*:*")).getResults().getNumFound());
+
+      // PoolStats stats = pool.getTotalStats();
+      //assertEquals("oh "+stats, 2, stats.getAvailable());
+    } finally {
+      if (client1 != null) {
+        client1.close();
       }
-      client1.add(new SolrInputDocument("id", "" + (i++)));
     }
-    client1.setBaseUrl(fooUrl);
-    client1.commit();
-    assertEquals(17, client1.query(new SolrQuery("*:*")).getResults().getNumFound());
-
-    client1.setBaseUrl(barUrl);
-    client1.commit();
-    assertEquals(31, client1.query(new SolrQuery("*:*")).getResults().getNumFound());
-
-    // PoolStats stats = pool.getTotalStats();
-    //assertEquals("oh "+stats, 2, stats.getAvailable());
-
   }
   
 
@@ -126,17 +123,17 @@ public class HttpSolrClientConPoolTest extends SolrJettyTestBase {
     LBHttpSolrClient roundRobin = null;
     try{
       roundRobin = new LBHttpSolrClient.Builder().
-                withBaseSolrUrl(fooUrl).
-                withBaseSolrUrl(barUrl).
+                withBaseSolrUrl(jettyUrl).
+                withBaseSolrUrl(yettyUrl).
                 withHttpClient(httpClient)
                 .build();
       
       List<ConcurrentUpdateSolrClient> concurrentClients = Arrays.asList(
-          new ConcurrentUpdateSolrClient.Builder(fooUrl)
+          new ConcurrentUpdateSolrClient.Builder(jettyUrl)
           .withHttpClient(httpClient).withThreadCount(threadCount)
           .withQueueSize(10)
          .withExecutorService(threads).build(),
-           new ConcurrentUpdateSolrClient.Builder(barUrl)
+           new ConcurrentUpdateSolrClient.Builder(yettyUrl)
           .withHttpClient(httpClient).withThreadCount(threadCount)
           .withQueueSize(10)
          .withExecutorService(threads).build()); 
@@ -157,7 +154,7 @@ public class HttpSolrClientConPoolTest extends SolrJettyTestBase {
           } else {
             final UpdateRequest updateRequest = new UpdateRequest();
             updateRequest.add(doc); // here we mimic CloudSolrClient impl
-            final List<String> urls = Arrays.asList(fooUrl, barUrl);
+            final List<String> urls = Arrays.asList(jettyUrl, yettyUrl);
             Collections.shuffle(urls, random());
             LBHttpSolrClient.Req req = new LBHttpSolrClient.Req(updateRequest, 
                     urls);
@@ -181,7 +178,9 @@ public class HttpSolrClientConPoolTest extends SolrJettyTestBase {
     }finally {
       threads.shutdown();
       HttpClientUtil.close(httpClient);
-      roundRobin.close();
+      if (roundRobin != null) {
+        roundRobin.close();
+      }
     }
   }
 }
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBadInputTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBadInputTest.java
index 146334c..47f9c73 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBadInputTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBadInputTest.java
@@ -27,12 +27,10 @@ import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.embedded.JettyConfig;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.hamcrest.core.StringContains.containsString;
 
-@Ignore // nocommit debug
 public class LBHttpSolrClientBadInputTest extends SolrJettyTestBase {
   private static final List<String> NULL_STR_LIST = null;
   private static final List<String> EMPTY_STR_LIST = new ArrayList<>();
@@ -81,7 +79,7 @@ public class LBHttpSolrClientBadInputTest extends SolrJettyTestBase {
     }
   }
 
-  private void assertExceptionThrownWithMessageContaining(Class expectedType, List<String> expectedStrings, LuceneTestCase.ThrowingRunnable runnable) {
+  private void assertExceptionThrownWithMessageContaining(Class<? extends Exception> expectedType, List<String> expectedStrings, LuceneTestCase.ThrowingRunnable runnable) {
     Throwable thrown = expectThrows(expectedType, runnable);
 
     if (expectedStrings != null) {