You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2012/08/25 12:06:16 UTC
svn commit: r1377246 [7/7] - in /lucene/dev/branches/lucene3312: ./
dev-tools/ dev-tools/idea/lucene/analysis/morfologik/
dev-tools/idea/lucene/analysis/phonetic/ dev-tools/maven/
dev-tools/scripts/ lucene/ lucene/analysis/ lucene/analysis/common/ luce...
Modified: lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java?rev=1377246&r1=1377245&r2=1377246&view=diff
==============================================================================
--- lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java (original)
+++ lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java Sat Aug 25 10:06:07 2012
@@ -22,7 +22,6 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
@@ -41,7 +40,6 @@ import org.apache.solr.common.cloud.Slic
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.handler.component.HttpShardHandlerFactory;
import org.apache.solr.util.DefaultSolrThreadFactory;
import org.apache.zookeeper.CreateMode;
@@ -100,7 +98,7 @@ public class OverseerTest extends SolrTe
zkClient.close();
}
- public void publishState(String coreName, String stateName, int numShards)
+ public String publishState(String coreName, String stateName, int numShards)
throws KeeperException, InterruptedException, IOException {
if (stateName == null) {
ElectionContext ec = electionContext.remove(coreName);
@@ -143,10 +141,11 @@ public class OverseerTest extends SolrTe
elector, shardId, collection, nodeName + "_" + coreName, props,
zkStateReader);
elector.joinElection(ctx);
- break;
+ return shardId;
}
Thread.sleep(200);
}
+ return null;
}
private String getShardId(final String coreName) {
@@ -165,14 +164,13 @@ public class OverseerTest extends SolrTe
@BeforeClass
public static void beforeClass() throws Exception {
- System.setProperty("solrcloud.skip.autorecovery", "true");
initCore();
}
@AfterClass
public static void afterClass() throws Exception {
- System.clearProperty("solrcloud.skip.autorecovery");
initCore();
+ Thread.sleep(3000); //XXX wait for threads to die...
}
@Test
@@ -182,53 +180,34 @@ public class OverseerTest extends SolrTe
ZkTestServer server = new ZkTestServer(zkDir);
- ZkController zkController = null;
+ MockZKController zkController = null;
SolrZkClient zkClient = null;
+ SolrZkClient overseerClient = null;
+
try {
server.run();
AbstractZkTestCase.tryCleanSolrZkNode(server.getZkHost());
AbstractZkTestCase.makeSolrZkNode(server.getZkHost());
-
+
zkClient = new SolrZkClient(server.getZkAddress(), TIMEOUT);
zkClient.makePath(ZkStateReader.LIVE_NODES_ZKNODE, true);
+ overseerClient = electNewOverseer(server.getZkAddress());
+
ZkStateReader reader = new ZkStateReader(zkClient);
reader.createClusterStateWatchersAndUpdate();
-
- zkController = new ZkController(null, server.getZkAddress(), TIMEOUT, 10000,
- "localhost", "8983", "solr", new CurrentCoreDescriptorProvider() {
-
- @Override
- public List<CoreDescriptor> getCurrentDescriptors() {
- // do nothing
- return null;
- }
- });
-
- System.setProperty("bootstrap_confdir", getFile("solr/collection1/conf")
- .getAbsolutePath());
+
+ zkController = new MockZKController(server.getZkAddress(), "localhost", "collection1");
final int numShards=6;
- final String[] ids = new String[numShards];
for (int i = 0; i < numShards; i++) {
- CloudDescriptor collection1Desc = new CloudDescriptor();
- collection1Desc.setNumShards(3);
- collection1Desc.setCollectionName("collection1");
- CoreDescriptor desc1 = new CoreDescriptor(null, "core" + (i + 1), "");
- desc1.setCloudDescriptor(collection1Desc);
- zkController.preRegister(desc1);
- ids[i] = zkController.register("core" + (i + 1), desc1);
+ assertNotNull("shard got no id?", zkController.publishState("core" + (i+1), ZkStateReader.ACTIVE, 3));
}
-
- assertEquals("shard1", ids[0]);
- assertEquals("shard2", ids[1]);
- assertEquals("shard3", ids[2]);
- assertEquals("shard1", ids[3]);
- assertEquals("shard2", ids[4]);
- assertEquals("shard3", ids[5]);
- waitForCollections(reader, "collection1");
+ assertEquals(2, reader.getClusterState().getSlice("collection1", "shard1").getShards().size());
+ assertEquals(2, reader.getClusterState().getSlice("collection1", "shard2").getShards().size());
+ assertEquals(2, reader.getClusterState().getSlice("collection1", "shard3").getShards().size());
//make sure leaders are in cloud state
assertNotNull(reader.getLeaderUrl("collection1", "shard1", 15000));
@@ -236,7 +215,6 @@ public class OverseerTest extends SolrTe
assertNotNull(reader.getLeaderUrl("collection1", "shard3", 15000));
} finally {
- System.clearProperty("bootstrap_confdir");
if (DEBUG) {
if (zkController != null) {
zkClient.printLayoutToStdOut();
@@ -246,6 +224,7 @@ public class OverseerTest extends SolrTe
if (zkController != null) {
zkController.close();
}
+ close(overseerClient);
server.shutdown();
}
}
@@ -261,10 +240,11 @@ public class OverseerTest extends SolrTe
ZkTestServer server = new ZkTestServer(zkDir);
- System.setProperty(ZkStateReader.NUM_SHARDS_PROP, Integer.toString(sliceCount));
SolrZkClient zkClient = null;
ZkStateReader reader = null;
- final ZkController[] controllers = new ZkController[nodeCount];
+ SolrZkClient overseerClient = null;
+
+ final MockZKController[] controllers = new MockZKController[nodeCount];
final ExecutorService[] nodeExecutors = new ExecutorService[nodeCount];
try {
server.run();
@@ -273,27 +253,15 @@ public class OverseerTest extends SolrTe
zkClient = new SolrZkClient(server.getZkAddress(), TIMEOUT);
zkClient.makePath(ZkStateReader.LIVE_NODES_ZKNODE, true);
+
+ overseerClient = electNewOverseer(server.getZkAddress());
reader = new ZkStateReader(zkClient);
reader.createClusterStateWatchersAndUpdate();
for (int i = 0; i < nodeCount; i++) {
-
- controllers[i] = new ZkController(null, server.getZkAddress(), TIMEOUT, 10000,
- "localhost", "898" + i, "solr", new CurrentCoreDescriptorProvider() {
-
- @Override
- public List<CoreDescriptor> getCurrentDescriptors() {
- // do nothing
- return null;
- }
- });
- }
-
- System.setProperty("bootstrap_confdir", getFile("solr/collection1/conf")
- .getAbsolutePath());
-
-
+ controllers[i] = new MockZKController(server.getZkAddress(), "node" + i, "collection1");
+ }
for (int i = 0; i < nodeCount; i++) {
nodeExecutors[i] = Executors.newFixedThreadPool(1, new DefaultSolrThreadFactory("testShardAssignment"));
}
@@ -305,18 +273,11 @@ public class OverseerTest extends SolrTe
Runnable coreStarter = new Runnable() {
@Override
public void run() {
- final CloudDescriptor collection1Desc = new CloudDescriptor();
- collection1Desc.setCollectionName("collection1");
- collection1Desc.setNumShards(sliceCount);
final String coreName = "core" + slot;
- final CoreDescriptor desc = new CoreDescriptor(null, coreName, "");
- desc.setCloudDescriptor(collection1Desc);
try {
- controllers[slot % nodeCount].preRegister(desc);
- ids[slot] = controllers[slot % nodeCount]
- .register(coreName, desc);
+ ids[slot]=controllers[slot % nodeCount].publishState(coreName, ZkStateReader.ACTIVE, sliceCount);
} catch (Throwable e) {
e.printStackTrace();
fail("register threw exception:" + e.getClass());
@@ -390,14 +351,13 @@ public class OverseerTest extends SolrTe
}
} finally {
- System.clearProperty(ZkStateReader.NUM_SHARDS_PROP);
- System.clearProperty("bootstrap_confdir");
if (DEBUG) {
if (controllers[0] != null) {
zkClient.printLayoutToStdOut();
}
}
close(zkClient);
+ close(overseerClient);
close(reader);
for (int i = 0; i < controllers.length; i++)
if (controllers[i] != null) {
@@ -889,9 +849,9 @@ public class OverseerTest extends SolrTe
}
}
- private void close(SolrZkClient overseerClient) throws InterruptedException {
- if (overseerClient != null) {
- overseerClient.close();
+ private void close(SolrZkClient client) throws InterruptedException {
+ if (client != null) {
+ client.close();
}
}
Modified: lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java?rev=1377246&r1=1377245&r2=1377246&view=diff
==============================================================================
--- lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java (original)
+++ lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java Sat Aug 25 10:06:07 2012
@@ -22,13 +22,12 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import junit.framework.Assert;
-
import org.apache.lucene.util.LuceneTestCase.Slow;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.cloud.ZkStateReader;
+import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.util.ExternalPaths;
import org.apache.zookeeper.CreateMode;
@@ -54,6 +53,7 @@ public class ZkControllerTest extends So
public void testReadConfigName() throws Exception {
String zkDir = dataDir.getAbsolutePath() + File.separator
+ "zookeeper/server1/data";
+ CoreContainer cc = null;
ZkTestServer server = new ZkTestServer(zkDir);
try {
@@ -78,7 +78,10 @@ public class ZkControllerTest extends So
zkClient.printLayoutToStdOut();
}
zkClient.close();
- ZkController zkController = new ZkController(null, server.getZkAddress(), TIMEOUT, 10000,
+
+ cc = getCoreContainer();
+
+ ZkController zkController = new ZkController(cc, server.getZkAddress(), TIMEOUT, 10000,
"localhost", "8983", "solr", new CurrentCoreDescriptorProvider() {
@Override
@@ -94,7 +97,9 @@ public class ZkControllerTest extends So
zkController.close();
}
} finally {
-
+ if (cc != null) {
+ cc.shutdown();
+ }
server.shutdown();
}
@@ -108,12 +113,15 @@ public class ZkControllerTest extends So
ZkTestServer server = new ZkTestServer(zkDir);
ZkController zkController = null;
boolean testFinished = false;
+ CoreContainer cc = null;
try {
server.run();
AbstractZkTestCase.makeSolrZkNode(server.getZkHost());
- zkController = new ZkController(null, server.getZkAddress(),
+ cc = getCoreContainer();
+
+ zkController = new ZkController(cc, server.getZkAddress(),
TIMEOUT, 10000, "localhost", "8983", "solr", new CurrentCoreDescriptorProvider() {
@Override
@@ -142,109 +150,16 @@ public class ZkControllerTest extends So
if (zkController != null) {
zkController.close();
}
+ if (cc != null) {
+ cc.shutdown();
+ }
server.shutdown();
}
}
-
- @Test
- public void testCoreUnload() throws Exception {
-
- String zkDir = dataDir.getAbsolutePath() + File.separator
- + "zookeeper/server1/data";
-
- ZkTestServer server = new ZkTestServer(zkDir);
-
- ZkController zkController = null;
- SolrZkClient zkClient = null;
- try {
- server.run();
- AbstractZkTestCase.tryCleanSolrZkNode(server.getZkHost());
- AbstractZkTestCase.makeSolrZkNode(server.getZkHost());
-
- zkClient = new SolrZkClient(server.getZkAddress(), TIMEOUT);
- zkClient.makePath(ZkStateReader.LIVE_NODES_ZKNODE, true);
-
- ZkStateReader reader = new ZkStateReader(zkClient);
- reader.createClusterStateWatchersAndUpdate();
-
- System.setProperty(ZkStateReader.NUM_SHARDS_PROP, "1");
- System.setProperty("solrcloud.skip.autorecovery", "true");
-
- zkController = new ZkController(null, server.getZkAddress(), TIMEOUT,
- 10000, "localhost", "8983", "solr",
- new CurrentCoreDescriptorProvider() {
-
- @Override
- public List<CoreDescriptor> getCurrentDescriptors() {
- // do nothing
- return null;
- }
- });
-
- System.setProperty("bootstrap_confdir", getFile("solr/collection1/conf")
- .getAbsolutePath());
-
- final int numShards = 2;
- final String[] ids = new String[numShards];
-
- for (int i = 0; i < numShards; i++) {
- CloudDescriptor collection1Desc = new CloudDescriptor();
- collection1Desc.setCollectionName("collection1");
- CoreDescriptor desc1 = new CoreDescriptor(null, "core" + (i + 1), "");
- desc1.setCloudDescriptor(collection1Desc);
- zkController.preRegister(desc1);
- ids[i] = zkController.register("core" + (i + 1), desc1);
- }
-
- assertEquals("shard1", ids[0]);
- assertEquals("shard1", ids[1]);
-
- assertNotNull(reader.getLeaderUrl("collection1", "shard1", 15000));
-
- assertEquals("Shard(s) missing from cloudstate", 2, zkController.getZkStateReader().getClusterState().getSlice("collection1", "shard1").getShards().size());
-
- // unregister current leader
- final ZkNodeProps shard1LeaderProps = reader.getLeaderProps(
- "collection1", "shard1");
- final String leaderUrl = reader.getLeaderUrl("collection1", "shard1",
- 15000);
-
- final CloudDescriptor collection1Desc = new CloudDescriptor();
- collection1Desc.setCollectionName("collection1");
- final CoreDescriptor desc1 = new CoreDescriptor(null,
- shard1LeaderProps.get(ZkStateReader.CORE_NAME_PROP), "");
- desc1.setCloudDescriptor(collection1Desc);
- zkController.unregister(
- shard1LeaderProps.get(ZkStateReader.CORE_NAME_PROP), collection1Desc);
- assertNotSame(
- "New leader was not promoted after unregistering the current leader.",
- leaderUrl, reader.getLeaderUrl("collection1", "shard1", 15000));
- assertNotNull("New leader was null.",
- reader.getLeaderUrl("collection1", "shard1", 15000));
-
- for(int i=0;i<30;i++) {
- if(zkController.getZkStateReader().getClusterState().getSlice("collection1", "shard1").getShards().size()==1) break;
- Thread.sleep(500);
- }
- assertEquals("shard was not unregistered", 1, zkController.getZkStateReader().getClusterState().getSlice("collection1", "shard1").getShards().size());
- } finally {
- System.clearProperty("solrcloud.skip.autorecovery");
- System.clearProperty(ZkStateReader.NUM_SHARDS_PROP);
- System.clearProperty("bootstrap_confdir");
- if (DEBUG) {
- if (zkController != null) {
- zkClient.printLayoutToStdOut();
- }
- }
- if (zkClient != null) {
- zkClient.close();
- }
- if (zkController != null) {
- zkController.close();
- }
- server.shutdown();
- }
+
+ private CoreContainer getCoreContainer() {
+ return new CoreContainer(TEMP_DIR.getAbsolutePath());
}
@Override
Modified: lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/core/TestBadConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/core/TestBadConfig.java?rev=1377246&r1=1377245&r2=1377246&view=diff
==============================================================================
--- lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/core/TestBadConfig.java (original)
+++ lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/core/TestBadConfig.java Sat Aug 25 10:06:07 2012
@@ -27,6 +27,21 @@ public class TestBadConfig extends Abstr
assertConfigs("bad_solrconfig.xml","schema.xml","unset.sys.property");
}
+ public void testUpdateLogButNoVersionField() throws Exception {
+
+ // :TODO: neccessary until SOLR-3699 is fixed
+ System.setProperty("solr.directoryFactory",
+ "org.apache.solr.core.SimpleFSDirectoryFactory");
+
+
+ System.setProperty("enable.update.log", "true");
+ try {
+ assertConfigs("solrconfig.xml", "schema12.xml", "_version_");
+ } finally {
+ System.clearProperty("enable.update.log");
+ }
+ }
+
public void testBogusScriptEngine() throws Exception {
// sanity check
Assume.assumeTrue(null == (new ScriptEngineManager()).getEngineByName("giberish"));
Modified: lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/update/TestUpdate.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/update/TestUpdate.java?rev=1377246&r1=1377245&r2=1377246&view=diff
==============================================================================
--- lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/update/TestUpdate.java (original)
+++ lucene/dev/branches/lucene3312/solr/core/src/test/org/apache/solr/update/TestUpdate.java Sat Aug 25 10:06:07 2012
@@ -68,7 +68,7 @@ public class TestUpdate extends SolrTest
doUpdateTest(new Callable() {
@Override
public Object call() throws Exception {
- commit("softCommit","false");
+ assertU(commit("softCommit","false"));
return null;
}
});
@@ -82,15 +82,15 @@ public class TestUpdate extends SolrTest
long version;
- version = addAndGetVersion(sdoc("id","1", "val_i",5), null);
+ version = addAndGetVersion(sdoc("id","1", "val_i",5, "copyfield_source","a"), null);
afterUpdate.call();
- version = addAndGetVersion(sdoc("id","1", "val_is",map("add",10)), null);
+ version = addAndGetVersion(sdoc("id","1", "val_is",map("add",10), "copyfield_source",map("add","b")), null);
afterUpdate.call();
version = addAndGetVersion(sdoc("id","1", "val_is",map("add",5)), null);
afterUpdate.call();
- assertJQ(req("qt","/get", "id","1", "fl","id,*_i,*_is")
- ,"=={'doc':{'id':'1', 'val_i':5, 'val_is':[10,5]}}"
+ assertJQ(req("qt","/get", "id","1", "fl","id,*_i,*_is,copyfield_*")
+ ,"=={'doc':{'id':'1', 'val_i':5, 'val_is':[10,5], 'copyfield_source':['a','b']}}" // real-time get should not return stored copyfield targets
);
version = addAndGetVersion(sdoc("id","1", "val_is",map("add",-1), "val_i",map("set",100)), null);
@@ -101,6 +101,14 @@ public class TestUpdate extends SolrTest
);
+ // Do a search to get all stored fields back and make sure that the stored copyfield target only
+ // has one copy of the source. This may not be supported forever!
+ assertU(commit("softCommit","true"));
+ assertJQ(req("q","*:*", "fl","id,*_i,*_is,copyfield_*")
+ ,"/response/docs/[0]=={'id':'1', 'val_i':100, 'val_is':[10,5,-1], 'copyfield_source':['a','b'], 'copyfield_dest_ss':['a','b']}"
+ );
+
+
long version2;
try {
// try bad version added as a field in the doc
Modified: lucene/dev/branches/lucene3312/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3312/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java?rev=1377246&r1=1377245&r2=1377246&view=diff
==============================================================================
--- lucene/dev/branches/lucene3312/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java (original)
+++ lucene/dev/branches/lucene3312/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java Sat Aug 25 10:06:07 2012
@@ -78,9 +78,18 @@ public class HttpClientUtil {
static final DefaultHttpRequestRetryHandler NO_RETRY = new DefaultHttpRequestRetryHandler(
0, false);
+ private static HttpClientConfigurer configurer = new HttpClientConfigurer();
+
private HttpClientUtil(){}
/**
+ * Replace the {@link HttpClientConfigurer} class used in configuring the http
+ * clients with a custom implementation.
+ */
+ public static void setConfigurer(HttpClientConfigurer newConfigurer) {
+ configurer = newConfigurer;
+ }
+ /**
* Creates new http client by using the provided configuration.
*
* @param params
@@ -103,38 +112,7 @@ public class HttpClientUtil {
*/
public static void configureClient(final DefaultHttpClient httpClient,
SolrParams config) {
-
- if (config.get(PROP_MAX_CONNECTIONS) != null) {
- setMaxConnections(httpClient, config.getInt(PROP_MAX_CONNECTIONS));
- }
-
- if (config.get(PROP_MAX_CONNECTIONS_PER_HOST) != null) {
- setMaxConnectionsPerHost(httpClient, config.getInt(PROP_MAX_CONNECTIONS_PER_HOST));
- }
-
- if (config.get(PROP_CONNECTION_TIMEOUT) != null) {
- setConnectionTimeout(httpClient, config.getInt(PROP_CONNECTION_TIMEOUT));
- }
-
- if (config.get(PROP_SO_TIMEOUT) != null) {
- setSoTimeout(httpClient, config.getInt(PROP_SO_TIMEOUT));
- }
-
- if (config.get(PROP_USE_RETRY) != null) {
- setUseRetry(httpClient, config.getBool(PROP_USE_RETRY));
- }
-
- if (config.get(PROP_FOLLOW_REDIRECTS) != null) {
- setFollowRedirects(httpClient, config.getBool(PROP_FOLLOW_REDIRECTS));
- }
-
- final String basicAuthUser = config.get(PROP_BASIC_AUTH_USER);
- final String basicAuthPass = config.get(PROP_BASIC_AUTH_PASS);
- setBasicAuth(httpClient, basicAuthUser, basicAuthPass);
-
- if (config.get(PROP_ALLOW_COMPRESSION) != null) {
- setAllowCompression(httpClient, config.getBool(PROP_ALLOW_COMPRESSION));
- }
+ configurer.configure(httpClient, config);
}
/**
Modified: lucene/dev/branches/lucene3312/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpClientUtilTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3312/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpClientUtilTest.java?rev=1377246&r1=1377245&r2=1377246&view=diff
==============================================================================
--- lucene/dev/branches/lucene3312/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpClientUtilTest.java (original)
+++ lucene/dev/branches/lucene3312/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpClientUtilTest.java Sat Aug 25 10:06:07 2012
@@ -18,6 +18,8 @@ package org.apache.solr.client.solrj.imp
import static org.junit.Assert.assertEquals;
+import java.util.concurrent.atomic.AtomicInteger;
+
import org.apache.http.auth.AuthScope;
import org.apache.http.client.HttpClient;
import org.apache.http.client.params.ClientPNames;
@@ -25,6 +27,7 @@ import org.apache.http.impl.client.Defau
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.HttpConnectionParams;
import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.params.SolrParams;
import org.junit.Test;
public class HttpClientUtilTest {
@@ -60,4 +63,31 @@ public class HttpClientUtilTest {
client.getConnectionManager().shutdown();
}
+ @Test
+ public void testReplaceConfigurer(){
+
+ try {
+ final AtomicInteger counter = new AtomicInteger();
+ HttpClientConfigurer custom = new HttpClientConfigurer(){
+ @Override
+ protected void configure(DefaultHttpClient httpClient, SolrParams config) {
+ super.configure(httpClient, config);
+ counter.set(config.getInt("custom-param", -1));
+ }
+
+ };
+
+ HttpClientUtil.setConfigurer(custom);
+
+ ModifiableSolrParams params = new ModifiableSolrParams();
+ params.set("custom-param", 5);
+ HttpClientUtil.createClient(params).getConnectionManager().shutdown();
+ assertEquals(5, counter.get());
+ } finally {
+ //restore default configurer
+ HttpClientUtil.setConfigurer(new HttpClientConfigurer());
+ }
+
+ }
+
}