You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2014/12/01 18:25:47 UTC
svn commit: r1642718 [11/12] - in /lucene/dev/branches/lucene2878: ./
dev-tools/ dev-tools/eclipse/dot.settings/ dev-tools/idea/.idea/
dev-tools/idea/lucene/benchmark/src/ dev-tools/idea/lucene/highlighter/
dev-tools/maven/ dev-tools/maven/solr/webapp/...
Modified: lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-schemaless.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-schemaless.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-schemaless.xml (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-schemaless.xml Mon Dec 1 17:25:39 2014
@@ -39,21 +39,14 @@
<bool name="httpCaching">true</bool>
</requestHandler>
- <requestHandler name="/get" class="solr.RealTimeGetHandler">
- <lst name="defaults">
- <str name="omitHeader">true</str>
- </lst>
- </requestHandler>
- <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
+
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="update.chain">add-unknown-fields-to-the-schema</str>
</lst>
</requestHandler>
- <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
-
- <!-- Add unknown fields to the schema
+ <!-- Add unknown fields to the schema
An example field type guessing update processor that will
attempt to parse string-typed field values as Booleans, Longs,
Modified: lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave.xml Mon Dec 1 17:25:39 2014
@@ -40,8 +40,6 @@
<requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
</requestHandler>
- <requestHandler name="/update" class="solr.UpdateRequestHandler" />
-
<requestHandler name="/replication" class="solr.ReplicationHandler">
<lst name="slave">
<str name="masterUrl">http://127.0.0.1:TEST_PORT/solr</str>
Modified: lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave1.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave1.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave1.xml (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-slave1.xml Mon Dec 1 17:25:39 2014
@@ -40,11 +40,6 @@
<requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
</requestHandler>
- <requestHandler name="/update" class="solr.UpdateRequestHandler" />
-
- <requestHandler name="/replication" class="solr.ReplicationHandler">
-
- </requestHandler>
<!-- enable streaming for testing... -->
<requestDispatcher handleSelect="true">
Modified: lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog-with-delayingcomponent.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog-with-delayingcomponent.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog-with-delayingcomponent.xml (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog-with-delayingcomponent.xml Mon Dec 1 17:25:39 2014
@@ -46,16 +46,6 @@
<requestHandler name="standard" class="solr.StandardRequestHandler">
</requestHandler>
- <requestHandler name="/get" class="solr.RealTimeGetHandler">
- <lst name="defaults">
- <str name="omitHeader">true</str>
- </lst>
- </requestHandler>
-
- <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
-
- <requestHandler name="/update" class="solr.UpdateRequestHandler" />
-
<updateHandler class="solr.DirectUpdateHandler2">
<updateLog>
<str name="dir">${solr.ulog.dir:}</str>
@@ -85,8 +75,6 @@
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
- <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
-
<requestHandler name="/admin/file" class="solr.admin.ShowFileRequestHandler" >
<lst name="invariants">
<str name="hidden">bogus.txt</str>
Modified: lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tlog.xml Mon Dec 1 17:25:39 2014
@@ -46,16 +46,6 @@
<requestHandler name="standard" class="solr.StandardRequestHandler">
</requestHandler>
- <requestHandler name="/get" class="solr.RealTimeGetHandler">
- <lst name="defaults">
- <str name="omitHeader">true</str>
- </lst>
- </requestHandler>
-
- <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
-
- <requestHandler name="/update" class="solr.UpdateRequestHandler" />
-
<updateHandler class="solr.DirectUpdateHandler2">
<updateLog>
<str name="dir">${solr.ulog.dir:}</str>
@@ -85,7 +75,6 @@
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
- <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
<requestHandler name="/admin/file" class="solr.admin.ShowFileRequestHandler" >
<lst name="invariants">
Modified: lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tolerant-search.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tolerant-search.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tolerant-search.xml (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-tolerant-search.xml Mon Dec 1 17:25:39 2014
@@ -48,10 +48,5 @@
<queryResponseWriter name="javabin"
class="solr.TestTolerantSearch$BadResponseWriter" />
-
- <requestHandler name="/admin/"
- class="org.apache.solr.handler.admin.AdminHandlers" />
-
- <requestHandler name="/update" class="solr.UpdateRequestHandler" />
</config>
Modified: lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-withgethandler.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-withgethandler.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-withgethandler.xml (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig-withgethandler.xml Mon Dec 1 17:25:39 2014
@@ -45,14 +45,7 @@
</requestHandler>
- <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
-
- <requestHandler name="/update" class="solr.UpdateRequestHandler" />
-
- <requestHandler name="/get" class="solr.RealTimeGetHandler">
- <lst name="defaults">
- <str name="omitHeader">true</str>
- </lst>
+ <requestHandler name="/dump" class="solr.DumpRequestHandler">
</requestHandler>
</config>
Modified: lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig.xml Mon Dec 1 17:25:39 2014
@@ -190,8 +190,6 @@
<queryResponseWriter name="xml" default="true"
class="solr.XMLResponseWriter" />
- <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
-
<!-- An alternate set representation that uses an integer hash to store filters (sets of docids).
If the set cardinality <= maxSize elements, then HashDocSet will be used instead of the bitset
based HashBitset. -->
@@ -206,12 +204,6 @@
<bool name="httpCaching">true</bool>
</requestHandler>
- <requestHandler name="/get" class="solr.RealTimeGetHandler">
- <lst name="defaults">
- <str name="omitHeader">true</str>
- </lst>
- </requestHandler>
-
<requestHandler name="dismax" class="solr.SearchHandler" >
<lst name="defaults">
<str name="defType">dismax</str>
@@ -235,8 +227,6 @@
<requestHandler name="mock" class="org.apache.solr.core.MockQuerySenderListenerReqHandler"/>
- <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
-
<requestHandler name="/admin/file" class="solr.admin.ShowFileRequestHandler" >
<lst name="invariants">
<str name="hidden">bogus.txt</str>
@@ -267,7 +257,7 @@
</lst>
</requestHandler>
- <requestHandler name="/update" class="solr.UpdateRequestHandler" />
+
<searchComponent name="spellcheck" class="org.apache.solr.handler.component.SpellCheckComponent">
<!-- This is slightly different from the field value so we can test dealing with token offset changes -->
Modified: lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig_perf.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig_perf.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig_perf.xml (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test-files/solr/collection1/conf/solrconfig_perf.xml Mon Dec 1 17:25:39 2014
@@ -71,6 +71,4 @@
<requestHandler name="standard" class="solr.SearchHandler" default="true">
</requestHandler>
- <requestHandler name="/update" class="solr.UpdateRequestHandler" />
-
</config>
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java Mon Dec 1 17:25:39 2014
@@ -105,10 +105,14 @@ public class MinimalSchemaTest extends S
Set<String> handlerNames = h.getCore().getRequestHandlers().keySet();
for (String handler : handlerNames) {
try {
- if (handler.startsWith("/update")) {
- continue;
- }
- if (handler.startsWith("/mlt")) {
+
+
+ if (handler.startsWith("/update") ||
+ handler.startsWith("/admin") ||
+ handler.startsWith("/schema") ||
+ handler.startsWith("/config") ||
+ handler.startsWith("/mlt")
+ ) {
continue;
}
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java Mon Dec 1 17:25:39 2014
@@ -21,6 +21,7 @@ import org.apache.solr.client.solrj.Solr
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.cloud.overseer.OverseerAction;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.cloud.Slice;
@@ -157,7 +158,7 @@ public class DeleteShardTest extends Abs
KeeperException, InterruptedException {
DistributedQueue inQueue = Overseer.getInQueue(cloudClient.getZkStateReader().getZkClient());
Map<String, Object> propMap = new HashMap<>();
- propMap.put(Overseer.QUEUE_OPERATION, Overseer.OverseerAction.UPDATESHARDSTATE.toLower());
+ propMap.put(Overseer.QUEUE_OPERATION, OverseerAction.UPDATESHARDSTATE.toLower());
propMap.put(slice, state);
propMap.put(ZkStateReader.COLLECTION_PROP, "collection1");
ZkNodeProps m = new ZkNodeProps(propMap);
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java Mon Dec 1 17:25:39 2014
@@ -38,6 +38,7 @@ import org.apache.solr.client.solrj.Solr
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.cloud.overseer.OverseerAction;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.cloud.ZkStateReader;
@@ -106,7 +107,7 @@ public class OverseerRolesTest extends
Map m = (Map) ZkStateReader.fromJSON(data);
String s = (String) m.get("id");
String leader = LeaderElector.getNodeName(s);
- Overseer.getInQueue(zk).offer(ZkStateReader.toJSON(new ZkNodeProps(Overseer.QUEUE_OPERATION, Overseer.OverseerAction.QUIT.toLower())));
+ Overseer.getInQueue(zk).offer(ZkStateReader.toJSON(new ZkNodeProps(Overseer.QUEUE_OPERATION, OverseerAction.QUIT.toLower())));
long timeout = System.currentTimeMillis()+10000;
String newLeader=null;
for(;System.currentTimeMillis() < timeout;){
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java Mon Dec 1 17:25:39 2014
@@ -36,6 +36,7 @@ import javax.xml.parsers.ParserConfigura
import org.apache.lucene.util.LuceneTestCase.Slow;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.cloud.overseer.OverseerAction;
import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.cloud.Replica;
@@ -43,10 +44,14 @@ 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.common.params.CollectionParams;
import org.apache.solr.handler.component.HttpShardHandlerFactory;
import org.apache.solr.update.UpdateShardHandler;
import org.apache.solr.util.DefaultSolrThreadFactory;
import org.apache.solr.util.MockConfigSolr;
+import org.apache.solr.util.stats.Snapshot;
+import org.apache.solr.util.stats.Timer;
+import org.apache.solr.util.stats.TimerContext;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.KeeperException.NoNodeException;
@@ -54,6 +59,7 @@ import org.apache.zookeeper.KeeperExcept
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
import org.xml.sax.SAXException;
@@ -112,7 +118,7 @@ public class OverseerTest extends SolrTe
if (ec != null) {
ec.cancelElection();
}
- ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, Overseer.OverseerAction.DELETECORE.toLower(),
+ ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, OverseerAction.DELETECORE.toLower(),
ZkStateReader.NODE_NAME_PROP, nodeName,
ZkStateReader.CORE_NAME_PROP, coreName,
ZkStateReader.CORE_NODE_NAME_PROP, coreNodeName,
@@ -121,7 +127,7 @@ public class OverseerTest extends SolrTe
q.offer(ZkStateReader.toJSON(m));
return null;
} else {
- ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, Overseer.OverseerAction.STATE.toLower(),
+ ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, OverseerAction.STATE.toLower(),
ZkStateReader.STATE_PROP, stateName,
ZkStateReader.NODE_NAME_PROP, nodeName,
ZkStateReader.CORE_NAME_PROP, coreName,
@@ -525,7 +531,7 @@ public class OverseerTest extends SolrTe
DistributedQueue q = Overseer.getInQueue(zkClient);
- ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, Overseer.OverseerAction.STATE.toLower(),
+ ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, OverseerAction.STATE.toLower(),
ZkStateReader.BASE_URL_PROP, "http://127.0.0.1/solr",
ZkStateReader.NODE_NAME_PROP, "node1",
ZkStateReader.COLLECTION_PROP, "collection1",
@@ -878,6 +884,135 @@ public class OverseerTest extends SolrTe
}
}
+ @Test
+ @Ignore
+ public void testPerformance() throws Exception {
+ String zkDir = createTempDir("OverseerTest.testPerformance").toFile().getAbsolutePath();
+
+ ZkTestServer server = new ZkTestServer(zkDir);
+
+ SolrZkClient controllerClient = null;
+ SolrZkClient overseerClient = null;
+ ZkStateReader reader = null;
+ MockZKController mockController = null;
+
+ try {
+ server.run();
+ controllerClient = new SolrZkClient(server.getZkAddress(), TIMEOUT);
+
+ AbstractZkTestCase.tryCleanSolrZkNode(server.getZkHost());
+ AbstractZkTestCase.makeSolrZkNode(server.getZkHost());
+ controllerClient.makePath(ZkStateReader.LIVE_NODES_ZKNODE, true);
+
+ reader = new ZkStateReader(controllerClient);
+ reader.createClusterStateWatchersAndUpdate();
+
+ mockController = new MockZKController(server.getZkAddress(), "node1");
+
+ final int MAX_COLLECTIONS = 10, MAX_CORES = 10, MAX_STATE_CHANGES = 20000, STATE_FORMAT = 2;
+
+ for (int i=0; i<MAX_COLLECTIONS; i++) {
+ ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, CollectionParams.CollectionAction.CREATE.toLower(),
+ "name", "perf" + i,
+ ZkStateReader.NUM_SHARDS_PROP, "1",
+ "stateFormat", String.valueOf(STATE_FORMAT),
+ ZkStateReader.REPLICATION_FACTOR, "1",
+ ZkStateReader.MAX_SHARDS_PER_NODE, "1"
+ );
+ DistributedQueue q = Overseer.getInQueue(controllerClient);
+ q.offer(ZkStateReader.toJSON(m));
+ controllerClient.makePath("/collections/perf" + i, true);
+ }
+
+ for (int i = 0, j = 0, k = 0; i < MAX_STATE_CHANGES; i++, j++, k++) {
+ ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, OverseerAction.STATE.toLower(),
+ ZkStateReader.STATE_PROP, ZkStateReader.RECOVERING,
+ ZkStateReader.NODE_NAME_PROP, "node1",
+ ZkStateReader.CORE_NAME_PROP, "core" + k,
+ ZkStateReader.CORE_NODE_NAME_PROP, "node1",
+ ZkStateReader.COLLECTION_PROP, "perf" + j,
+ ZkStateReader.NUM_SHARDS_PROP, "1",
+ ZkStateReader.BASE_URL_PROP, "http://" + "node1"
+ + "/solr/");
+ DistributedQueue q = Overseer.getInQueue(controllerClient);
+ q.offer(ZkStateReader.toJSON(m));
+ if (j >= MAX_COLLECTIONS - 1) j = 0;
+ if (k >= MAX_CORES - 1) k = 0;
+ if (i > 0 && i % 100 == 0) log.info("Published {} items", i);
+ }
+
+ // let's publish a sentinel collection which we'll use to wait for overseer to complete operations
+ ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, OverseerAction.STATE.toLower(),
+ ZkStateReader.STATE_PROP, ZkStateReader.ACTIVE,
+ ZkStateReader.NODE_NAME_PROP, "node1",
+ ZkStateReader.CORE_NAME_PROP, "core1",
+ ZkStateReader.CORE_NODE_NAME_PROP, "node1",
+ ZkStateReader.COLLECTION_PROP, "perf_sentinel",
+ ZkStateReader.NUM_SHARDS_PROP, "1",
+ ZkStateReader.BASE_URL_PROP, "http://" + "node1"
+ + "/solr/");
+ DistributedQueue q = Overseer.getInQueue(controllerClient);
+ q.offer(ZkStateReader.toJSON(m));
+
+ Timer t = new Timer();
+ TimerContext context = t.time();
+ try {
+ overseerClient = electNewOverseer(server.getZkAddress());
+ assertTrue(overseers.size() > 0);
+
+ while (true) {
+ reader.updateClusterState(true);
+ ClusterState state = reader.getClusterState();
+ if (state.hasCollection("perf_sentinel")) {
+ break;
+ }
+ Thread.sleep(1000);
+ }
+ } finally {
+ context.stop();
+ }
+
+ log.info("Overseer loop finished processing: ");
+ printTimingStats(t);
+
+ Overseer overseer = overseers.get(0);
+ Overseer.Stats stats = overseer.getStats();
+
+ String[] interestingOps = {"state", "update_state", "am_i_leader", ""};
+ Arrays.sort(interestingOps);
+ for (Map.Entry<String, Overseer.Stat> entry : stats.getStats().entrySet()) {
+ String op = entry.getKey();
+ if (Arrays.binarySearch(interestingOps, op) < 0)
+ continue;
+ Overseer.Stat stat = entry.getValue();
+ log.info("op: {}, success: {}, failure: {}", op, stat.success.get(), stat.errors.get());
+ Timer timer = stat.requestTime;
+ printTimingStats(timer);
+ }
+
+ } finally {
+ close(overseerClient);
+ close(mockController);
+ close(controllerClient);
+ close(reader);
+ server.shutdown();
+ }
+ }
+
+ private void printTimingStats(Timer timer) {
+ Snapshot snapshot = timer.getSnapshot();
+ log.info("\t totalTime: {}", timer.getSum());
+ log.info("\t avgRequestsPerMinute: {}", timer.getMeanRate());
+ log.info("\t 5minRateRequestsPerMinute: {}", timer.getFiveMinuteRate());
+ log.info("\t 15minRateRequestsPerMinute: {}", timer.getFifteenMinuteRate());
+ log.info("\t avgTimePerRequest: {}", timer.getMean());
+ log.info("\t medianRequestTime: {}", snapshot.getMedian());
+ log.info("\t 75thPctlRequestTime: {}", snapshot.get75thPercentile());
+ log.info("\t 95thPctlRequestTime: {}", snapshot.get95thPercentile());
+ log.info("\t 99thPctlRequestTime: {}", snapshot.get99thPercentile());
+ log.info("\t 999thPctlRequestTime: {}", snapshot.get999thPercentile());
+ }
+
private void close(MockZKController mockController) {
if (mockController != null) {
mockController.close();
@@ -928,7 +1063,7 @@ public class OverseerTest extends SolrTe
//submit to proper queue
queue = Overseer.getInQueue(zkClient);
- m = new ZkNodeProps(Overseer.QUEUE_OPERATION, Overseer.OverseerAction.STATE.toLower(),
+ m = new ZkNodeProps(Overseer.QUEUE_OPERATION, OverseerAction.STATE.toLower(),
ZkStateReader.BASE_URL_PROP, "http://127.0.0.1/solr",
ZkStateReader.NODE_NAME_PROP, "node1",
ZkStateReader.SHARD_ID_PROP, "s1",
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestConfig.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestConfig.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestConfig.java Mon Dec 1 17:25:39 2014
@@ -107,10 +107,6 @@ public class TestConfig extends SolrTest
ShowFileRequestHandler handler = (ShowFileRequestHandler) h.getCore().getRequestHandler("/admin/file");
assertTrue("file handler should have been automatically registered", handler != null);
- //System.out.println( handler.getHiddenFiles() );
- // should not contain: <gettableFiles>solrconfig.xml schema.xml admin-extra.html</gettableFiles>
- assertFalse(handler.getHiddenFiles().contains("schema.xml".toUpperCase(Locale.ROOT)));
- assertTrue(handler.getHiddenFiles().contains("PROTWORDS.TXT"));
}
// If defaults change, add test methods to cover each version
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestConfigSets.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestConfigSets.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestConfigSets.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestConfigSets.java Mon Dec 1 17:25:39 2014
@@ -121,7 +121,7 @@ public class TestConfigSets extends Solr
// We initially don't have a /get handler defined
SolrCore core = container.create(new CoreDescriptor(container, "core1", testDirectory + "/core", "configSet", "configset-2"));
assertThat("No /get handler should be defined in the initial configuration",
- core.getRequestHandler("/get"), is(nullValue()));
+ core.getRequestHandler("/dump"), is(nullValue()));
// Now copy in a config with a /get handler and reload
FileUtils.copyFile(getFile("solr/collection1/conf/solrconfig-withgethandler.xml"),
@@ -130,7 +130,7 @@ public class TestConfigSets extends Solr
core = container.getCore("core1");
assertThat("A /get handler should be defined in the reloaded configuration",
- core.getRequestHandler("/get"), is(notNullValue()));
+ core.getRequestHandler("/dump"), is(notNullValue()));
core.close();
container.shutdown();
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestInitParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestInitParams.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestInitParams.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestInitParams.java Mon Dec 1 17:25:39 2014
@@ -18,6 +18,7 @@ package org.apache.solr.core;
*/
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.SolrQueryResponse;
@@ -25,6 +26,9 @@ import org.junit.BeforeClass;
import org.junit.Test;
import java.util.Arrays;
+import java.util.HashMap;
+
+import static java.util.Collections.singletonMap;
public class TestInitParams extends SolrTestCaseJ4 {
@BeforeClass
@@ -46,6 +50,14 @@ public class TestInitParams extends Solr
def = (NamedList) nl.get(PluginInfo.APPENDS);
assertEquals("C", def.get("c"));
}
+
+ InitParams initParams = h.getCore().getSolrConfig().getInitParams().get("a");
+
+ PluginInfo pluginInfo = new PluginInfo("requestHandler",
+ new HashMap<String, String>(),
+ new NamedList<>(singletonMap("defaults", new NamedList(ZkNodeProps.makeMap("a", "A1")))), null);
+ initParams.apply(pluginInfo);
+ assertEquals( "A",initParams.defaults.get("a"));
}
@Test
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestJmxMonitoredMap.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestJmxMonitoredMap.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestJmxMonitoredMap.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestJmxMonitoredMap.java Mon Dec 1 17:25:39 2014
@@ -32,9 +32,9 @@ import javax.management.remote.JMXConnec
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.management.remote.rmi.RMIConnectorServer;
+
import java.io.IOException;
import java.net.ServerSocket;
-import java.net.URL;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.RMIServerSocketFactory;
import java.util.Set;
@@ -175,51 +175,4 @@ public class TestJmxMonitoredMap extends
}
- private class MockInfoMBean implements SolrInfoMBean {
- @Override
- public String getName() {
- return "mock";
- }
-
- @Override
- public Category getCategory() {
- return Category.OTHER;
- }
-
- @Override
- public String getDescription() {
- return "mock";
- }
-
- @Override
- public URL[] getDocs() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String getVersion() {
- return "mock";
- }
-
- @Override
- public String getSource() {
- return "mock";
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public NamedList getStatistics() {
- NamedList myList = new NamedList<Integer>();
- myList.add("Integer", 123);
- myList.add("Double",567.534);
- myList.add("Long", 32352463l);
- myList.add("Short", (short) 32768);
- myList.add("Byte", (byte) 254);
- myList.add("Float", 3.456f);
- myList.add("String","testing");
- return myList;
- }
- }
-
}
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java Mon Dec 1 17:25:39 2014
@@ -19,15 +19,25 @@ package org.apache.solr.core;
import java.io.File;
+import java.io.IOException;
import java.io.StringReader;
-import java.util.List;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
+import java.util.concurrent.TimeUnit;
import com.google.common.collect.ImmutableList;
import org.apache.commons.io.FileUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.util.EntityUtils;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.client.solrj.impl.CloudSolrServer;
+import org.apache.solr.client.solrj.impl.HttpSolrServer;
+import org.apache.solr.handler.TestSolrConfigHandlerConcurrent;
import org.apache.solr.util.RestTestBase;
import org.apache.solr.util.RestTestHarness;
import org.eclipse.jetty.servlet.ServletHolder;
@@ -77,13 +87,11 @@ public class TestSolrConfigHandler exten
public void testProperty() throws Exception{
+ RestTestHarness harness = restTestHarness;
String payload= "{\n" +
" 'set-property' : { 'updateHandler.autoCommit.maxDocs':100, 'updateHandler.autoCommit.maxTime':10 } \n" +
" }";
- RestTestHarness harness = restTestHarness;
- String response = harness.post("/config?wt=json", SolrTestCaseJ4.json(payload));
- Map map = (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
- assertNull(response, map.get("errors"));
+ runConfigCommand( harness,"/config?wt=json", payload);
Map m = (Map) getRespMap("/config/overlay?wt=json" ,harness).get("overlay");
Map props = (Map) m.get("props");
@@ -99,9 +107,7 @@ public class TestSolrConfigHandler exten
payload= "{\n" +
" 'unset-property' : 'updateHandler.autoCommit.maxDocs'} \n" +
" }";
- response = harness.post("/config?wt=json", SolrTestCaseJ4.json(payload));
- map = (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
- assertNull(response, map.get("errors"));
+ runConfigCommand(harness, "/config?wt=json", payload);
m = (Map) getRespMap("/config/overlay?wt=json" ,harness).get("overlay");
props = (Map) m.get("props");
@@ -111,14 +117,12 @@ public class TestSolrConfigHandler exten
}
public void testUserProp() throws Exception{
+ RestTestHarness harness = restTestHarness;
String payload= "{\n" +
" 'set-user-property' : { 'my.custom.variable.a':'MODIFIEDA'," +
" 'my.custom.variable.b':'MODIFIEDB' } \n" +
" }";
- RestTestHarness harness = restTestHarness;
- String response = harness.post("/config?wt=json", SolrTestCaseJ4.json(payload));
- Map map = (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
- assertNull(response, map.get("errors"));
+ runConfigCommand(harness,"/config?wt=json", payload);
Map m = (Map) getRespMap("/config/overlay?wt=json" ,harness).get("overlay");
Map props = (Map) m.get("userProps");
@@ -132,14 +136,93 @@ public class TestSolrConfigHandler exten
assertEquals("MODIFIEDA", m.get("a"));
assertEquals("MODIFIEDB", m.get("b"));
+ }
+ public void testReqHandlerAPIs() throws Exception {
+ reqhandlertests(restTestHarness, null,null);
+ }
+ private static void runConfigCommand(RestTestHarness harness, String uri, String payload) throws IOException {
+ String response = harness.post(uri, SolrTestCaseJ4.json(payload));
+ Map map = (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
+ assertNull(response, map.get("errors"));
}
+ public static void reqhandlertests(RestTestHarness writeHarness,String testServerBaseUrl, CloudSolrServer cloudSolrServer) throws Exception {
+ String payload = "{\n" +
+ "'create-requesthandler' : { 'name' : '/x', 'class': 'org.apache.solr.handler.DumpRequestHandler' , 'startup' : 'lazy'}\n" +
+ "}";
+ runConfigCommand(writeHarness,"/config?wt=json", payload);
+
+ boolean success = false;
+ long startTime = System.nanoTime();
+ long maxTimeoutSeconds = 10;
+ while ( TimeUnit.SECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) < maxTimeoutSeconds) {
+ String uri = "/config/overlay?wt=json";
+ Map m = testServerBaseUrl ==null? getRespMap(uri,writeHarness) : TestSolrConfigHandlerConcurrent.getAsMap(testServerBaseUrl+uri ,cloudSolrServer) ;
+ if("lazy".equals( ConfigOverlay.getObjectByPath(m, true, Arrays.asList("overlay", "requestHandler", "/x","startup")))) {
+ Map map = getRespMap("/x?wt=json",writeHarness);
+ if(map.containsKey("params")) {
+ success = true;
+ break;
+ }
+ }
+ Thread.sleep(100);
+
+ }
+
+ assertTrue( "Could not register requestHandler ", success);
+
+ payload = "{\n" +
+ "'update-requesthandler' : { 'name' : '/x', 'class': 'org.apache.solr.handler.DumpRequestHandler' , 'startup' : 'lazy' , 'a':'b'}\n" +
+ "}";
+ runConfigCommand(writeHarness,"/config?wt=json", payload);
+
+ success = false;
+ startTime = System.nanoTime();
+ maxTimeoutSeconds = 10;
+ while ( TimeUnit.SECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) < maxTimeoutSeconds) {
+ String uri = "/config/overlay?wt=json";
+ Map m = testServerBaseUrl ==null? getRespMap(uri,writeHarness) : TestSolrConfigHandlerConcurrent.getAsMap(testServerBaseUrl+uri ,cloudSolrServer) ;
+ if("b".equals( ConfigOverlay.getObjectByPath(m, true, Arrays.asList("overlay", "requestHandler", "/x","a")))) {
+ success = true;
+ break;
+ }
+ Thread.sleep(100);
+
+ }
+
+ assertTrue( "Could not update requestHandler ", success);
+
+ payload = "{\n" +
+ "'delete-requesthandler' : '/x'" +
+ "}";
+ runConfigCommand(writeHarness,"/config?wt=json", payload);
+ success = false;
+ startTime = System.nanoTime();
+ maxTimeoutSeconds = 10;
+ while ( TimeUnit.SECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) < maxTimeoutSeconds) {
+ String uri = "/config/overlay?wt=json";
+ Map m = testServerBaseUrl ==null? getRespMap(uri,writeHarness) : TestSolrConfigHandlerConcurrent.getAsMap(testServerBaseUrl+uri ,cloudSolrServer) ;
+ if(null == ConfigOverlay.getObjectByPath(m, true, Arrays.asList("overlay", "requestHandler", "/x","a"))) {
+ success = true;
+ break;
+ }
+ Thread.sleep(100);
+
+ }
+ assertTrue( "Could not delete requestHandler ", success);
+
+ }
+
public static Map getRespMap(String path, RestTestHarness restHarness) throws Exception {
String response = restHarness.query(path);
- return (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
+ try {
+ return (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
+ } catch (JSONParser.ParseException e) {
+ return Collections.emptyMap();
+ }
}
}
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java Mon Dec 1 17:25:39 2014
@@ -28,10 +28,17 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.util.EntityUtils;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.SolrServer;
+import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
+import org.apache.solr.common.cloud.DocCollection;
+import org.apache.solr.common.cloud.Replica;
+import org.apache.solr.common.cloud.Slice;
import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.core.ConfigOverlay;
import org.apache.solr.util.RESTfulServerProvider;
@@ -67,7 +74,6 @@ public class TestSolrConfigHandlerConcur
@Override
public void doTest() throws Exception {
-
Map editable_prop_map = (Map) new ObjectBuilder(new JSONParser(new StringReader(
ConfigOverlay.MAPPING))).getObject();
Map caches = (Map) editable_prop_map.get("query");
@@ -143,31 +149,39 @@ public class TestSolrConfigHandlerConcur
return;
}
+ DocCollection coll = cloudClient.getZkStateReader().getClusterState().getCollection("collection1");
+ List<String> urls = new ArrayList<>();
+ for (Slice slice : coll.getSlices()) {
+ for (Replica replica : slice.getReplicas())
+ urls.add(""+replica.get(ZkStateReader.BASE_URL_PROP) + "/"+replica.get(ZkStateReader.CORE_NAME_PROP));
+ }
+
+
//get another node
- RestTestHarness harness = restTestHarnesses.get(r.nextInt(restTestHarnesses.size()));
+ String url = urls.get(urls.size());
+
long startTime = System.nanoTime();
- boolean success = false;
- long maxTimeoutSeconds = 10;
+ long maxTimeoutSeconds = 20;
while ( TimeUnit.SECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) < maxTimeoutSeconds) {
Thread.sleep(100);
errmessages.clear();
- Map respMap = getAsMap("/config/overlay?wt=json", harness);
+ Map respMap = getAsMap(url+"/config/overlay?wt=json", cloudClient);
Map m = (Map) respMap.get("overlay");
if(m!= null) m = (Map) m.get("props");
if(m == null) {
- errmessages.add(MessageFormat.format( "overlay does not exist for cache: {} , iteration: {} response {} ", cacheName, i, respMap.toString()));
+ errmessages.add(MessageFormat.format( "overlay does not exist for cache: {0} , iteration: {1} response {2} ", cacheName, i, respMap.toString()));
continue;
}
Object o = getObjectByPath(m, true, asList("query", cacheName, "size"));
- if(!val1.equals(o)) errmessages.add(MessageFormat.format("'size' property not set, expected = {}, actual {}", val1,o));
+ if(!val1.equals(o)) errmessages.add(MessageFormat.format("'size' property not set, expected = {0}, actual {1}", val1,o));
o = getObjectByPath(m, true, asList("query", cacheName, "initialSize"));
- if(!val2.equals(o)) errmessages.add(MessageFormat.format("'initialSize' property not set, expected = {}, actual {}", val2,o));
+ if(!val2.equals(o)) errmessages.add(MessageFormat.format("'initialSize' property not set, expected = {0}, actual {1}", val2,o));
o = getObjectByPath(m, true, asList("query", cacheName, "autowarmCount"));
- if(!val3.equals(o)) errmessages.add(MessageFormat.format("'autowarmCount' property not set, expected = {}, actual {}", val3,o));
+ if(!val3.equals(o)) errmessages.add(MessageFormat.format("'autowarmCount' property not set, expected = {0}, actual {1}", val3,o));
if(errmessages.isEmpty()) break;
}
if(!errmessages.isEmpty()) {
@@ -178,5 +192,15 @@ public class TestSolrConfigHandlerConcur
}
-
+ public static Map getAsMap(String uri, CloudSolrServer cloudClient) throws Exception {
+ HttpGet get = new HttpGet(uri) ;
+ HttpEntity entity = null;
+ try {
+ entity = cloudClient.getLbServer().getHttpClient().execute(get).getEntity();
+ String response = EntityUtils.toString(entity, StandardCharsets.UTF_8);
+ return (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
+ } finally {
+ EntityUtils.consumeQuietly(entity);
+ }
+ }
}
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/rest/SolrRestletTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/rest/SolrRestletTestBase.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/rest/SolrRestletTestBase.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/rest/SolrRestletTestBase.java Mon Dec 1 17:25:39 2014
@@ -47,10 +47,6 @@ abstract public class SolrRestletTestBas
solrSchemaRestApi.setInitParameter("org.restlet.application", "org.apache.solr.rest.SolrSchemaRestApi");
extraServlets.put(solrSchemaRestApi, "/schema/*"); // '/schema/*' matches '/schema', '/schema/', and '/schema/whatever...'
- final ServletHolder solrConfigRestApi = new ServletHolder("SolrConfigRestApi", ServerServlet.class);
- solrConfigRestApi.setInitParameter("org.restlet.application", "org.apache.solr.rest.SolrConfigRestApi");
- extraServlets.put(solrConfigRestApi, "/config/*");
-
createJettyAndHarness(TEST_HOME(), "solrconfig.xml", "schema-rest.xml", "/solr", true, extraServlets);
}
}
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/rest/TestRestManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/rest/TestRestManager.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/rest/TestRestManager.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/rest/TestRestManager.java Mon Dec 1 17:25:39 2014
@@ -125,7 +125,6 @@ public class TestRestManager extends Sol
Set<String> reservedEndpoints = registry.getReservedEndpoints();
assertTrue(reservedEndpoints.size() > 2);
assertTrue(reservedEndpoints.contains(RestManager.SCHEMA_BASE_PATH + RestManager.MANAGED_ENDPOINT));
- assertTrue(reservedEndpoints.contains(RestManager.CONFIG_BASE_PATH + RestManager.MANAGED_ENDPOINT));
for (String endpoint : reservedEndpoints) {
try {
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java Mon Dec 1 17:25:39 2014
@@ -25,6 +25,7 @@ import org.apache.solr.cloud.AbstractFul
import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.util.RESTfulServerProvider;
import org.apache.solr.util.RestTestHarness;
+import org.junit.BeforeClass;
import org.noggit.JSONParser;
import org.noggit.ObjectBuilder;
import org.slf4j.Logger;
@@ -48,6 +49,16 @@ public class TestBulkSchemaConcurrent e
static final Logger log = LoggerFactory.getLogger(TestBulkSchemaConcurrent.class);
private List<RestTestHarness> restTestHarnesses = new ArrayList<>();
+ @BeforeClass
+ public static void initSysProperties() {
+ System.setProperty("managed.schema.mutable", "true");
+ System.setProperty("enable.update.log", "true");
+ }
+
+ protected String getCloudSolrConfig() {
+ return "solrconfig-managed-schema.xml";
+ }
+
private void setupHarnesses() {
for (final SolrServer client : clients) {
RestTestHarness harness = new RestTestHarness(new RESTfulServerProvider() {
@@ -101,7 +112,7 @@ public class TestBulkSchemaConcurrent e
}
- assertTrue(success);
+ assertTrue(collectErrors.toString(), success);
}
@@ -138,7 +149,7 @@ public class TestBulkSchemaConcurrent e
RestTestHarness publisher = restTestHarnesses.get(r.nextInt(restTestHarnesses.size()));
- payload = payload.replace("replaceFieldA1", aField);
+ payload = payload.replace("replaceFieldA", aField);
payload = payload.replace("replaceDynamicField", dynamicFldName);
payload = payload.replace("dynamicFieldLol","lol"+seed);
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java Mon Dec 1 17:25:39 2014
@@ -17,18 +17,16 @@
package org.apache.solr.search;
+import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
-import com.carrotsearch.hppc.IntOpenHashSet;
-
-import java.io.IOException;
-import java.util.*;
-import java.util.Random;
+//We want codecs that support DocValues, and ones supporting blank/empty values.
+@SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42"})
public class TestCollapseQParserPlugin extends SolrTestCaseJ4 {
@BeforeClass
@@ -48,10 +46,12 @@ public class TestCollapseQParserPlugin e
@Test
public void testCollapseQueries() throws Exception {
- String[] doc = {"id","1", "term_s", "YYYY", "group_s", "group1", "test_ti", "5", "test_tl", "10", "test_tf", "2000"};
+ final String group = (random().nextBoolean() ? "group_s" : "group_s_dv");
+
+ String[] doc = {"id","1", "term_s", "YYYY", group, "group1", "test_ti", "5", "test_tl", "10", "test_tf", "2000"};
assertU(adoc(doc));
assertU(commit());
- String[] doc1 = {"id","2", "term_s","YYYY", "group_s", "group1", "test_ti", "50", "test_tl", "100", "test_tf", "200"};
+ String[] doc1 = {"id","2", "term_s","YYYY", group, "group1", "test_ti", "50", "test_tl", "100", "test_tf", "200"};
assertU(adoc(doc1));
@@ -63,10 +63,10 @@ public class TestCollapseQParserPlugin e
assertU(adoc(doc3));
- String[] doc4 = {"id","5", "term_s", "YYYY", "group_s", "group2", "test_ti", "4", "test_tl", "10", "test_tf", "2000"};
+ String[] doc4 = {"id","5", "term_s", "YYYY", group, "group2", "test_ti", "4", "test_tl", "10", "test_tf", "2000"};
assertU(adoc(doc4));
assertU(commit());
- String[] doc5 = {"id","6", "term_s","YYYY", "group_s", "group2", "test_ti", "10", "test_tl", "100", "test_tf", "200"};
+ String[] doc5 = {"id","6", "term_s","YYYY", group, "group2", "test_ti", "10", "test_tl", "100", "test_tf", "200"};
assertU(adoc(doc5));
assertU(commit());
@@ -75,10 +75,10 @@ public class TestCollapseQParserPlugin e
//Test collapse by score and following sort by score
ModifiableSolrParams params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s}");
+ params.add("fq", "{!collapse field="+group+"}");
params.add("defType", "edismax");
params.add("bf", "field(test_ti)");
- assertQ(req(params), "*[count(//doc)=2]",
+ assertQ(req(params, "indent", "on"), "*[count(//doc)=2]",
"//result/doc[1]/float[@name='id'][.='2.0']",
"//result/doc[2]/float[@name='id'][.='6.0']"
);
@@ -87,7 +87,7 @@ public class TestCollapseQParserPlugin e
// SOLR-5544 test ordering with empty sort param
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s nullPolicy=expand min=test_tf}");
+ params.add("fq", "{!collapse field="+group+" nullPolicy=expand min=test_tf}");
params.add("defType", "edismax");
params.add("bf", "field(test_ti)");
params.add("sort","");
@@ -101,7 +101,7 @@ public class TestCollapseQParserPlugin e
// Test value source collapse criteria
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s nullPolicy=collapse min=field(test_ti)}");
+ params.add("fq", "{!collapse field="+group+" nullPolicy=collapse min=field(test_ti)}");
params.add("sort", "test_ti desc");
assertQ(req(params), "*[count(//doc)=3]",
"//result/doc[1]/float[@name='id'][.='4.0']",
@@ -112,7 +112,7 @@ public class TestCollapseQParserPlugin e
// Test value source collapse criteria with cscore function
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s nullPolicy=collapse min=cscore()}");
+ params.add("fq", "{!collapse field="+group+" nullPolicy=collapse min=cscore()}");
params.add("defType", "edismax");
params.add("bf", "field(test_ti)");
assertQ(req(params), "*[count(//doc)=3]",
@@ -124,7 +124,7 @@ public class TestCollapseQParserPlugin e
// Test value source collapse criteria with compound cscore function
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s nullPolicy=collapse min=sum(cscore(),field(test_ti))}");
+ params.add("fq", "{!collapse field="+group+" nullPolicy=collapse min=sum(cscore(),field(test_ti))}");
params.add("defType", "edismax");
params.add("bf", "field(test_ti)");
assertQ(req(params), "*[count(//doc)=3]",
@@ -137,7 +137,7 @@ public class TestCollapseQParserPlugin e
params = new ModifiableSolrParams();
params.add("q", "YYYY");
- params.add("fq", "{!collapse field=group_s nullPolicy=collapse}");
+ params.add("fq", "{!collapse field="+group+" nullPolicy=collapse}");
params.add("defType", "edismax");
params.add("bf", "field(test_ti)");
params.add("qf", "term_s");
@@ -151,7 +151,7 @@ public class TestCollapseQParserPlugin e
//Test SOLR-5773 with score collapse criteria
params = new ModifiableSolrParams();
params.add("q", "YYYY");
- params.add("fq", "{!collapse field=group_s nullPolicy=collapse}");
+ params.add("fq", "{!collapse field="+group+" nullPolicy=collapse}");
params.add("defType", "edismax");
params.add("bf", "field(test_ti)");
params.add("qf", "term_s");
@@ -165,7 +165,7 @@ public class TestCollapseQParserPlugin e
//Test SOLR-5773 with max field collapse criteria
params = new ModifiableSolrParams();
params.add("q", "YYYY");
- params.add("fq", "{!collapse field=group_s min=test_ti nullPolicy=collapse}");
+ params.add("fq", "{!collapse field="+group+" min=test_ti nullPolicy=collapse}");
params.add("defType", "edismax");
params.add("bf", "field(test_ti)");
params.add("qf", "term_s");
@@ -180,7 +180,7 @@ public class TestCollapseQParserPlugin e
//Test SOLR-5773 elevating documents with null group
params = new ModifiableSolrParams();
params.add("q", "YYYY");
- params.add("fq", "{!collapse field=group_s}");
+ params.add("fq", "{!collapse field="+group+"}");
params.add("defType", "edismax");
params.add("bf", "field(test_ti)");
params.add("qf", "term_s");
@@ -197,7 +197,7 @@ public class TestCollapseQParserPlugin e
//Test collapse by min int field and sort
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s min=test_ti}");
+ params.add("fq", "{!collapse field="+group+" min=test_ti}");
params.add("sort", "id desc");
assertQ(req(params), "*[count(//doc)=2]",
"//result/doc[1]/float[@name='id'][.='5.0']",
@@ -205,7 +205,7 @@ public class TestCollapseQParserPlugin e
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s min=test_ti}");
+ params.add("fq", "{!collapse field="+group+" min=test_ti}");
params.add("sort", "id asc");
assertQ(req(params), "*[count(//doc)=2]",
"//result/doc[1]/float[@name='id'][.='1.0']",
@@ -213,7 +213,7 @@ public class TestCollapseQParserPlugin e
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s min=test_ti}");
+ params.add("fq", "{!collapse field="+group+" min=test_ti}");
params.add("sort", "test_tl asc,id desc");
assertQ(req(params), "*[count(//doc)=2]",
"//result/doc[1]/float[@name='id'][.='5.0']",
@@ -221,7 +221,7 @@ public class TestCollapseQParserPlugin e
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s min=test_ti}");
+ params.add("fq", "{!collapse field="+group+" min=test_ti}");
params.add("sort", "score desc,id asc");
params.add("defType", "edismax");
params.add("bf", "field(id)");
@@ -235,7 +235,7 @@ public class TestCollapseQParserPlugin e
//Test collapse by max int field
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s max=test_ti}");
+ params.add("fq", "{!collapse field="+group+" max=test_ti}");
params.add("sort", "test_ti asc");
assertQ(req(params), "*[count(//doc)=2]",
"//result/doc[1]/float[@name='id'][.='6.0']",
@@ -247,7 +247,7 @@ public class TestCollapseQParserPlugin e
//Test collapse by min long field
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s min=test_tl}");
+ params.add("fq", "{!collapse field="+group+" min=test_tl}");
params.add("sort", "test_ti desc");
assertQ(req(params), "*[count(//doc)=2]",
"//result/doc[1]/float[@name='id'][.='1.0']",
@@ -257,7 +257,7 @@ public class TestCollapseQParserPlugin e
//Test collapse by max long field
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s max=test_tl}");
+ params.add("fq", "{!collapse field="+group+" max=test_tl}");
params.add("sort", "test_ti desc");
assertQ(req(params), "*[count(//doc)=2]",
"//result/doc[1]/float[@name='id'][.='2.0']",
@@ -267,7 +267,7 @@ public class TestCollapseQParserPlugin e
//Test collapse by min float field
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s min=test_tf}");
+ params.add("fq", "{!collapse field="+group+" min=test_tf}");
params.add("sort", "test_ti desc");
assertQ(req(params), "*[count(//doc)=2]",
"//result/doc[1]/float[@name='id'][.='2.0']",
@@ -279,7 +279,7 @@ public class TestCollapseQParserPlugin e
//Test collapse by min float field
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s max=test_tf}");
+ params.add("fq", "{!collapse field="+group+" max=test_tf}");
params.add("sort", "test_ti asc");
assertQ(req(params), "*[count(//doc)=2]",
"//result/doc[1]/float[@name='id'][.='5.0']",
@@ -288,7 +288,7 @@ public class TestCollapseQParserPlugin e
//Test collapse by min float field sort by score
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s max=test_tf}");
+ params.add("fq", "{!collapse field="+group+" max=test_tf}");
params.add("defType", "edismax");
params.add("bf", "field(id)");
params.add("fl", "score, id");
@@ -304,7 +304,7 @@ public class TestCollapseQParserPlugin e
//Test nullPolicy expand
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s max=test_tf nullPolicy=expand}");
+ params.add("fq", "{!collapse field="+group+" max=test_tf nullPolicy=expand}");
params.add("sort", "id desc");
assertQ(req(params), "*[count(//doc)=4]",
"//result/doc[1]/float[@name='id'][.='5.0']",
@@ -316,7 +316,7 @@ public class TestCollapseQParserPlugin e
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s max=test_tf nullPolicy=collapse}");
+ params.add("fq", "{!collapse field="+group+" max=test_tf nullPolicy=collapse}");
params.add("sort", "id desc");
assertQ(req(params), "*[count(//doc)=3]",
"//result/doc[1]/float[@name='id'][.='5.0']",
@@ -326,7 +326,7 @@ public class TestCollapseQParserPlugin e
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s}");
+ params.add("fq", "{!collapse field="+group+"}");
params.add("defType", "edismax");
params.add("bf", "field(test_ti)");
params.add("fq","{!tag=test_ti}id:5");
@@ -338,7 +338,7 @@ public class TestCollapseQParserPlugin e
// SOLR-5230 - ensure CollapsingFieldValueCollector.finish() is called
params = new ModifiableSolrParams();
params.add("q", "*:*");
- params.add("fq", "{!collapse field=group_s}");
+ params.add("fq", "{!collapse field="+group+"}");
params.add("group", "true");
params.add("group.field", "id");
assertQ(req(params), "*[count(//doc)=2]");
@@ -350,7 +350,7 @@ public class TestCollapseQParserPlugin e
assertU(commit());
params = new ModifiableSolrParams();
params.add("q", "YYYY");
- params.add("fq", "{!collapse field=group_s nullPolicy=collapse}");
+ params.add("fq", "{!collapse field="+group+" nullPolicy=collapse}");
params.add("defType", "edismax");
params.add("bf", "field(test_ti)");
params.add("qf", "term_s");
@@ -371,4 +371,18 @@ public class TestCollapseQParserPlugin e
SolrException.ErrorCode.BAD_REQUEST);
}
+ @Test
+ public void testEmptyCollection() throws Exception {
+ // group_s is docValues=false and group_dv_s is docValues=true
+ String group = (random().nextBoolean() ? "group_s" : "group_s_dv");
+
+ // min-or-max is for CollapsingScoreCollector vs. CollapsingFieldValueCollector
+ String optional_min_or_max = (random().nextBoolean() ? "" : (random().nextBoolean() ? "min=field(test_ti)" : "max=field(test_ti)"));
+
+ ModifiableSolrParams params = new ModifiableSolrParams();
+ params.add("q", "*:*");
+ params.add("fq", "{!collapse field="+group+" "+optional_min_or_max+"}");
+ assertQ(req(params), "*[count(//doc)=0]");
+ }
+
}
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestRTGBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestRTGBase.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestRTGBase.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestRTGBase.java Mon Dec 1 17:25:39 2014
@@ -126,9 +126,7 @@ public class TestRTGBase extends SolrTes
protected int getFirstMatch(IndexReader r, Term t) throws IOException {
- Fields fields = MultiFields.getFields(r);
- if (fields == null) return -1;
- Terms terms = fields.terms(t.field());
+ Terms terms = MultiFields.getTerms(r, t.field());
if (terms == null) return -1;
BytesRef termBytes = t.bytes();
final TermsEnum termsEnum = terms.iterator(null);
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial.java Mon Dec 1 17:25:39 2014
@@ -51,7 +51,7 @@ public class TestSolr4Spatial extends So
@ParametersFactory
public static Iterable<Object[]> parameters() {
return Arrays.asList(new Object[][]{
- {"srpt_geohash"}, {"srpt_quad"}, {"stqpt_geohash"}, {"pointvector"}
+ {"srpt_geohash"}, {"srpt_quad"}, {"stqpt_geohash"}, {"pointvector"}, {"bbox"}
});
}
@@ -158,7 +158,7 @@ public class TestSolr4Spatial extends So
assertQ(req(
"fl", "id," + fieldName, "q", "*:*", "rows", "1000",
- "fq", "{!geofilt sfield="+fieldName+" pt="+IN+" d=9}"),
+ "fq", "{!bbox sfield="+fieldName+" pt="+IN+" d=9}"),
"//result/doc/*[@name='" + fieldName + "']//text()='" + OUT + "'");
}
@@ -172,6 +172,9 @@ public class TestSolr4Spatial extends So
}
private void checkHits(String fieldName, boolean exact, String ptStr, double distKM, int count, int ... docIds) throws ParseException {
+ if (exact && fieldName.equalsIgnoreCase("bbox")) {
+ return; // bbox field only supports rectangular query
+ }
String [] tests = new String[docIds != null && docIds.length > 0 ? docIds.length + 1 : 1];
//test for presence of required ids first
int i = 0;
@@ -322,8 +325,10 @@ public class TestSolr4Spatial extends So
private String radiusQuery(double lat, double lon, double dDEG, String score, String filter) {
//Choose between the Solr/Geofilt syntax, and the Lucene spatial module syntax
- if (random().nextBoolean()) {
- return "{!geofilt " +
+ if (fieldName.equals("bbox") || random().nextBoolean()) {
+ //we cheat for bbox strategy which doesn't do radius, only rect.
+ final String qparser = fieldName.equals("bbox") ? "bbox" : "geofilt";
+ return "{!" + qparser + " " +
"sfield=" + fieldName + " "
+ (score != null ? "score="+score : "") + " "
+ (filter != null ? "filter="+filter : "") + " "
@@ -338,7 +343,8 @@ public class TestSolr4Spatial extends So
@Test
public void testSortMultiVal() throws Exception {
- RandomizedTest.assumeFalse("Multivalue not supported for this field", fieldName.equals("pointvector"));
+ RandomizedTest.assumeFalse("Multivalue not supported for this field",
+ fieldName.equals("pointvector") || fieldName.equals("bbox"));
assertU(adoc("id", "100", fieldName, "1,2"));//1 point
assertU(adoc("id", "101", fieldName, "4,-1", fieldName, "3,5"));//2 points, 2nd is pretty close to query point
@@ -373,12 +379,24 @@ public class TestSolr4Spatial extends So
//show we can index this (without an error)
assertU(adoc("id", "rect", fieldName, rect));
- assertU(adoc("id", "circ", fieldName, circ));
- assertU(commit());
+ if (!fieldName.equals("bbox")) {
+ assertU(adoc("id", "circ", fieldName, circ));
+ assertU(commit());
+ }
//only testing no error
assertJQ(req("q", "{!field f=" + fieldName + "}Intersects(" + rect + ")"));
- assertJQ(req("q", "{!field f=" + fieldName + "}Intersects(" + circ + ")"));
+ if (!fieldName.equals("bbox")) {
+ assertJQ(req("q", "{!field f=" + fieldName + "}Intersects(" + circ + ")"));
+ }
+ }
+
+ @Test
+ public void testBadScoreParam() throws Exception {
+ assertQEx("expect friendly error message",
+ "none",
+ req(radiusQuery(0, 0, 0, "bogus", "false")),
+ SolrException.ErrorCode.BAD_REQUEST);
}
}
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial2.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial2.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/TestSolr4Spatial2.java Mon Dec 1 17:25:39 2014
@@ -18,6 +18,7 @@ package org.apache.solr.search;
*/
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.common.SolrException;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -39,7 +40,7 @@ public class TestSolr4Spatial2 extends S
@Test
public void testBBox() throws Exception {
- String fieldName = "bbox";
+ String fieldName = random().nextBoolean() ? "bbox" : "bboxD_dynamic";
assertU(adoc("id", "0"));//nothing
assertU(adoc("id", "1", fieldName, "ENVELOPE(-10, 20, 15, 10)"));
assertU(adoc("id", "2", fieldName, "ENVELOPE(22, 22, 10, 10)"));//pt
@@ -48,14 +49,16 @@ public class TestSolr4Spatial2 extends S
assertJQ(req("q", "{!field f="+fieldName+" filter=false score=overlapRatio " +
"queryTargetProportion=0.25}" +
"Intersects(ENVELOPE(10,25,12,10))",
- "fl", "id,score",
+ "fl", "*,score",
"debug", "results"),//explain info
"/response/docs/[0]/id=='2'",
"/response/docs/[0]/score==0.75]",
"/response/docs/[1]/id=='1'",
"/response/docs/[1]/score==0.26666668]",
"/response/docs/[2]/id=='0'",
- "/response/docs/[2]/score==0.0"
+ "/response/docs/[2]/score==0.0",
+
+ "/response/docs/[1]/" + fieldName + "=='ENVELOPE(-10, 20, 15, 10)'"//stored value
);
//minSideLength with point query
@@ -86,4 +89,13 @@ public class TestSolr4Spatial2 extends S
);
}
+ @Test
+ public void testBadScoreParam() throws Exception {
+ String fieldName = "bbox";
+ assertQEx("expect friendly error message",
+ "area2D",
+ req("{!field f="+fieldName+" filter=false score=bogus}Intersects(ENVELOPE(0,0,12,12))"),
+ SolrException.ErrorCode.BAD_REQUEST);
+ }
+
}
Modified: lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java (original)
+++ lucene/dev/branches/lucene2878/solr/core/src/test/org/apache/solr/search/mlt/CloudMLTQParserTest.java Mon Dec 1 17:25:39 2014
@@ -30,6 +30,10 @@ import java.util.HashSet;
public class CloudMLTQParserTest extends AbstractFullDistribZkTestBase {
public CloudMLTQParserTest() {
+ fixShardCount = true;
+ shardCount = 2;
+ sliceCount = 2;
+
configString = "solrconfig.xml";
schemaString = "schema.xml";
}
Modified: lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/db/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/db/conf/schema.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/db/conf/schema.xml (original)
+++ lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/db/conf/schema.xml Mon Dec 1 17:25:39 2014
@@ -615,7 +615,7 @@
See the Java Regular Expression documentation for more
information on pattern and replacement string syntax.
- http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html
+ http://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html
-->
<filter class="solr.PatternReplaceFilterFactory"
pattern="([^a-z])" replacement="" replace="all"
Modified: lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/mail/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/mail/conf/schema.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/mail/conf/schema.xml (original)
+++ lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/mail/conf/schema.xml Mon Dec 1 17:25:39 2014
@@ -534,7 +534,7 @@
See the Java Regular Expression documentation for more
information on pattern and replacement string syntax.
- http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html
+ http://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html
-->
<filter class="solr.PatternReplaceFilterFactory"
pattern="([^a-z])" replacement="" replace="all"
Modified: lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/rss/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/rss/conf/schema.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/rss/conf/schema.xml (original)
+++ lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/rss/conf/schema.xml Mon Dec 1 17:25:39 2014
@@ -565,7 +565,7 @@
See the Java Regular Expression documentation for more
information on pattern and replacement string syntax.
- http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html
+ http://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html
-->
<filter class="solr.PatternReplaceFilterFactory"
pattern="([^a-z])" replacement="" replace="all"
Modified: lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/solr/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/solr/conf/schema.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/solr/conf/schema.xml (original)
+++ lucene/dev/branches/lucene2878/solr/example/example-DIH/solr/solr/conf/schema.xml Mon Dec 1 17:25:39 2014
@@ -615,7 +615,7 @@
See the Java Regular Expression documentation for more
information on pattern and replacement string syntax.
- http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html
+ http://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html
-->
<filter class="solr.PatternReplaceFilterFactory"
pattern="([^a-z])" replacement="" replace="all"
Modified: lucene/dev/branches/lucene2878/solr/example/multicore/core0/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/example/multicore/core0/conf/solrconfig.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/example/multicore/core0/conf/solrconfig.xml (original)
+++ lucene/dev/branches/lucene2878/solr/example/multicore/core0/conf/solrconfig.xml Mon Dec 1 17:25:39 2014
@@ -57,35 +57,13 @@
</updateLog>
</updateHandler>
- <!-- realtime get handler, guaranteed to return the latest stored fields
- of any document, without the need to commit or open a new searcher. The current
- implementation relies on the updateLog feature being enabled. -->
- <requestHandler name="/get" class="solr.RealTimeGetHandler">
- <lst name="defaults">
- <str name="omitHeader">true</str>
- </lst>
- </requestHandler>
-
- <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
-
<requestDispatcher handleSelect="true" >
<requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" formdataUploadLimitInKB="2048" />
</requestDispatcher>
<requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
<requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
- <requestHandler name="/update" class="solr.UpdateRequestHandler" />
- <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
-
- <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
- <lst name="invariants">
- <str name="q">solrpingquery</str>
- </lst>
- <lst name="defaults">
- <str name="echoParams">all</str>
- </lst>
- </requestHandler>
-
+
<!-- config for the admin interface -->
<admin>
<defaultQuery>solr</defaultQuery>
Modified: lucene/dev/branches/lucene2878/solr/example/multicore/core1/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/example/multicore/core1/conf/solrconfig.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/example/multicore/core1/conf/solrconfig.xml (original)
+++ lucene/dev/branches/lucene2878/solr/example/multicore/core1/conf/solrconfig.xml Mon Dec 1 17:25:39 2014
@@ -57,34 +57,13 @@
</updateLog>
</updateHandler>
- <!-- realtime get handler, guaranteed to return the latest stored fields
- of any document, without the need to commit or open a new searcher. The current
- implementation relies on the updateLog feature being enabled. -->
- <requestHandler name="/get" class="solr.RealTimeGetHandler">
- <lst name="defaults">
- <str name="omitHeader">true</str>
- </lst>
- </requestHandler>
-
- <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
-
<requestDispatcher handleSelect="true" >
<requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" formdataUploadLimitInKB="2048" />
</requestDispatcher>
<requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
<requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
- <requestHandler name="/update" class="solr.UpdateRequestHandler" />
- <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
- <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
- <lst name="invariants">
- <str name="q">solrpingquery</str>
- </lst>
- <lst name="defaults">
- <str name="echoParams">all</str>
- </lst>
- </requestHandler>
<!-- config for the admin interface -->
<admin>
Modified: lucene/dev/branches/lucene2878/solr/server/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/server/build.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/server/build.xml (original)
+++ lucene/dev/branches/lucene2878/solr/server/build.xml Mon Dec 1 17:25:39 2014
@@ -51,14 +51,14 @@
<target name="resolve" depends="ivy-availability-check,ivy-fail,ivy-configure,sync-hack">
<sequential>
<!-- jetty libs in lib/ -->
- <ivy:retrieve conf="jetty" type="jar" log="download-only"/>
- <ivy:retrieve conf="logging" type="jar,bundle" log="download-only"
+ <ivy:retrieve conf="jetty" type="jar" log="download-only" symlink="${ivy.symlink}"/>
+ <ivy:retrieve conf="logging" type="jar,bundle" log="download-only" symlink="${ivy.symlink}"
pattern="lib/ext/[artifact]-[revision].[ext]"/>
<!-- start.jar -->
- <ivy:retrieve conf="start" type="jar" log="download-only"
+ <ivy:retrieve conf="start" type="jar" log="download-only" symlink="${ivy.symlink}"
pattern="start.jar"/>
<!-- servlet-api.jar -->
- <ivy:retrieve conf="servlet" log="download-only" type="orbit"
+ <ivy:retrieve conf="servlet" log="download-only" type="orbit" symlink="${ivy.symlink}"
pattern="lib/servlet-api-3.0.jar"/>
</sequential>
</target>
Modified: lucene/dev/branches/lucene2878/solr/server/solr/configsets/basic_configs/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/server/solr/configsets/basic_configs/conf/solrconfig.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/server/solr/configsets/basic_configs/conf/solrconfig.xml (original)
+++ lucene/dev/branches/lucene2878/solr/server/solr/configsets/basic_configs/conf/solrconfig.xml Mon Dec 1 17:25:39 2014
@@ -445,25 +445,6 @@
</lst>
</requestHandler>
- <!-- realtime get handler, guaranteed to return the latest stored fields of
- any document, without the need to commit or open a new searcher. The
- current implementation relies on the updateLog feature being enabled.
-
- ** WARNING **
- Do NOT disable the realtime get handler at /get if you are using
- SolrCloud otherwise any leader election will cause a full sync in ALL
- replicas for the shard in question. Similarly, a replica recovery will
- also always fetch the complete index from the leader because a partial
- sync will not be possible in the absence of this handler.
- -->
- <requestHandler name="/get" class="solr.RealTimeGetHandler">
- <lst name="defaults">
- <str name="omitHeader">true</str>
- <str name="wt">json</str>
- <str name="indent">true</str>
- </lst>
- </requestHandler>
-
<!--
The export request handler is used to export full sorted result sets.
Do not change these defaults.
@@ -561,30 +542,6 @@
class="solr.DocumentAnalysisRequestHandler"
startup="lazy" />
- <!-- Admin Handlers
-
- Admin Handlers - This will register all the standard admin
- RequestHandlers.
- -->
- <requestHandler name="/admin/"
- class="solr.admin.AdminHandlers" />
-
- <!-- ping/healthcheck -->
- <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
- <lst name="invariants">
- <str name="q">solrpingquery</str>
- </lst>
- <lst name="defaults">
- <str name="echoParams">all</str>
- </lst>
- <!-- An optional feature of the PingRequestHandler is to configure the
- handler with a "healthcheckFile" which can be used to enable/disable
- the PingRequestHandler.
- relative paths are resolved against the data dir
- -->
- <!-- <str name="healthcheckFile">server-enabled.txt</str> -->
- </requestHandler>
-
<!-- Echo the request contents back to the client -->
<requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
<lst name="defaults">
@@ -593,22 +550,7 @@
</lst>
</requestHandler>
- <!-- Solr Replication
-
- The SolrReplicationHandler supports replicating indexes from a
- "master" used for indexing and "slaves" used for queries.
- http://wiki.apache.org/solr/SolrReplication
-
- It is also necessary for SolrCloud to function (in Cloud mode, the
- replication handler is used to bulk transfer segments when nodes
- are added or need to recover).
-
- https://wiki.apache.org/solr/SolrCloud/
- -->
- <requestHandler name="/replication" class="solr.ReplicationHandler" >
-
- </requestHandler>
<!-- Search Components
Modified: lucene/dev/branches/lucene2878/solr/server/solr/configsets/data_driven_schema_configs/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/server/solr/configsets/data_driven_schema_configs/conf/solrconfig.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/server/solr/configsets/data_driven_schema_configs/conf/solrconfig.xml (original)
+++ lucene/dev/branches/lucene2878/solr/server/solr/configsets/data_driven_schema_configs/conf/solrconfig.xml Mon Dec 1 17:25:39 2014
@@ -860,20 +860,7 @@
</lst>
</requestHandler>
-
- <!-- realtime get handler, guaranteed to return the latest stored fields of
- any document, without the need to commit or open a new searcher. The
- current implementation relies on the updateLog feature being enabled. -->
- <requestHandler name="/get" class="solr.RealTimeGetHandler">
- <lst name="defaults">
- <str name="omitHeader">true</str>
- <str name="wt">json</str>
- <str name="indent">true</str>
- </lst>
- </requestHandler>
-
-
- <!-- A Robust Example
+ <!-- A Robust Example
This example SearchHandler declaration shows off usage of the
SearchHandler with many defaults declared
@@ -1057,13 +1044,6 @@
class="solr.DocumentAnalysisRequestHandler"
startup="lazy" />
- <!-- Admin Handlers
-
- Admin Handlers - This will register all the standard admin
- RequestHandlers.
- -->
- <requestHandler name="/admin/"
- class="solr.admin.AdminHandlers" />
<!-- This single handler is equivalent to the following... -->
<!--
<requestHandler name="/admin/luke" class="solr.admin.LukeRequestHandler" />
@@ -1073,34 +1053,8 @@
<requestHandler name="/admin/properties" class="solr.admin.PropertiesRequestHandler" />
<requestHandler name="/admin/file" class="solr.admin.ShowFileRequestHandler" >
-->
- <!-- If you wish to hide files under ${solr.home}/conf, explicitly
- register the ShowFileRequestHandler using:
- -->
- <!--
- <requestHandler name="/admin/file"
- class="solr.admin.ShowFileRequestHandler" >
- <lst name="invariants">
- <str name="hidden">synonyms.txt</str>
- <str name="hidden">anotherfile.txt</str>
- </lst>
- </requestHandler>
- -->
- <!-- ping/healthcheck -->
- <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
- <lst name="invariants">
- <str name="q">solrpingquery</str>
- </lst>
- <lst name="defaults">
- <str name="echoParams">all</str>
- </lst>
- <!-- An optional feature of the PingRequestHandler is to configure the
- handler with a "healthcheckFile" which can be used to enable/disable
- the PingRequestHandler.
- relative paths are resolved against the data dir
- -->
- <!-- <str name="healthcheckFile">server-enabled.txt</str> -->
- </requestHandler>
+
<!-- Echo the request contents back to the client -->
<requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
Modified: lucene/dev/branches/lucene2878/solr/server/solr/configsets/sample_techproducts_configs/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/solr/server/solr/configsets/sample_techproducts_configs/conf/schema.xml?rev=1642718&r1=1642717&r2=1642718&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/solr/server/solr/configsets/sample_techproducts_configs/conf/schema.xml (original)
+++ lucene/dev/branches/lucene2878/solr/server/solr/configsets/sample_techproducts_configs/conf/schema.xml Mon Dec 1 17:25:39 2014
@@ -616,7 +616,7 @@
See the Java Regular Expression documentation for more
information on pattern and replacement string syntax.
- http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html
+ http://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html
-->
<filter class="solr.PatternReplaceFilterFactory"
pattern="([^a-z])" replacement="" replace="all"