You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by tf...@apache.org on 2017/02/13 21:18:28 UTC
[08/15] lucene-solr:branch_6x: SOLR-8396: Add support for PointFields
in Solr
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b92e318d/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 d8f3ae5..95c403a 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
@@ -34,6 +34,7 @@ import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.JSONTestUtil;
import org.apache.solr.SolrTestCaseHS;
import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.SolrTestCaseJ4.SuppressPointFields;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.request.macro.MacroExpander;
import org.junit.AfterClass;
@@ -41,6 +42,7 @@ import org.junit.BeforeClass;
import org.junit.Test;
@LuceneTestCase.SuppressCodecs({"Lucene3x","Lucene40","Lucene41","Lucene42","Lucene45","Appending"})
+@SuppressPointFields
public class TestJsonFacets extends SolrTestCaseHS {
private static SolrInstances servers; // for distributed testing
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b92e318d/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 b749e8d..f8c5d19 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -179,11 +179,18 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
public static final String SYSTEM_PROPERTY_SOLR_TESTS_USEMERGEPOLICYFACTORY = "solr.tests.useMergePolicyFactory";
@Deprecated // remove solr.tests.useMergePolicy use with SOLR-8668
public static final String SYSTEM_PROPERTY_SOLR_TESTS_USEMERGEPOLICY = "solr.tests.useMergePolicy";
+
+ /**
+ * 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
-
+
protected void writeCoreProperties(Path coreDirectory, String corename) throws IOException {
Properties props = new Properties();
props.setProperty("name", corename);
@@ -227,6 +234,19 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
public String bugUrl();
}
+ /**
+ * Annotation for test classes that want to disable PointFields.
+ * PointFields will otherwise randomly used by some schemas.
+ */
+ @Documented
+ @Inherited
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target(ElementType.TYPE)
+ public @interface SuppressPointFields {
+ /** Point to JIRA entry. */
+ public String bugUrl() default "None";
+ }
+
// these are meant to be accessed sequentially, but are volatile just to ensure any test
// thread will read the latest value
protected static volatile SSLTestConfig sslConfig;
@@ -466,10 +486,12 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
lrf = h.getRequestFactory("standard", 0, 20, CommonParams.VERSION, "2.2");
}
- /** sets system properties based on
+ /**
+ * Sets system properties to allow generation of random configurations of
+ * solrconfig.xml and schema.xml.
+ * Sets properties used on
* {@link #newIndexWriterConfig(org.apache.lucene.analysis.Analyzer)}
- *
- * configs can use these system properties to vary the indexwriter settings
+ * and base schema.xml (Point Fields)
*/
public static void newRandomConfig() {
IndexWriterConfig iwc = newIndexWriterConfig(new MockAnalyzer(random()));
@@ -485,6 +507,20 @@ 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");
+ } 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");
+ }
}
public static Throwable getWrappedException(Throwable e) {