You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2015/02/09 00:53:25 UTC

svn commit: r1658277 [36/38] - in /lucene/dev/branches/lucene6005: ./ dev-tools/ dev-tools/idea/solr/contrib/dataimporthandler/ dev-tools/idea/solr/contrib/velocity/ dev-tools/maven/lucene/replicator/ dev-tools/maven/solr/ dev-tools/maven/solr/contrib/...

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/java/org/apache/solr/common/params/SolrParams.java Sun Feb  8 23:53:14 2015
@@ -17,17 +17,17 @@
 
 package org.apache.solr.common.params;
 
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.common.util.StrUtils;
+
 import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.common.util.StrUtils;
-
 /**  SolrParams hold request parameters.
  *
  *
@@ -282,7 +282,6 @@ public abstract class SolrParams impleme
     }
   }
 
-  @SuppressWarnings({"deprecation"})
   public static SolrParams wrapDefaults(SolrParams params, SolrParams defaults) {
     if (params == null)
       return defaults;
@@ -291,13 +290,12 @@ public abstract class SolrParams impleme
     return new DefaultSolrParams(params,defaults);
   }
 
-  @SuppressWarnings({"deprecation"})
   public static SolrParams wrapAppended(SolrParams params, SolrParams defaults) {
     if (params == null)
       return defaults;
     if (defaults == null)
       return params;
-    return new AppendedSolrParams(params,defaults);
+    return AppendedSolrParams.wrapAppended(params,defaults);
   }
 
   /** Create a Map<String,String> from a NamedList given no keys are repeated */

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/multicore/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/multicore/solr.xml?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/multicore/solr.xml (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/multicore/solr.xml Sun Feb  8 23:53:14 2015
@@ -16,25 +16,7 @@
  limitations under the License.
 -->
 
-<!--
- All (relative) paths are relative to the installation path
-  
-  persistent: Save changes made via the API to this file
-  sharedLib: path to a lib directory that will be shared across all cores
--->
-<solr persistent="false">
+<solr>
+
 
-  <!--
-  adminPath: RequestHandler path to manage cores.  
-    If 'null' (or absent), cores will not be manageable via request handler
-  -->
-  <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:8983}" hostContext="${hostContext:solr}">
-    <core name="core0" instanceDir="core0" />
-    <core name="core1" instanceDir="core1" />
-    
-    <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
-      <str name="urlScheme">${urlScheme:}</str>
-    </shardHandlerFactory>
-  </cores>
-        
 </solr>

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/shared/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/shared/solr.xml?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/shared/solr.xml (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/shared/solr.xml Sun Feb  8 23:53:14 2015
@@ -16,20 +16,45 @@
  limitations under the License.
 -->
 
+<solr>
+
+  <str name="shareSchema">${shareSchema:false}</str>
+  <str name="configSetBaseDir">${configSetBaseDir:../configsets}</str>
+  <str name="coreRootDirectory">${coreRootDirectory:.}</str>
+
+  <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
+    <str name="urlScheme">${urlScheme:}</str>
+    <int name="socketTimeout">${socketTimeout:90000}</int>
+    <int name="connTimeout">${connTimeout:15000}</int>
+  </shardHandlerFactory>
+
+  <solrcloud>
+    <str name="host">127.0.0.1</str>
+    <int name="hostPort">${hostPort:8983}</int>
+    <str name="hostContext">${hostContext:solr}</str>
+    <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
+    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
+    <int name="leaderVoteWait">0</int>
+    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:45000}</int>
+    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:340000}</int>
+  </solrcloud>
+
+</solr>
+
 <!--
  All (relative) paths are relative to the installation path
   
   persistent: Save changes made via the API to this file
   sharedLib: path to a lib directory that will be shared across all cores
--->
+
 <solr persistent="false">
   <property name="version" value="1.3"/>
   <property name="lang" value="english, french"/>
 
-  <!--
+
   adminPath: RequestHandler path to manage cores.  
     If 'null' (or absent), cores will not be manageable via REST
-  -->
+
   <cores adminPath="/admin/cores" defaultCoreName="core0" host="127.0.0.1" hostPort="${hostPort:8983}" hostContext="${hostContext:solr}" zkClientTimeout="8000" genericCoreNodeNames="${genericCoreNodeNames:true}" configSetBaseDir="${configSetBase:configsets}">
     <core name="collection1" instanceDir="." />
     <core name="core0" instanceDir="${theInstanceDir:./}" dataDir="${dataDir1}" collection="${collection:acollection}">
@@ -46,3 +71,4 @@
     </core>
   </cores>
 </solr>
+-->

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/solr.xml?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/solr.xml (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test-files/solrj/solr/solr.xml Sun Feb  8 23:53:14 2015
@@ -16,24 +16,52 @@
  limitations under the License.
 -->
 
+
 <!--
  All (relative) paths are relative to the installation path
-  
-  persistent: Save changes made via the API to this file
-  sharedLib: path to a lib directory that will be shared across all cores
 -->
+<solr>
+
+  <str name="shareSchema">${shareSchema:false}</str>
+  <str name="configSetBaseDir">${configSetBaseDir:configsets}</str>
+  <str name="coreRootDirectory">${coreRootDirectory:.}</str>
+
+  <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
+    <str name="urlScheme">${urlScheme:}</str>
+    <int name="socketTimeout">${socketTimeout:90000}</int>
+    <int name="connTimeout">${connTimeout:15000}</int>
+  </shardHandlerFactory>
+
+  <solrcloud>
+    <str name="host">127.0.0.1</str>
+    <int name="hostPort">${hostPort:8983}</int>
+    <str name="hostContext">${hostContext:solr}</str>
+    <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
+    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
+    <int name="leaderVoteWait">0</int>
+    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:45000}</int>
+    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:340000}</int>
+  </solrcloud>
+
+</solr>
+
+
+    <!--
+     All (relative) paths are relative to the installation path
+
+      persistent: Save changes made via the API to this file
+      sharedLib: path to a lib directory that will be shared across all cores
+
 <solr persistent="false">
 
-  <!--
-  adminPath: RequestHandler path to manage cores.  
-    If 'null' (or absent), cores will not be manageable via request handler
-  -->
+
+
   <cores adminPath="/admin/cores" defaultCoreName="collection1" host="127.0.0.1" hostPort="${hostPort:8983}" 
          hostContext="${hostContext:solr}" zkClientTimeout="${solr.zkclienttimeout:30000}" shareSchema="${shareSchema:false}" 
          genericCoreNodeNames="${genericCoreNodeNames:true}" leaderVoteWait="0"
          distribUpdateConnTimeout="${distribUpdateConnTimeout:45000}" distribUpdateSoTimeout="${distribUpdateSoTimeout:340000}">
     <core name="collection1" instanceDir="collection1" shard="${shard:}" collection="${collection:collection1}" />
-    <!--config="${solrconfig:solrconfig.xml}" schema="${schema:schema.xml}"/-->
+
     <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
       <str name="urlScheme">${urlScheme:}</str>
       <int name="socketTimeout">${socketTimeout:90000}</int>
@@ -41,3 +69,4 @@
     </shardHandlerFactory>
   </cores>
 </solr>
+-->
\ No newline at end of file

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java Sun Feb  8 23:53:14 2015
@@ -118,7 +118,7 @@ public abstract class LargeVolumeTestBas
           log.info("Caught benign exception during commit: " + e.getMessage());
         }
         if (!(client instanceof EmbeddedSolrServer)) {
-          client.shutdown();
+          client.close();
         }
 
       } catch (Exception e) {

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java Sun Feb  8 23:53:14 2015
@@ -213,13 +213,13 @@ abstract public class SolrExampleTests e
     if (jetty != null) {
       // check system wide system handler + "/admin/info/system"
       String url = jetty.getBaseUrl().toString();
-      HttpSolrClient adminClient = new HttpSolrClient(url);
-      SolrQuery q = new SolrQuery();
-      q.set("qt", "/admin/info/system");
-      QueryResponse rsp = adminClient.query(q);
-      assertNotNull(rsp.getResponse().get("mode"));
-      assertNotNull(rsp.getResponse().get("lucene"));
-      adminClient.shutdown();
+      try (HttpSolrClient adminClient = new HttpSolrClient(url)) {
+        SolrQuery q = new SolrQuery();
+        q.set("qt", "/admin/info/system");
+        QueryResponse rsp = adminClient.query(q);
+        assertNotNull(rsp.getResponse().get("mode"));
+        assertNotNull(rsp.getResponse().get("lucene"));
+      }
     }
   }
 
@@ -256,7 +256,7 @@ abstract public class SolrExampleTests e
     
     SolrQuery query = new SolrQuery();
     query.setQuery( "*:*" );
-    query.addSortField( "price", SolrQuery.ORDER.asc );
+    query.addSort(new SolrQuery.SortClause("price", SolrQuery.ORDER.asc));
     QueryResponse rsp = client.query( query );
     
     assertEquals(2, rsp.getResults().getNumFound());
@@ -495,7 +495,7 @@ abstract public class SolrExampleTests e
     SolrQuery query = new SolrQuery();
     query.setQuery( "*:*" );
     query.set( CommonParams.FL, "id,price,[docid],[explain style=nl],score,aaa:[value v=aaa],ten:[value v=10 t=int]" );
-    query.addSortField( "price", SolrQuery.ORDER.asc );
+    query.addSort(new SolrQuery.SortClause("price", SolrQuery.ORDER.asc));
     QueryResponse rsp = client.query( query );
     
     SolrDocumentList out = rsp.getResults();
@@ -547,7 +547,7 @@ abstract public class SolrExampleTests e
     if (!(client instanceof EmbeddedSolrServer)) {
       /* Do not close in case of using EmbeddedSolrServer,
        * as that would close the CoreContainer */
-      client.shutdown();
+      client.close();
     }
   }
   

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTestsBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTestsBase.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTestsBase.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTestsBase.java Sun Feb  8 23:53:14 2015
@@ -258,12 +258,14 @@ abstract public class SolrExampleTestsBa
     assertEquals(10, cnt.get());
   }
   
-  protected void assertNumFound(String query, int num)
+  protected QueryResponse assertNumFound(String query, int num)
       throws SolrServerException, IOException {
     QueryResponse rsp = getSolrClient().query(new SolrQuery(query));
     if (num != rsp.getResults().getNumFound()) {
       fail("expected: " + num + " but had: " + rsp.getResults().getNumFound()
           + " :: " + rsp.getResults());
     }
+    return rsp;
+
   }
 }

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExceptionTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExceptionTest.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExceptionTest.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExceptionTest.java Sun Feb  8 23:53:14 2015
@@ -17,7 +17,7 @@
 
 package org.apache.solr.client.solrj;
 
-import org.apache.http.client.HttpClient;
+import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.client.solrj.impl.HttpClientUtil;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
@@ -34,15 +34,16 @@ public class SolrExceptionTest extends L
     // this is a very simple test and most of the test should be considered verified 
     // if the compiler won't let you by without the try/catch
     boolean gotExpectedError = false;
+    CloseableHttpClient httpClient = null;
     try {
       // switched to a local address to avoid going out on the net, ns lookup issues, etc.
       // set a 1ms timeout to let the connection fail faster.
-      HttpClient httpClient = HttpClientUtil.createClient(null);
+      httpClient = HttpClientUtil.createClient(null);
       HttpClientUtil.setConnectionTimeout(httpClient,  1);
       SolrClient client = new HttpSolrClient("http://[ff01::114]:11235/solr/", httpClient);
       SolrQuery query = new SolrQuery("test123");
       client.query(query);
-      client.shutdown();
+      httpClient.close();
     } catch (SolrServerException sse) {
       gotExpectedError = true;
       /***
@@ -50,6 +51,8 @@ public class SolrExceptionTest extends L
               //If one is using OpenDNS, then you don't get UnknownHostException, instead you get back that the query couldn't execute
               || (sse.getRootCause().getClass() == SolrException.class && ((SolrException) sse.getRootCause()).code() == 302 && sse.getMessage().equals("Error executing query")));
       ***/
+    } finally {
+      if (httpClient != null) HttpClientUtil.close(httpClient);
     }
     assertTrue(gotExpectedError);
   }

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrQueryTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrQueryTest.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrQueryTest.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrQueryTest.java Sun Feb  8 23:53:14 2015
@@ -70,14 +70,14 @@ public class SolrQueryTest extends Lucen
     b = q.removeFacetQuery("a:b");
     Assert.assertEquals(null, q.getFacetQuery());   
     
-    q.addSortField("price", SolrQuery.ORDER.asc);
-    q.addSortField("date", SolrQuery.ORDER.desc);
-    q.addSortField("qty", SolrQuery.ORDER.desc);
-    q.removeSortField("date", SolrQuery.ORDER.desc);
-    Assert.assertEquals(2, q.getSortFields().length);
-    q.removeSortField("price", SolrQuery.ORDER.asc);
-    q.removeSortField("qty", SolrQuery.ORDER.desc);
-    Assert.assertEquals(null, q.getSortFields());
+    q.addSort("price", SolrQuery.ORDER.asc);
+    q.addSort("date", SolrQuery.ORDER.desc);
+    q.addSort("qty", SolrQuery.ORDER.desc);
+    q.removeSort(new SortClause("date", SolrQuery.ORDER.desc));
+    Assert.assertEquals(2, q.getSorts().size());
+    q.removeSort(new SortClause("price", SolrQuery.ORDER.asc));
+    q.removeSort(new SortClause("qty", SolrQuery.ORDER.desc));
+    Assert.assertEquals(0, q.getSorts().size());
     
     q.addHighlightField("hl1");
     q.addHighlightField("hl2");
@@ -103,21 +103,6 @@ public class SolrQueryTest extends Lucen
     
     // System.out.println(q);
   }
-  
-  /*
-   * Verifies that the old (deprecated) sort methods
-   * allows mix-and-match between the raw field and
-   * the itemized apis.
-   */
-  public void testSortFieldRawStringAndMethods() {
-    SolrQuery q = new SolrQuery("dog");
-    q.set("sort", "price asc,date desc,qty desc");
-    q.removeSortField("date", SolrQuery.ORDER.desc);
-    Assert.assertEquals(2, q.getSortFields().length);
-    q.set("sort", "price asc, date desc, qty desc");
-    q.removeSortField("date", SolrQuery.ORDER.desc);
-    Assert.assertEquals(2, q.getSortFields().length);
-  }
 
   /*
    *  Verifies that you can use removeSortField() twice, which
@@ -125,13 +110,13 @@ public class SolrQueryTest extends Lucen
    */
   public void testSortFieldRemoveAfterRemove() {
     SolrQuery q = new SolrQuery("dog");
-    q.addSortField("price", SolrQuery.ORDER.asc);
-    q.addSortField("date", SolrQuery.ORDER.desc);
-    q.addSortField("qty", SolrQuery.ORDER.desc);
-    q.removeSortField("date", SolrQuery.ORDER.desc);
-    Assert.assertEquals(2, q.getSortFields().length);
-    q.removeSortField("qty", SolrQuery.ORDER.desc);
-    Assert.assertEquals(1, q.getSortFields().length);
+    q.addSort("price", SolrQuery.ORDER.asc);
+    q.addSort("date", SolrQuery.ORDER.desc);
+    q.addSort("qty", SolrQuery.ORDER.desc);
+    q.removeSort("date");
+    Assert.assertEquals(2, q.getSorts().size());
+    q.removeSort("qty");
+    Assert.assertEquals(1, q.getSorts().size());
   }
 
   /*
@@ -140,9 +125,9 @@ public class SolrQueryTest extends Lucen
    */
   public void testSortFieldRemoveLast() {
     SolrQuery q = new SolrQuery("dog");
-    q.addSortField("date", SolrQuery.ORDER.desc);
-    q.addSortField("qty", SolrQuery.ORDER.desc);
-    q.removeSortField("qty", SolrQuery.ORDER.desc);
+    q.addSort("date", SolrQuery.ORDER.desc);
+    q.addSort("qty", SolrQuery.ORDER.desc);
+    q.removeSort("qty");
     Assert.assertEquals("date desc", q.getSortField());
   }
 
@@ -276,9 +261,9 @@ public class SolrQueryTest extends Lucen
 
   public void testFacetSortLegacy() {
     SolrQuery q = new SolrQuery("dog");
-    assertTrue("expected default value to be true", q.getFacetSort());
-    q.setFacetSort(false);
-    assertFalse("expected set value to be false", q.getFacetSort());
+    assertEquals("expected default value to be SORT_COUNT", FacetParams.FACET_SORT_COUNT, q.getFacetSortString());
+    q.setFacetSort(FacetParams.FACET_SORT_INDEX);
+    assertEquals("expected set value to be SORT_INDEX", FacetParams.FACET_SORT_INDEX, q.getFacetSortString());
   }
 
   public void testFacetNumericRange() {
@@ -343,7 +328,7 @@ public class SolrQueryTest extends Lucen
       assertEquals("foo", q.setFacetPrefix("foo").get( FacetParams.FACET_PREFIX, null ) );
       assertEquals("foo", q.setFacetPrefix("a", "foo").getFieldParam( "a", FacetParams.FACET_PREFIX, null ) );
 
-      assertEquals( Boolean.TRUE, q.setMissing(Boolean.TRUE.toString()).getBool( FacetParams.FACET_MISSING ) );
+      assertEquals( Boolean.TRUE, q.setFacetMissing(Boolean.TRUE).getBool( FacetParams.FACET_MISSING ) );
       assertEquals( Boolean.FALSE, q.setFacetMissing( Boolean.FALSE ).getBool( FacetParams.FACET_MISSING ) );      
       assertEquals( "true", q.setParam( "xxx", true ).getParams( "xxx" )[0] );
 

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/SolrSchemalessExampleTest.java Sun Feb  8 23:53:14 2015
@@ -25,6 +25,8 @@ import org.apache.http.entity.InputStrea
 import org.apache.solr.client.solrj.impl.BinaryRequestWriter;
 import org.apache.solr.client.solrj.impl.BinaryResponseParser;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.solr.client.solrj.response.QueryResponse;
+import org.apache.solr.common.SolrDocument;
 import org.apache.solr.util.ExternalPaths;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -34,7 +36,11 @@ import org.slf4j.LoggerFactory;
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.OutputStreamWriter;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
 import java.util.Properties;
+import java.util.Set;
 
 public class SolrSchemalessExampleTest extends SolrExampleTestsBase {
   private static Logger log = LoggerFactory.getLogger(SolrSchemalessExampleTest.class);
@@ -83,6 +89,46 @@ public class SolrSchemalessExampleTest e
     assertNumFound("*:*", 2);
   }
 
+  @Test
+  public void testFieldMutating() throws Exception {
+    HttpSolrClient client = (HttpSolrClient) getSolrClient();
+    client.deleteByQuery("*:*");
+    client.commit();
+    assertNumFound("*:*", 0); // make sure it got in
+    // two docs, one with uniqueKey, another without it
+    String json = "{\"name one\": \"name\"} " +
+        "{\"name  two\" : \"name\"}" +
+        "{\"first-second\" : \"name\"}" +
+        "{\"x+y\" : \"name\"}" +
+        "{\"p%q\" : \"name\"}" +
+        "{\"p.q\" : \"name\"}" +
+        "{\"a&b\" : \"name\"}"
+        ;
+    HttpClient httpClient = client.getHttpClient();
+    HttpPost post = new HttpPost(client.getBaseURL() + "/update/json/docs");
+    post.setHeader("Content-Type", "application/json");
+    post.setEntity(new InputStreamEntity(new ByteArrayInputStream(json.getBytes("UTF-8")), -1));
+    HttpResponse response = httpClient.execute(post);
+    assertEquals(200, response.getStatusLine().getStatusCode());
+    client.commit();
+    List<String> expected = Arrays.asList(
+        "name_one",
+        "name__two",
+        "first-second",
+        "a_b",
+        "p_q",
+        "p.q",
+        "x_y");
+    HashSet set = new HashSet();
+    QueryResponse rsp = assertNumFound("*:*", expected.size());
+    for (SolrDocument doc : rsp.getResults()) set.addAll(doc.getFieldNames());
+    for (String s : expected) {
+      assertTrue(s+" not created "+ rsp ,set.contains(s) );
+    }
+
+  }
+
+
 
   @Override
   public SolrClient createNewSolrClient() {

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/StartSolrJetty.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/StartSolrJetty.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/StartSolrJetty.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/StartSolrJetty.java Sun Feb  8 23:53:14 2015
@@ -18,8 +18,9 @@
 package org.apache.solr.client.solrj;
 
 import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.HttpConnectionFactory;
 import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.bio.SocketConnector;
+import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.webapp.WebAppContext;
 
 /**
@@ -32,9 +33,9 @@ public class StartSolrJetty
     //System.setProperty("solr.solr.home", "../../../example/solr");
 
     Server server = new Server();
-    SocketConnector connector = new SocketConnector();
+    ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory());
     // Set some timeout options to make debugging easier.
-    connector.setMaxIdleTime(1000 * 60 * 60);
+    connector.setIdleTimeout(1000 * 60 * 60);
     connector.setSoLingerTime(-1);
     connector.setPort(8983);
     server.setConnectors(new Connector[] { connector });

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java Sun Feb  8 23:53:14 2015
@@ -20,7 +20,7 @@ package org.apache.solr.client.solrj;
 import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
 import junit.framework.Assert;
 import org.apache.commons.io.FileUtils;
-import org.apache.http.client.HttpClient;
+import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.lucene.util.QuickPatchThreadsFilter;
@@ -41,6 +41,7 @@ import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -61,7 +62,7 @@ public class TestLBHttpSolrClient extend
   private static final Logger log = LoggerFactory.getLogger(TestLBHttpSolrClient.class);
 
   SolrInstance[] solr = new SolrInstance[3];
-  HttpClient httpClient;
+  CloseableHttpClient httpClient;
 
   // TODO: fix this test to not require FSDirectory
   static String savedFactory;
@@ -104,16 +105,13 @@ public class TestLBHttpSolrClient extend
       doc.addField("name", solrInstance.name);
       docs.add(doc);
     }
-    HttpSolrClient client = new HttpSolrClient(solrInstance.getUrl(), httpClient);
     SolrResponseBase resp;
-    try {
+    try (HttpSolrClient client = new HttpSolrClient(solrInstance.getUrl(), httpClient)) {
       resp = client.add(docs);
       assertEquals(0, resp.getStatus());
       resp = client.commit();
-    } finally {
-      client.shutdown();
+      assertEquals(0, resp.getStatus());
     }
-    assertEquals(0, resp.getStatus());
   }
 
   @Override
@@ -123,7 +121,7 @@ public class TestLBHttpSolrClient extend
         aSolr.tearDown();
       }
     }
-    httpClient.getConnectionManager().shutdown();
+    httpClient.close();
     super.tearDown();
   }
 
@@ -205,23 +203,26 @@ public class TestLBHttpSolrClient extend
     ModifiableSolrParams params = new ModifiableSolrParams();
     params.set(HttpClientUtil.PROP_CONNECTION_TIMEOUT, 250);
     params.set(HttpClientUtil.PROP_SO_TIMEOUT, 250);
-    HttpClient myHttpClient = HttpClientUtil.createClient(params);
-
-    LBHttpSolrClient client = new LBHttpSolrClient(myHttpClient, s);
-    client.setAliveCheckInterval(500);
-
-    // Kill a server and test again
-    solr[1].jetty.stop();
-    solr[1].jetty = null;
-
-    // query the servers
-    for (String value : s)
-      client.query(new SolrQuery("*:*"));
-
-    // Start the killed server once again
-    solr[1].startJetty();
-    // Wait for the alive check to complete
-    waitForServer(30000, client, 3, "solr1");
+    CloseableHttpClient myHttpClient = HttpClientUtil.createClient(params);
+    try {
+      LBHttpSolrClient client = new LBHttpSolrClient(myHttpClient, s);
+      client.setAliveCheckInterval(500);
+  
+      // Kill a server and test again
+      solr[1].jetty.stop();
+      solr[1].jetty = null;
+  
+      // query the servers
+      for (String value : s)
+        client.query(new SolrQuery("*:*"));
+  
+      // Start the killed server once again
+      solr[1].startJetty();
+      // Wait for the alive check to complete
+      waitForServer(30000, client, 3, "solr1");
+    } finally {
+      myHttpClient.close();
+    }
   }
   
   // wait maximum ms for serverName to come back up
@@ -263,7 +264,7 @@ public class TestLBHttpSolrClient extend
     }
 
     public String getUrl() {
-      return buildUrl(port, "/solr");
+      return buildUrl(port, "/solr/collection1");
     }
 
     public String getSchemaFile() {
@@ -298,6 +299,7 @@ public class TestLBHttpSolrClient extend
       FileUtils.copyFile(SolrTestCaseJ4.getFile(getSolrConfigFile()), f);
       f = new File(confDir, "schema.xml");
       FileUtils.copyFile(SolrTestCaseJ4.getFile(getSchemaFile()), f);
+      Files.createFile(homeDir.toPath().resolve("collection1/core.properties"));
     }
 
     public void tearDown() throws Exception {

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java Sun Feb  8 23:53:14 2015
@@ -28,8 +28,9 @@ import org.apache.solr.SolrJettyTestBase
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.util.ExternalPaths;
 import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.HttpConnectionFactory;
 import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.bio.SocketConnector;
+import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.server.session.HashSessionIdManager;
 import org.eclipse.jetty.webapp.WebAppContext;
 import org.junit.Rule;
@@ -71,8 +72,8 @@ public class JettyWebappTest extends Sol
     server.setSessionIdManager(new HashSessionIdManager(new Random(random().nextLong())));
     new WebAppContext(server, path, context );
 
-    SocketConnector connector = new SocketConnector();
-    connector.setMaxIdleTime(1000 * 60 * 60);
+    ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory());
+    connector.setIdleTimeout(1000 * 60 * 60);
     connector.setSoLingerTime(-1);
     connector.setPort(0);
     server.setConnectors(new Connector[]{connector});

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java Sun Feb  8 23:53:14 2015
@@ -76,30 +76,30 @@ public class SolrExampleStreamingTest ex
   public void testWaitOptions() throws Exception {
     // SOLR-3903
     final List<Throwable> failures = new ArrayList<>();
-    ConcurrentUpdateSolrClient concurrentClient = new ConcurrentUpdateSolrClient
+    try (ConcurrentUpdateSolrClient concurrentClient = new ConcurrentUpdateSolrClient
       (jetty.getBaseUrl().toString() + "/collection1", 2, 2) {
         @Override
         public void handleError(Throwable ex) {
           failures.add(ex);
         }
-      };
-      
-    int docId = 42;
-    for (UpdateRequest.ACTION action : EnumSet.allOf(UpdateRequest.ACTION.class)) {
-      for (boolean waitSearch : Arrays.asList(true, false)) {
-        for (boolean waitFlush : Arrays.asList(true, false)) {
-          UpdateRequest updateRequest = new UpdateRequest();
-          SolrInputDocument document = new SolrInputDocument();
-          document.addField("id", docId++ );
-          updateRequest.add(document);
-          updateRequest.setAction(action, waitSearch, waitFlush);
-          concurrentClient.request(updateRequest);
+      }) {
+
+      int docId = 42;
+      for (UpdateRequest.ACTION action : EnumSet.allOf(UpdateRequest.ACTION.class)) {
+        for (boolean waitSearch : Arrays.asList(true, false)) {
+          for (boolean waitFlush : Arrays.asList(true, false)) {
+            UpdateRequest updateRequest = new UpdateRequest();
+            SolrInputDocument document = new SolrInputDocument();
+            document.addField("id", docId++);
+            updateRequest.add(document);
+            updateRequest.setAction(action, waitSearch, waitFlush);
+            concurrentClient.request(updateRequest);
+          }
         }
       }
+      concurrentClient.commit();
+      concurrentClient.blockUntilFinished();
     }
-    concurrentClient.commit();
-    concurrentClient.blockUntilFinished();
-    concurrentClient.shutdown();
 
     if (0 != failures.size()) {
       assertEquals(failures.size() + " Unexpected Exception, starting with...", 

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServer.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServer.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServer.java Sun Feb  8 23:53:14 2015
@@ -17,12 +17,8 @@ package org.apache.solr.client.solrj.emb
  * limitations under the License.
  */
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
+import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
 import junit.framework.Assert;
-
 import org.apache.solr.core.SolrCore;
 import org.junit.Rule;
 import org.junit.rules.RuleChain;
@@ -30,7 +26,10 @@ import org.junit.rules.TestRule;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 public class TestEmbeddedSolrServer extends AbstractEmbeddedSolrServerTestCase {
 
@@ -55,9 +54,9 @@ public class TestEmbeddedSolrServer exte
     Assert.assertEquals(cores, ((EmbeddedSolrServer)getSolrCore1()).getCoreContainer());
   }
   
-  public void testShutdown() {
+  public void testClose() throws IOException {
     
-    EmbeddedSolrServer solrServer = (EmbeddedSolrServer)getSolrCore0();
+    EmbeddedSolrServer solrServer = (EmbeddedSolrServer) getSolrCore0();
     
     Assert.assertEquals(3, cores.getCores().size());
     List<SolrCore> solrCores = new ArrayList<>();
@@ -66,7 +65,7 @@ public class TestEmbeddedSolrServer exte
       solrCores.add(solrCore);
     }
     
-    solrServer.shutdown();
+    solrServer.close();
     
     Assert.assertEquals(0, cores.getCores().size());
     

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java Sun Feb  8 23:53:14 2015
@@ -19,16 +19,14 @@ package org.apache.solr.client.solrj.emb
 
 import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule;
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.request.AbstractUpdateRequest.ACTION;
 import org.apache.solr.client.solrj.request.CoreAdminRequest;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.client.solrj.response.CoreAdminResponse;
 import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.core.SolrXMLCoresLocator;
-import org.apache.solr.util.TestHarness;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.RuleChain;
@@ -67,9 +65,6 @@ public class TestSolrProperties extends
   @Test
   public void testProperties() throws Exception {
 
-    SolrXMLCoresLocator.NonPersistingLocator locator
-        = (SolrXMLCoresLocator.NonPersistingLocator) cores.getCoresLocator();
-
     UpdateRequest up = new UpdateRequest();
     up.setAction(ACTION.COMMIT, true, true);
     up.deleteByQuery("*:*");
@@ -139,33 +134,6 @@ public class TestSolrProperties extends
     long after = mcr.getStartTime(name).getTime();
     assertTrue("should have more recent time: " + after + "," + before, after > before);
 
-    TestHarness.validateXPath(locator.xml,
-        "/solr/cores[@defaultCoreName='core0']",
-        "/solr/cores[@host='127.0.0.1']",
-        "/solr/cores[@hostPort='${hostPort:8983}']",
-        "/solr/cores[@zkClientTimeout='8000']",
-        "/solr/cores[@hostContext='${hostContext:solr}']",
-        "/solr/cores[@genericCoreNodeNames='${genericCoreNodeNames:true}']"
-        );
-    
-    CoreAdminRequest.renameCore(name, "renamed_core", coreadmin);
-
-    TestHarness.validateXPath(locator.xml,
-        "/solr/cores/core[@name='renamed_core']",
-        "/solr/cores/core[@instanceDir='${theInstanceDir:./}']",
-        "/solr/cores/core[@collection='${collection:acollection}']"
-        );
-    
-    coreadmin = getRenamedSolrAdmin();
-    File dataDir = new File(tempDir,"data3");
-    File tlogDir = new File(tempDir,"tlog3");
-
-    CoreAdminRequest.createCore("newCore", SOLR_HOME.getAbsolutePath(),
-        coreadmin, null, null, dataDir.getAbsolutePath(),
-        tlogDir.getAbsolutePath());
-
-    TestHarness.validateXPath(locator.xml, "/solr/cores/core[@name='collection1' and @instanceDir='.']");
-
   }
 
 }

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/impl/BasicHttpSolrClientTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/impl/BasicHttpSolrClientTest.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/impl/BasicHttpSolrClientTest.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/impl/BasicHttpSolrClientTest.java Sun Feb  8 23:53:14 2015
@@ -20,8 +20,8 @@ package org.apache.solr.client.solrj.imp
 import org.apache.http.Header;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.solr.SolrJettyTestBase;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrRequest;
@@ -158,17 +158,16 @@ public class BasicHttpSolrClientTest ext
   
   @Test
   public void testTimeout() throws Exception {
-    HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() +
-                                               "/slow/foo");
+
     SolrQuery q = new SolrQuery("*:*");
-    client.setSoTimeout(2000);
-    try {
+    try (HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/slow/foo")) {
+      client.setSoTimeout(2000);
       QueryResponse response = client.query(q, METHOD.GET);
       fail("No exception thrown.");
     } catch (SolrServerException e) {
       assertTrue(e.getMessage().contains("Timeout"));
     }
-    client.shutdown();
+
   }
   
   /**
@@ -181,9 +180,7 @@ public class BasicHttpSolrClientTest ext
     assertEquals(status + " didn't generate an UNKNOWN error code, someone modified the list of valid ErrorCode's w/o changing this test to work a different way",
                  ErrorCode.UNKNOWN, ErrorCode.getErrorCode(status));
 
-    HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() +
-                                               "/debug/foo");
-    try {
+    try ( HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/debug/foo")) {
       DebugServlet.setErrorCode(status);
       try {
         SolrQuery q = new SolrQuery("foo");
@@ -194,285 +191,300 @@ public class BasicHttpSolrClientTest ext
         assertEquals("Unexpected exception status code", status, e.code());
       }
     } finally {
-      client.shutdown();
       DebugServlet.clear();
     }
   }
 
   @Test
-  public void testQuery(){
+  public void testQuery() throws IOException {
     DebugServlet.clear();
-    HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/debug/foo");
-    SolrQuery q = new SolrQuery("foo");
-    q.setParam("a", "\u1234");
-    try {
-      client.query(q, METHOD.GET);
-    } catch (Throwable t) {}
-    
-    //default method
-    assertEquals("get", DebugServlet.lastMethod);
-    //agent
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    //default wt
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    //default version
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    //agent
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    //keepalive
-    assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
-    //content-type
-    assertEquals(null, DebugServlet.headers.get("Content-Type"));
-    //param encoding
-    assertEquals(1, DebugServlet.parameters.get("a").length);
-    assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
+    try (HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/debug/foo")) {
+      SolrQuery q = new SolrQuery("foo");
+      q.setParam("a", "\u1234");
+      try {
+        client.query(q, METHOD.GET);
+      } catch (Throwable t) {
+      }
 
-    //POST
-    DebugServlet.clear();
-    try {
-      client.query(q, METHOD.POST);
-    } catch (Throwable t) {}
-    assertEquals("post", DebugServlet.lastMethod);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    assertEquals(1, DebugServlet.parameters.get("a").length);
-    assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
-    assertEquals("application/x-www-form-urlencoded; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
+      //default method
+      assertEquals("get", DebugServlet.lastMethod);
+      //agent
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      //default wt
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      //default version
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      //agent
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      //keepalive
+      assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
+      //content-type
+      assertEquals(null, DebugServlet.headers.get("Content-Type"));
+      //param encoding
+      assertEquals(1, DebugServlet.parameters.get("a").length);
+      assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
 
-    //PUT
-    DebugServlet.clear();
-    try {
-      client.query(q, METHOD.PUT);
-    } catch (Throwable t) {}
-    assertEquals("put", DebugServlet.lastMethod);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    assertEquals(1, DebugServlet.parameters.get("a").length);
-    assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
-    assertEquals("application/x-www-form-urlencoded; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
+      //POST
+      DebugServlet.clear();
+      try {
+        client.query(q, METHOD.POST);
+      } catch (Throwable t) {
+      }
+      assertEquals("post", DebugServlet.lastMethod);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      assertEquals(1, DebugServlet.parameters.get("a").length);
+      assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
+      assertEquals("application/x-www-form-urlencoded; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
 
-    //XML/GET
-    client.setParser(new XMLResponseParser());
-    DebugServlet.clear();
-    try {
-      client.query(q, METHOD.GET);
-    } catch (Throwable t) {}
-    assertEquals("get", DebugServlet.lastMethod);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("xml", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    assertEquals(1, DebugServlet.parameters.get("a").length);
-    assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
+      //PUT
+      DebugServlet.clear();
+      try {
+        client.query(q, METHOD.PUT);
+      } catch (Throwable t) {
+      }
+      assertEquals("put", DebugServlet.lastMethod);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      assertEquals(1, DebugServlet.parameters.get("a").length);
+      assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
+      assertEquals("application/x-www-form-urlencoded; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
 
-    //XML/POST
-    client.setParser(new XMLResponseParser());
-    DebugServlet.clear();
-    try {
-      client.query(q, METHOD.POST);
-    } catch (Throwable t) {}
-    assertEquals("post", DebugServlet.lastMethod);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("xml", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    assertEquals(1, DebugServlet.parameters.get("a").length);
-    assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
-    assertEquals("application/x-www-form-urlencoded; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
+      //XML/GET
+      client.setParser(new XMLResponseParser());
+      DebugServlet.clear();
+      try {
+        client.query(q, METHOD.GET);
+      } catch (Throwable t) {
+      }
+      assertEquals("get", DebugServlet.lastMethod);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("xml", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      assertEquals(1, DebugServlet.parameters.get("a").length);
+      assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
+
+      //XML/POST
+      client.setParser(new XMLResponseParser());
+      DebugServlet.clear();
+      try {
+        client.query(q, METHOD.POST);
+      } catch (Throwable t) {
+      }
+      assertEquals("post", DebugServlet.lastMethod);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("xml", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      assertEquals(1, DebugServlet.parameters.get("a").length);
+      assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
+      assertEquals("application/x-www-form-urlencoded; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
+
+      client.setParser(new XMLResponseParser());
+      DebugServlet.clear();
+      try {
+        client.query(q, METHOD.PUT);
+      } catch (Throwable t) {
+      }
+      assertEquals("put", DebugServlet.lastMethod);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("xml", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      assertEquals(1, DebugServlet.parameters.get("a").length);
+      assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
+      assertEquals("application/x-www-form-urlencoded; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
+    }
 
-    client.setParser(new XMLResponseParser());
-    DebugServlet.clear();
-    try {
-      client.query(q, METHOD.PUT);
-    } catch (Throwable t) {}
-    assertEquals("put", DebugServlet.lastMethod);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("xml", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    assertEquals(1, DebugServlet.parameters.get("a").length);
-    assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
-    assertEquals("application/x-www-form-urlencoded; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
-    client.shutdown();
   }
 
   @Test
-  public void testDelete(){
+  public void testDelete() throws IOException {
     DebugServlet.clear();
-    HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/debug/foo");
-    try {
-      client.deleteById("id");
-    } catch (Throwable t) {}
-    
-    //default method
-    assertEquals("post", DebugServlet.lastMethod);
-    //agent
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    //default wt
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    //default version
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    //agent
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    //keepalive
-    assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
+    try (HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/debug/foo")) {
+      try {
+        client.deleteById("id");
+      } catch (Throwable t) {
+      }
+
+      //default method
+      assertEquals("post", DebugServlet.lastMethod);
+      //agent
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      //default wt
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      //default version
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      //agent
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      //keepalive
+      assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
+
+      //XML
+      client.setParser(new XMLResponseParser());
+      try {
+        client.deleteByQuery("*:*");
+      } catch (Throwable t) {
+      }
+
+      assertEquals("post", DebugServlet.lastMethod);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("xml", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
+    }
 
-    //XML
-    client.setParser(new XMLResponseParser());
-    try {
-      client.deleteByQuery("*:*");
-    } catch (Throwable t) {}
-    
-    assertEquals("post", DebugServlet.lastMethod);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("xml", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals("keep-alive", DebugServlet.headers.get("Connection"));
-    client.shutdown();
   }
   
   @Test
-  public void testUpdate(){
+  public void testUpdate() throws IOException {
     DebugServlet.clear();
-    HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/debug/foo");
-    UpdateRequest req = new UpdateRequest();
-    req.add(new SolrInputDocument());
-    req.setParam("a", "\u1234");
-    try {
-      client.request(req);
-    } catch (Throwable t) {}
-    
-    //default method
-    assertEquals("post", DebugServlet.lastMethod);
-    //agent
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    //default wt
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    //default version
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    //content type
-    assertEquals("application/xml; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
-    //parameter encoding
-    assertEquals(1, DebugServlet.parameters.get("a").length);
-    assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
+    try (HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/debug/foo")) {
+      UpdateRequest req = new UpdateRequest();
+      req.add(new SolrInputDocument());
+      req.setParam("a", "\u1234");
+      try {
+        client.request(req);
+      } catch (Throwable t) {
+      }
+
+      //default method
+      assertEquals("post", DebugServlet.lastMethod);
+      //agent
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      //default wt
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      //default version
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      //content type
+      assertEquals("application/xml; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
+      //parameter encoding
+      assertEquals(1, DebugServlet.parameters.get("a").length);
+      assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
+
+      //XML response
+      client.setParser(new XMLResponseParser());
+      try {
+        client.request(req);
+      } catch (Throwable t) {
+      }
+      assertEquals("post", DebugServlet.lastMethod);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("xml", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      assertEquals("application/xml; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
+      assertEquals(1, DebugServlet.parameters.get("a").length);
+      assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
+
+      //javabin request
+      client.setParser(new BinaryResponseParser());
+      client.setRequestWriter(new BinaryRequestWriter());
+      DebugServlet.clear();
+      try {
+        client.request(req);
+      } catch (Throwable t) {
+      }
+      assertEquals("post", DebugServlet.lastMethod);
+      assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
+      assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
+      assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
+      assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
+      assertEquals("application/javabin", DebugServlet.headers.get("Content-Type"));
+      assertEquals(1, DebugServlet.parameters.get("a").length);
+      assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
+    }
 
-    //XML response
-    client.setParser(new XMLResponseParser());
-    try {
-      client.request(req);
-    } catch (Throwable t) {}
-    assertEquals("post", DebugServlet.lastMethod);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("xml", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    assertEquals("application/xml; charset=UTF-8", DebugServlet.headers.get("Content-Type"));
-    assertEquals(1, DebugServlet.parameters.get("a").length);
-    assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
-    
-    //javabin request
-    client.setParser(new BinaryResponseParser());
-    client.setRequestWriter(new BinaryRequestWriter());
-    DebugServlet.clear();
-    try {
-      client.request(req);
-    } catch (Throwable t) {}
-    assertEquals("post", DebugServlet.lastMethod);
-    assertEquals("Solr[" + HttpSolrClient.class.getName() + "] 1.0", DebugServlet.headers.get("User-Agent"));
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.WT).length);
-    assertEquals("javabin", DebugServlet.parameters.get(CommonParams.WT)[0]);
-    assertEquals(1, DebugServlet.parameters.get(CommonParams.VERSION).length);
-    assertEquals(client.getParser().getVersion(), DebugServlet.parameters.get(CommonParams.VERSION)[0]);
-    assertEquals("application/javabin", DebugServlet.headers.get("Content-Type"));
-    assertEquals(1, DebugServlet.parameters.get("a").length);
-    assertEquals("\u1234", DebugServlet.parameters.get("a")[0]);
-    client.shutdown();
   }
   
   @Test
   public void testRedirect() throws Exception {
-    HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/redirect/foo");
-    SolrQuery q = new SolrQuery("*:*");
-    // default = false
-    try {
-      QueryResponse response = client.query(q);
-      fail("Should have thrown an exception.");
-    } catch (SolrServerException e) {
-      assertTrue(e.getMessage().contains("redirect"));
-    }
-    client.setFollowRedirects(true);
-    try {
-      QueryResponse response = client.query(q);
-    } catch (Throwable t) {
-      fail("Exception was thrown:" + t);
-    }
-    //And back again:
-    client.setFollowRedirects(false);
-    try {
-      QueryResponse response = client.query(q);
-      fail("Should have thrown an exception.");
-    } catch (SolrServerException e) {
-      assertTrue(e.getMessage().contains("redirect"));
+    try (HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/redirect/foo")) {
+      SolrQuery q = new SolrQuery("*:*");
+      // default = false
+      try {
+        QueryResponse response = client.query(q);
+        fail("Should have thrown an exception.");
+      } catch (SolrServerException e) {
+        assertTrue(e.getMessage().contains("redirect"));
+      }
+      client.setFollowRedirects(true);
+      try {
+        QueryResponse response = client.query(q);
+      } catch (Throwable t) {
+        fail("Exception was thrown:" + t);
+      }
+      //And back again:
+      client.setFollowRedirects(false);
+      try {
+        QueryResponse response = client.query(q);
+        fail("Should have thrown an exception.");
+      } catch (SolrServerException e) {
+        assertTrue(e.getMessage().contains("redirect"));
+      }
     }
-    client.shutdown();
+
   }
   
   @Test
   public void testCompression() throws Exception {
-    HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/debug/foo");
-    SolrQuery q = new SolrQuery("*:*");
-    
-    // verify request header gets set
-    DebugServlet.clear();
-    try {
-      client.query(q);
-    } catch (Throwable t) {}
-    assertNull(DebugServlet.headers.get("Accept-Encoding"));
-    client.setAllowCompression(true);
-    try {
-      client.query(q);
-    } catch (Throwable t) {}
-    assertNotNull(DebugServlet.headers.get("Accept-Encoding"));
-    client.setAllowCompression(false);
-    try {
-      client.query(q);
-    } catch (Throwable t) {}
-    assertNull(DebugServlet.headers.get("Accept-Encoding"));
+    try (HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/debug/foo")) {
+      SolrQuery q = new SolrQuery("*:*");
+      
+      // verify request header gets set
+      DebugServlet.clear();
+      try {
+        client.query(q);
+      } catch (Throwable t) {}
+      assertNull(DebugServlet.headers.get("Accept-Encoding"));
+      client.setAllowCompression(true);
+      try {
+        client.query(q);
+      } catch (Throwable t) {}
+      assertNotNull(DebugServlet.headers.get("Accept-Encoding"));
+      client.setAllowCompression(false);
+      try {
+        client.query(q);
+      } catch (Throwable t) {}
+      assertNull(DebugServlet.headers.get("Accept-Encoding"));
+    }
     
     // verify server compresses output
     HttpGet get = new HttpGet(jetty.getBaseUrl().toString() + "/collection1" +
                               "/select?q=foo&wt=xml");
     get.setHeader("Accept-Encoding", "gzip");
-    HttpClient httpclient = HttpClientUtil.createClient(null);
+    CloseableHttpClient httpclient = HttpClientUtil.createClient(null);
     HttpEntity entity = null;
     try {
       HttpResponse response = httpclient.execute(get);
@@ -484,46 +496,50 @@ public class BasicHttpSolrClientTest ext
       if(entity!=null) {
         entity.getContent().close();
       }
-      httpclient.getConnectionManager().shutdown();
+      httpclient.close();
     }
     
     // verify compressed response can be handled
-    client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/collection1");
-    client.setAllowCompression(true);
-    q = new SolrQuery("foo");
-    QueryResponse response = client.query(q);
-    assertEquals(0, response.getStatus());
-    client.shutdown();
+    try (HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/collection1")) {
+      client.setAllowCompression(true);
+      SolrQuery q = new SolrQuery("foo");
+      QueryResponse response = client.query(q);
+      assertEquals(0, response.getStatus());
+    }
   }
   
   @Test
-  public void testSetParametersExternalClient(){
-    HttpClient httpClient = HttpClientUtil.createClient(null);
-    HttpSolrClient solrClient = new HttpSolrClient(jetty.getBaseUrl().toString(),
-                                               httpClient);
-    try {
-      solrClient.setMaxTotalConnections(1);
-      fail("Operation should not succeed.");
-    } catch (UnsupportedOperationException e) {}
-    try {
-      solrClient.setDefaultMaxConnectionsPerHost(1);
-      fail("Operation should not succeed.");
-    } catch (UnsupportedOperationException e) {}
-    solrClient.shutdown();
-    httpClient.getConnectionManager().shutdown();
+  public void testSetParametersExternalClient() throws IOException{
+
+    try (CloseableHttpClient httpClient = HttpClientUtil.createClient(null);
+         HttpSolrClient solrClient = new HttpSolrClient(jetty.getBaseUrl().toString(), httpClient)) {
+
+      try {
+        solrClient.setMaxTotalConnections(1);
+        fail("Operation should not succeed.");
+      } catch (UnsupportedOperationException e) {}
+      try {
+        solrClient.setDefaultMaxConnectionsPerHost(1);
+        fail("Operation should not succeed.");
+      } catch (UnsupportedOperationException e) {}
+
+    }
   }
 
   @Test
   public void testGetRawStream() throws SolrServerException, IOException{
-    HttpClient client = HttpClientUtil.createClient(null);
-    HttpSolrClient solrClient = new HttpSolrClient(jetty.getBaseUrl().toString() + "/collection1",
-                                               client, null);
-    QueryRequest req = new QueryRequest();
-    NamedList response = solrClient.request(req);
-    InputStream stream = (InputStream)response.get("stream");
-    assertNotNull(stream);
-    stream.close();
-    client.getConnectionManager().shutdown();
+    CloseableHttpClient client = HttpClientUtil.createClient(null);
+    try {
+      HttpSolrClient solrClient = new HttpSolrClient(jetty.getBaseUrl().toString() + "/collection1",
+                                                 client, null);
+      QueryRequest req = new QueryRequest();
+      NamedList response = solrClient.request(req);
+      InputStream stream = (InputStream)response.get("stream");
+      assertNotNull(stream);
+      stream.close();
+    } finally {
+      client.close();
+    }
   }
 
   /**
@@ -597,55 +613,55 @@ public class BasicHttpSolrClientTest ext
 
   @Test
   public void testQueryString() throws Exception {
-    HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() +
-                                               "/debug/foo");
-
-    // test without request query params
-    DebugServlet.clear();
-    client.setQueryParams(setOf("serverOnly"));
-    UpdateRequest req = new UpdateRequest();
-    setReqParamsOf(req, "serverOnly", "notServer");
-    try {
-      client.request(req);
-    } catch (Throwable t) {}
-    verifyServletState(client, req);
 
-    // test without server query params
-    DebugServlet.clear();
-    client.setQueryParams(setOf());
-    req = new UpdateRequest();
-    req.setQueryParams(setOf("requestOnly"));
-    setReqParamsOf(req, "requestOnly", "notRequest");
-    try {
-      client.request(req);
-    } catch (Throwable t) {}
-    verifyServletState(client, req);
-
-    // test with both request and server query params
-    DebugServlet.clear();
-    req = new UpdateRequest();
-    client.setQueryParams(setOf("serverOnly", "both"));
-    req.setQueryParams(setOf("requestOnly", "both"));
-    setReqParamsOf(req, "serverOnly", "requestOnly", "both", "neither");
-     try {
-      client.request(req);
-    } catch (Throwable t) {}
-    verifyServletState(client, req);
-
-    // test with both request and server query params with single stream
-    DebugServlet.clear();
-    req = new UpdateRequest();
-    req.add(new SolrInputDocument());
-    client.setQueryParams(setOf("serverOnly", "both"));
-    req.setQueryParams(setOf("requestOnly", "both"));
-    setReqParamsOf(req, "serverOnly", "requestOnly", "both", "neither");
-     try {
-      client.request(req);
-    } catch (Throwable t) {}
-    // NOTE: single stream requests send all the params
-    // as part of the query string.  So add "neither" to the request
-    // so it passes the verification step.
-    req.setQueryParams(setOf("requestOnly", "both", "neither"));
-    verifyServletState(client, req);
+    try (HttpSolrClient client = new HttpSolrClient(jetty.getBaseUrl().toString() + "/debug/foo")) {
+      // test without request query params
+      DebugServlet.clear();
+      client.setQueryParams(setOf("serverOnly"));
+      UpdateRequest req = new UpdateRequest();
+      setReqParamsOf(req, "serverOnly", "notServer");
+      try {
+        client.request(req);
+      } catch (Throwable t) {}
+      verifyServletState(client, req);
+  
+      // test without server query params
+      DebugServlet.clear();
+      client.setQueryParams(setOf());
+      req = new UpdateRequest();
+      req.setQueryParams(setOf("requestOnly"));
+      setReqParamsOf(req, "requestOnly", "notRequest");
+      try {
+        client.request(req);
+      } catch (Throwable t) {}
+      verifyServletState(client, req);
+  
+      // test with both request and server query params
+      DebugServlet.clear();
+      req = new UpdateRequest();
+      client.setQueryParams(setOf("serverOnly", "both"));
+      req.setQueryParams(setOf("requestOnly", "both"));
+      setReqParamsOf(req, "serverOnly", "requestOnly", "both", "neither");
+       try {
+        client.request(req);
+      } catch (Throwable t) {}
+      verifyServletState(client, req);
+  
+      // test with both request and server query params with single stream
+      DebugServlet.clear();
+      req = new UpdateRequest();
+      req.add(new SolrInputDocument());
+      client.setQueryParams(setOf("serverOnly", "both"));
+      req.setQueryParams(setOf("requestOnly", "both"));
+      setReqParamsOf(req, "serverOnly", "requestOnly", "both", "neither");
+       try {
+        client.request(req);
+      } catch (Throwable t) {}
+      // NOTE: single stream requests send all the params
+      // as part of the query string.  So add "neither" to the request
+      // so it passes the verification step.
+      req.setQueryParams(setOf("requestOnly", "both", "neither"));
+      verifyServletState(client, req);
+    }
   }
 }

Modified: lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientMultiConstructorTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientMultiConstructorTest.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientMultiConstructorTest.java (original)
+++ lucene/dev/branches/lucene6005/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientMultiConstructorTest.java Sun Feb  8 23:53:14 2015
@@ -4,6 +4,7 @@ import org.apache.lucene.util.LuceneTest
 import org.apache.lucene.util.TestUtil;
 import org.junit.Test;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedHashSet;
@@ -35,7 +36,7 @@ public class CloudSolrClientMultiConstru
   Collection<String> hosts;
 
   @Test
-  public void testWithChroot() {
+  public void testWithChroot() throws IOException {
     boolean setOrList = random().nextBoolean();
     int numOfZKServers = TestUtil.nextInt(random(), 1, 5);
     boolean withChroot = random().nextBoolean();
@@ -43,7 +44,6 @@ public class CloudSolrClientMultiConstru
     final String chroot = "/mychroot";
 
     StringBuilder sb = new StringBuilder();
-    CloudSolrClient client;
 
     if(setOrList) {
       /*
@@ -62,15 +62,16 @@ public class CloudSolrClientMultiConstru
       if(i<numOfZKServers -1) sb.append(",");
     }
 
-    if(withChroot) {
+    String clientChroot = null;
+    if (withChroot) {
       sb.append(chroot);
-      client = new CloudSolrClient(hosts, "/mychroot");
-    } else {
-      client = new CloudSolrClient(hosts, null);
+      clientChroot = "/mychroot";
+    }
+
+    try (CloudSolrClient client = new CloudSolrClient(hosts, clientChroot)) {
+      assertEquals(sb.toString(), client.getZkHost());
     }
 
-    assertEquals(sb.toString(), client.getZkHost());
-    client.shutdown();
   }
   
   @Test(expected = IllegalArgumentException.class)