You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2017/06/25 02:06:39 UTC
[17/47] lucene-solr:feature/autoscaling: SOLR-10864: Simplified how
Trie vs Points based numerics are randomized by SolrTestCaseJ4
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/TestGroupingSearch.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/TestGroupingSearch.java b/solr/core/src/test/org/apache/solr/TestGroupingSearch.java
index 99dc63c..77b1cf7 100644
--- a/solr/core/src/test/org/apache/solr/TestGroupingSearch.java
+++ b/solr/core/src/test/org/apache/solr/TestGroupingSearch.java
@@ -60,6 +60,9 @@ public class TestGroupingSearch extends SolrTestCaseJ4 {
@BeforeClass
public static void beforeTests() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+
// force LogDocMergePolicy so that we get a predictable doc order
// when doing unsorted group collection
systemSetPropertySolrTestsMergePolicyFactory(LogDocMergePolicyFactory.class.getName());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java b/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java
index 0a9cb2b..46762ea 100644
--- a/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java
+++ b/solr/core/src/test/org/apache/solr/TestRandomDVFaceting.java
@@ -45,6 +45,11 @@ public class TestRandomDVFaceting extends SolrTestCaseJ4 {
@BeforeClass
public static void beforeTests() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ // but test also has hard coded assumptions about these field types *NOT* having DV when *NOT* points
+ // so use docvalue if and only if we are using points...
+ System.setProperty(NUMERIC_DOCVALUES_SYSPROP, System.getProperty(NUMERIC_POINTS_SYSPROP));
+
initCore("solrconfig-basic.xml","schema-docValuesFaceting.xml");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/TestRandomFaceting.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/TestRandomFaceting.java b/solr/core/src/test/org/apache/solr/TestRandomFaceting.java
index c3a3e02..ff53315 100644
--- a/solr/core/src/test/org/apache/solr/TestRandomFaceting.java
+++ b/solr/core/src/test/org/apache/solr/TestRandomFaceting.java
@@ -57,6 +57,9 @@ public class TestRandomFaceting extends SolrTestCaseJ4 {
@BeforeClass
public static void beforeTests() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+
System.setProperty("enable.update.log", "false"); // schema12 doesn't support _version_
initCore("solrconfig.xml","schema12.xml");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java
index b95d558..838ebb5 100644
--- a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java
+++ b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java
@@ -58,6 +58,9 @@ public class BasicDistributedZk2Test extends AbstractFullDistribZkTestBase {
public BasicDistributedZk2Test() {
super();
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+
sliceCount = 2;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
index ac96b62..d74f58e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
@@ -114,6 +114,9 @@ public class BasicDistributedZkTest extends AbstractFullDistribZkTestBase {
Set<Future<Object>> pending;
public BasicDistributedZkTest() {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+
sliceCount = 2;
completionService = new ExecutorCompletionService<>(executor);
pending = new HashSet<>();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/cloud/TestAuthenticationFramework.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestAuthenticationFramework.java b/solr/core/src/test/org/apache/solr/cloud/TestAuthenticationFramework.java
index df3790d..8159e49 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestAuthenticationFramework.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestAuthenticationFramework.java
@@ -86,6 +86,7 @@ public class TestAuthenticationFramework extends LuceneTestCase {
@Before
public void setUp() throws Exception {
+ SolrTestCaseJ4.randomizeNumericTypesProperties(); // SOLR-10916
setupAuthenticationPlugin();
super.setUp();
}
@@ -126,6 +127,7 @@ public class TestAuthenticationFramework extends LuceneTestCase {
@After
public void tearDown() throws Exception {
+ SolrTestCaseJ4.clearNumericTypesProperties(); // SOLR-10916
System.clearProperty("authenticationPlugin");
super.tearDown();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java b/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java
index a8250f8..dd4d13c 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java
@@ -46,6 +46,8 @@ import org.apache.solr.common.cloud.ZkStateReader;
import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.index.TieredMergePolicyFactory;
import org.apache.solr.util.RevertDefaultThreadHandlerRule;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
@@ -73,6 +75,15 @@ public class TestMiniSolrCloudCluster extends LuceneTestCase {
REPLICATION_FACTOR = 2;
}
+ @BeforeClass
+ public static void setupHackNumerics() { // SOLR-10916
+ SolrTestCaseJ4.randomizeNumericTypesProperties();
+ }
+ @AfterClass
+ public static void clearHackNumerics() { // SOLR-10916
+ SolrTestCaseJ4.clearNumericTypesProperties();
+ }
+
@Rule
public TestRule solrTestRules = RuleChain
.outerRule(new SystemPropertiesRestoreRule());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithKerberosAlt.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithKerberosAlt.java b/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithKerberosAlt.java
index 1758ae0..16cee78 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithKerberosAlt.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithKerberosAlt.java
@@ -94,6 +94,7 @@ public class TestSolrCloudWithKerberosAlt extends LuceneTestCase {
@Override
public void setUp() throws Exception {
+ SolrTestCaseJ4.randomizeNumericTypesProperties(); // SOLR-10916
super.setUp();
setupMiniKdc();
}
@@ -225,6 +226,7 @@ public class TestSolrCloudWithKerberosAlt extends LuceneTestCase {
System.clearProperty("solr.kerberos.name.rules");
System.clearProperty("solr.jaas.debug");
kerberosTestServices.stop();
+ SolrTestCaseJ4.clearNumericTypesProperties(); // SOLR-10916
super.tearDown();
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLargeTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLargeTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLargeTest.java
index 0c5e128..eb6f54d 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLargeTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLargeTest.java
@@ -37,6 +37,11 @@ public class DistributedFacetPivotLargeTest extends BaseDistributedSearchTestCas
public static final String SPECIAL = "";
+ public DistributedFacetPivotLargeTest() {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+ }
+
@Test
@ShardsFixed(num = 4)
public void test() throws Exception {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLongTailTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLongTailTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLongTailTest.java
index 52f1825..f18f551 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLongTailTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotLongTailTest.java
@@ -40,6 +40,11 @@ import org.junit.Test;
public class DistributedFacetPivotLongTailTest extends BaseDistributedSearchTestCase {
private int docNumber = 0;
+
+ public DistributedFacetPivotLongTailTest() {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+ }
public int getDocNum() {
docNumber++;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallAdvancedTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallAdvancedTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallAdvancedTest.java
index 1ed60e4..d579b7a 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallAdvancedTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallAdvancedTest.java
@@ -37,6 +37,11 @@ import java.util.List;
*/
public class DistributedFacetPivotSmallAdvancedTest extends BaseDistributedSearchTestCase {
+ public DistributedFacetPivotSmallAdvancedTest() {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+ }
+
@Test
@ShardsFixed(num = 2)
public void test() throws Exception {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
index d293e69..71e34e3 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
@@ -37,6 +37,11 @@ import org.junit.Test;
public class DistributedFacetPivotSmallTest extends BaseDistributedSearchTestCase {
+ public DistributedFacetPivotSmallTest() {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+ }
+
@Test
@ShardsFixed(num = 4)
public void test() throws Exception {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotWhiteBoxTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotWhiteBoxTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotWhiteBoxTest.java
index a824c9d..89cd687 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotWhiteBoxTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotWhiteBoxTest.java
@@ -27,6 +27,11 @@ import java.util.List;
public class DistributedFacetPivotWhiteBoxTest extends BaseDistributedSearchTestCase {
+ public DistributedFacetPivotWhiteBoxTest() {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+ }
+
@Test
@ShardsFixed(num = 4)
public void test() throws Exception {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
index b3f1f30..6f719d2 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.solr.handler.component;
+import org.apache.solr.SolrTestCaseJ4.SuppressPointFields;
import org.apache.solr.BaseDistributedSearchTestCase;
import org.junit.Test;
@@ -25,10 +26,12 @@ import org.junit.Test;
*
* @since solr 1.5
*/
+@SuppressPointFields(bugUrl="https://issues.apache.org/jira/browse/SOLR-10847")
public class DistributedTermsComponentTest extends BaseDistributedSearchTestCase {
@Test
public void test() throws Exception {
+
del("*:*");
index(id, 18, "b_t", "snake spider shark snail slug seal", "foo_i", "1");
index(id, 19, "b_t", "snake spider shark snail slug", "foo_i", "2");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/handler/component/FacetPivotSmallTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/FacetPivotSmallTest.java b/solr/core/src/test/org/apache/solr/handler/component/FacetPivotSmallTest.java
index ce708a6..4b5e8a7 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/FacetPivotSmallTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/FacetPivotSmallTest.java
@@ -30,6 +30,8 @@ public class FacetPivotSmallTest extends SolrTestCaseJ4 {
@BeforeClass
public static void beforeClass() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
initCore("solrconfig.xml", "schema11.xml");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java
index 568676c..3bb4974 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/StatsComponentTest.java
@@ -68,6 +68,8 @@ public class StatsComponentTest extends AbstractSolrTestCase {
@BeforeClass
public static void beforeClass() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
initCore("solrconfig.xml", "schema11.xml");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/handler/component/TestDistributedStatsComponentCardinality.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/TestDistributedStatsComponentCardinality.java b/solr/core/src/test/org/apache/solr/handler/component/TestDistributedStatsComponentCardinality.java
index dca45dc..8a5f4b1 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/TestDistributedStatsComponentCardinality.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/TestDistributedStatsComponentCardinality.java
@@ -61,7 +61,9 @@ public class TestDistributedStatsComponentCardinality extends BaseDistributedSea
final long MIN_LONG;
public TestDistributedStatsComponentCardinality() {
- super();
+ // we need DVs on point fields to compute stats
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+
// we want some randomness in the shard number, but we don't want multiple iterations
fixShardCount(TEST_NIGHTLY ? 7 : random().nextInt(3) + 1);
@@ -142,13 +144,17 @@ public class TestDistributedStatsComponentCardinality extends BaseDistributedSea
Map<String,FieldStatsInfo> stats = rsp.getFieldStatsInfo();
- for (String f : STAT_FIELDS) {
- // regardless of log2m and regwidth, the estimated cardinality of the
- // hashed vs prehashed values should be exactly the same for each field
-
- assertEquals(f + ": hashed vs prehashed, real="+ numMatches + ", p=" + p,
- stats.get(f).getCardinality().longValue(),
- stats.get(f+"_prehashed_l").getCardinality().longValue());
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) {
+ log.warn("SOLR-10918: can't relying on exact match with pre-hashed values when using points");
+ } else {
+ for (String f : STAT_FIELDS) {
+ // regardless of log2m and regwidth, the estimated cardinality of the
+ // hashed vs prehashed values should be exactly the same for each field
+
+ assertEquals(f + ": hashed vs prehashed, real="+ numMatches + ", p=" + p,
+ stats.get(f).getCardinality().longValue(),
+ stats.get(f+"_prehashed_l").getCardinality().longValue());
+ }
}
for (String f : STAT_FIELDS) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java b/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java
index 8f4a24d..0ee345e 100644
--- a/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java
+++ b/solr/core/src/test/org/apache/solr/request/SimpleFacetsTest.java
@@ -50,6 +50,8 @@ public class SimpleFacetsTest extends SolrTestCaseJ4 {
@BeforeClass
public static void beforeClass() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
initCore("solrconfig.xml","schema.xml");
createIndex();
}
@@ -368,6 +370,10 @@ public class SimpleFacetsTest extends SolrTestCaseJ4 {
@Test
public void testSimpleGroupedFacets() throws Exception {
+ assumeFalse("SOLR-10844: group.facet doesn't play nice with points *OR* DocValues",
+ Boolean.getBoolean(NUMERIC_DOCVALUES_SYSPROP) || Boolean.getBoolean(NUMERIC_POINTS_SYSPROP));
+
+
// for the purposes of our test data, it shouldn't matter
// if we use facet.limit -100, -1, or 100 ...
// our set of values is small enough either way
@@ -497,7 +503,7 @@ public class SimpleFacetsTest extends SolrTestCaseJ4 {
Map rsp = (Map) ObjectBuilder.fromJSON(response);
Long numFound = (Long)(((Map)rsp.get("response")).get("numFound"));
- ModifiableSolrParams params = params("q","*:*", "rows","0", "facet","true", "facet.field","{!key=myalias}"+field);
+ ModifiableSolrParams params = params("q","*:*", "facet.mincount","1","rows","0", "facet","true", "facet.field","{!key=myalias}"+field);
String[] methods = {null, "fc","enum","fcs", "uif"};
if (sf.multiValued() || sf.getType().multiValuedFieldCache()) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/request/TestFaceting.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/TestFaceting.java b/solr/core/src/test/org/apache/solr/request/TestFaceting.java
index 8933c19..9559b4c 100644
--- a/solr/core/src/test/org/apache/solr/request/TestFaceting.java
+++ b/solr/core/src/test/org/apache/solr/request/TestFaceting.java
@@ -41,6 +41,8 @@ import org.junit.Test;
public class TestFaceting extends SolrTestCaseJ4 {
@BeforeClass
public static void beforeClass() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
initCore("solrconfig.xml","schema11.xml");
}
@@ -269,6 +271,9 @@ public class TestFaceting extends SolrTestCaseJ4 {
@Test
public void testTrieFields() {
+ assumeFalse("Test is only relevant when randomizing Trie fields",
+ Boolean.getBoolean(NUMERIC_POINTS_SYSPROP));
+
// make sure that terms are correctly filtered even for trie fields that index several
// terms for a single value
List<String> fields = new ArrayList<>();
@@ -286,9 +291,10 @@ public class TestFaceting extends SolrTestCaseJ4 {
for (String facetSort : new String[] {FacetParams.FACET_SORT_COUNT, FacetParams.FACET_SORT_INDEX}) {
for (String value : new String[] {"42", "43"}) { // match or not
final String field = "f_" + suffix;
+ final int num_constraints = ("42".equals(value)) ? 1 : 0;
assertQ("field=" + field + ",method=" + facetMethod + ",sort=" + facetSort,
- req("q", field + ":" + value, FacetParams.FACET, "true", FacetParams.FACET_FIELD, field, FacetParams.FACET_MINCOUNT, "0", FacetParams.FACET_SORT, facetSort, FacetParams.FACET_METHOD, facetMethod),
- "*[count(//lst[@name='" + field + "']/int)=1]"); // exactly 1 facet count
+ req("q", field + ":" + value, FacetParams.FACET, "true", FacetParams.FACET_FIELD, field, FacetParams.FACET_MINCOUNT, "1", FacetParams.FACET_SORT, facetSort, FacetParams.FACET_METHOD, facetMethod),
+ "*[count(//lst[@name='" + field + "']/int)="+num_constraints+"]");
}
}
}
@@ -329,6 +335,9 @@ public class TestFaceting extends SolrTestCaseJ4 {
@Test
public void testFacetSortWithMinCount0() {
+ assumeFalse("facet.mincount=0 doesn't work with point fields (SOLR-10033) or single valued DV",
+ Boolean.getBoolean(NUMERIC_POINTS_SYSPROP) || Boolean.getBoolean(NUMERIC_DOCVALUES_SYSPROP));
+
assertU(adoc("id", "1", "f_td", "-420.126"));
assertU(adoc("id", "2", "f_td", "-285.672"));
assertU(adoc("id", "3", "f_td", "-1.218"));
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java b/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
index f0c5f43..fc8ddff 100644
--- a/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
+++ b/solr/core/src/test/org/apache/solr/request/TestIntervalFaceting.java
@@ -46,6 +46,8 @@ public class TestIntervalFaceting extends SolrTestCaseJ4 {
@BeforeClass
public static void beforeTests() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
initCore("solrconfig-basic.xml", "schema-docValuesFaceting.xml");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/request/TestWriterPerf.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/request/TestWriterPerf.java b/solr/core/src/test/org/apache/solr/request/TestWriterPerf.java
index 9a5329d..1e4663f 100644
--- a/solr/core/src/test/org/apache/solr/request/TestWriterPerf.java
+++ b/solr/core/src/test/org/apache/solr/request/TestWriterPerf.java
@@ -43,6 +43,8 @@ public class TestWriterPerf extends AbstractSolrTestCase {
@BeforeClass
public static void beforeClass() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
initCore("solrconfig-functionquery.xml", "schema11.xml");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/response/TestExportWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/response/TestExportWriter.java b/solr/core/src/test/org/apache/solr/response/TestExportWriter.java
index c556787..82f73f9 100644
--- a/solr/core/src/test/org/apache/solr/response/TestExportWriter.java
+++ b/solr/core/src/test/org/apache/solr/response/TestExportWriter.java
@@ -24,14 +24,11 @@ import java.util.List;
import java.util.Locale;
import java.util.Set;
-import org.apache.lucene.index.LeafReader;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.util.SuppressForbidden;
import org.apache.solr.common.util.Utils;
import org.apache.solr.schema.SchemaField;
-import org.apache.solr.search.SolrIndexSearcher;
-import org.apache.solr.util.RefCounted;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -242,21 +239,13 @@ public class TestExportWriter extends SolrTestCaseJ4 {
@Test
public void testDuplicates() throws Exception {
- RefCounted<SolrIndexSearcher> ref = null;
- try {
- ref = h.getCore().getSearcher();
- LeafReader reader = ref.get().getSlowAtomicReader();
- // MultiValued Trie fields use SortedSet
- assertNotNull(reader.getSortedSetDocValues("int_is_t"));
- assertNull(reader.getSortedNumericDocValues("int_is_t"));
- // MultiValued Point fields use SortedNumerics
- assertNull(reader.getSortedSetDocValues("int_is_p"));
- assertNotNull(reader.getSortedNumericDocValues("int_is_p"));
- } finally {
- if (ref != null) ref.decref();
- }
+ // see SOLR-10924
+ String expected = h.getCore().getLatestSchema().getField("int_is_t").getType().isPointField()
+ ? "1,1,1,1" : "1";
String s = h.query(req("q", "id:3", "qt", "/export", "fl", "int_is_t", "sort", "intdv asc"));
- assertJsonEquals(s, "{\"responseHeader\": {\"status\": 0}, \"response\":{\"numFound\":1, \"docs\":[{\"int_is_t\":[1]}]}}");
+ assertJsonEquals(s, "{\"responseHeader\": {\"status\": 0}, \"response\":{\"numFound\":1, \"docs\":[{\"int_is_t\":["+expected+"]}]}}");
+ expected = h.getCore().getLatestSchema().getField("int_is_p").getType().isPointField()
+ ? "1,1,1,1" : "1";
s = h.query(req("q", "id:8", "qt", "/export", "fl", "int_is_p", "sort", "intdv asc"));
assertJsonEquals(s, "{\"responseHeader\": {\"status\": 0}, \"response\":{\"numFound\":1, \"docs\":[{\"int_is_p\":[1,1,1,1]}]}}");
}
@@ -279,7 +268,6 @@ public class TestExportWriter extends SolrTestCaseJ4 {
SchemaField sf = h.getCore().getLatestSchema().getField(field + "_t");
assertTrue(sf.hasDocValues());
assertTrue(sf.getType().getNumberType() != null);
- assertFalse(sf.getType().isPointField());
sf = h.getCore().getLatestSchema().getField(field + "_p");
assertTrue(sf.hasDocValues());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/schema/IndexSchemaTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/IndexSchemaTest.java b/solr/core/src/test/org/apache/solr/schema/IndexSchemaTest.java
index 7790859..4719f04 100644
--- a/solr/core/src/test/org/apache/solr/schema/IndexSchemaTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/IndexSchemaTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.solr.schema;
+
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.MapSolrParams;
@@ -25,6 +26,7 @@ import org.apache.solr.request.SolrQueryRequest;
import org.junit.BeforeClass;
import org.junit.Test;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -95,20 +97,22 @@ public class IndexSchemaTest extends SolrTestCaseJ4 {
SolrCore core = h.getCore();
IndexSchema schema = core.getLatestSchema();
assertFalse(schema.getField("id").multiValued());
-
+
+ final String dateClass = RANDOMIZED_NUMERIC_FIELDTYPES.get(Date.class);
+ final boolean usingPoints = Boolean.getBoolean(NUMERIC_POINTS_SYSPROP);
// Test TrieDate fields. The following asserts are expecting a field type defined as:
- String expectedDefinition = "<fieldtype name=\"tdatedv\" class=\"solr.TrieDateField\" " +
+ String expectedDefinition = "<fieldtype name=\"tdatedv\" class=\""+dateClass+"\" " +
"precisionStep=\"6\" docValues=\"true\" multiValued=\"true\"/>";
FieldType tdatedv = schema.getFieldType("foo_tdtdvs");
assertTrue("Expecting a field type defined as " + expectedDefinition,
- tdatedv instanceof TrieDateField);
+ (usingPoints ? DatePointField.class : TrieDateField.class).isInstance(tdatedv));
assertTrue("Expecting a field type defined as " + expectedDefinition,
- tdatedv.hasProperty(FieldProperties.DOC_VALUES));
+ tdatedv.hasProperty(FieldProperties.DOC_VALUES));
assertTrue("Expecting a field type defined as " + expectedDefinition,
- tdatedv.isMultiValued());
- assertEquals("Expecting a field type defined as " + expectedDefinition,
- 6, ((TrieDateField)tdatedv).getPrecisionStep());
+ tdatedv.isMultiValued());
+ if ( ! usingPoints ) {
+ assertEquals("Expecting a field type defined as " + expectedDefinition,
+ 6, ((TrieDateField)tdatedv).getPrecisionStep());
+ }
}
-
-
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java b/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
index 900e439..317b542 100644
--- a/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/PolyFieldTest.java
@@ -48,10 +48,6 @@ public class PolyFieldTest extends SolrTestCaseJ4 {
assertTrue(home.isPolyField());
String subFieldType = "double";
- if (usingPointFields()) {
- subFieldType = "pdouble";
- }
-
SchemaField[] dynFields = schema.getDynamicFieldPrototypes();
boolean seen = false;
for (SchemaField dynField : dynFields) {
@@ -187,9 +183,5 @@ public class PolyFieldTest extends SolrTestCaseJ4 {
assertEquals(2, bq.clauses().size());
clearIndex();
}
-
- private boolean usingPointFields() {
- return h.getCore().getLatestSchema().getField("foo_d1_dv").getType().isPointField();
- }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java
index 087c7e1..b99198d 100644
--- a/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestCollapseQParserPlugin.java
@@ -37,6 +37,8 @@ import org.junit.Test;
public class TestCollapseQParserPlugin extends SolrTestCaseJ4 {
@BeforeClass
public static void beforeClass() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
initCore("solrconfig-collapseqparser.xml", "schema11.xml");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/search/TestGraphTermsQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestGraphTermsQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestGraphTermsQParserPlugin.java
index 1cb927d..f62a8bf 100644
--- a/solr/core/src/test/org/apache/solr/search/TestGraphTermsQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestGraphTermsQParserPlugin.java
@@ -19,6 +19,7 @@ package org.apache.solr.search;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.SolrTestCaseJ4.SuppressPointFields;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -26,6 +27,7 @@ import org.junit.Test;
//We want codecs that support DocValues, and ones supporting blank/empty values.
@SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42"})
+@SuppressPointFields(bugUrl="https://issues.apache.org/jira/browse/SOLR-10845")
public class TestGraphTermsQParserPlugin extends SolrTestCaseJ4 {
@BeforeClass
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java b/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java
index 53caf77..6c2694d 100644
--- a/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java
+++ b/solr/core/src/test/org/apache/solr/search/TestMaxScoreQueryParser.java
@@ -48,8 +48,14 @@ public class TestMaxScoreQueryParser extends AbstractSolrTestCase {
assertEquals(new BoostQuery(new TermQuery(new Term("text", "foo")), 3f), q);
q = parse("price:[0 TO 10]");
- assertTrue(q instanceof LegacyNumericRangeQuery
- || (q instanceof IndexOrDocValuesQuery && ((IndexOrDocValuesQuery)q).getIndexQuery() instanceof PointRangeQuery));
+ Class expected = LegacyNumericRangeQuery.class;
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) {
+ expected = PointRangeQuery.class;
+ if (Boolean.getBoolean(NUMERIC_DOCVALUES_SYSPROP)) {
+ expected = IndexOrDocValuesQuery.class;
+ }
+ }
+ assertTrue(expected + " vs actual: " + q.getClass(), expected.isInstance(q));
}
@Test
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java b/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
index 6db4800..3877c8c 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
@@ -41,6 +41,7 @@ import org.apache.solr.common.params.SolrParams;
import org.apache.solr.parser.QueryParser;
import org.apache.solr.query.FilterQuery;
import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.schema.SchemaField;
import org.junit.BeforeClass;
import org.junit.Test;
import org.noggit.ObjectBuilder;
@@ -149,14 +150,17 @@ public class TestSolrQueryParser extends SolrTestCaseJ4 {
);
// length of date math caused issues...
- if (h.getCore().getLatestSchema().getField("foo_dt").getType().isPointField()) {
- assertJQ(req("q", "foo_dt:\"2013-03-08T00:46:15Z/DAY+000MILLISECONDS+00SECONDS+00MINUTES+00HOURS+0000000000YEARS+6MONTHS+3DAYS\"", "debug", "query")
- , "/debug/parsedquery=='IndexOrDocValuesQuery(foo_dt:[1378857600000 TO 1378857600000])'"
- );
- } else {
+ {
+ SchemaField foo_dt = h.getCore().getLatestSchema().getField("foo_dt");
+ String expected = "foo_dt:2013-09-11T00:00:00Z";
+ if (foo_dt.getType().isPointField()) {
+ expected = "(foo_dt:[1378857600000 TO 1378857600000])";
+ if (foo_dt.hasDocValues() && foo_dt.indexed()) {
+ expected = "IndexOrDocValuesQuery"+expected ;
+ }
+ }
assertJQ(req("q", "foo_dt:\"2013-03-08T00:46:15Z/DAY+000MILLISECONDS+00SECONDS+00MINUTES+00HOURS+0000000000YEARS+6MONTHS+3DAYS\"", "debug", "query")
- , "/debug/parsedquery=='foo_dt:2013-09-11T00:00:00Z'"
- );
+ , "/debug/parsedquery=='"+expected+"'");
}
}
@@ -279,7 +283,11 @@ public class TestSolrQueryParser extends SolrTestCaseJ4 {
qParser.setIsFilter(true); // this may change in the future
qParser.setParams(params);
q = qParser.getQuery();
- assertEquals(20, ((TermInSetQuery)q).getTermData().size());
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) {
+ assertEquals(20, ((PointInSetQuery)q).getPackedPoints().size());
+ } else {
+ assertEquals(20, ((TermInSetQuery)q).getTermData().size());
+ }
// for point fields large filter query should use PointInSetQuery
qParser = QParser.getParser("foo_pi:(1 2 3 4 5 6 7 8 9 10 20 19 18 17 16 15 14 13 12 11)", req);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/search/TestTrieFacet.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestTrieFacet.java b/solr/core/src/test/org/apache/solr/search/TestTrieFacet.java
index 158965b..67301c0 100644
--- a/solr/core/src/test/org/apache/solr/search/TestTrieFacet.java
+++ b/solr/core/src/test/org/apache/solr/search/TestTrieFacet.java
@@ -52,6 +52,8 @@ public class TestTrieFacet extends SolrTestCaseJ4 {
@BeforeClass
public static void beforeClass() throws Exception {
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
initCore("solrconfig-tlog.xml","schema.xml");
@@ -69,18 +71,20 @@ public class TestTrieFacet extends SolrTestCaseJ4 {
SchemaField sf = h.getCore().getLatestSchema().getField(f);
assertFalse("who changed the schema? test isn't valid: " + f, sf.multiValued());
}
-
- for (String f : P0) {
- SchemaField sf = h.getCore().getLatestSchema().getField(f);
- assertEquals("who changed the schema? test isn't valid: " + f,
- 0, assertCastFieldType(sf).getPrecisionStep());
- }
- for (String f : P8) {
- SchemaField sf = h.getCore().getLatestSchema().getField(f);
- assertEquals("who changed the schema? test isn't valid: " + f,
- 8, assertCastFieldType(sf).getPrecisionStep());
- }
+ if (! Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) {
+ for (String f : P0) {
+ SchemaField sf = h.getCore().getLatestSchema().getField(f);
+ assertEquals("who changed the schema? test isn't valid: " + f,
+ 0, assertCastFieldType(sf).getPrecisionStep());
+ }
+ for (String f : P8) {
+ SchemaField sf = h.getCore().getLatestSchema().getField(f);
+ assertEquals("who changed the schema? test isn't valid: " + f,
+ 8, assertCastFieldType(sf).getPrecisionStep());
+ }
+ }
+
// we don't need a lot of docs -- at least one failure only had ~1000
NUM_DOCS = TestUtil.nextInt(random(), 200, 1500);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java b/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java
index 57b3b9e..fbffd5c 100644
--- a/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java
+++ b/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java
@@ -60,6 +60,9 @@ public class TestJsonFacets extends SolrTestCaseHS {
// instead of the following, see the constructor
//FacetField.FacetMethod.DEFAULT_METHOD = rand(FacetField.FacetMethod.values());
+ // we need DVs on point fields to compute stats & facets
+ if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
+
initCore("solrconfig-tlog.xml","schema_latest.xml");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/search/function/TestFunctionQuery.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/function/TestFunctionQuery.java b/solr/core/src/test/org/apache/solr/search/function/TestFunctionQuery.java
index f19e4b0..4cee94b 100644
--- a/solr/core/src/test/org/apache/solr/search/function/TestFunctionQuery.java
+++ b/solr/core/src/test/org/apache/solr/search/function/TestFunctionQuery.java
@@ -293,6 +293,9 @@ public class TestFunctionQuery extends SolrTestCaseJ4 {
@Test
public void testExternalFileFieldNumericKey() throws Exception {
+ assumeFalse("SOLR-10846: ExternalFileField/FileFloatSource throws NPE if keyField is Points based",
+ Boolean.getBoolean(NUMERIC_POINTS_SYSPROP));
+
final String extField = "eff_trie";
final String keyField = "eff_ti";
assertU(adoc("id", "991", keyField, "91"));
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java b/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
index ff5d8a7..f0dac60 100644
--- a/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
+++ b/solr/core/src/test/org/apache/solr/search/function/TestMinMaxOnMultiValuedField.java
@@ -36,13 +36,14 @@ public class TestMinMaxOnMultiValuedField extends SolrTestCaseJ4 {
/** Initializes core and does some sanity checking of schema */
@BeforeClass
public static void beforeClass() throws Exception {
+
initCore("solrconfig-functionquery.xml","schema11.xml");
checkFields(new String[] {"i", "l", "f", "d"}, new String [] {"_p", "_ni_p"});
checkFields(new String[] {"ti", "tl", "tf", "td"}, new String [] {"", "_dv", "_ni_dv"});
}
private static void checkFields(String[] types, String[] suffixes) {
- // sanity check the expected properties of our fields (ie: who broke the schema?)
+ // sanity check the expected properties of our fields (ie: who broke the schema?)
IndexSchema schema = h.getCore().getLatestSchema();
for (String type : types) {
for (String suffix : suffixes) {
@@ -50,7 +51,8 @@ public class TestMinMaxOnMultiValuedField extends SolrTestCaseJ4 {
SchemaField sf = schema.getField(f);
assertTrue(f + " is not multivalued", sf.multiValued());
assertEquals(f + " doesn't have expected docValues status",
- f.contains("dv") || sf.getType().isPointField(), sf.hasDocValues());
+ f.contains("dv") || f.endsWith("_p")
+ || Boolean.getBoolean(NUMERIC_DOCVALUES_SYSPROP), sf.hasDocValues());
assertEquals(f + " doesn't have expected index status",
! f.contains("ni"), sf.indexed());
}
@@ -222,17 +224,19 @@ public class TestMinMaxOnMultiValuedField extends SolrTestCaseJ4 {
SolrException.ErrorCode.BAD_REQUEST);
// useful error until/unless LUCENE-6709
+ assertFalse(h.getCore().getLatestSchema().getField("val_is_ndv_p").hasDocValues());
+ assertTrue(h.getCore().getLatestSchema().getField("val_is_ndv_p").multiValued());
assertQEx("no error asking for max on a non docVals field",
- "val_tds",
- req("q","*:*", "fl", "field(val_tds,'max')"),
+ "val_is_ndv_p",
+ req("q","*:*", "fl", "field(val_is_ndv_p,'max')"),
SolrException.ErrorCode.BAD_REQUEST);
assertQEx("no error asking for max on a non docVals field",
"max",
- req("q","*:*", "fl", "field(val_tds,'max')"),
+ req("q","*:*", "fl", "field(val_is_ndv_p,'max')"),
SolrException.ErrorCode.BAD_REQUEST);
assertQEx("no error asking for max on a non docVals field",
"docValues",
- req("q","*:*", "fl", "field(val_tds,'max')"),
+ req("q","*:*", "fl", "field(val_is_ndv_p,'max')"),
SolrException.ErrorCode.BAD_REQUEST);
// useful error if min/max is unsupported for fieldtype
@@ -245,15 +249,6 @@ public class TestMinMaxOnMultiValuedField extends SolrTestCaseJ4 {
req("q","*:*", "fl", "field(cat_docValues,'max')"),
SolrException.ErrorCode.BAD_REQUEST);
- // MultiValued point field with dv=false
- assertFalse(h.getCore().getLatestSchema().getField("val_is_ndv_p").hasDocValues());
- assertTrue(h.getCore().getLatestSchema().getField("val_is_ndv_p").getType().isPointField());
- assertTrue(h.getCore().getLatestSchema().getField("val_is_ndv_p").multiValued());
- assertQEx("no error asking for non-dv point fields",
- "docValues",
- req("q","*:*", "fl", "field(val_is_ndv_p,'max')"),
- SolrException.ErrorCode.BAD_REQUEST);
-
}
public void testRandom() throws Exception {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java b/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java
index 5d98d8b..857dc65 100644
--- a/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java
+++ b/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java
@@ -131,8 +131,8 @@ public class DocumentBuilderTest extends SolrTestCaseJ4 {
doc.addField( "home", "2.2,3.3" );
Document out = DocumentBuilder.toDocument( doc, core.getLatestSchema() );
assertNotNull( out.get( "home" ) );//contains the stored value and term vector, if there is one
- assertNotNull( out.getField( "home_0" + FieldType.POLY_FIELD_SEPARATOR + System.getProperty("solr.tests.doubleClass", "pdouble") ) );
- assertNotNull( out.getField( "home_1" + FieldType.POLY_FIELD_SEPARATOR + System.getProperty("solr.tests.doubleClass", "pdouble") ) );
+ assertNotNull( out.getField( "home_0" + FieldType.POLY_FIELD_SEPARATOR + "double") );
+ assertNotNull( out.getField( "home_1" + FieldType.POLY_FIELD_SEPARATOR + "double") );
}
/**
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/38f29b26/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
index e9eefb0..1497457 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -43,7 +43,9 @@ import java.nio.file.Paths;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Comparator;
+import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -173,13 +175,6 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
public static final String SYSTEM_PROPERTY_SOLR_TESTS_MERGEPOLICYFACTORY = "solr.tests.mergePolicyFactory";
- /**
- * The system property {@code "solr.tests.preferPointFields"} can be used to make tests use PointFields when possible.
- * PointFields will only be used if the schema used by the tests uses "${solr.tests.TYPEClass}" when defining fields.
- * If this environment variable is not set, those tests will use PointFields 50% of the times and TrieFields the rest.
- */
- public static final boolean PREFER_POINT_FIELDS = Boolean.getBoolean("solr.tests.preferPointFields");
-
private static String coreName = DEFAULT_TEST_CORENAME;
public static int DEFAULT_CONNECTION_TIMEOUT = 60000; // default socket connection timeout in ms
@@ -314,6 +309,8 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
System.clearProperty("solr.cloud.wait-for-updates-with-stale-state-pause");
HttpClientUtil.resetHttpClientBuilder();
+ clearNumericTypesProperties();
+
// clean up static
sslConfig = null;
testSolrHome = null;
@@ -510,22 +507,7 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
mergeSchedulerClass = "org.apache.lucene.index.ConcurrentMergeScheduler";
}
System.setProperty("solr.tests.mergeScheduler", mergeSchedulerClass);
- if (RandomizedContext.current().getTargetClass().isAnnotationPresent(SuppressPointFields.class)
- || (!PREFER_POINT_FIELDS && random().nextBoolean())) {
- log.info("Using TrieFields");
- System.setProperty("solr.tests.intClass", "int");
- System.setProperty("solr.tests.longClass", "long");
- System.setProperty("solr.tests.doubleClass", "double");
- System.setProperty("solr.tests.floatClass", "float");
- System.setProperty("solr.tests.dateClass", "date");
- } else {
- log.info("Using PointFields");
- System.setProperty("solr.tests.intClass", "pint");
- System.setProperty("solr.tests.longClass", "plong");
- System.setProperty("solr.tests.doubleClass", "pdouble");
- System.setProperty("solr.tests.floatClass", "pfloat");
- System.setProperty("solr.tests.dateClass", "pdate");
- }
+ randomizeNumericTypesProperties();
}
public static Throwable getWrappedException(Throwable e) {
@@ -2485,4 +2467,127 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
protected <T> T pickRandom(T... options) {
return options[random().nextInt(options.length)];
}
+
+ /**
+ * The name of a sysprop that can be set by users when running tests to force the types of numerics
+ * used for test classes that do not have the {@link SuppressPointFields} annotation:
+ * <ul>
+ * <li>If unset, then a random variable will be used to decide the type of numerics.</li>
+ * <li>If set to <code>true</code> then Points based numerics will be used.</li>
+ * <li>If set to <code>false</code> (or any other string) then Trie based numerics will be used.</li>
+ * </ul>
+ * @see #NUMERIC_POINTS_SYSPROP
+ */
+ public static final String USE_NUMERIC_POINTS_SYSPROP = "solr.tests.use.numeric.points";
+
+ /**
+ * The name of a sysprop that will either <code>true</code> or <code>false</code> indicating if
+ * numeric points fields are currently in use, depending on the user specified value of
+ * {@link #USE_NUMERIC_POINTS_SYSPROP} and/or the {@link SuppressPointFields} annotation and/or
+ * randomization. Tests can use <code>Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)</code>.
+ *
+ * @see #randomizeNumericTypesProperties
+ */
+ public static final String NUMERIC_POINTS_SYSPROP = "solr.tests.numeric.points";
+
+ /**
+ * The name of a sysprop that will be either <code>true</code> or <code>false</code> indicating if
+ * docValues should be used on a numeric field. This property string should be used in the
+ * <code>docValues</code> attribute of (most) numeric fieldTypes in schemas, and by default will be
+ * randomized by this class in a <code>@BeforeClass</code>. Subclasses that need to force specific
+ * behavior can use <code>System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true")</code>
+ * to override the default randomization.
+ *
+ * @see #randomizeNumericTypesProperties
+ */
+ public static final String NUMERIC_DOCVALUES_SYSPROP = "solr.tests.numeric.dv";
+
+ /**
+ * Sets various sys props related to user specified or randomized choices regarding the types
+ * of numerics that should be used in tests.
+ * <p>
+ * TODO: This method can be private once SOLR-10916 is resolved
+ * </p>
+ * @see #NUMERIC_DOCVALUES_SYSPROP
+ * @see #NUMERIC_POINTS_SYSPROP
+ * @see #clearNumericTypesProperties
+ * @lucene.experimental
+ * @lucene.internal
+ */
+ public static void randomizeNumericTypesProperties() {
+
+ final boolean useDV = random().nextBoolean();
+ System.setProperty(NUMERIC_DOCVALUES_SYSPROP, ""+useDV);
+
+ // consume a consistent amount of random data even if sysprop/annotation is set
+ final boolean randUsePoints = random().nextBoolean();
+
+ final String usePointsStr = System.getProperty(USE_NUMERIC_POINTS_SYSPROP);
+ final boolean usePoints = (null == usePointsStr) ? randUsePoints : Boolean.parseBoolean(usePointsStr);
+
+ if (RandomizedContext.current().getTargetClass().isAnnotationPresent(SolrTestCaseJ4.SuppressPointFields.class)
+ || (! usePoints)) {
+ log.info("Using TrieFields (NUMERIC_POINTS_SYSPROP=false) w/NUMERIC_DOCVALUES_SYSPROP="+useDV);
+
+ org.apache.solr.schema.PointField.TEST_HACK_IGNORE_USELESS_TRIEFIELD_ARGS = false;
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.put(Integer.class, "solr.TrieIntField");
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.put(Float.class, "solr.TrieFloatField");
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.put(Long.class, "solr.TrieLongField");
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.put(Double.class, "solr.TrieDoubleField");
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.put(Date.class, "solr.TrieDateField");
+
+ System.setProperty(NUMERIC_POINTS_SYSPROP, "false");
+ } else {
+ log.info("Using PointFields (NUMERIC_POINTS_SYSPROP=true) w/NUMERIC_DOCVALUES_SYSPROP="+useDV);
+
+ org.apache.solr.schema.PointField.TEST_HACK_IGNORE_USELESS_TRIEFIELD_ARGS = true;
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.put(Integer.class, "solr.IntPointField");
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.put(Float.class, "solr.FloatPointField");
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.put(Long.class, "solr.LongPointField");
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.put(Double.class, "solr.DoublePointField");
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.put(Date.class, "solr.DatePointField");
+
+ System.setProperty(NUMERIC_POINTS_SYSPROP, "true");
+ }
+ for (Map.Entry<Class,String> entry : RANDOMIZED_NUMERIC_FIELDTYPES.entrySet()) {
+ System.setProperty("solr.tests." + entry.getKey().getSimpleName() + "FieldType",
+ entry.getValue());
+
+ }
+ }
+
+ /**
+ * Cleans up the randomized sysproperties and variables set by {@link #randomizeNumericTypesProperties}
+ * <p>
+ * TODO: This method can be private once SOLR-10916 is resolved
+ * </p>
+ * @see #randomizeNumericTypesProperties
+ * @lucene.experimental
+ * @lucene.internal
+ */
+ public static void clearNumericTypesProperties() {
+ org.apache.solr.schema.PointField.TEST_HACK_IGNORE_USELESS_TRIEFIELD_ARGS = false;
+ System.clearProperty("solr.tests.numeric.points");
+ System.clearProperty("solr.tests.numeric.points.dv");
+ for (Class c : RANDOMIZED_NUMERIC_FIELDTYPES.keySet()) {
+ System.clearProperty("solr.tests." + c.getSimpleName() + "FieldType");
+ }
+ private_RANDOMIZED_NUMERIC_FIELDTYPES.clear();
+ }
+
+ private static final Map<Class,String> private_RANDOMIZED_NUMERIC_FIELDTYPES = new HashMap<>();
+
+ /**
+ * A Map of "primative" java "numeric" types and the string name of the <code>class</code> used in the
+ * corrisponding schema fieldType declaration.
+ * <p>
+ * Example: <code>java.util.Date => "solr.DatePointField"</code>
+ * </p>
+ *
+ * @see #randomizeNumericTypesProperties
+ */
+ protected static final Map<Class,String> RANDOMIZED_NUMERIC_FIELDTYPES
+ = Collections.unmodifiableMap(private_RANDOMIZED_NUMERIC_FIELDTYPES);
+
+
}