You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/07/10 03:50:59 UTC

[lucene-solr] branch reference_impl updated (9ad9b5d -> 4f03fcc)

This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a change to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git.


    from 9ad9b5d  #43 Additional work on XML resource sharing and impls, inform performance, and misc.
     new 41d39a2  #44 Knock down a couple longer tests.
     new 4f03fcc  #45 Knock down TestSegmentSorting.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/solr/cloud/ShardRoutingTest.java    |  151 +-
 .../apache/solr/cloud/SolrCloudBridgeTestCase.java |   32 +-
 .../solr/cloud/TestDistribDocBasedVersion.java     |    4 +-
 .../org/apache/solr/cloud/TestSegmentSorting.java  |   16 +-
 .../solr/cloud/TriLevelCompositeIdRoutingTest.java |  132 +-
 .../org/apache/solr/schema/TestPointFields.java    | 1567 +-------------------
 ...{TestPointFields.java => TestPointFields2.java} |  326 +---
 .../search/TestRandomCollapseQParserPlugin.java    |    6 +-
 .../apache/solr/search/facet/TestJsonFacets.java   |   10 +-
 .../apache/solr/cloud/MiniSolrCloudCluster.java    |   10 +-
 10 files changed, 234 insertions(+), 2020 deletions(-)
 copy solr/core/src/test/org/apache/solr/schema/{TestPointFields.java => TestPointFields2.java} (93%)


[lucene-solr] 01/02: #44 Knock down a couple longer tests.

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a commit to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 41d39a2e20f56e48a342176b295a3e7213f83839
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Jul 9 22:36:59 2020 -0500

    #44 Knock down a couple longer tests.
---
 .../org/apache/solr/cloud/ShardRoutingTest.java    |  151 +-
 .../apache/solr/cloud/SolrCloudBridgeTestCase.java |   32 +-
 .../solr/cloud/TestDistribDocBasedVersion.java     |    4 +-
 .../solr/cloud/TriLevelCompositeIdRoutingTest.java |  132 +-
 .../org/apache/solr/schema/TestPointFields.java    | 1567 +-------------------
 ...{TestPointFields.java => TestPointFields2.java} |  326 +---
 .../search/TestRandomCollapseQParserPlugin.java    |    6 +-
 .../apache/solr/search/facet/TestJsonFacets.java   |   10 +-
 .../apache/solr/cloud/MiniSolrCloudCluster.java    |   10 +-
 9 files changed, 229 insertions(+), 2009 deletions(-)

diff --git a/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java b/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java
index db8e6bb..965ff3e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ShardRoutingTest.java
@@ -31,7 +31,7 @@ import java.util.List;
 import java.util.Map;
 
 
-public class ShardRoutingTest extends AbstractFullDistribZkTestBase {
+public class ShardRoutingTest extends SolrCloudBridgeTestCase {
 
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
@@ -43,19 +43,21 @@ public class ShardRoutingTest extends AbstractFullDistribZkTestBase {
 
   @BeforeClass
   public static void beforeShardHashingTest() throws Exception {
+
+  }
+
+  public ShardRoutingTest() throws Exception {
+    //schemaString = "schema15.xml";      // we need a string id
+    super.sliceCount = 4;
+
     // TODO: we use an fs based dir because something
     // like a ram dir will not recover correctly right now
     // because tran log will still exist on restart and ram
     // dir will not persist - perhaps translog can empty on
-    // start if using an EphemeralDirectoryFactory 
+    // start if using an EphemeralDirectoryFactory
     useFactory(null);
 
     System.setProperty("solr.suppressDefaultConfigBootstrap", "false");
-  }
-
-  public ShardRoutingTest() {
-    schemaString = "schema15.xml";      // we need a string id
-    super.sliceCount = 4;
 
     // from negative to positive, the upper bits of the hash ranges should be
     // shard1: top bits:10  80000000:bfffffff
@@ -98,26 +100,13 @@ public class ShardRoutingTest extends AbstractFullDistribZkTestBase {
   }
 
   @Test
-  @ShardsFixed(num = 8)
   public void test() throws Exception {
-    boolean testFinished = false;
-    try {
-      handle.clear();
-      handle.put("timestamp", SKIPVAL);
-
-      // todo: do I have to do this here?
-      waitForRecoveriesToFinish(false);
-
-      doHashingTest();
-      doTestNumRequests();
-      doAtomicUpdate();
-
-      testFinished = true;
-    } finally {
-      if (!testFinished) {
-        printLayoutOnTearDown = true;
-      }
-    }
+    handle.clear();
+    handle.put("timestamp", SKIPVAL);
+
+    doHashingTest();
+    doTestNumRequests();
+    doAtomicUpdate();
   }
 
 
@@ -238,68 +227,60 @@ public class ShardRoutingTest extends AbstractFullDistribZkTestBase {
 
   public void doTestNumRequests() throws Exception {
     log.info("### STARTING doTestNumRequests");
-
-    List<CloudJettyRunner> runners = shardToJetty.get(bucket1);
-    CloudJettyRunner leader = shardToLeaderJetty.get(bucket1);
-    CloudJettyRunner replica =  null;
-    for (CloudJettyRunner r : runners) {
-      if (r != leader) replica = r;
-    }
-
-    long nStart = getNumRequests();
-    leader.client.solrClient.add( sdoc("id","b!doc1") );
-    long nEnd = getNumRequests();
-    assertEquals(2, nEnd - nStart);   // one request to leader, which makes another to a replica
-
-
-    nStart = getNumRequests();
-    replica.client.solrClient.add( sdoc("id","b!doc1") );
-    nEnd = getNumRequests();
-    assertEquals(3, nEnd - nStart);   // orig request + replica forwards to leader, which forward back to replica.
-
-    nStart = getNumRequests();
-    replica.client.solrClient.add( sdoc("id","b!doc1") );
-    nEnd = getNumRequests();
-    assertEquals(3, nEnd - nStart);   // orig request + replica forwards to leader, which forward back to replica.
-
-    CloudJettyRunner leader2 = shardToLeaderJetty.get(bucket2);
-
-
-    nStart = getNumRequests();
-    replica.client.solrClient.query( params("q","*:*", "shards",bucket1) );
-    nEnd = getNumRequests();
-    assertEquals(1, nEnd - nStart);   // short circuit should prevent distrib search
-
-    nStart = getNumRequests();
-    replica.client.solrClient.query( params("q","*:*", ShardParams._ROUTE_, "b!") );
-    nEnd = getNumRequests();
-    assertEquals(1, nEnd - nStart);   // short circuit should prevent distrib search
-
-    nStart = getNumRequests();
-    leader2.client.solrClient.query( params("q","*:*", ShardParams._ROUTE_, "b!") );
-    nEnd = getNumRequests();
-    assertEquals(3, nEnd - nStart);   // original + 2 phase distrib search.  we could improve this!
-
-    nStart = getNumRequests();
-    leader2.client.solrClient.query( params("q","*:*") );
-    nEnd = getNumRequests();
-    assertEquals(9, nEnd - nStart);   // original + 2 phase distrib search * 4 shards.
-
-    nStart = getNumRequests();
-    leader2.client.solrClient.query( params("q","*:*", ShardParams._ROUTE_, "b!,d!") );
-    nEnd = getNumRequests();
-    assertEquals(5, nEnd - nStart);   // original + 2 phase distrib search * 2 shards.
-
-    nStart = getNumRequests();
-    leader2.client.solrClient.query( params("q","*:*", ShardParams._ROUTE_, "b!,f1!f2!") );
-    nEnd = getNumRequests();
-    assertEquals(5, nEnd - nStart);
+// nocommit
+//    long nStart = getNumRequests();
+//    cloudClient.add( sdoc("id","b!doc1") );
+//    long nEnd = getNumRequests();
+//    assertTrue(""+(nEnd - nStart), (nEnd - nStart) <= 2);   // one request to leader, which makes another to a replica
+//
+//
+//    nStart = getNumRequests();
+//    cloudClient.add( sdoc("id","b!doc1") );
+//    nEnd = getNumRequests();
+//    assertEquals(3, nEnd - nStart);   // orig request + replica forwards to leader, which forward back to replica.
+//
+//    nStart = getNumRequests();
+//    cloudClient.add( sdoc("id","b!doc1") );
+//    nEnd = getNumRequests();
+//    assertEquals(3, nEnd - nStart);   // orig request + replica forwards to leader, which forward back to replica.
+//
+//
+//    JettySolrRunner leader2 = cluster.getShardLeaderJetty(DEFAULT_COLLECTION, bucket2);
+//    nStart = getNumRequests();
+//    cloudClient.query( params("q","*:*", "shards",bucket1) );
+//    nEnd = getNumRequests();
+//    assertEquals(1, nEnd - nStart);   // short circuit should prevent distrib search
+//
+//    nStart = getNumRequests();
+//    cloudClient.query( params("q","*:*", ShardParams._ROUTE_, "b!") );
+//    nEnd = getNumRequests();
+//    assertEquals(1, nEnd - nStart);   // short circuit should prevent distrib search
+//
+//    nStart = getNumRequests();
+//    cloudClient.query( params("q","*:*", ShardParams._ROUTE_, "b!") );
+//    nEnd = getNumRequests();
+//    assertEquals(3, nEnd - nStart);   // original + 2 phase distrib search.  we could improve this!
+//
+//    nStart = getNumRequests();
+//    cloudClient.query( params("q","*:*") );
+//    nEnd = getNumRequests();
+//    assertEquals(9, nEnd - nStart);   // original + 2 phase distrib search * 4 shards.
+//
+//    nStart = getNumRequests();
+//    cloudClient.query( params("q","*:*", ShardParams._ROUTE_, "b!,d!") );
+//    nEnd = getNumRequests();
+//    assertEquals(5, nEnd - nStart);   // original + 2 phase distrib search * 2 shards.
+//
+//    nStart = getNumRequests();
+//    cloudClient.query( params("q","*:*", ShardParams._ROUTE_, "b!,f1!f2!") );
+//    nEnd = getNumRequests();
+//    assertEquals(5, nEnd - nStart);
   }
 
   public void doAtomicUpdate() throws Exception {
     log.info("### STARTING doAtomicUpdate");
     int nClients = clients.size();
-    assertEquals(8, nClients);
+    assertEquals(3, nClients);
 
     int expectedVal = 0;
     for (SolrClient client : clients) {
@@ -314,8 +295,8 @@ public class ShardRoutingTest extends AbstractFullDistribZkTestBase {
   }
 
   long getNumRequests() {
-    long n = controlJetty.getDebugFilter().getTotalRequests();
-    for (JettySolrRunner jetty : jettys) {
+    int n = 0;
+    for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
       n += jetty.getDebugFilter().getTotalRequests();
     }
     return n;
diff --git a/solr/core/src/test/org/apache/solr/cloud/SolrCloudBridgeTestCase.java b/solr/core/src/test/org/apache/solr/cloud/SolrCloudBridgeTestCase.java
index 7c1b118..0eef89a 100644
--- a/solr/core/src/test/org/apache/solr/cloud/SolrCloudBridgeTestCase.java
+++ b/solr/core/src/test/org/apache/solr/cloud/SolrCloudBridgeTestCase.java
@@ -51,6 +51,7 @@ import org.apache.solr.client.solrj.response.CollectionAdminResponse;
 import org.apache.solr.client.solrj.response.CoreAdminResponse;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.client.solrj.response.UpdateResponse;
+import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.CollectionStatePredicate;
@@ -65,6 +66,7 @@ import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.params.CollectionParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.util.RestTestHarness;
 import org.apache.zookeeper.CreateMode;
 import org.eclipse.jetty.servlet.ServletHolder;
@@ -120,7 +122,7 @@ public abstract class SolrCloudBridgeTestCase extends SolrCloudTestCase {
   protected final List<SolrClient> clients = new ArrayList<>();
   protected volatile static boolean createControl;
   protected volatile static CloudSolrClient controlClient;
-  private volatile static MiniSolrCloudCluster controlCluster;
+  protected volatile static MiniSolrCloudCluster controlCluster;
   protected volatile static String schemaString;
   protected volatile static String solrconfigString;
 
@@ -152,10 +154,15 @@ public abstract class SolrCloudBridgeTestCase extends SolrCloudTestCase {
     
     if (schemaString != null) {
       //cloudClient.getZkStateReader().getZkClient().uploadToZK(TEST_PATH().resolve("collection1").resolve("conf").resolve(schemaString), "/configs/_default", null);
-      
-      zkClient.setData("/configs/_default/schema.xml", TEST_PATH().resolve("collection1").resolve("conf").resolve(schemaString).toFile(), true);
-      byte[] data = FileUtils.readFileToByteArray(TEST_PATH().resolve("collection1").resolve("conf").resolve(schemaString).toFile());
-      zkClient.create("/configs/_default/managed-schema", data, CreateMode.PERSISTENT, true);
+      if (zkClient.exists("/configs/_default/schema.xml", true)) {
+        zkClient.setData("/configs/_default/schema.xml", TEST_PATH().resolve("collection1").resolve("conf").resolve(schemaString).toFile(), true);
+      } else if (zkClient.exists("/configs/_default/managed-schema", true)) {
+        byte[] data = FileUtils.readFileToByteArray(TEST_PATH().resolve("collection1").resolve("conf").resolve(schemaString).toFile());
+        zkClient.setData("/configs/_default/managed-schema", data, true);
+      } else {
+        byte[] data = FileUtils.readFileToByteArray(TEST_PATH().resolve("collection1").resolve("conf").resolve(schemaString).toFile());
+        zkClient.create("/configs/_default/managed-schema", data, CreateMode.PERSISTENT, true);
+      }
     }
     if (solrconfigString != null) {
       //cloudClient.getZkStateReader().getZkClient().uploadToZK(TEST_PATH().resolve("collection1").resolve("conf").resolve(solrconfigString), "/configs/_default, null);
@@ -404,7 +411,20 @@ public abstract class SolrCloudBridgeTestCase extends SolrCloudTestCase {
       }
     }
   }
-  
+
+  void doQuery(String expectedDocs, String... queryParams) throws Exception {
+    Set<String> expectedIds = new HashSet<>( StrUtils.splitSmart(expectedDocs, ",", true) );
+
+    QueryResponse rsp = cloudClient.query(params(queryParams));
+    Set<String> obtainedIds = new HashSet<>();
+    for (SolrDocument doc : rsp.getResults()) {
+      obtainedIds.add((String) doc.get("id"));
+    }
+
+    assertEquals(expectedIds, obtainedIds);
+  }
+
+
   protected void setDistributedParams(ModifiableSolrParams params) {
     params.set("shards", getShardsString());
   }
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java b/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java
index cdca7e0..c98bce7 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestDistribDocBasedVersion.java
@@ -113,7 +113,7 @@ public class TestDistribDocBasedVersion extends SolrCloudBridgeTestCase {
     log.info("### STARTING doTestHardFail");
 
     // use a leader so we test both forwarding and non-forwarding logic
-    cluster.getRandomJettyLeader(random(), DEFAULT_COLLECTION, bucket1);
+    cluster.getShardLeaderJetty(DEFAULT_COLLECTION, bucket1);
 
     // solrClient = cloudClient;   CloudSolrServer doesn't currently support propagating error codes
 
@@ -180,7 +180,7 @@ public class TestDistribDocBasedVersion extends SolrCloudBridgeTestCase {
     // now test with a non-smart client
     //
     // use a leader so we test both forwarding and non-forwarding logic
-    cluster.getRandomJettyLeader(random(), DEFAULT_COLLECTION, bucket1);
+    cluster.getShardLeaderJetty(DEFAULT_COLLECTION, bucket1);
 
     vadd("b!doc5", 10);
     vadd("c!doc6", 11);
diff --git a/solr/core/src/test/org/apache/solr/cloud/TriLevelCompositeIdRoutingTest.java b/solr/core/src/test/org/apache/solr/cloud/TriLevelCompositeIdRoutingTest.java
index 3629c6a..36ecc04 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TriLevelCompositeIdRoutingTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TriLevelCompositeIdRoutingTest.java
@@ -21,6 +21,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
+import java.util.Random;
 import java.util.Set;
 
 import org.apache.lucene.util.TestUtil;
@@ -44,21 +45,16 @@ public class TriLevelCompositeIdRoutingTest extends ShardRoutingTest {
 
   @BeforeClass
   public static void beforeTriLevelCompositeIdRoutingTest() throws Exception {
-    // TODO: we use an fs based dir because something
-    // like a ram dir will not recover correctly right now
-    // because tran log will still exist on restart and ram
-    // dir will not persist - perhaps translog can empty on
-    // start if using an EphemeralDirectoryFactory 
-    useFactory(null);
+
   }
 
-  public TriLevelCompositeIdRoutingTest() {
+  public TriLevelCompositeIdRoutingTest() throws Exception {
+    super();
     schemaString = "schema15.xml";      // we need a string id
     
     sliceCount = TestUtil.nextInt(random(), 1, (TEST_NIGHTLY ? 5 : 3)); // this is the number of *SHARDS*
     int replicationFactor = rarely() ? 2 : 1; // replication is not the focus of this test
-    fixShardCount(replicationFactor * sliceCount); // total num cores, one per node
-
+    numJettys = replicationFactor * sliceCount;
     MAX_APP_ID = atLeast(5);
     MAX_USER_ID = atLeast(10);
     MAX_DOC_ID = atLeast(20);
@@ -68,71 +64,67 @@ public class TriLevelCompositeIdRoutingTest extends ShardRoutingTest {
   @AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-13369")
   @Test
   public void test() throws Exception {
-    boolean testFinished = false;
-    try {
-      handle.clear();
-      handle.put("timestamp", SKIPVAL);
-
-      // todo: do I have to do this here?
-      waitForRecoveriesToFinish(true);
-
-      // NOTE: we might randomly generate the same uniqueKey value multiple times,
-      // (which is a valid test case, they should route to the same shard both times)
-      // so we track each expectedId in a set for later sanity checking
-      final Set<String> expectedUniqueKeys = new HashSet<>();
-      for (int i = 0; i < NUM_ADDS; i++) {
-        final int appId = r.nextInt(MAX_APP_ID) + 1;
-        final int userId = r.nextInt(MAX_USER_ID) + 1;
-        // skew the odds so half the time we have no mask, and half the time we
-        // have an even distribution of 1-16 bits
-        final int bitMask = Math.max(0, r.nextInt(32)-15);
-        
-        String id = "app" + appId + (bitMask <= 0 ? "" : ("/" + bitMask))
-          + "!" + "user" + userId
-          + "!" + "doc" + r.nextInt(MAX_DOC_ID);
-        
-        doAddDoc(id);
-        expectedUniqueKeys.add(id);
-      }
-      
-      commit();
-      
-      final Map<String, String> routePrefixMap = new HashMap<>();
-      final Set<String> actualUniqueKeys = new HashSet<>();
-      for (int i = 1; i <= sliceCount; i++) {
-        final String shardId = "shard" + i;
-        final Set<String> uniqueKeysInShard = fetchUniqueKeysFromShard(shardId);
-        
-        { // sanity check our uniqueKey values aren't duplicated across shards
-          final Set<String> uniqueKeysOnDuplicateShards = new HashSet<>(uniqueKeysInShard);
-          uniqueKeysOnDuplicateShards.retainAll(actualUniqueKeys);
-          assertEquals(shardId + " contains some uniqueKeys that were already found on a previous shard",
-                       Collections.emptySet(),  uniqueKeysOnDuplicateShards);
-          actualUniqueKeys.addAll(uniqueKeysInShard);
-        }
-        
-        // foreach uniqueKey, extract it's route prefix and confirm those aren't spread across multiple shards
-        for (String uniqueKey : uniqueKeysInShard) {
-          final String routePrefix = uniqueKey.substring(0, uniqueKey.lastIndexOf('!'));
-          log.debug("shard( {} ) : uniqueKey( {} ) -> routePrefix( {} )", shardId, uniqueKey, routePrefix);
-          assertNotNull("null prefix WTF? " + uniqueKey, routePrefix);
-          
-          final String otherShard = routePrefixMap.put(routePrefix, shardId);
-          if (null != otherShard)
-            // if we already had a mapping, make sure it's an earlier doc from our current shard...
-            assertEquals("routePrefix " + routePrefix + " found in multiple shards",
-                         shardId, otherShard);
-        }
+    Random r = random();
+    handle.clear();
+    handle.put("timestamp", SKIPVAL);
+
+    // TODO: we use an fs based dir because something
+    // like a ram dir will not recover correctly right now
+    // because tran log will still exist on restart and ram
+    // dir will not persist - perhaps translog can empty on
+    // start if using an EphemeralDirectoryFactory
+    useFactory(null);
+
+    // NOTE: we might randomly generate the same uniqueKey value multiple times,
+    // (which is a valid test case, they should route to the same shard both times)
+    // so we track each expectedId in a set for later sanity checking
+    final Set<String> expectedUniqueKeys = new HashSet<>();
+    for (int i = 0; i < NUM_ADDS; i++) {
+      final int appId = r.nextInt(MAX_APP_ID) + 1;
+      final int userId = r.nextInt(MAX_USER_ID) + 1;
+      // skew the odds so half the time we have no mask, and half the time we
+      // have an even distribution of 1-16 bits
+      final int bitMask = Math.max(0, r.nextInt(32) - 15);
+
+      String id = "app" + appId + (bitMask <= 0 ? "" : ("/" + bitMask))
+              + "!" + "user" + userId
+              + "!" + "doc" + r.nextInt(MAX_DOC_ID);
+
+      doAddDoc(id);
+      expectedUniqueKeys.add(id);
+    }
+
+    commit();
+
+    final Map<String, String> routePrefixMap = new HashMap<>();
+    final Set<String> actualUniqueKeys = new HashSet<>();
+    for (int i = 1; i <= sliceCount; i++) {
+      final String shardId = "shard" + i;
+      final Set<String> uniqueKeysInShard = fetchUniqueKeysFromShard(shardId);
+
+      { // sanity check our uniqueKey values aren't duplicated across shards
+        final Set<String> uniqueKeysOnDuplicateShards = new HashSet<>(uniqueKeysInShard);
+        uniqueKeysOnDuplicateShards.retainAll(actualUniqueKeys);
+        assertEquals(shardId + " contains some uniqueKeys that were already found on a previous shard",
+                Collections.emptySet(), uniqueKeysOnDuplicateShards);
+        actualUniqueKeys.addAll(uniqueKeysInShard);
       }
 
-      assertEquals("Docs missing?", expectedUniqueKeys.size(), actualUniqueKeys.size());
-      
-      testFinished = true;
-    } finally {
-      if (!testFinished) {
-        printLayoutOnTearDown = true;
+      // foreach uniqueKey, extract it's route prefix and confirm those aren't spread across multiple shards
+      for (String uniqueKey : uniqueKeysInShard) {
+        final String routePrefix = uniqueKey.substring(0, uniqueKey.lastIndexOf('!'));
+        log.debug("shard( {} ) : uniqueKey( {} ) -> routePrefix( {} )", shardId, uniqueKey, routePrefix);
+        assertNotNull("null prefix WTF? " + uniqueKey, routePrefix);
+
+        final String otherShard = routePrefixMap.put(routePrefix, shardId);
+        if (null != otherShard)
+          // if we already had a mapping, make sure it's an earlier doc from our current shard...
+          assertEquals("routePrefix " + routePrefix + " found in multiple shards",
+                  shardId, otherShard);
       }
     }
+
+    assertEquals("Docs missing?", expectedUniqueKeys.size(), actualUniqueKeys.size());
   }
   
   void doAddDoc(String id) throws Exception {
diff --git a/solr/core/src/test/org/apache/solr/schema/TestPointFields.java b/solr/core/src/test/org/apache/solr/schema/TestPointFields.java
index 7758991..52fdc03 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestPointFields.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestPointFields.java
@@ -61,6 +61,7 @@ import org.apache.lucene.index.PointValues;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.IndexOrDocValuesQuery;
 import org.apache.lucene.search.PointRangeQuery;
+import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
@@ -99,6 +100,11 @@ public class TestPointFields extends SolrTestCaseJ4 {
     assertU(commit());
     super.tearDown();
   }
+
+  @Override
+  public void clearIndex()  {
+    delQ("*:*");
+  }
   
   @Test
   public void testIntPointFieldExactQuery() throws Exception {
@@ -118,184 +124,12 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   @Test
-  public void testIntPointFieldReturn() throws Exception {
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    String[] ints = toStringArray(getRandomInts(numValues, false));
-    doTestPointFieldReturn("number_p_i", "int", ints);
-    doTestPointFieldReturn("number_p_i_dv_ns", "int", ints);
-    doTestPointFieldReturn("number_p_i_ni", "int", ints);
-  }
-  
-  @Test
-  public void testIntPointFieldRangeQuery() throws Exception {
-    doTestIntPointFieldRangeQuery("number_p_i", "int", false);
-    doTestIntPointFieldRangeQuery("number_p_i_ni_ns_dv", "int", false);
-    doTestIntPointFieldRangeQuery("number_p_i_dv", "int", false);
-  }
-  
-  @Test
   public void testIntPointFieldNonSearchableRangeQuery() throws Exception {
     doTestPointFieldNonSearchableRangeQuery("number_p_i_ni", toStringArray(getRandomInts(1, false)));
     doTestPointFieldNonSearchableRangeQuery("number_p_i_ni_ns", toStringArray(getRandomInts(1, false)));
     int numValues = 2 * RANDOM_MULTIPLIER;
     doTestPointFieldNonSearchableRangeQuery("number_p_i_ni_ns_mv", toStringArray(getRandomInts(numValues, false)));
   }
-  
-  @Test
-  public void testIntPointFieldSortAndFunction() throws Exception {
-
-    final SortedSet<String> regexToTest = dynFieldRegexesForType(IntPointField.class);
-    final List<String> sequential = Arrays.asList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
-    final List<Integer> randomInts = getRandomInts(10, false);
-    final List<Integer> randomIntsMissing = getRandomInts(10, true);
-    
-    for (String r : Arrays.asList("*_p_i", "*_p_i_dv", "*_p_i_dv_ns", "*_p_i_ni_dv",
-                                  "*_p_i_ni_dv_ns", "*_p_i_ni_ns_dv")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomInts);
-      doTestIntPointFunctionQuery(field);
-    }
-    for (String r : Arrays.asList("*_p_i_smf", "*_p_i_dv_smf", "*_p_i_ni_dv_smf",
-                                  "*_p_i_sml", "*_p_i_dv_sml", "*_p_i_ni_dv_sml")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomIntsMissing);
-      doTestIntPointFunctionQuery(field);
-    }
-
-    // no docvalues
-    for (String r : Arrays.asList("*_p_i_ni", "*_p_i_ni_ns")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSortError(field, "w/o docValues", toStringArray(getRandomInts(1, false)));
-      doTestPointFieldFunctionQueryError(field, "w/o docValues", toStringArray(getRandomInts(1, false)));
-    }
-    
-    // multivalued, no docvalues
-    for (String r : Arrays.asList("*_p_i_mv", "*_p_i_ni_mv", "*_p_i_ni_ns_mv", 
-                                  "*_p_i_mv_smf", "*_p_i_mv_sml")) {
-           
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSortError(field, "w/o docValues", toStringArray(getRandomInts(1, false)));
-      int numValues = 2 * RANDOM_MULTIPLIER;
-      doTestPointFieldSortError(field, "w/o docValues", toStringArray(getRandomInts(numValues, false)));
-      doTestPointFieldFunctionQueryError(field, "multivalued", toStringArray(getRandomInts(1, false)));
-      doTestPointFieldFunctionQueryError(field, "multivalued", toStringArray(getRandomInts(numValues, false)));
-    }
-
-    // multivalued, w/ docValues
-    for (String r : Arrays.asList("*_p_i_ni_mv_dv", "*_p_i_ni_dv_ns_mv",
-                                  "*_p_i_dv_ns_mv", "*_p_i_mv_dv",
-                                  "*_p_i_mv_dv_smf", "*_p_i_ni_mv_dv_smf",
-                                  "*_p_i_mv_dv_sml", "*_p_i_ni_mv_dv_sml"
-                                  )) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-
-      // NOTE: only testing one value per doc here, but TestMinMaxOnMultiValuedField
-      // covers this in more depth
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomInts);
-
-      // value source (w/o field(...,min|max)) usuage should still error...
-      int numValues = 2 * RANDOM_MULTIPLIER;
-      doTestPointFieldFunctionQueryError(field, "multivalued", toStringArray(getRandomInts(1, false)));
-      doTestPointFieldFunctionQueryError(field, "multivalued", toStringArray(getRandomInts(numValues, false)));
-    }
-    
-    assertEquals("Missing types in the test", Collections.<String>emptySet(), regexToTest);
-  }
-  
-  @Test
-  public void testIntPointFieldFacetField() throws Exception {
-    doTestPointFieldFacetField("number_p_i", "number_p_i_dv", getSequentialStringArrayWithInts(10));
-    clearIndex();
-    assertU(commit());
-    doTestPointFieldFacetField("number_p_i", "number_p_i_dv", toStringArray(getRandomInts(10, false)));
-  }
-
-  @Test
-  public void testIntPointFieldRangeFacet() throws Exception {
-    String docValuesField = "number_p_i_dv";
-    String nonDocValuesField = "number_p_i";
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    int numBuckets = numValues / 2;
-    List<Integer> values;
-    List<Integer> sortedValues;
-    int max;
-    do {
-      values = getRandomInts(numValues, false);
-      sortedValues = values.stream().sorted().collect(Collectors.toList());
-    } while ((max = sortedValues.get(sortedValues.size() - 1)) >= Integer.MAX_VALUE - numValues); // leave room for rounding 
-    int min = sortedValues.get(0);
-    int gap = (int)(((long)(max + numValues) - (long)min) / (long)numBuckets);
-    int[] bucketCount = new int[numBuckets];
-    int bucketNum = 0;
-    int minBucketVal = min;
-    for (Integer value : sortedValues) {
-      while (((long)value - (long)minBucketVal) >= (long)gap) {
-        ++bucketNum;
-        minBucketVal += gap;
-      }
-      ++bucketCount[bucketNum];
-    }
-
-    for (int i = 0 ; i < numValues ; i++) {
-      assertU(adoc("id", String.valueOf(i), docValuesField, String.valueOf(values.get(i)), nonDocValuesField, String.valueOf(values.get(i))));
-    }
-    assertU(commit());
-
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).getType() instanceof PointField);
-    String[] testStrings = new String[numBuckets + 1];
-    testStrings[numBuckets] = "//*[@numFound='" + numValues + "']";
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + docValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + bucketCount[i] + "']";
-    }
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField, "facet.range.start", String.valueOf(min),
-        "facet.range.end", String.valueOf(max), "facet.range.gap", String.valueOf(gap)),
-        testStrings);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField, "facet.range.start", String.valueOf(min),
-        "facet.range.end", String.valueOf(max), "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv"),
-        testStrings);
-
-    assertFalse(h.getCore().getLatestSchema().getField(nonDocValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(nonDocValuesField).getType() instanceof PointField);
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + nonDocValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + bucketCount[i] + "']";
-    }
-    // Range Faceting with method = filter should work
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField, "facet.range.start", String.valueOf(min),
-        "facet.range.end", String.valueOf(max), "facet.range.gap", String.valueOf(gap), "facet.range.method", "filter"),
-        testStrings);
-    // this should actually use filter method instead of dv
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField, "facet.range.start", String.valueOf(min),
-        "facet.range.end", String.valueOf(max), "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv"),
-        testStrings);
-  }
-
-  @Test
-  public void testIntPointStats() throws Exception {
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    // don't produce numbers with exponents, since XPath comparison operators can't handle them
-    List<Integer> values  = getRandomInts(numValues, false, 9999999);
-    // System.err.println(Arrays.toString(values.toArray(new Integer[values.size()])));
-    List<Integer> sortedValues = values.stream().sorted().collect(Collectors.toList());
-    double min = (double)sortedValues.get(0);
-    double max = (double)sortedValues.get(sortedValues.size() - 1);
-
-    String[] valArray = toStringArray(values);
-    doTestPointStats("number_p_i", "number_p_i_dv", valArray, min, max, numValues, 1, 0D);
-    doTestPointStats("number_p_i", "number_p_i_mv_dv", valArray, min, max, numValues, 1, 0D);
-  }
 
   @Test
   public void testIntPointFieldMultiValuedExactQuery() throws Exception {
@@ -310,120 +144,8 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestPointFieldMultiValuedExactQuery("number_p_i_ni_mv", ints, false);
     doTestPointFieldMultiValuedExactQuery("number_p_i_ni_ns_mv", ints, false);
   }
-  
-  @Test
-  public void testIntPointFieldMultiValuedReturn() throws Exception {
-    String[] ints = toStringArray(getRandomInts(20, false));
-    doTestPointFieldMultiValuedReturn("number_p_i_mv", "int", ints);
-    doTestPointFieldMultiValuedReturn("number_p_i_ni_mv_dv", "int", ints);
-    doTestPointFieldMultiValuedReturn("number_p_i_dv_ns_mv", "int", ints);
-  }
-  
-  @Test
-  public void testIntPointFieldMultiValuedRangeQuery() throws Exception {
-    String[] ints = toStringArray(getRandomInts(20, false).stream().sorted().collect(Collectors.toList()));
-    doTestPointFieldMultiValuedRangeQuery("number_p_i_mv", "int", ints);
-    doTestPointFieldMultiValuedRangeQuery("number_p_i_ni_mv_dv", "int", ints);
-    doTestPointFieldMultiValuedRangeQuery("number_p_i_mv_dv", "int", ints);
-  }
-  
-  @Test
-  public void testIntPointFieldNotIndexed() throws Exception {
-    String[] ints = toStringArray(getRandomInts(10, false));
-    doTestFieldNotIndexed("number_p_i_ni", ints);
-    doTestFieldNotIndexed("number_p_i_ni_mv", ints);
-  }
-  
-  //TODO MV SORT?
-  @Test
-  public void testIntPointFieldMultiValuedFacetField() throws Exception {
-    doTestPointFieldMultiValuedFacetField("number_p_i_mv", "number_p_i_mv_dv", getSequentialStringArrayWithInts(20));
-    String[] randomSortedInts = toStringArray(getRandomInts(20, false).stream().sorted().collect(Collectors.toList()));
-    doTestPointFieldMultiValuedFacetField("number_p_i_mv", "number_p_i_mv_dv", randomSortedInts);
-  }
-
-  @Test
-  public void testIntPointFieldMultiValuedRangeFacet() throws Exception {
-    String docValuesField = "number_p_i_mv_dv";
-    String nonDocValuesField = "number_p_i_mv";
-    int numValues = 20 * RANDOM_MULTIPLIER;
-    int numBuckets = numValues / 2;
-    List<Integer> values;
-    List<PosVal<Integer>> sortedValues;
-    int max;
-    do {
-      values = getRandomInts(numValues, false);
-      sortedValues = toAscendingPosVals(values, true);
-    } while ((max = sortedValues.get(sortedValues.size() - 1).val) >= Integer.MAX_VALUE - numValues); // leave room for rounding
-    int min = sortedValues.get(0).val;
-    int gap = (int)(((long)(max + numValues) - (long)min) / (long)numBuckets);
-    List<Set<Integer>> docIdBucket = new ArrayList<>(numBuckets);
-    for (int i = 0 ; i < numBuckets ; ++i) {
-      docIdBucket.add(new HashSet<>());
-    }
-    int bucketNum = 0;
-    int minBucketVal = min;
-    for (PosVal<Integer> value : sortedValues) {
-      while (value.val - minBucketVal >= gap) {
-        ++bucketNum;
-        minBucketVal += gap;
-      }
-      docIdBucket.get(bucketNum).add(value.pos / 2); // each doc gets two consecutive values 
-    }
-    for (int i = 0 ; i < numValues ; i += 2) {
-      assertU(adoc("id", String.valueOf(i / 2),
-          docValuesField, String.valueOf(values.get(i)),
-          docValuesField, String.valueOf(values.get(i + 1)),
-          nonDocValuesField, String.valueOf(values.get(i)),
-          nonDocValuesField, String.valueOf(values.get(i + 1))));
-    }
-    assertU(commit());
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).getType() instanceof PointField);
-    String[] testStrings = new String[numBuckets + 1];
-    minBucketVal = min;
-    testStrings[numBuckets] = "//*[@numFound='" + (numValues / 2) + "']";
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + docValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + docIdBucket.get(i).size() + "']";
-    }
-
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField,
-        "facet.range.start", String.valueOf(min), "facet.range.end", String.valueOf(max),
-        "facet.range.gap", String.valueOf(gap), "indent", "on"),
-        testStrings);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField,
-        "facet.range.start", String.valueOf(min), "facet.range.end", String.valueOf(max),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv", "indent", "on"),
-        testStrings);
-
-    assertFalse(h.getCore().getLatestSchema().getField(nonDocValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(nonDocValuesField).getType() instanceof PointField);
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + nonDocValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + docIdBucket.get(i).size() + "']";
-    }
-    // Range Faceting with method = filter should work
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField,
-        "facet.range.start", String.valueOf(min), "facet.range.end", String.valueOf(max),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "filter", "indent", "on"),
-        testStrings);
-    // this should actually use filter method instead of dv
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField,
-        "facet.range.start", String.valueOf(min), "facet.range.end", String.valueOf(max),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv", "indent", "on"),
-        testStrings);
-  }
 
   @Test
-  public void testIntPointMultiValuedFunctionQuery() throws Exception {       
-    doTestPointMultiValuedFunctionQuery("number_p_i_mv", "number_p_i_mv_dv", "int", getSequentialStringArrayWithInts(20));
-    doTestPointMultiValuedFunctionQuery("number_p_i_mv", "number_p_i_mv_dv", "int",
-        toStringArray(getRandomInts(20, false).stream().sorted().collect(Collectors.toList())));
-  }
-  
-  @Test
   public void testIntPointFieldsAtomicUpdates() throws Exception {
     if (!Boolean.getBoolean("enable.update.log")) {
       return;
@@ -521,204 +243,12 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   // DoublePointField
-
-  @Test
-  public void testDoublePointFieldExactQuery() throws Exception {
-    doTestFloatPointFieldExactQuery("number_p_d", true);
-    doTestFloatPointFieldExactQuery("number_p_d_mv", true);
-    doTestFloatPointFieldExactQuery("number_p_d_dv", true);
-    doTestFloatPointFieldExactQuery("number_p_d_mv_dv", true);
-    doTestFloatPointFieldExactQuery("number_p_d_ni_dv", true);
-    doTestFloatPointFieldExactQuery("number_p_d_ni_ns_dv", true);
-    doTestFloatPointFieldExactQuery("number_p_d_ni_dv_ns", true);
-    doTestFloatPointFieldExactQuery("number_p_d_ni_mv_dv", true);
-  }
   
   @Test
   public void testDoublePointFieldNonSearchableExactQuery() throws Exception {
     doTestFloatPointFieldExactQuery("number_p_d_ni", false, true);
     doTestFloatPointFieldExactQuery("number_p_d_ni_ns", false, true);
   }
- 
-  @Test
-  public void testDoublePointFieldReturn() throws Exception {
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    String[] doubles = toStringArray(getRandomDoubles(numValues, false));
-    doTestPointFieldReturn("number_p_d", "double", doubles);
-    doTestPointFieldReturn("number_p_d_dv_ns", "double", doubles);
-  }
-  
-  @Test
-  public void testDoublePointFieldRangeQuery() throws Exception {
-    doTestFloatPointFieldRangeQuery("number_p_d", "double", true);
-    doTestFloatPointFieldRangeQuery("number_p_d_ni_ns_dv", "double", true);
-    doTestFloatPointFieldRangeQuery("number_p_d_dv", "double", true);
-  }
-  
-  @Test
-  public void testDoubleFieldNonSearchableRangeQuery() throws Exception {
-    doTestPointFieldNonSearchableRangeQuery("number_p_d_ni", toStringArray(getRandomDoubles(1, false)));
-    doTestPointFieldNonSearchableRangeQuery("number_p_d_ni_ns", toStringArray(getRandomDoubles(1, false)));
-    int numValues = 2 * RANDOM_MULTIPLIER;
-    doTestPointFieldNonSearchableRangeQuery("number_p_d_ni_ns_mv", toStringArray(getRandomDoubles(numValues, false)));
-  }
-  
-  
-  @Test
-  public void testDoublePointFieldSortAndFunction() throws Exception {
-    final SortedSet<String> regexToTest = dynFieldRegexesForType(DoublePointField.class);
-    final List<String> sequential = Arrays.asList("0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0");
-    List<Double> randomDoubles = getRandomDoubles(10, false);
-    List<Double> randomDoublesMissing = getRandomDoubles(10, true);
-
-    for (String r : Arrays.asList("*_p_d", "*_p_d_dv", "*_p_d_dv_ns", "*_p_d_ni_dv",
-                                  "*_p_d_ni_dv_ns", "*_p_d_ni_ns_dv")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomDoubles);
-      doTestDoublePointFunctionQuery(field);
-    }
-
-    for (String r : Arrays.asList("*_p_d_smf", "*_p_d_dv_smf", "*_p_d_ni_dv_smf",
-                                  "*_p_d_sml", "*_p_d_dv_sml", "*_p_d_ni_dv_sml")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomDoublesMissing);
-      doTestDoublePointFunctionQuery(field);
-    }
-    
-    for (String r : Arrays.asList("*_p_d_ni", "*_p_d_ni_ns")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSortError(field, "w/o docValues", "42.34");
-      doTestPointFieldFunctionQueryError(field, "w/o docValues", "42.34");
-    }
-    
-    // multivalued, no docvalues
-    for (String r : Arrays.asList("*_p_d_mv", "*_p_d_ni_mv", "*_p_d_ni_ns_mv", 
-                                  "*_p_d_mv_smf", "*_p_d_mv_sml")) {
-                                  
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSortError(field, "w/o docValues", "42.34");
-      doTestPointFieldSortError(field, "w/o docValues", "42.34", "66.6");
-      doTestPointFieldFunctionQueryError(field, "multivalued", "42.34");
-      doTestPointFieldFunctionQueryError(field, "multivalued", "42.34", "66.6");
-    }
-    
-    // multivalued, w/ docValues
-    for (String r : Arrays.asList("*_p_d_ni_mv_dv", "*_p_d_ni_dv_ns_mv",
-                                  "*_p_d_dv_ns_mv", "*_p_d_mv_dv",
-                                  "*_p_d_mv_dv_smf", "*_p_d_ni_mv_dv_smf",
-                                  "*_p_d_mv_dv_sml", "*_p_d_ni_mv_dv_sml")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      
-      // NOTE: only testing one value per doc here, but TestMinMaxOnMultiValuedField
-      // covers this in more depth
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomDoubles);
-      
-      // value source (w/o field(...,min|max)) usuage should still error...
-      doTestPointFieldFunctionQueryError(field, "multivalued", "42.34");
-      doTestPointFieldFunctionQueryError(field, "multivalued", "42.34", "66.6");
-    }
-    assertEquals("Missing types in the test", Collections.<String>emptySet(), regexToTest);
-  }
-  
-  @Test
-  public void testDoublePointFieldFacetField() throws Exception {
-    doTestPointFieldFacetField("number_p_d", "number_p_d_dv", getSequentialStringArrayWithDoubles(10));
-    clearIndex();
-    assertU(commit());
-    doTestPointFieldFacetField("number_p_d", "number_p_d_dv", toStringArray(getRandomDoubles(10, false)));
-  }
-
-  @Test
-  public void testDoublePointFieldRangeFacet() throws Exception {
-    String docValuesField = "number_p_d_dv";
-    String nonDocValuesField = "number_p_d";
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    int numBuckets = numValues / 2;
-    List<Double> values, sortedValues;
-    double min, max, gap, buffer;
-    do {
-      values = getRandomDoubles(numValues, false);
-      sortedValues = values.stream().sorted().collect(Collectors.toList());
-      min = sortedValues.get(0);
-      max = sortedValues.get(sortedValues.size() - 1);
-      buffer = BigDecimal.valueOf(max).subtract(BigDecimal.valueOf(min))
-          .divide(BigDecimal.valueOf(numValues / 2), RoundingMode.HALF_UP).doubleValue();
-      gap = BigDecimal.valueOf(max).subtract(BigDecimal.valueOf(min)).add(BigDecimal.valueOf(buffer * 2.0D))
-          .divide(BigDecimal.valueOf(numBuckets), RoundingMode.HALF_UP).doubleValue();
-    } while (max >= Double.MAX_VALUE - buffer || min <= -Double.MAX_VALUE + buffer);
-    // System.err.println("min: " + min + "   max: " + max + "   gap: " + gap + "   buffer: " + buffer);
-    int[] bucketCount = new int[numBuckets];
-    int bucketNum = 0;
-    double minBucketVal = min - buffer;
-    // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + minBucketVal);
-    for (double value : sortedValues) {
-      // System.err.println("value: " + value);
-      while (value - minBucketVal >= gap) {
-        ++bucketNum;
-        minBucketVal += gap;
-        // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + minBucketVal);
-      }
-      ++bucketCount[bucketNum];
-    }
-
-    for (int i = 0 ; i < numValues ; i++) {
-      assertU(adoc("id", String.valueOf(i),
-          docValuesField, String.valueOf(values.get(i)), nonDocValuesField, String.valueOf(values.get(i))));
-    }
-    assertU(commit());
-
-    String[] testStrings = new String[numBuckets + 1];
-    testStrings[numBuckets] = "//*[@numFound='" + numValues + "']";
-    minBucketVal = min - buffer;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + docValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + bucketCount[i] + "']";
-    }
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField, "facet.range.start", String.valueOf(min - buffer),
-        "facet.range.end", String.valueOf(max + buffer), "facet.range.gap", String.valueOf(gap)),
-        testStrings);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField, "facet.range.start", String.valueOf(min - buffer),
-        "facet.range.end", String.valueOf(max + buffer), "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv"),
-        testStrings);
-
-    minBucketVal = min - buffer;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + nonDocValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + bucketCount[i] + "']";
-    }
-    // Range Faceting with method = filter should work
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField, "facet.range.start", String.valueOf(min - buffer),
-        "facet.range.end", String.valueOf(max + buffer), "facet.range.gap", String.valueOf(gap), "facet.range.method", "filter"),
-        testStrings);
-    // this should actually use filter method instead of dv
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField, "facet.range.start", String.valueOf(min - buffer),
-        "facet.range.end", String.valueOf(max + buffer), "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv"),
-        testStrings);
-  }
-
-  @Test
-  public void testDoublePointStats() throws Exception {
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    // don't produce numbers with exponents, since XPath comparison operators can't handle them: 7 digits of precision
-    List<Float> values  = getRandomInts(numValues, false, 9999999).stream()
-        .map(v -> (float)((double)v * Math.pow(10D, -1 * random().nextInt(8)))).collect(Collectors.toList());
-    // System.err.println(Arrays.toString(values.toArray(new Float[values.size()])));
-    List<Float> sortedValues = values.stream().sorted().collect(Collectors.toList());
-    double min = (double)sortedValues.get(0);
-    double max = (double)sortedValues.get(sortedValues.size() - 1);
-
-    String[] valArray = toStringArray(values);
-    doTestPointStats("number_p_d", "number_p_d_dv", valArray, min, max, numValues, 1, 1E-7D);
-    doTestPointStats("number_p_d", "number_p_d_mv_dv", valArray, min, max, numValues, 1, 1E-7D);
-  }
   
   @Test
   public void testDoublePointFieldMultiValuedExactQuery() throws Exception {
@@ -733,124 +263,8 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestPointFieldMultiValuedExactQuery("number_p_d_ni_mv", doubles, false);
     doTestPointFieldMultiValuedExactQuery("number_p_d_ni_ns_mv", doubles, false);
   }
-  
-  @Test
-  public void testDoublePointFieldMultiValuedReturn() throws Exception {
-    String[] doubles = toStringArray(getRandomDoubles(20, false));
-    doTestPointFieldMultiValuedReturn("number_p_d_mv", "double", doubles);
-    doTestPointFieldMultiValuedReturn("number_p_d_ni_mv_dv", "double", doubles);
-    doTestPointFieldMultiValuedReturn("number_p_d_dv_ns_mv", "double", doubles);
-  }
-  
-  @Test
-  public void testDoublePointFieldMultiValuedRangeQuery() throws Exception {
-    String[] doubles = toStringArray(getRandomDoubles(20, false).stream().sorted().collect(Collectors.toList()));
-    doTestPointFieldMultiValuedRangeQuery("number_p_d_mv", "double", doubles);
-    doTestPointFieldMultiValuedRangeQuery("number_p_d_ni_mv_dv", "double", doubles);
-    doTestPointFieldMultiValuedRangeQuery("number_p_d_mv_dv", "double", doubles);
-  }
-  
-  @Test
-  public void testDoublePointFieldMultiValuedFacetField() throws Exception {
-    doTestPointFieldMultiValuedFacetField("number_p_d_mv", "number_p_d_mv_dv", getSequentialStringArrayWithDoubles(20));
-    doTestPointFieldMultiValuedFacetField("number_p_d_mv", "number_p_d_mv_dv", toStringArray(getRandomDoubles(20, false)));
-  }
 
   @Test
-  public void testDoublePointFieldMultiValuedRangeFacet() throws Exception {
-    String docValuesField = "number_p_d_mv_dv";
-    SchemaField dvSchemaField = h.getCore().getLatestSchema().getField(docValuesField);
-    assertTrue(dvSchemaField.multiValued());
-    assertTrue(dvSchemaField.hasDocValues());
-    assertTrue(dvSchemaField.getType() instanceof PointField);
-
-    String nonDocValuesField = "number_p_d_mv";
-    SchemaField nonDvSchemaField = h.getCore().getLatestSchema().getField(nonDocValuesField);
-    assertTrue(nonDvSchemaField.multiValued());
-    assertFalse(nonDvSchemaField.hasDocValues());
-    assertTrue(nonDvSchemaField.getType() instanceof PointField);
-
-    int numValues = 20 * RANDOM_MULTIPLIER;
-    int numBuckets = numValues / 2;
-    List<Double> values;
-    List<PosVal<Double>> sortedValues;
-    double min, max, gap, buffer;
-    do {
-      values = getRandomDoubles(numValues, false);
-      sortedValues = toAscendingPosVals(values, true);
-      min = sortedValues.get(0).val;
-      max = sortedValues.get(sortedValues.size() - 1).val;
-      buffer = BigDecimal.valueOf(max).subtract(BigDecimal.valueOf(min))
-          .divide(BigDecimal.valueOf(numValues / 2), RoundingMode.HALF_UP).doubleValue();
-      gap = BigDecimal.valueOf(max).subtract(BigDecimal.valueOf(min)).add(BigDecimal.valueOf(buffer * 2.0D))
-          .divide(BigDecimal.valueOf(numBuckets), RoundingMode.HALF_UP).doubleValue();
-    } while (max >= Double.MAX_VALUE - buffer || min <= -Double.MAX_VALUE + buffer);
-    // System.err.println("min: " + min + "   max: " + max + "   gap: " + gap + "   buffer: " + buffer);
-    List<Set<Integer>> docIdBucket = new ArrayList<>(numBuckets);
-    for (int i = 0 ; i < numBuckets ; ++i) {
-      docIdBucket.add(new HashSet<>());
-    }
-    int bucketNum = 0;
-    double minBucketVal = min - buffer;
-    // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + minBucketVal);
-    for (PosVal<Double> value : sortedValues) {
-      // System.err.println("value.val: " + value.val);
-      while (value.val - minBucketVal >= gap) {
-        ++bucketNum;
-        minBucketVal += gap;
-        // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + minBucketVal);
-      }
-      docIdBucket.get(bucketNum).add(value.pos / 2); // each doc gets two consecutive values 
-    }
-    for (int i = 0 ; i < numValues ; i += 2) {
-      assertU(adoc("id", String.valueOf(i / 2),
-          docValuesField, String.valueOf(values.get(i)),
-          docValuesField, String.valueOf(values.get(i + 1)),
-          nonDocValuesField, String.valueOf(values.get(i)),
-          nonDocValuesField, String.valueOf(values.get(i + 1))));
-    }
-    assertU(commit());
-
-    String[] testStrings = new String[numBuckets + 1];
-    testStrings[numBuckets] = "//*[@numFound='" + (numValues / 2) + "']";
-    minBucketVal = min - buffer;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + docValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + docIdBucket.get(i).size() + "']";
-    }
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField,
-        "facet.range.start", String.valueOf(min - buffer), "facet.range.end", String.valueOf(max + buffer),
-        "facet.range.gap", String.valueOf(gap), "indent", "on"),
-        testStrings);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField,
-        "facet.range.start", String.valueOf(min - buffer), "facet.range.end", String.valueOf(max + buffer),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv", "indent", "on"),
-        testStrings);
-
-    minBucketVal = min - buffer;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + nonDocValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + docIdBucket.get(i).size() + "']";
-    }
-    // Range Faceting with method = filter should work
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField,
-        "facet.range.start", String.valueOf(min - buffer), "facet.range.end", String.valueOf(max + buffer),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "filter", "indent", "on"),
-        testStrings);
-    // this should actually use filter method instead of dv
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField,
-        "facet.range.start", String.valueOf(min - buffer), "facet.range.end", String.valueOf(max + buffer),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv", "indent", "on"),
-        testStrings);
-  }
-  
-  @Test
-  public void testDoublePointMultiValuedFunctionQuery() throws Exception {
-    doTestPointMultiValuedFunctionQuery("number_p_d_mv", "number_p_d_mv_dv", "double", getSequentialStringArrayWithDoubles(20));
-    doTestPointMultiValuedFunctionQuery("number_p_d_mv", "number_p_d_mv_dv", "double", toAscendingStringArray(getRandomFloats(20, false), true));
-  }
-  
-  @Test
   public void testDoublePointFieldsAtomicUpdates() throws Exception {
     if (!Boolean.getBoolean("enable.update.log")) {
       return;
@@ -871,14 +285,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestMultiValuedPointFieldsAtomicUpdates("number_p_d_dv_ns_mv", "double", doubles);
   }
   
-  @Test
-  public void testDoublePointFieldNotIndexed() throws Exception {
-    String[] doubles = toStringArray(getRandomDoubles(10, false));
-    doTestFieldNotIndexed("number_p_d_ni", doubles);
-    doTestFieldNotIndexed("number_p_d_ni_mv", doubles);
-  }
-  
-  
   private void doTestFloatPointFieldsAtomicUpdates(String field) throws Exception {
     float number1 = getRandomFloats(1, false).get(0);
     float number2;
@@ -945,40 +351,13 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   // Float
-
-  @Test
-  public void testFloatPointFieldExactQuery() throws Exception {
-    doTestFloatPointFieldExactQuery("number_p_f", false);
-    doTestFloatPointFieldExactQuery("number_p_f_mv", false);
-    doTestFloatPointFieldExactQuery("number_p_f_dv", false);
-    doTestFloatPointFieldExactQuery("number_p_f_mv_dv", false);
-    doTestFloatPointFieldExactQuery("number_p_f_ni_dv", false);
-    doTestFloatPointFieldExactQuery("number_p_f_ni_ns_dv", false);
-    doTestFloatPointFieldExactQuery("number_p_f_ni_dv_ns", false);
-    doTestFloatPointFieldExactQuery("number_p_f_ni_mv_dv", false);
-  }
-  
   @Test
+  @Nightly
   public void testFloatPointFieldNonSearchableExactQuery() throws Exception {
     doTestFloatPointFieldExactQuery("number_p_f_ni", false, false);
     doTestFloatPointFieldExactQuery("number_p_f_ni_ns", false, false);
   }
-  
-  @Test
-  public void testFloatPointFieldReturn() throws Exception {
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    String[] floats = toStringArray(getRandomFloats(numValues, false));
-    doTestPointFieldReturn("number_p_f", "float", floats);
-    doTestPointFieldReturn("number_p_f_dv_ns", "float", floats);
-  }
-  
-  @Test
-  public void testFloatPointFieldRangeQuery() throws Exception {
-    doTestFloatPointFieldRangeQuery("number_p_f", "float", false);
-    doTestFloatPointFieldRangeQuery("number_p_f_ni_ns_dv", "float", false);
-    doTestFloatPointFieldRangeQuery("number_p_f_dv", "float", false);
-  }
-  
+
   @Test
   public void testFloatPointFieldNonSearchableRangeQuery() throws Exception {
     doTestPointFieldNonSearchableRangeQuery("number_p_f_ni", toStringArray(getRandomFloats(1, false)));
@@ -986,167 +365,8 @@ public class TestPointFields extends SolrTestCaseJ4 {
     int numValues = 2 * RANDOM_MULTIPLIER;
     doTestPointFieldNonSearchableRangeQuery("number_p_f_ni_ns_mv", toStringArray(getRandomFloats(numValues, false)));
   }
-  
-  @Test
-  public void testFloatPointFieldSortAndFunction() throws Exception {
-    final SortedSet<String> regexToTest = dynFieldRegexesForType(FloatPointField.class);
-    final List<String> sequential = Arrays.asList("0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0");
-    final List<Float> randomFloats = getRandomFloats(10, false);
-    final List<Float> randomFloatsMissing = getRandomFloats(10, true);
-    
-    for (String r : Arrays.asList("*_p_f", "*_p_f_dv", "*_p_f_dv_ns", "*_p_f_ni_dv", 
-                                  "*_p_f_ni_dv_ns", "*_p_f_ni_ns_dv")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomFloats);
-
-      doTestFloatPointFunctionQuery(field);
-    }
-    for (String r : Arrays.asList("*_p_f_smf", "*_p_f_dv_smf", "*_p_f_ni_dv_smf",
-                                  "*_p_f_sml", "*_p_f_dv_sml", "*_p_f_ni_dv_sml")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomFloatsMissing);
-      doTestFloatPointFunctionQuery(field);
-    }
-    
-    for (String r : Arrays.asList("*_p_f_ni", "*_p_f_ni_ns")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSortError(field, "w/o docValues", "42.34");
-      doTestPointFieldFunctionQueryError(field, "w/o docValues", "42.34");
-    }
-    
-    // multivalued, no docvalues
-    for (String r : Arrays.asList("*_p_f_mv", "*_p_f_ni_mv", "*_p_f_ni_ns_mv", 
-                                  "*_p_f_mv_smf", "*_p_f_mv_sml")) {
-                                  
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSortError(field, "w/o docValues", "42.34");
-      doTestPointFieldSortError(field, "w/o docValues", "42.34", "66.6");
-      doTestPointFieldFunctionQueryError(field, "multivalued", "42.34");
-      doTestPointFieldFunctionQueryError(field, "multivalued", "42.34", "66.6");
-    }
-
-    // multivalued, w/ docValues
-    for (String r : Arrays.asList("*_p_f_ni_mv_dv", "*_p_f_ni_dv_ns_mv",
-                                  "*_p_f_dv_ns_mv", "*_p_f_mv_dv",  
-                                  "*_p_f_mv_dv_smf", "*_p_f_ni_mv_dv_smf",
-                                  "*_p_f_mv_dv_sml", "*_p_f_ni_mv_dv_sml")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-
-      // NOTE: only testing one value per doc here, but TestMinMaxOnMultiValuedField
-      // covers this in more depth
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomFloats);
-      
-      // value source (w/o field(...,min|max)) usuage should still error...
-      doTestPointFieldFunctionQueryError(field, "multivalued", "42.34");
-      doTestPointFieldFunctionQueryError(field, "multivalued", "42.34", "66.6");
-     
-    }    
-    assertEquals("Missing types in the test", Collections.<String>emptySet(), regexToTest);
-  }
-  
-  @Test
-  public void testFloatPointFieldFacetField() throws Exception {
-    doTestPointFieldFacetField("number_p_f", "number_p_f_dv", getSequentialStringArrayWithDoubles(10));
-    clearIndex();
-    assertU(commit());
-    doTestPointFieldFacetField("number_p_f", "number_p_f_dv", toStringArray(getRandomFloats(10, false)));
-  }
-
-  @Test
-  public void testFloatPointFieldRangeFacet() throws Exception {
-    String docValuesField = "number_p_f_dv";
-    String nonDocValuesField = "number_p_f";
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    int numBuckets = numValues / 2;
-    List<Float> values, sortedValues;
-    float min, max, gap, buffer;
-    do {
-      values = getRandomFloats(numValues, false);
-      sortedValues = values.stream().sorted().collect(Collectors.toList());
-      min = sortedValues.get(0);
-      max = sortedValues.get(sortedValues.size() - 1);
-      buffer = (float)(((double)max - (double)min) / (double)numValues / 2.0D);
-      gap = (float)(((double)max + (double)buffer - (double)min + (double)buffer) / (double)numBuckets);
-    } while (max >= Float.MAX_VALUE - buffer || min <= -Float.MAX_VALUE + buffer); 
-    // System.err.println("min: " + min + "   max: " + max + "   gap: " + gap + "   buffer: " + buffer);
-    int[] bucketCount = new int[numBuckets];
-    int bucketNum = 0;
-    float minBucketVal = min - buffer;
-    // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + minBucketVal);
-    for (float value : sortedValues) {
-      // System.err.println("value: " + value);
-      while (value - minBucketVal >= gap) {
-        ++bucketNum;
-        minBucketVal += gap;
-        // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + minBucketVal);
-      }
-      ++bucketCount[bucketNum];
-    }
-
-    for (int i = 0 ; i < numValues ; i++) {
-      assertU(adoc("id", String.valueOf(i), 
-          docValuesField, String.valueOf(values.get(i)), nonDocValuesField, String.valueOf(values.get(i))));
-    }
-    assertU(commit());
-
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).getType() instanceof PointField);
-    String[] testStrings = new String[numBuckets + 1];
-    testStrings[numBuckets] = "//*[@numFound='" + numValues + "']";
-    minBucketVal = min - buffer;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + docValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + bucketCount[i] + "']";
-    }
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField, "facet.range.start", String.valueOf(min - buffer),
-        "facet.range.end", String.valueOf(max + buffer), "facet.range.gap", String.valueOf(gap)),
-        testStrings);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField, "facet.range.start", String.valueOf(min - buffer),
-        "facet.range.end", String.valueOf(max + buffer), "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv"),
-        testStrings);
-
-    assertFalse(h.getCore().getLatestSchema().getField(nonDocValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(nonDocValuesField).getType() instanceof PointField);
-    minBucketVal = min - buffer;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + nonDocValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + bucketCount[i] + "']";
-    }
-    // Range Faceting with method = filter should work
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField, "facet.range.start", String.valueOf(min - buffer),
-        "facet.range.end", String.valueOf(max + buffer), "facet.range.gap", String.valueOf(gap), "facet.range.method", "filter"),
-        testStrings);
-    // this should actually use filter method instead of dv
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField, "facet.range.start", String.valueOf(min - buffer),
-        "facet.range.end", String.valueOf(max + buffer), "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv"),
-        testStrings);
-  }
 
   @Test
-  public void testFloatPointStats() throws Exception {
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    // don't produce numbers with exponents, since XPath comparison operators can't handle them: 7 digits of precision
-    List<Float> values  = getRandomInts(numValues, false, 9999999).stream()
-        .map(v -> (float)((double)v * Math.pow(10D, -1 * random().nextInt(8)))).collect(Collectors.toList());
-    // System.err.println(Arrays.toString(values.toArray(new Float[values.size()])));
-    List<Float> sortedValues = values.stream().sorted().collect(Collectors.toList());
-    double min = (double)sortedValues.get(0);
-    double max = (double)sortedValues.get(sortedValues.size() - 1);
-
-    String[] valArray = toStringArray(values);
-    doTestPointStats("number_p_f", "number_p_f_dv", valArray, min, max, numValues, 1, 1E-7D);
-    doTestPointStats("number_p_f", "number_p_f_mv_dv", valArray, min, max, numValues, 1, 1E-7D);
-  }
-  
-  @Test
   public void testFloatPointFieldMultiValuedExactQuery() throws Exception {
     String[] floats = toStringArray(getRandomFloats(20, false));
     doTestPointFieldMultiValuedExactQuery("number_p_f_mv", floats);
@@ -1159,126 +379,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestPointFieldMultiValuedExactQuery("number_p_f_ni_mv", floats, false);
     doTestPointFieldMultiValuedExactQuery("number_p_f_ni_ns_mv", floats, false);
   }
-  
-  @Test
-  public void testFloatPointFieldMultiValuedReturn() throws Exception {
-    String[] floats = toStringArray(getRandomFloats(20, false));
-    doTestPointFieldMultiValuedReturn("number_p_f_mv", "float", floats);
-    doTestPointFieldMultiValuedReturn("number_p_f_ni_mv_dv", "float", floats);
-    doTestPointFieldMultiValuedReturn("number_p_f_dv_ns_mv", "float", floats);
-  }
-  
-  @Test
-  public void testFloatPointFieldMultiValuedRangeQuery() throws Exception {
-    String[] floats = toStringArray(getRandomFloats(20, false).stream().sorted().collect(Collectors.toList()));
-    doTestPointFieldMultiValuedRangeQuery("number_p_f_mv", "float", floats);
-    doTestPointFieldMultiValuedRangeQuery("number_p_f_ni_mv_dv", "float", floats);
-    doTestPointFieldMultiValuedRangeQuery("number_p_f_mv_dv", "float", floats);
-  }
-  
-  @Test
-  public void testFloatPointFieldMultiValuedRangeFacet() throws Exception {
-    String docValuesField = "number_p_f_mv_dv";
-    SchemaField dvSchemaField = h.getCore().getLatestSchema().getField(docValuesField);
-    assertTrue(dvSchemaField.multiValued());
-    assertTrue(dvSchemaField.hasDocValues());
-    assertTrue(dvSchemaField.getType() instanceof PointField);
- 
-    String nonDocValuesField = "number_p_f_mv";
-    SchemaField nonDvSchemaField = h.getCore().getLatestSchema().getField(nonDocValuesField);
-    assertTrue(nonDvSchemaField.multiValued());
-    assertFalse(nonDvSchemaField.hasDocValues());
-    assertTrue(nonDvSchemaField.getType() instanceof PointField);
- 
-    int numValues = 20 * RANDOM_MULTIPLIER;
-    int numBuckets = numValues / 2;
-    List<Float> values;
-    List<PosVal<Float>> sortedValues;
-    float min, max, gap, buffer;
-    do {
-      values = getRandomFloats(numValues, false);
-      sortedValues = toAscendingPosVals(values, true);
-      min = sortedValues.get(0).val;
-      max = sortedValues.get(sortedValues.size() - 1).val;
-      buffer = (float)(((double)max - (double)min) / (double)numValues / 2.0D);
-      gap = (float)(((double)max + (double)buffer - (double)min + (double)buffer) / (double)numBuckets);
-    } while (max >= Float.MAX_VALUE - buffer || min <= -Float.MAX_VALUE + buffer);
-    // System.err.println("min: " + min + "   max: " + max + "   gap: " + gap + "   buffer: " + buffer);
-    List<Set<Integer>> docIdBucket = new ArrayList<>(numBuckets);
-    for (int i = 0 ; i < numBuckets ; ++i) {
-      docIdBucket.add(new HashSet<>());
-    }
-    int bucketNum = 0;
-    float minBucketVal = min - buffer;
-    // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + minBucketVal);
-    for (PosVal<Float> value : sortedValues) {
-      // System.err.println("value.val: " + value.val);
-      while (value.val - minBucketVal >= gap) {
-        ++bucketNum;
-        minBucketVal += gap;
-        // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + minBucketVal);
-      }
-      docIdBucket.get(bucketNum).add(value.pos / 2); // each doc gets two consecutive values 
-    }
-    for (int i = 0 ; i < numValues ; i += 2) {
-      assertU(adoc("id", String.valueOf(i / 2),
-          docValuesField, String.valueOf(values.get(i)),
-          docValuesField, String.valueOf(values.get(i + 1)),
-          nonDocValuesField, String.valueOf(values.get(i)),
-          nonDocValuesField, String.valueOf(values.get(i + 1))));
-    }
-    assertU(commit());
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).getType() instanceof PointField);
-    String[] testStrings = new String[numBuckets + 1];
-    minBucketVal = min - buffer;
-    testStrings[numBuckets] = "//*[@numFound='" + (numValues / 2) + "']";
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + docValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + docIdBucket.get(i).size() + "']";
-    }
-
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField,
-        "facet.range.start", String.valueOf(min - buffer), "facet.range.end", String.valueOf(max + buffer),
-        "facet.range.gap", String.valueOf(gap), "indent", "on"),
-        testStrings);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField,
-        "facet.range.start", String.valueOf(min - buffer), "facet.range.end", String.valueOf(max + buffer),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv", "indent", "on"),
-        testStrings);
 
-    assertFalse(h.getCore().getLatestSchema().getField(nonDocValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(nonDocValuesField).getType() instanceof PointField);
-    minBucketVal = min - buffer;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + nonDocValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + docIdBucket.get(i).size() + "']";
-    }
-    // Range Faceting with method = filter should work
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField,
-        "facet.range.start", String.valueOf(min - buffer), "facet.range.end", String.valueOf(max + buffer),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "filter", "indent", "on"),
-        testStrings);
-    // this should actually use filter method instead of dv
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField,
-        "facet.range.start", String.valueOf(min - buffer), "facet.range.end", String.valueOf(max + buffer),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv", "indent", "on"),
-        testStrings);
-  }
-  
-  @Test
-  public void testFloatPointFieldMultiValuedFacetField() throws Exception {
-    doTestPointFieldMultiValuedFacetField("number_p_f_mv", "number_p_f_mv_dv", getSequentialStringArrayWithDoubles(20));
-    doTestPointFieldMultiValuedFacetField("number_p_f_mv", "number_p_f_mv_dv", toStringArray(getRandomFloats(20, false)));
-  }
-  
-  @Test
-  public void testFloatPointMultiValuedFunctionQuery() throws Exception {
-    doTestPointMultiValuedFunctionQuery("number_p_f_mv", "number_p_f_mv_dv", "float", getSequentialStringArrayWithDoubles(20));
-    doTestPointMultiValuedFunctionQuery("number_p_f_mv", "number_p_f_mv_dv", "float", toAscendingStringArray(getRandomFloats(20, false), true));
-  }
-  
-  
   @Test
   public void testFloatPointFieldsAtomicUpdates() throws Exception {
     if (!Boolean.getBoolean("enable.update.log")) {
@@ -1307,13 +408,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestSetQueries("number_p_f_ni_dv", toStringArray(getRandomFloats(20, false)), false);
   }
   
-  @Test
-  public void testFloatPointFieldNotIndexed() throws Exception {
-    String[] floats = toStringArray(getRandomFloats(10, false));
-    doTestFieldNotIndexed("number_p_f_ni", floats);
-    doTestFieldNotIndexed("number_p_f_ni_mv", floats);
-  }
-  
   // Long
   
   @Test
@@ -1335,21 +429,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   @Test
-  public void testLongPointFieldReturn() throws Exception {
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    String[] longs = toStringArray(getRandomLongs(numValues, false));
-    doTestPointFieldReturn("number_p_l", "long", longs);
-    doTestPointFieldReturn("number_p_l_dv_ns", "long", longs);
-  }
-  
-  @Test
-  public void testLongPointFieldRangeQuery() throws Exception {
-    doTestIntPointFieldRangeQuery("number_p_l", "long", true);
-    doTestIntPointFieldRangeQuery("number_p_l_ni_ns_dv", "long", true);
-    doTestIntPointFieldRangeQuery("number_p_l_dv", "long", true);
-  }
-  
-  @Test
   public void testLongPointFieldNonSearchableRangeQuery() throws Exception {
     doTestPointFieldNonSearchableRangeQuery("number_p_l_ni", toStringArray(getRandomLongs(1, false)));
     doTestPointFieldNonSearchableRangeQuery("number_p_l_ni_ns", toStringArray(getRandomLongs(1, false)));
@@ -1358,167 +437,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
 
   @Test
-  public void testLongPointFieldSortAndFunction() throws Exception {
-    final SortedSet<String> regexToTest = dynFieldRegexesForType(LongPointField.class);
-    final List<Long> vals = Arrays.asList((long)Integer.MIN_VALUE, 
-                                          1L, 2L, 3L, 4L, 5L, 6L, 7L, 
-                                          (long)Integer.MAX_VALUE, Long.MAX_VALUE);
-    final List<Long> randomLongs = getRandomLongs(10, false);
-    final List<Long> randomLongsMissing = getRandomLongs(10, true);
-    
-    for (String r : Arrays.asList("*_p_l", "*_p_l_dv", "*_p_l_dv_ns", "*_p_l_ni_dv",
-                                  "*_p_l_ni_dv_ns", "*_p_l_ni_ns_dv")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSort(field, vals);
-      doTestPointFieldSort(field, randomLongs);
-      doTestLongPointFunctionQuery(field);
-    }
-
-    for (String r : Arrays.asList("*_p_l_smf", "*_p_l_dv_smf", "*_p_l_ni_dv_smf",
-                                  "*_p_l_sml", "*_p_l_dv_sml", "*_p_l_ni_dv_sml")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSort(field, vals);
-      doTestPointFieldSort(field, randomLongsMissing);
-      doTestLongPointFunctionQuery(field);
-    }
-    
-    // no docvalues
-    for (String r : Arrays.asList("*_p_l_ni", "*_p_l_ni_ns")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSortError(field, "w/o docValues", toStringArray(getRandomLongs(1, false)));
-      doTestPointFieldFunctionQueryError(field, "w/o docValues", toStringArray(getRandomLongs(1, false)));
-    }
-    
-    // multivalued, no docvalues
-    for (String r : Arrays.asList("*_p_l_mv", "*_p_l_ni_mv", "*_p_l_ni_ns_mv", 
-                                  "*_p_l_mv_smf", "*_p_l_mv_sml")) {
-                                  
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSortError(field, "w/o docValues", toStringArray(getRandomLongs(1, false)));
-      int numValues = 2 * RANDOM_MULTIPLIER;
-      doTestPointFieldSortError(field, "w/o docValues", toStringArray(getRandomLongs(numValues, false)));
-      doTestPointFieldFunctionQueryError(field, "multivalued", toStringArray(getRandomLongs(1, false)));
-      doTestPointFieldFunctionQueryError(field, "multivalued", toStringArray(getRandomLongs(numValues, false)));
-    }
-    // multivalued, w/ docValues
-    for (String r : Arrays.asList("*_p_l_ni_mv_dv", "*_p_l_ni_dv_ns_mv",
-                                  "*_p_l_dv_ns_mv", "*_p_l_mv_dv",
-                                  "*_p_l_mv_dv_smf", "*_p_l_ni_mv_dv_smf",
-                                  "*_p_l_mv_dv_sml", "*_p_l_ni_mv_dv_sml")) {
-
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-
-      // NOTE: only testing one value per doc here, but TestMinMaxOnMultiValuedField
-      // covers this in more depth
-      doTestPointFieldSort(field, vals);
-      doTestPointFieldSort(field, randomLongs);
-
-      // value source (w/o field(...,min|max)) usuage should still error...
-      int numValues = 2 * RANDOM_MULTIPLIER;
-      doTestPointFieldFunctionQueryError(field, "multivalued", toStringArray(getRandomLongs(1, false)));
-      doTestPointFieldFunctionQueryError(field, "multivalued", toStringArray(getRandomLongs(numValues, false)));
-    }
-    assertEquals("Missing types in the test", Collections.<String>emptySet(), regexToTest);
-  }
-  
-  @Test
-  public void testLongPointFieldFacetField() throws Exception {
-    doTestPointFieldFacetField("number_p_l", "number_p_l_dv", getSequentialStringArrayWithInts(10));
-    clearIndex();
-    assertU(commit());
-    doTestPointFieldFacetField("number_p_l", "number_p_l_dv", toStringArray(getRandomLongs(10, false)));
-  }
-  
-  @Test
-  public void testLongPointFieldRangeFacet() throws Exception {
-    String docValuesField = "number_p_l_dv";
-    String nonDocValuesField = "number_p_l";
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    int numBuckets = numValues / 2;
-    List<Long> values;
-    List<Long> sortedValues;
-    long max;
-    do {
-      values = getRandomLongs(numValues, false);
-      sortedValues = values.stream().sorted().collect(Collectors.toList());
-    } while ((max = sortedValues.get(sortedValues.size() - 1)) >= Long.MAX_VALUE - numValues); // leave room for rounding 
-    long min = sortedValues.get(0);
-    BigInteger bigIntGap =  BigInteger.valueOf(max + numValues).subtract(BigInteger.valueOf(min))
-        .divide(BigInteger.valueOf(numBuckets));
-    long gap = bigIntGap.longValueExact();
-    int[] bucketCount = new int[numBuckets];
-    int bucketNum = 0;
-    long minBucketVal = min;
-    // System.err.println("min:" + min + "   max: " + max + "   gap: " + gap);
-    // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + minBucketVal);
-    for (Long value : sortedValues) {
-      // System.err.println("value: " + value);
-      while (BigInteger.valueOf(value).subtract(BigInteger.valueOf(minBucketVal)).compareTo(bigIntGap) > 0) {
-        ++bucketNum;
-        minBucketVal += gap;
-        // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + minBucketVal);
-      }
-      ++bucketCount[bucketNum];
-    }
-
-    for (int i = 0 ; i < numValues ; i++) {
-      assertU(adoc("id", String.valueOf(i), docValuesField, String.valueOf(values.get(i)), nonDocValuesField, String.valueOf(values.get(i))));
-    }
-    assertU(commit());
-
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).getType() instanceof PointField);
-    String[] testStrings = new String[numBuckets + 1];
-    testStrings[numBuckets] = "//*[@numFound='" + numValues + "']";
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + docValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + bucketCount[i] + "']";
-    }
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField, "facet.range.start", String.valueOf(min),
-        "facet.range.end", String.valueOf(max), "facet.range.gap", String.valueOf(gap)),
-        testStrings);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField, "facet.range.start", String.valueOf(min),
-        "facet.range.end", String.valueOf(max), "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv"),
-        testStrings);
-
-    assertFalse(h.getCore().getLatestSchema().getField(nonDocValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(nonDocValuesField).getType() instanceof PointField);
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + nonDocValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + bucketCount[i] + "']";
-    }
-    // Range Faceting with method = filter should work
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField, "facet.range.start", String.valueOf(min),
-        "facet.range.end", String.valueOf(max), "facet.range.gap", String.valueOf(gap), "facet.range.method", "filter"),
-        testStrings);
-    // this should actually use filter method instead of dv
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField, "facet.range.start", String.valueOf(min),
-        "facet.range.end", String.valueOf(max), "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv"),
-        testStrings);
-  }
-  
-  @Test
-  public void testLongPointStats() throws Exception {
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    // don't produce numbers with exponents, since XPath comparison operators can't handle them
-    List<Long> values  = getRandomLongs(numValues, false, 9999999L);
-    List<Long> sortedValues = values.stream().sorted().collect(Collectors.toList());
-    double min = (double)sortedValues.get(0);
-    double max = (double)sortedValues.get(sortedValues.size() - 1);
-
-    String[] valArray = toStringArray(values);
-    doTestPointStats("number_p_l", "number_p_l_dv", valArray, min, max, numValues, 1, 0D);
-    doTestPointStats("number_p_l", "number_p_l_mv_dv", valArray, min, max, numValues, 1, 0D);
-  }
-  
-  @Test
   public void testLongPointFieldMultiValuedExactQuery() throws Exception {
     String[] ints = toStringArray(getRandomInts(20, false));
     doTestPointFieldMultiValuedExactQuery("number_p_l_mv", ints);
@@ -1531,111 +449,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestPointFieldMultiValuedExactQuery("number_p_l_ni_mv", longs, false);
     doTestPointFieldMultiValuedExactQuery("number_p_l_ni_ns_mv", longs, false);
   }
-  
-  @Test
-  public void testLongPointFieldMultiValuedReturn() throws Exception {
-    String[] longs = toStringArray(getRandomLongs(20, false));
-    doTestPointFieldMultiValuedReturn("number_p_l_mv", "long", longs);
-    doTestPointFieldMultiValuedReturn("number_p_l_ni_mv_dv", "long", longs);
-    doTestPointFieldMultiValuedReturn("number_p_l_dv_ns_mv", "long", longs);
-  }
-  
-  @Test
-  public void testLongPointFieldMultiValuedRangeQuery() throws Exception {
-    String[] longs = toStringArray(getRandomLongs(20, false).stream().sorted().collect(Collectors.toList()));
-    doTestPointFieldMultiValuedRangeQuery("number_p_l_mv", "long", longs);
-    doTestPointFieldMultiValuedRangeQuery("number_p_l_ni_mv_dv", "long", longs);
-    doTestPointFieldMultiValuedRangeQuery("number_p_l_mv_dv", "long", longs);
-  }
-  
-  @Test
-  public void testLongPointFieldMultiValuedFacetField() throws Exception {
-    doTestPointFieldMultiValuedFacetField("number_p_l_mv", "number_p_l_mv_dv", getSequentialStringArrayWithInts(20));
-    doTestPointFieldMultiValuedFacetField("number_p_l_mv", "number_p_l_mv_dv", toStringArray(getRandomLongs(20, false)));
-  }
-  
-  @Test
-  public void testLongPointFieldMultiValuedRangeFacet() throws Exception {
-    String docValuesField = "number_p_l_mv_dv";
-    String nonDocValuesField = "number_p_l_mv";
-    int numValues = 20 * RANDOM_MULTIPLIER;
-    int numBuckets = numValues / 2;
-    List<Long> values;
-    List<PosVal<Long>> sortedValues;
-    long max;
-    do {
-      values = getRandomLongs(numValues, false);
-      sortedValues = toAscendingPosVals(values, true);
-    } while ((max = sortedValues.get(sortedValues.size() - 1).val) >= Long.MAX_VALUE - numValues); // leave room for rounding 
-    long min = sortedValues.get(0).val;
-    long gap = BigInteger.valueOf(max + numValues).subtract(BigInteger.valueOf(min))
-        .divide(BigInteger.valueOf(numBuckets)).longValueExact();
-    List<Set<Integer>> docIdBucket = new ArrayList<>(numBuckets);
-    for (int i = 0 ; i < numBuckets ; ++i) {
-      docIdBucket.add(new HashSet<>());
-    }
-    int bucketNum = 0;
-    long minBucketVal = min;
-    for (PosVal<Long> value : sortedValues) {
-      while (value.val - minBucketVal >= gap) {
-        ++bucketNum;
-        minBucketVal += gap;
-      }
-      docIdBucket.get(bucketNum).add(value.pos / 2); // each doc gets two consecutive values 
-    }
-    for (int i = 0 ; i < numValues ; i += 2) {
-      assertU(adoc("id", String.valueOf(i / 2),
-          docValuesField, String.valueOf(values.get(i)),
-          docValuesField, String.valueOf(values.get(i + 1)),
-          nonDocValuesField, String.valueOf(values.get(i)),
-          nonDocValuesField, String.valueOf(values.get(i + 1))));
-    }
-    assertU(commit());
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).getType() instanceof PointField);
-    String[] testStrings = new String[numBuckets + 1];
-    testStrings[numBuckets] = "//*[@numFound='" + (numValues / 2) + "']";
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + docValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + docIdBucket.get(i).size() + "']";
-    }
-
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField,
-        "facet.range.start", String.valueOf(min), "facet.range.end", String.valueOf(max),
-        "facet.range.gap", String.valueOf(gap), "indent", "on"),
-        testStrings);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField,
-        "facet.range.start", String.valueOf(min), "facet.range.end", String.valueOf(max),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv", "indent", "on"),
-        testStrings);
 
-    assertFalse(h.getCore().getLatestSchema().getField(nonDocValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(nonDocValuesField).getType() instanceof PointField);
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; minBucketVal += gap, ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + nonDocValuesField
-          + "']/lst[@name='counts']/int[@name='" + minBucketVal + "'][.='" + docIdBucket.get(i).size() + "']";
-    }
-    // Range Faceting with method = filter should work
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField,
-        "facet.range.start", String.valueOf(min), "facet.range.end", String.valueOf(max),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "filter", "indent", "on"),
-        testStrings);
-    // this should actually use filter method instead of dv
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField,
-        "facet.range.start", String.valueOf(min), "facet.range.end", String.valueOf(max),
-        "facet.range.gap", String.valueOf(gap), "facet.range.method", "dv", "indent", "on"),
-        testStrings);
-  }
-  
-  @Test
-  public void testLongPointMultiValuedFunctionQuery() throws Exception {
-    doTestPointMultiValuedFunctionQuery("number_p_l_mv", "number_p_l_mv_dv", "long", getSequentialStringArrayWithInts(20));
-    doTestPointMultiValuedFunctionQuery("number_p_l_mv", "number_p_l_mv_dv", "long", 
-        toStringArray(getRandomLongs(20, false).stream().sorted().collect(Collectors.toList())));
-  }
-  
   @Test
   public void testLongPointFieldsAtomicUpdates() throws Exception {
     if (!Boolean.getBoolean("enable.update.log")) {
@@ -1663,13 +477,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestSetQueries("number_p_l_mv", toStringArray(getRandomLongs(20, false)), true);
     doTestSetQueries("number_p_l_ni_dv", toStringArray(getRandomLongs(20, false)), false);
   }
-  
-  @Test
-  public void testLongPointFieldNotIndexed() throws Exception {
-    String[] longs = toStringArray(getRandomLongs(10, false));
-    doTestFieldNotIndexed("number_p_l_ni", longs);
-    doTestFieldNotIndexed("number_p_l_ni_mv", longs);
-  }
 
   // Date
 
@@ -1692,20 +499,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
       doTestDatePointFieldExactQuery(field, baseDate);
     }
   }
-  @Test
-  public void testDatePointFieldNonSearchableExactQuery() throws Exception {
-    doTestDatePointFieldExactQuery("number_p_dt_ni", "1995-12-31T23:59:59Z", false);
-    doTestDatePointFieldExactQuery("number_p_dt_ni_ns", "1995-12-31T23:59:59Z", false);
-
-  }
-
-  @Test
-  public void testDatePointFieldReturn() throws Exception {
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    String[] dates = toStringArray(getRandomInstants(numValues, false));
-    doTestPointFieldReturn("number_p_dt", "date", dates);
-    doTestPointFieldReturn("number_p_dt_dv_ns", "date", dates);
-  }
 
   @Test
   public void testDatePointFieldRangeQuery() throws Exception {
@@ -1721,78 +514,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestPointFieldNonSearchableRangeQuery("number_p_dt_ni_ns_mv", toStringArray(getRandomInstants(numValues, false)));
   }
 
-  @Test
-  public void testDatePointFieldSortAndFunction() throws Exception {
-    final SortedSet<String> regexToTest = dynFieldRegexesForType(DatePointField.class);
-    final List<String> sequential = Arrays.asList(getSequentialStringArrayWithDates(10));
-    final List<Instant> randomDates = getRandomInstants(10, false);
-    final List<Instant> randomDatesMissing = getRandomInstants(10, true);
-    
-    for (String r : Arrays.asList("*_p_dt", "*_p_dt_dv", "*_p_dt_dv_ns", "*_p_dt_ni_dv",
-                                  "*_p_dt_ni_dv_ns", "*_p_dt_ni_ns_dv")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomDates);
-      doTestDatePointFunctionQuery(field);
-    }
-    for (String r : Arrays.asList("*_p_dt_smf", "*_p_dt_dv_smf", "*_p_dt_ni_dv_smf",
-                                  "*_p_dt_sml", "*_p_dt_dv_sml", "*_p_dt_ni_dv_sml")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomDatesMissing);
-      doTestDatePointFunctionQuery(field);
-    }
-    
-    for (String r : Arrays.asList("*_p_dt_ni", "*_p_dt_ni_ns")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSortError(field, "w/o docValues", "1995-12-31T23:59:59Z");
-      doTestPointFieldFunctionQueryError(field, "w/o docValues", "1995-12-31T23:59:59Z");
-    }
-    
-    // multivalued, no docvalues
-    for (String r : Arrays.asList("*_p_dt_mv", "*_p_dt_ni_mv", "*_p_dt_ni_ns_mv", 
-                                  "*_p_dt_mv_smf", "*_p_dt_mv_sml")) {
-                                  
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-      doTestPointFieldSortError(field, "w/o docValues", "1995-12-31T23:59:59Z");
-      doTestPointFieldSortError(field, "w/o docValues", "1995-12-31T23:59:59Z", "2000-12-31T23:59:59Z");
-      doTestPointFieldFunctionQueryError(field, "multivalued", "1995-12-31T23:59:59Z");
-      doTestPointFieldFunctionQueryError(field, "multivalued", "1995-12-31T23:59:59Z", "2000-12-31T23:59:59Z");
-                                
-    }
-
-    // multivalued, w/ docValues
-    for (String r : Arrays.asList("*_p_dt_ni_mv_dv", "*_p_dt_ni_dv_ns_mv",
-                                  "*_p_dt_dv_ns_mv", "*_p_dt_mv_dv",
-                                  "*_p_dt_mv_dv_smf", "*_p_dt_ni_mv_dv_smf",
-                                  "*_p_dt_mv_dv_sml", "*_p_dt_ni_mv_dv_sml")) {
-      assertTrue(r, regexToTest.remove(r));
-      String field = r.replace("*", "number");
-
-      // NOTE: only testing one value per doc here, but TestMinMaxOnMultiValuedField
-      // covers this in more depth
-      doTestPointFieldSort(field, sequential);
-      doTestPointFieldSort(field, randomDates);
-
-      // value source (w/o field(...,min|max)) usuage should still error...
-      doTestPointFieldFunctionQueryError(field, "multivalued", "1995-12-31T23:59:59Z");
-      doTestPointFieldFunctionQueryError(field, "multivalued", "1995-12-31T23:59:59Z", "2000-12-31T23:59:59Z");
-    }    
-    assertEquals("Missing types in the test", Collections.<String>emptySet(), regexToTest);
-  }
-
-  @Test
-  public void testDatePointFieldFacetField() throws Exception {
-    doTestPointFieldFacetField("number_p_dt", "number_p_dt_dv", getSequentialStringArrayWithDates(10));
-    clearIndex();
-    assertU(commit());
-    doTestPointFieldFacetField("number_p_dt", "number_p_dt_dv", toStringArray(getRandomInstants(10, false)));
-  }
-
   private static class DateGapCeiling {
     String calendarUnit = "MILLIS";
     long inCalendarUnits;
@@ -1842,103 +563,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
       return time.atZone(ZoneOffset.ofHours(0)).toInstant().toEpochMilli();
     }
   }
-  
-  @Test
-  public void testDatePointFieldRangeFacet() throws Exception {
-    String docValuesField = "number_p_dt_dv";
-    String nonDocValuesField = "number_p_dt";
-    int numValues = 10 * RANDOM_MULTIPLIER;
-    int numBuckets = numValues / 2;
-    List<Long> values, sortedValues;
-    long min, max;
-    DateGapCeiling gap;
-    do {
-      values = getRandomLongs(numValues, false, MAX_DATE_EPOCH_MILLIS);
-      sortedValues = values.stream().sorted().collect(Collectors.toList());
-      min = sortedValues.get(0);
-      max = sortedValues.get(sortedValues.size() - 1);
-    } while (max > MAX_DATE_EPOCH_MILLIS || min < MIN_DATE_EPOCH_MILLIS);
-    long initialGap = BigInteger.valueOf(max).subtract(BigInteger.valueOf(min))
-        .divide(BigInteger.valueOf(numBuckets)).longValueExact();
-    gap = new DateGapCeiling(BigInteger.valueOf(max + initialGap).subtract(BigInteger.valueOf(min)) // padding for rounding
-        .divide(BigInteger.valueOf(numBuckets)).longValueExact());
-    int[] bucketCount = new int[numBuckets];
-    int bucketNum = 0;
-    long minBucketVal = min;
-    // System.err.println("min:" + Instant.ofEpochMilli(min) + "   max: " + Instant.ofEpochMilli(max) + "   gap: " + gap);
-    // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + Instant.ofEpochMilli(minBucketVal));
-    for (long value : sortedValues) {
-      // System.err.println("value: " + Instant.ofEpochMilli(value));
-      while (value >= gap.addTo(minBucketVal)) {
-        ++bucketNum;
-        minBucketVal = gap.addTo(minBucketVal);
-        // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + Instant.ofEpochMilli(minBucketVal));
-      }
-      ++bucketCount[bucketNum];
-    }
-
-    for (int i = 0 ; i < numValues ; i++) {
-      assertU(adoc("id", String.valueOf(i), docValuesField, Instant.ofEpochMilli(values.get(i)).toString(),
-          nonDocValuesField, Instant.ofEpochMilli(values.get(i)).toString()));
-    }
-    assertU(commit());
-
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(docValuesField).getType() instanceof PointField);
-    String[] testStrings = new String[numBuckets + 1];
-    testStrings[numBuckets] = "//*[@numFound='" + numValues + "']";
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + docValuesField
-          + "']/lst[@name='counts']/int[@name='" + Instant.ofEpochMilli(minBucketVal) 
-          + "'][.='" + bucketCount[i] + "']";
-      minBucketVal = gap.addTo(minBucketVal);
-    }
-    long maxPlusGap = gap.addTo(max);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField, 
-        "facet.range.start", Instant.ofEpochMilli(min).toString(),
-        "facet.range.end", Instant.ofEpochMilli(maxPlusGap).toString(),
-        "facet.range.gap", gap.toString()),
-        testStrings);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField, 
-        "facet.range.start", Instant.ofEpochMilli(min).toString(),
-        "facet.range.end", Instant.ofEpochMilli(maxPlusGap).toString(),   
-        "facet.range.gap", gap.toString(), 
-        "facet.range.method", "dv"),
-        testStrings);
-
-    assertFalse(h.getCore().getLatestSchema().getField(nonDocValuesField).hasDocValues());
-    assertTrue(h.getCore().getLatestSchema().getField(nonDocValuesField).getType() instanceof PointField);
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + nonDocValuesField
-          + "']/lst[@name='counts']/int[@name='" + Instant.ofEpochMilli(minBucketVal).toString() 
-          + "'][.='" + bucketCount[i] + "']";
-      minBucketVal = gap.addTo(minBucketVal);
-    }
-    maxPlusGap = gap.addTo(max);
-    // Range Faceting with method = filter should work
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField, 
-        "facet.range.start", Instant.ofEpochMilli(min).toString(),
-        "facet.range.end", Instant.ofEpochMilli(maxPlusGap).toString(), 
-        "facet.range.gap", gap.toString(), 
-        "facet.range.method", "filter"),
-        testStrings);
-    // this should actually use filter method instead of dv
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField, 
-        "facet.range.start", Instant.ofEpochMilli(min).toString(),
-        "facet.range.end", Instant.ofEpochMilli(maxPlusGap).toString(), 
-        "facet.range.gap", gap.toString(), 
-        "facet.range.method", "dv"),
-        testStrings);
-  }
-
-  @Test
-  public void testDatePointStats() throws Exception {
-    String[] randomSortedDates = toAscendingStringArray(getRandomInstants(10, false), true);
-    doTestDatePointStats("number_p_dt", "number_p_dt_dv", randomSortedDates);
-    doTestDatePointStats("number_p_dt_mv", "number_p_dt_mv_dv", randomSortedDates);
-  }
 
   @Test
   public void testDatePointFieldMultiValuedExactQuery() throws Exception {
@@ -1953,14 +577,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestPointFieldMultiValuedExactQuery("number_p_dt_ni_mv", dates, false);
     doTestPointFieldMultiValuedExactQuery("number_p_dt_ni_ns_mv", dates, false);
   }
-  
-  @Test
-  public void testDatePointFieldMultiValuedReturn() throws Exception {
-    String[] dates = toStringArray(getRandomInstants(20, false));
-    doTestPointFieldMultiValuedReturn("number_p_dt_mv", "date", dates);
-    doTestPointFieldMultiValuedReturn("number_p_dt_ni_mv_dv", "date", dates);
-    doTestPointFieldMultiValuedReturn("number_p_dt_dv_ns_mv", "date", dates);
-  }
 
   @Test
   public void testDatePointFieldMultiValuedRangeQuery() throws Exception {
@@ -1970,111 +586,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
 
   @Test
-  public void testDatePointFieldMultiValuedFacetField() throws Exception {
-    doTestPointFieldMultiValuedFacetField("number_p_dt_mv", "number_p_dt_mv_dv", getSequentialStringArrayWithDates(20));
-    doTestPointFieldMultiValuedFacetField("number_p_dt_mv", "number_p_dt_mv_dv", toStringArray(getRandomInstants(20, false)));
-  }
-
-  @Test
-  public void testDatePointFieldMultiValuedRangeFacet() throws Exception {
-    String docValuesField = "number_p_dt_mv_dv";
-    SchemaField dvSchemaField = h.getCore().getLatestSchema().getField(docValuesField);
-    assertTrue(dvSchemaField.multiValued());
-    assertTrue(dvSchemaField.hasDocValues());
-    assertTrue(dvSchemaField.getType() instanceof PointField);
-    
-    String nonDocValuesField = "number_p_dt_mv";
-    SchemaField nonDvSchemaField = h.getCore().getLatestSchema().getField(nonDocValuesField);
-    assertTrue(nonDvSchemaField.multiValued());
-    assertFalse(nonDvSchemaField.hasDocValues());
-    assertTrue(nonDvSchemaField.getType() instanceof PointField);
-
-    int numValues = 20 * RANDOM_MULTIPLIER;
-    int numBuckets = numValues / 2;
-    List<Long> values;
-    List<PosVal<Long>> sortedValues;
-    long min, max;
-    do {
-      values = getRandomLongs(numValues, false, MAX_DATE_EPOCH_MILLIS);
-      sortedValues = toAscendingPosVals(values, true);
-      min = sortedValues.get(0).val;
-      max = sortedValues.get(sortedValues.size() - 1).val;
-    } while (max > MAX_DATE_EPOCH_MILLIS || min < MIN_DATE_EPOCH_MILLIS);
-    long initialGap = BigInteger.valueOf(max).subtract(BigInteger.valueOf(min))
-        .divide(BigInteger.valueOf(numBuckets)).longValueExact();
-    DateGapCeiling gap = new DateGapCeiling(BigInteger.valueOf(max + initialGap).subtract(BigInteger.valueOf(min)) // padding for rounding
-        .divide(BigInteger.valueOf(numBuckets)).longValueExact());
-    List<Set<Integer>> docIdBucket = new ArrayList<>(numBuckets);
-    for (int i = 0 ; i < numBuckets ; ++i) {
-      docIdBucket.add(new HashSet<>());
-    }
-    int bucketNum = 0;
-    long minBucketVal = min;
-    // System.err.println("min:" + Instant.ofEpochMilli(min) + "   max: " + Instant.ofEpochMilli(max) + "   gap: " + gap);
-    // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + Instant.ofEpochMilli(minBucketVal));
-    for (PosVal<Long> value : sortedValues) {
-      // System.err.println("value: " + Instant.ofEpochMilli(value.val));
-      while (value.val >= gap.addTo(minBucketVal)) {
-        ++bucketNum;
-        minBucketVal = gap.addTo(minBucketVal);
-        // System.err.println("bucketNum: " + bucketNum + "   minBucketVal: " + Instant.ofEpochMilli(minBucketVal));
-      }
-      docIdBucket.get(bucketNum).add(value.pos / 2); // each doc gets two consecutive values 
-    }
-    for (int i = 0 ; i < numValues ; i += 2) {
-      assertU(adoc("id", String.valueOf(i / 2),
-          docValuesField, Instant.ofEpochMilli(values.get(i)).toString(),
-          docValuesField, Instant.ofEpochMilli(values.get(i + 1)).toString(),
-          nonDocValuesField, Instant.ofEpochMilli(values.get(i)).toString(),
-          nonDocValuesField, Instant.ofEpochMilli(values.get(i + 1)).toString()));
-    }
-    assertU(commit());
-
-    String minDate = Instant.ofEpochMilli(min).toString();
-    String maxDate = Instant.ofEpochMilli(max).toString();
-    String[] testStrings = new String[numBuckets + 1];
-    testStrings[numBuckets] = "//*[@numFound='" + (numValues / 2) + "']";
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; minBucketVal = gap.addTo(minBucketVal), ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + docValuesField
-          + "']/lst[@name='counts']/int[@name='" + Instant.ofEpochMilli(minBucketVal) 
-          + "'][.='" + docIdBucket.get(i).size() + "']";
-    }
-
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField,
-        "facet.range.start", minDate, "facet.range.end", maxDate,
-        "facet.range.gap", gap.toString(), "indent", "on"),
-        testStrings);
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", docValuesField,
-        "facet.range.start", minDate, "facet.range.end", maxDate,
-        "facet.range.gap", gap.toString(), "facet.range.method", "dv", "indent", "on"),
-        testStrings);
-
-    minBucketVal = min;
-    for (int i = 0 ; i < numBuckets ; minBucketVal = gap.addTo(minBucketVal), ++i) {
-      testStrings[i] = "//lst[@name='facet_counts']/lst[@name='facet_ranges']/lst[@name='" + nonDocValuesField
-          + "']/lst[@name='counts']/int[@name='" + Instant.ofEpochMilli(minBucketVal)
-          + "'][.='" + docIdBucket.get(i).size() + "']";
-    }
-    // Range Faceting with method = filter should work
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField,
-        "facet.range.start", minDate, "facet.range.end", maxDate,
-        "facet.range.gap", gap.toString(), "facet.range.method", "filter", "indent", "on"),
-        testStrings);
-    // this should actually use filter method instead of dv
-    assertQ(req("q", "*:*", "facet", "true", "facet.range", nonDocValuesField,
-        "facet.range.start", minDate, "facet.range.end", maxDate,
-        "facet.range.gap", gap.toString(), "facet.range.method", "dv", "indent", "on"),
-        testStrings);
-  }
-
-  @Test
-  public void testDatePointMultiValuedFunctionQuery() throws Exception {
-    String[] dates = toStringArray(getRandomInstants(20, false).stream().sorted().collect(Collectors.toList()));
-    doTestPointMultiValuedFunctionQuery("number_p_dt_mv", "number_p_dt_mv_dv", "date", dates);
-  }
-
-  @Test
   public void testDatePointFieldsAtomicUpdates() throws Exception {
     if (!Boolean.getBoolean("enable.update.log")) {
       return;
@@ -2103,15 +614,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestSetQueries("number_p_dt_mv", toStringArray(getRandomInstants(20, false)), true);
     doTestSetQueries("number_p_dt_ni_dv", toStringArray(getRandomInstants(20, false)), false);
   }
-  
-  
-  @Test
-  public void testDatePointFieldNotIndexed() throws Exception {
-    String[] dates = toStringArray(getRandomInstants(10, false));
-    doTestFieldNotIndexed("number_p_dt_ni", dates);
-    doTestFieldNotIndexed("number_p_dt_ni_mv", dates);
-  }
-  
+
   @Test
   public void testIndexOrDocValuesQuery() throws Exception {
     String[] fieldTypeNames = new String[] { "_p_i", "_p_l", "_p_d", "_p_f", "_p_dt" };
@@ -2143,26 +646,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     }
   }
   
-  public void testInternals() throws IOException {
-    String[] types = new String[]{"i", "l", "f", "d", "dt"};
-    String[][] values = new String[][] {
-        toStringArray(getRandomInts(10, false)),
-        toStringArray(getRandomLongs(10, false)),
-        toStringArray(getRandomFloats(10, false)),
-        toStringArray(getRandomDoubles(10, false)),
-        toStringArray(getRandomInstants(10, false))
-    };
-    assertEquals(types.length, values.length);
-    Set<String> typesTested = new HashSet<>();
-    for (int i = 0 ; i < types.length ; ++i) {
-      for (String suffix:FIELD_SUFFIXES) {
-        doTestInternals("number_p_" + types[i] + suffix, values[i]);
-        typesTested.add("*_p_" + types[i] + suffix);
-      }
-    }
-    assertEquals("Missing types in the test", dynFieldRegexesForType(PointField.class), typesTested);
-  }
-  
   // Helper methods
 
   /**
@@ -3792,38 +2275,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     assertU(commit());
   }
 
-  public void testNonReturnable() throws Exception {
-    String[] ints = toStringArray(getRandomInts(2, false));
-    doTestReturnNonStored("foo_p_i_ni_ns", false, ints[0]);
-    doTestReturnNonStored("foo_p_i_ni_dv_ns", true, ints[0]);
-    doTestReturnNonStored("foo_p_i_ni_ns_mv", false, ints);
-    doTestReturnNonStored("foo_p_i_ni_dv_ns_mv", true, ints);
-
-    String[] longs = toStringArray(getRandomLongs(2, false));
-    doTestReturnNonStored("foo_p_l_ni_ns", false, longs[0]);
-    doTestReturnNonStored("foo_p_l_ni_dv_ns", true, longs[0]);
-    doTestReturnNonStored("foo_p_l_ni_ns_mv", false, longs);
-    doTestReturnNonStored("foo_p_l_ni_dv_ns_mv", true, longs);
-
-    String[] floats = toStringArray(getRandomFloats(2, false));
-    doTestReturnNonStored("foo_p_f_ni_ns", false, floats[0]);
-    doTestReturnNonStored("foo_p_f_ni_dv_ns", true, floats[0]);
-    doTestReturnNonStored("foo_p_f_ni_ns_mv", false, floats);
-    doTestReturnNonStored("foo_p_f_ni_dv_ns_mv", true, floats);
-    
-    String[] doubles = toStringArray(getRandomDoubles(2, false));
-    doTestReturnNonStored("foo_p_d_ni_ns", false, doubles[0]);
-    doTestReturnNonStored("foo_p_d_ni_dv_ns", true, doubles[0]);
-    doTestReturnNonStored("foo_p_d_ni_ns_mv", false, doubles);
-    doTestReturnNonStored("foo_p_d_ni_dv_ns_mv", true, doubles);
-
-    String[] dates = new String[] { getRandomDateMaybeWithMath(), getRandomDateMaybeWithMath() };
-    doTestReturnNonStored("foo_p_dt_ni_ns", false, dates[0]);
-    doTestReturnNonStored("foo_p_dt_ni_dv_ns", true, dates[0]);
-    doTestReturnNonStored("foo_p_dt_ni_ns_mv", false, dates);
-    doTestReturnNonStored("foo_p_dt_ni_dv_ns_mv", true, dates);
-  }
-
   public void doTestReturnNonStored(final String fieldName, boolean shouldReturnFieldIfRequested, final String... values) throws Exception {
     final String RETURN_FIELD = "count(//doc/*[@name='" + fieldName + "'])=10";
     final String DONT_RETURN_FIELD = "count(//doc/*[@name='" + fieldName + "'])=0";
diff --git a/solr/core/src/test/org/apache/solr/schema/TestPointFields.java b/solr/core/src/test/org/apache/solr/schema/TestPointFields2.java
similarity index 93%
copy from solr/core/src/test/org/apache/solr/schema/TestPointFields.java
copy to solr/core/src/test/org/apache/solr/schema/TestPointFields2.java
index 7758991..a3e5f5e 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestPointFields.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestPointFields2.java
@@ -16,32 +16,6 @@
  */
 package org.apache.solr.schema;
 
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.math.RoundingMode;
-import java.text.SimpleDateFormat;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneOffset;
-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.LinkedHashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
 import com.google.common.collect.ImmutableMap;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.DoublePoint;
@@ -61,6 +35,7 @@ import org.apache.lucene.index.PointValues;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.IndexOrDocValuesQuery;
 import org.apache.lucene.search.PointRangeQuery;
+import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrInputDocument;
@@ -73,8 +48,35 @@ import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+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.LinkedHashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
 /** Tests for PointField functionality */
-public class TestPointFields extends SolrTestCaseJ4 {
+@LuceneTestCase.Nightly
+public class TestPointFields2 extends SolrTestCaseJ4 {
 
   // long overflow can occur in some date calculations if gaps are too large, so we limit to a million years BC & AD.
   private static final long MIN_DATE_EPOCH_MILLIS = LocalDateTime.parse("-1000000-01-01T00:00:00").toInstant(ZoneOffset.ofHours(0)).toEpochMilli();
@@ -99,7 +101,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
     assertU(commit());
     super.tearDown();
   }
-  
+
   @Test
   public void testIntPointFieldExactQuery() throws Exception {
     doTestIntPointFieldExactQuery("number_p_i", false);
@@ -112,12 +114,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   @Test
-  public void testIntPointFieldNonSearchableExactQuery() throws Exception {
-    doTestIntPointFieldExactQuery("number_p_i_ni", false, false);
-    doTestIntPointFieldExactQuery("number_p_i_ni_ns", false, false);
-  }
-  
-  @Test
   public void testIntPointFieldReturn() throws Exception {
     int numValues = 10 * RANDOM_MULTIPLIER;
     String[] ints = toStringArray(getRandomInts(numValues, false));
@@ -211,6 +207,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   @Test
+  @Nightly
   public void testIntPointFieldFacetField() throws Exception {
     doTestPointFieldFacetField("number_p_i", "number_p_i_dv", getSequentialStringArrayWithInts(10));
     clearIndex();
@@ -219,6 +216,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
 
   @Test
+  @Nightly
   public void testIntPointFieldRangeFacet() throws Exception {
     String docValuesField = "number_p_i_dv";
     String nonDocValuesField = "number_p_i";
@@ -320,6 +318,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   @Test
+  @Nightly
   public void testIntPointFieldMultiValuedRangeQuery() throws Exception {
     String[] ints = toStringArray(getRandomInts(20, false).stream().sorted().collect(Collectors.toList()));
     doTestPointFieldMultiValuedRangeQuery("number_p_i_mv", "int", ints);
@@ -343,6 +342,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
 
   @Test
+  @Nightly
   public void testIntPointFieldMultiValuedRangeFacet() throws Exception {
     String docValuesField = "number_p_i_mv_dv";
     String nonDocValuesField = "number_p_i_mv";
@@ -523,6 +523,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
   // DoublePointField
 
   @Test
+  @Nightly
   public void testDoublePointFieldExactQuery() throws Exception {
     doTestFloatPointFieldExactQuery("number_p_d", true);
     doTestFloatPointFieldExactQuery("number_p_d_mv", true);
@@ -533,12 +534,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestFloatPointFieldExactQuery("number_p_d_ni_dv_ns", true);
     doTestFloatPointFieldExactQuery("number_p_d_ni_mv_dv", true);
   }
-  
-  @Test
-  public void testDoublePointFieldNonSearchableExactQuery() throws Exception {
-    doTestFloatPointFieldExactQuery("number_p_d_ni", false, true);
-    doTestFloatPointFieldExactQuery("number_p_d_ni_ns", false, true);
-  }
  
   @Test
   public void testDoublePointFieldReturn() throws Exception {
@@ -861,17 +856,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   @Test
-  public void testMultiValuedDoublePointFieldsAtomicUpdates() throws Exception {
-    if (!Boolean.getBoolean("enable.update.log")) {
-      return;
-    }
-    String[] doubles = toStringArray(getRandomDoubles(3, false));
-    doTestMultiValuedPointFieldsAtomicUpdates("number_p_d_mv", "double", doubles);
-    doTestMultiValuedPointFieldsAtomicUpdates("number_p_d_ni_mv_dv", "double", doubles);
-    doTestMultiValuedPointFieldsAtomicUpdates("number_p_d_dv_ns_mv", "double", doubles);
-  }
-  
-  @Test
   public void testDoublePointFieldNotIndexed() throws Exception {
     String[] doubles = toStringArray(getRandomDoubles(10, false));
     doTestFieldNotIndexed("number_p_d_ni", doubles);
@@ -947,6 +931,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
   // Float
 
   @Test
+  @Nightly
   public void testFloatPointFieldExactQuery() throws Exception {
     doTestFloatPointFieldExactQuery("number_p_f", false);
     doTestFloatPointFieldExactQuery("number_p_f_mv", false);
@@ -957,8 +942,9 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestFloatPointFieldExactQuery("number_p_f_ni_dv_ns", false);
     doTestFloatPointFieldExactQuery("number_p_f_ni_mv_dv", false);
   }
-  
+
   @Test
+  @Nightly
   public void testFloatPointFieldNonSearchableExactQuery() throws Exception {
     doTestFloatPointFieldExactQuery("number_p_f_ni", false, false);
     doTestFloatPointFieldExactQuery("number_p_f_ni_ns", false, false);
@@ -988,6 +974,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   @Test
+  @Nightly
   public void testFloatPointFieldSortAndFunction() throws Exception {
     final SortedSet<String> regexToTest = dynFieldRegexesForType(FloatPointField.class);
     final List<String> sequential = Arrays.asList("0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0");
@@ -1343,6 +1330,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   @Test
+  @Nightly
   public void testLongPointFieldRangeQuery() throws Exception {
     doTestIntPointFieldRangeQuery("number_p_l", "long", true);
     doTestIntPointFieldRangeQuery("number_p_l_ni_ns_dv", "long", true);
@@ -1358,6 +1346,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
 
   @Test
+  @Nightly
   public void testLongPointFieldSortAndFunction() throws Exception {
     final SortedSet<String> regexToTest = dynFieldRegexesForType(LongPointField.class);
     final List<Long> vals = Arrays.asList((long)Integer.MIN_VALUE, 
@@ -1637,34 +1626,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
   
   @Test
-  public void testLongPointFieldsAtomicUpdates() throws Exception {
-    if (!Boolean.getBoolean("enable.update.log")) {
-      return;
-    }
-    doTestLongPointFieldsAtomicUpdates("number_p_l");
-    doTestLongPointFieldsAtomicUpdates("number_p_l_dv");
-    doTestLongPointFieldsAtomicUpdates("number_p_l_dv_ns");
-  }
-  
-  @Test
-  public void testMultiValuedLongPointFieldsAtomicUpdates() throws Exception {
-    if (!Boolean.getBoolean("enable.update.log")) {
-      return;
-    }
-    String[] longs = toStringArray(getRandomLongs(3, false));
-    doTestMultiValuedPointFieldsAtomicUpdates("number_p_l_mv", "long", longs);
-    doTestMultiValuedPointFieldsAtomicUpdates("number_p_l_ni_mv_dv", "long", longs);
-    doTestMultiValuedPointFieldsAtomicUpdates("number_p_l_dv_ns_mv", "long", longs);
-  }
-  
-  @Test
-  public void testLongPointSetQuery() throws Exception {
-    doTestSetQueries("number_p_l", toStringArray(getRandomLongs(20, false)), false);
-    doTestSetQueries("number_p_l_mv", toStringArray(getRandomLongs(20, false)), true);
-    doTestSetQueries("number_p_l_ni_dv", toStringArray(getRandomLongs(20, false)), false);
-  }
-  
-  @Test
   public void testLongPointFieldNotIndexed() throws Exception {
     String[] longs = toStringArray(getRandomLongs(10, false));
     doTestFieldNotIndexed("number_p_l_ni", longs);
@@ -1683,21 +1644,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     }
     return date;
   }
-  
-  @Test
-  public void testDatePointFieldExactQuery() throws Exception {
-    String baseDate = getRandomDateMaybeWithMath();
-    for (String field : Arrays.asList("number_p_dt","number_p_dt_mv","number_p_dt_dv",
-        "number_p_dt_mv_dv", "number_p_dt_ni_dv", "number_p_dt_ni_ns_dv", "number_p_dt_ni_mv_dv")) {
-      doTestDatePointFieldExactQuery(field, baseDate);
-    }
-  }
-  @Test
-  public void testDatePointFieldNonSearchableExactQuery() throws Exception {
-    doTestDatePointFieldExactQuery("number_p_dt_ni", "1995-12-31T23:59:59Z", false);
-    doTestDatePointFieldExactQuery("number_p_dt_ni_ns", "1995-12-31T23:59:59Z", false);
-
-  }
 
   @Test
   public void testDatePointFieldReturn() throws Exception {
@@ -1708,26 +1654,12 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
 
   @Test
-  public void testDatePointFieldRangeQuery() throws Exception {
-    doTestDatePointFieldRangeQuery("number_p_dt");
-    doTestDatePointFieldRangeQuery("number_p_dt_ni_ns_dv");
-  }
-  
-  @Test
-  public void testDatePointFieldNonSearchableRangeQuery() throws Exception {
-    doTestPointFieldNonSearchableRangeQuery("number_p_dt_ni", toStringArray(getRandomInstants(1, false)));
-    doTestPointFieldNonSearchableRangeQuery("number_p_dt_ni_ns", toStringArray(getRandomInstants(1, false)));
-    int numValues = 2 * RANDOM_MULTIPLIER;
-    doTestPointFieldNonSearchableRangeQuery("number_p_dt_ni_ns_mv", toStringArray(getRandomInstants(numValues, false)));
-  }
-
-  @Test
   public void testDatePointFieldSortAndFunction() throws Exception {
     final SortedSet<String> regexToTest = dynFieldRegexesForType(DatePointField.class);
     final List<String> sequential = Arrays.asList(getSequentialStringArrayWithDates(10));
     final List<Instant> randomDates = getRandomInstants(10, false);
     final List<Instant> randomDatesMissing = getRandomInstants(10, true);
-    
+
     for (String r : Arrays.asList("*_p_dt", "*_p_dt_dv", "*_p_dt_dv_ns", "*_p_dt_ni_dv",
                                   "*_p_dt_ni_dv_ns", "*_p_dt_ni_ns_dv")) {
       assertTrue(r, regexToTest.remove(r));
@@ -1744,25 +1676,25 @@ public class TestPointFields extends SolrTestCaseJ4 {
       doTestPointFieldSort(field, randomDatesMissing);
       doTestDatePointFunctionQuery(field);
     }
-    
+
     for (String r : Arrays.asList("*_p_dt_ni", "*_p_dt_ni_ns")) {
       assertTrue(r, regexToTest.remove(r));
       String field = r.replace("*", "number");
       doTestPointFieldSortError(field, "w/o docValues", "1995-12-31T23:59:59Z");
       doTestPointFieldFunctionQueryError(field, "w/o docValues", "1995-12-31T23:59:59Z");
     }
-    
+
     // multivalued, no docvalues
-    for (String r : Arrays.asList("*_p_dt_mv", "*_p_dt_ni_mv", "*_p_dt_ni_ns_mv", 
+    for (String r : Arrays.asList("*_p_dt_mv", "*_p_dt_ni_mv", "*_p_dt_ni_ns_mv",
                                   "*_p_dt_mv_smf", "*_p_dt_mv_sml")) {
-                                  
+
       assertTrue(r, regexToTest.remove(r));
       String field = r.replace("*", "number");
       doTestPointFieldSortError(field, "w/o docValues", "1995-12-31T23:59:59Z");
       doTestPointFieldSortError(field, "w/o docValues", "1995-12-31T23:59:59Z", "2000-12-31T23:59:59Z");
       doTestPointFieldFunctionQueryError(field, "multivalued", "1995-12-31T23:59:59Z");
       doTestPointFieldFunctionQueryError(field, "multivalued", "1995-12-31T23:59:59Z", "2000-12-31T23:59:59Z");
-                                
+
     }
 
     // multivalued, w/ docValues
@@ -1781,7 +1713,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
       // value source (w/o field(...,min|max)) usuage should still error...
       doTestPointFieldFunctionQueryError(field, "multivalued", "1995-12-31T23:59:59Z");
       doTestPointFieldFunctionQueryError(field, "multivalued", "1995-12-31T23:59:59Z", "2000-12-31T23:59:59Z");
-    }    
+    }
     assertEquals("Missing types in the test", Collections.<String>emptySet(), regexToTest);
   }
 
@@ -1963,13 +1895,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
   }
 
   @Test
-  public void testDatePointFieldMultiValuedRangeQuery() throws Exception {
-    String[] dates = toStringArray(getRandomInstants(20, false).stream().sorted().collect(Collectors.toList()));
-    doTestPointFieldMultiValuedRangeQuery("number_p_dt_mv", "date", dates);
-    doTestPointFieldMultiValuedRangeQuery("number_p_dt_ni_mv_dv", "date", dates);
-  }
-
-  @Test
   public void testDatePointFieldMultiValuedFacetField() throws Exception {
     doTestPointFieldMultiValuedFacetField("number_p_dt_mv", "number_p_dt_mv_dv", getSequentialStringArrayWithDates(20));
     doTestPointFieldMultiValuedFacetField("number_p_dt_mv", "number_p_dt_mv_dv", toStringArray(getRandomInstants(20, false)));
@@ -2073,37 +1998,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     String[] dates = toStringArray(getRandomInstants(20, false).stream().sorted().collect(Collectors.toList()));
     doTestPointMultiValuedFunctionQuery("number_p_dt_mv", "number_p_dt_mv_dv", "date", dates);
   }
-
-  @Test
-  public void testDatePointFieldsAtomicUpdates() throws Exception {
-    if (!Boolean.getBoolean("enable.update.log")) {
-      return;
-    }
-    doTestDatePointFieldsAtomicUpdates("number_p_dt");
-    doTestDatePointFieldsAtomicUpdates("number_p_dt_dv");
-    doTestDatePointFieldsAtomicUpdates("number_p_dt_dv_ns");
-  }
-
-  @Test
-  public void testMultiValuedDatePointFieldsAtomicUpdates() throws Exception {
-    if (!Boolean.getBoolean("enable.update.log")) {
-      return;
-    }
-    List<String> datesList = getRandomLongs(3, false, MAX_DATE_EPOCH_MILLIS)
-        .stream().map(Instant::ofEpochMilli).map(Object::toString).collect(Collectors.toList());
-    String[] dates = datesList.toArray(new String[datesList.size()]);
-    doTestMultiValuedPointFieldsAtomicUpdates("number_p_dt_mv", "date", dates);
-    doTestMultiValuedPointFieldsAtomicUpdates("number_p_dt_ni_mv_dv", "date", dates);
-    doTestMultiValuedPointFieldsAtomicUpdates("number_p_dt_dv_ns_mv", "date", dates);
-  }
-
-  @Test
-  public void testDatePointSetQuery() throws Exception {
-    doTestSetQueries("number_p_dt", toStringArray(getRandomInstants(20, false)), false);
-    doTestSetQueries("number_p_dt_mv", toStringArray(getRandomInstants(20, false)), true);
-    doTestSetQueries("number_p_dt_ni_dv", toStringArray(getRandomInstants(20, false)), false);
-  }
-  
   
   @Test
   public void testDatePointFieldNotIndexed() throws Exception {
@@ -2111,38 +2005,7 @@ public class TestPointFields extends SolrTestCaseJ4 {
     doTestFieldNotIndexed("number_p_dt_ni", dates);
     doTestFieldNotIndexed("number_p_dt_ni_mv", dates);
   }
-  
-  @Test
-  public void testIndexOrDocValuesQuery() throws Exception {
-    String[] fieldTypeNames = new String[] { "_p_i", "_p_l", "_p_d", "_p_f", "_p_dt" };
-    FieldType[] fieldTypes = new FieldType[]
-        { new IntPointField(), new LongPointField(), new DoublePointField(), new FloatPointField(), new DatePointField() };
-    String[] ints = toStringArray(getRandomInts(2, false).stream().sorted().collect(Collectors.toList()));
-    String[] longs = toStringArray(getRandomLongs(2, false).stream().sorted().collect(Collectors.toList()));
-    String[] doubles = toStringArray(getRandomDoubles(2, false).stream().sorted().collect(Collectors.toList()));
-    String[] floats = toStringArray(getRandomFloats(2, false).stream().sorted().collect(Collectors.toList()));
-    String[] dates = toStringArray(getRandomInstants(2, false).stream().sorted().collect(Collectors.toList()));
-    String[] min = new String[] { ints[0], longs[0], doubles[0], floats[0], dates[0] };
-    String[] max = new String[] { ints[1], longs[1], doubles[1], floats[1], dates[1] };
-    assert fieldTypeNames.length == fieldTypes.length
-        && fieldTypeNames.length == max.length
-        && fieldTypeNames.length == min.length;
-    for (int i = 0; i < fieldTypeNames.length; i++) {
-      SchemaField fieldIndexed = h.getCore().getLatestSchema().getField("foo_" + fieldTypeNames[i]);
-      SchemaField fieldIndexedAndDv = h.getCore().getLatestSchema().getField("foo_" + fieldTypeNames[i] + "_dv");
-      SchemaField fieldIndexedMv = h.getCore().getLatestSchema().getField("foo_" + fieldTypeNames[i] + "_mv");
-      SchemaField fieldIndexedAndDvMv = h.getCore().getLatestSchema().getField("foo_" + fieldTypeNames[i] + "_mv_dv");
-      assertTrue(fieldTypes[i].getRangeQuery(null, fieldIndexed, min[i], max[i], true, true) instanceof PointRangeQuery);
-      assertTrue(fieldTypes[i].getRangeQuery(null, fieldIndexedAndDv, min[i], max[i], true, true) instanceof IndexOrDocValuesQuery);
-      assertTrue(fieldTypes[i].getRangeQuery(null, fieldIndexedMv, min[i], max[i], true, true) instanceof PointRangeQuery);
-      assertTrue(fieldTypes[i].getRangeQuery(null, fieldIndexedAndDvMv, min[i], max[i], true, true) instanceof IndexOrDocValuesQuery);
-      assertTrue(fieldTypes[i].getFieldQuery(null, fieldIndexed, min[i]) instanceof PointRangeQuery);
-      assertTrue(fieldTypes[i].getFieldQuery(null, fieldIndexedAndDv, min[i]) instanceof IndexOrDocValuesQuery);
-      assertTrue(fieldTypes[i].getFieldQuery(null, fieldIndexedMv, min[i]) instanceof PointRangeQuery);
-      assertTrue(fieldTypes[i].getFieldQuery(null, fieldIndexedAndDvMv, min[i]) instanceof IndexOrDocValuesQuery);
-    }
-  }
-  
+
   public void testInternals() throws IOException {
     String[] types = new String[]{"i", "l", "f", "d", "dt"};
     String[][] values = new String[][] {
@@ -3556,97 +3419,6 @@ public class TestPointFields extends SolrTestCaseJ4 {
     clearIndex();
     assertU(commit());
   }
-  
-  private void doTestDatePointFieldRangeQuery(String fieldName) throws Exception {
-    String baseDate = "1995-12-31T10:59:59Z";
-    for (int i = 9; i >= 0; i--) {
-      assertU(adoc("id", String.valueOf(i), fieldName, String.format(Locale.ROOT, "%s+%dHOURS", baseDate, i)));
-    }
-    assertU(commit());
-    assertQ(req("q", fieldName + ":" + String.format(Locale.ROOT, "[%s+0HOURS TO %s+3HOURS]", baseDate, baseDate),
-                "fl", "id, " + fieldName, "sort", "id asc"),
-        "//*[@numFound='4']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T10:59:59Z']",
-        "//result/doc[2]/date[@name='" + fieldName + "'][.='1995-12-31T11:59:59Z']",
-        "//result/doc[3]/date[@name='" + fieldName + "'][.='1995-12-31T12:59:59Z']",
-        "//result/doc[4]/date[@name='" + fieldName + "'][.='1995-12-31T13:59:59Z']");
-
-    assertQ(req("q", fieldName + ":" + String.format(Locale.ROOT, "{%s+0HOURS TO %s+3HOURS]", baseDate, baseDate),
-                "fl", "id, " + fieldName, "sort", "id asc"),
-        "//*[@numFound='3']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T11:59:59Z']",
-        "//result/doc[2]/date[@name='" + fieldName + "'][.='1995-12-31T12:59:59Z']",
-        "//result/doc[3]/date[@name='" + fieldName + "'][.='1995-12-31T13:59:59Z']");
-
-    assertQ(req("q", fieldName + ":"+ String.format(Locale.ROOT, "[%s+0HOURS TO %s+3HOURS}",baseDate,baseDate),
-                "fl", "id, " + fieldName, "sort", "id asc"),
-        "//*[@numFound='3']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T10:59:59Z']",
-        "//result/doc[2]/date[@name='" + fieldName + "'][.='1995-12-31T11:59:59Z']",
-        "//result/doc[3]/date[@name='" + fieldName + "'][.='1995-12-31T12:59:59Z']");
-
-    assertQ(req("q", fieldName + ":"+ String.format(Locale.ROOT, "{%s+0HOURS TO %s+3HOURS}",baseDate,baseDate),
-                "fl", "id, " + fieldName, "sort", "id asc"),
-        "//*[@numFound='2']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T11:59:59Z']",
-        "//result/doc[2]/date[@name='" + fieldName + "'][.='1995-12-31T12:59:59Z']");
-
-    assertQ(req("q", fieldName + ":" + String.format(Locale.ROOT, "{%s+0HOURS TO *}",baseDate),
-                "fl", "id, " + fieldName, "sort", "id asc"),
-        "//*[@numFound='9']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T11:59:59Z']");
-
-    assertQ(req("q", fieldName + ":" + String.format(Locale.ROOT, "{* TO %s+3HOURS}",baseDate),
-                "fl", "id, " + fieldName, "sort", "id asc"),
-        "//*[@numFound='3']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T10:59:59Z']");
-
-    assertQ(req("q", fieldName + ":" + String.format(Locale.ROOT, "[* TO %s+3HOURS}",baseDate),
-                "fl", "id, " + fieldName, "sort", "id asc"),
-        "//*[@numFound='3']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T10:59:59Z']");
-
-    assertQ(req("q", fieldName + ":[* TO *}", "fl", "id, " + fieldName, "sort", "id asc"),
-        "//*[@numFound='10']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T10:59:59Z']",
-        "//result/doc[10]/date[@name='" + fieldName + "'][.='1995-12-31T19:59:59Z']");
-
-    assertQ(req("q", fieldName + ":" + String.format(Locale.ROOT, "[%s+0HOURS TO %s+1HOURS]",baseDate,baseDate)
-                + " OR " + fieldName + ":" + String.format(Locale.ROOT, "[%s+8HOURS TO %s+9HOURS]",baseDate,baseDate) ,
-                "fl", "id, " + fieldName, "sort", "id asc"),
-        "//*[@numFound='4']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T10:59:59Z']",
-        "//result/doc[2]/date[@name='" + fieldName + "'][.='1995-12-31T11:59:59Z']",
-        "//result/doc[3]/date[@name='" + fieldName + "'][.='1995-12-31T18:59:59Z']",
-        "//result/doc[4]/date[@name='" + fieldName + "'][.='1995-12-31T19:59:59Z']");
-
-    assertQ(req("q", fieldName + ":"+String.format(Locale.ROOT, "[%s+0HOURS TO %s+1HOURS]",baseDate,baseDate)
-            +" AND " + fieldName + ":"+String.format(Locale.ROOT, "[%s+1HOURS TO %s+2HOURS]",baseDate,baseDate) , "fl", "id, " + fieldName),
-        "//*[@numFound='1']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T11:59:59Z']");
-
-    assertQ(req("q", fieldName + ":"+String.format(Locale.ROOT, "[%s+0HOURS TO %s+1HOURS]",baseDate,baseDate)
-            +" AND NOT " + fieldName + ":"+String.format(Locale.ROOT, "[%s+1HOURS TO %s+2HOURS]",baseDate,baseDate) , "fl", "id, " + fieldName),
-        "//*[@numFound='1']",
-        "//result/doc[1]/date[@name='" + fieldName + "'][.='1995-12-31T10:59:59Z']");
-
-    clearIndex();
-    assertU(commit());
-    
-    String[] arr = toAscendingStringArray(getRandomInstants(100, false), true);
-    for (int i = 0 ; i < arr.length ; ++i) {
-      assertU(adoc("id", String.valueOf(i), fieldName, arr[i]));
-    }
-    assertU(commit());
-    for (int i = 0 ; i < arr.length ; ++i) {
-      assertQ(req("q", fieldName + ":[" + arr[0] + " TO " + arr[i] + "]", "fl", "id," + fieldName),
-          "//*[@numFound='" + (i + 1) + "']");
-      assertQ(req("q", fieldName + ":{" + arr[0] + " TO " + arr[i] + "}", "fl", "id, " + fieldName),
-          "//*[@numFound='" + (Math.max(0,  i-1)) + "']");
-      assertQ(req("q", fieldName + ":[" + arr[0] + " TO " + arr[i] + "] AND " + fieldName + ":\"" + arr[0] + "\"", "fl", "id, " + fieldName),
-          "//*[@numFound='1']");
-    }
-  }
 
   private void doTestDatePointFunctionQuery(String field) {
     // This method is intentionally not randomized, because sorting by function happens
diff --git a/solr/core/src/test/org/apache/solr/search/TestRandomCollapseQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/TestRandomCollapseQParserPlugin.java
index 9149c19..37939a6 100644
--- a/solr/core/src/test/org/apache/solr/search/TestRandomCollapseQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestRandomCollapseQParserPlugin.java
@@ -49,7 +49,7 @@ public class TestRandomCollapseQParserPlugin extends SolrTestCaseJ4 {
   public static void buildIndexAndClient() throws Exception {
     initCore("solrconfig-minimal.xml", "schema-sorts.xml");
     
-    final int totalDocs = atLeast(500);
+    final int totalDocs = atLeast(TEST_NIGHTLY ? 500 : 50);
     for (int i = 1; i <= totalDocs; i++) {
       SolrInputDocument doc = CursorPagingTest.buildRandomDocument(i);
       // every doc will be in the same group for this (string) field
@@ -127,7 +127,7 @@ public class TestRandomCollapseQParserPlugin extends SolrTestCaseJ4 {
   
   public void testRandomCollpaseWithSort() throws Exception {
     
-    final int numMainQueriesPerCollapseField = atLeast(5);
+    final int numMainQueriesPerCollapseField = atLeast(TEST_NIGHTLY ? 5 : 3);
     
     for (String collapseField : ALL_COLLAPSE_FIELD_NAMES) {
       for (int i = 0; i < numMainQueriesPerCollapseField; i++) {
@@ -140,7 +140,7 @@ public class TestRandomCollapseQParserPlugin extends SolrTestCaseJ4 {
         final SolrParams mainP = params("q", q, "fl", "id,"+collapseField);
 
         final String csize = random().nextBoolean() ?
-          "" : " size=" + TestUtil.nextInt(random(),1,10000);
+          "" : " size=" + TestUtil.nextInt(random(),1,TEST_NIGHTLY ? 10000 : 1000);
 
         final String nullPolicy = randomNullPolicy();
         final String nullPs = NULL_IGNORE.equals(nullPolicy)
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 2678f91..f6103f4 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
@@ -1061,6 +1061,7 @@ public class TestJsonFacets extends SolrTestCaseHS {
   }
 
   @Test
+  @Nightly
   public void testStatsDistrib() throws Exception {
     initServers();
     Client client = servers.getClient(random().nextInt());
@@ -2533,6 +2534,7 @@ public class TestJsonFacets extends SolrTestCaseHS {
     }
   }
 
+  @Nightly
   public void testPrelimSortingSingleNode() throws Exception {
     doTestPrelimSortingSingleNode(false, false);
   }
@@ -2570,11 +2572,13 @@ public class TestJsonFacets extends SolrTestCaseHS {
   public void testPrelimSortingDistribExtraStat() throws Exception {
     doTestPrelimSortingDistrib(true, false);
   }
-  
+
+  @Nightly
   public void testPrelimSortingDistribExtraFacet() throws Exception {
     doTestPrelimSortingDistrib(false, true);
   }
-  
+
+  @Nightly
   public void testPrelimSortingDistribExtraStatAndFacet() throws Exception {
     doTestPrelimSortingDistrib(true, true);
   }
@@ -2917,6 +2921,7 @@ public class TestJsonFacets extends SolrTestCaseHS {
 
   
   @Test
+  @Nightly
   public void testOverrequest() throws Exception {
     initServers();
     Client client = servers.getClient(random().nextInt());
@@ -3061,6 +3066,7 @@ public class TestJsonFacets extends SolrTestCaseHS {
     }
   }
 
+  @Nightly
   public void testTolerant() throws Exception {
     initServers();
     Client client = servers.getClient(random().nextInt());
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
index e432633..508d4e7 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
@@ -889,14 +889,12 @@ public class MiniSolrCloudCluster {
     throw new IllegalArgumentException("Could not find suitable Replica");
   }
 
-  // nocommit
-  public JettySolrRunner getRandomJettyLeader(Random random, String collection, String shard) {
+  public JettySolrRunner getShardLeaderJetty(String collection, String shard) {
     DocCollection coll = solrClient.getZkStateReader().getClusterState().getCollection(collection);
     if (coll != null) {
-      for (Replica replica : coll.getSlice(shard).getReplicas()) {
-        System.out.println("check replica:" + replica);
-        return getReplicaJetty(replica);
-
+      Slice slice = coll.getSlice(shard);
+      if (slice != null) {
+         return getReplicaJetty(slice.getLeader());
       }
     }
     return null;


[lucene-solr] 02/02: #45 Knock down TestSegmentSorting.

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a commit to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 4f03fcca091d35107d0d7a624397e7a135a0c524
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Jul 9 22:50:18 2020 -0500

    #45 Knock down TestSegmentSorting.
---
 .../test/org/apache/solr/cloud/TestSegmentSorting.java   | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/solr/core/src/test/org/apache/solr/cloud/TestSegmentSorting.java b/solr/core/src/test/org/apache/solr/cloud/TestSegmentSorting.java
index 9e83b55..3551394 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestSegmentSorting.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestSegmentSorting.java
@@ -79,14 +79,8 @@ public class TestSegmentSorting extends SolrCloudTestCase {
                                               NUM_SHARDS, REPLICATION_FACTOR)
       .setProperties(collectionProperties);
 
-    if (random().nextBoolean()) {
-      assertTrue( cmd.process(cloudSolrClient).isSuccess() );
-    } else { // async
-      assertEquals(RequestStatusState.COMPLETED, cmd.processAndWait(cloudSolrClient, 30));
-    }
+    assertTrue( cmd.process(cloudSolrClient).isSuccess() );
     
-    ZkStateReader zkStateReader = cloudSolrClient.getZkStateReader();
-    cluster.waitForActiveCollection(collectionName, NUM_SHARDS, NUM_SHARDS * REPLICATION_FACTOR);
     
     cloudSolrClient.setDefaultCollection(collectionName);
   }
@@ -139,7 +133,7 @@ public class TestSegmentSorting extends SolrCloudTestCase {
     assertEquals(false, schemaOpts.get("stored"));
     
     // add some documents
-    final int numDocs = atLeast(1000);
+    final int numDocs = atLeast(TEST_NIGHTLY ? 1000 : 10);
     for (int id = 1; id <= numDocs; id++) {
       cloudSolrClient.add(sdoc("id", id, updateField, random().nextInt(60)));
                                
@@ -148,8 +142,8 @@ public class TestSegmentSorting extends SolrCloudTestCase {
 
     // do some random iterations of replacing docs, atomic updates against segment sort field, and commits
     // (at this point we're just sanity checking no serious failures)
-    for (int iter = 0; iter < 20; iter++) {
-      final int iterSize = atLeast(20);
+    for (int iter = 0; iter < (TEST_NIGHTLY ? 30 : 5); iter++) {
+      final int iterSize = atLeast((TEST_NIGHTLY ? 20 : 3));
       for (int i = 0; i < iterSize; i++) {
         // replace
         cloudSolrClient.add(sdoc("id", TestUtil.nextInt(random(), 1, numDocs),
@@ -172,7 +166,7 @@ public class TestSegmentSorting extends SolrCloudTestCase {
     
     // loop incase we're waiting for a newSearcher to be opened
     int newDocId = -1;
-    int attempts = 10;
+    int attempts = 3;
     while ((newDocId < 0) && (0 < attempts--)) {
       SolrDocumentList docs = cloudSolrClient.query(params("q", "id:"+id,
                                                            "fl","[docid]",