You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sf...@apache.org on 2015/02/12 23:28:32 UTC

[13/27] incubator-usergrid git commit: Removed concurrent annotations

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/IteratingQueryIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/IteratingQueryIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/IteratingQueryIT.java
new file mode 100644
index 0000000..a6930a0
--- /dev/null
+++ b/stack/core/src/test/java/org/apache/usergrid/persistence/query/IteratingQueryIT.java
@@ -0,0 +1,1432 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+*
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.persistence.query;
+
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.usergrid.CoreApplication;
+import org.apache.usergrid.CoreITSetup;
+import org.apache.usergrid.CoreITSetupImpl;
+import org.apache.usergrid.persistence.Entity;
+import org.apache.usergrid.persistence.Results;
+import org.apache.usergrid.persistence.index.query.Query;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+
+/** @author tnine */
+public class IteratingQueryIT {
+    private static final Logger LOG = LoggerFactory.getLogger( IteratingQueryIT.class );
+
+    @ClassRule
+    public static CoreITSetup setup = new CoreITSetupImpl(  );
+
+    @Rule
+    public CoreApplication app = new CoreApplication( setup );
+
+
+    @Test
+    public void allInCollection() throws Exception {
+        allIn( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void allInConnection() throws Exception {
+        allIn( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void allInConnectionNoType() throws Exception {
+        allIn( new ConnectionNoTypeHelper( app ) );
+    }
+
+
+    @Test
+    public void multiOrderByCollection() throws Exception {
+        multiOrderBy( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void multiOrderByComplexUnionCollection() throws Exception {
+        multiOrderByComplexUnion( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void multiOrderByComplexUnionConnection() throws Exception {
+        multiOrderByComplexUnion( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void multOrderByConnection() throws Exception {
+        multiOrderBy( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void orderByWithNotCollection() throws Exception {
+        notOrderBy( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void orderByWithNotConnection() throws Exception {
+        notOrderBy( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByBoundRangeScanAscCollection() throws Exception {
+        singleOrderByBoundRangeScanAsc( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByBoundRangeScanAscConnection() throws Exception {
+        singleOrderByBoundRangeScanAsc( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByBoundRangeScanDescCollection() throws Exception {
+        singleOrderByBoundRangeScanDesc( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByBoundRangeScanDescConnection() throws Exception {
+        singleOrderByBoundRangeScanDesc( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByComplexIntersectionCollection() throws Exception {
+        singleOrderByComplexIntersection( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByComplexIntersectionConnection() throws Exception {
+        singleOrderByComplexIntersection( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByComplexUnionCollection() throws Exception {
+        singleOrderByComplexUnion( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByComplexUnionConnection() throws Exception {
+        singleOrderByComplexUnion( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByIntersectionCollection() throws Exception {
+        singleOrderByIntersection( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByIntersectionConnection() throws Exception {
+        singleOrderByIntersection( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByLessThanLimitCollection() throws Exception {
+        singleOrderByLessThanLimit( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByLessThanLimitConnection() throws Exception {
+        singleOrderByLessThanLimit( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByMaxLimitCollection() throws Exception {
+        singleOrderByMaxLimit( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByMaxLimitConnection() throws Exception {
+        singleOrderByMaxLimit( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByNoIntersectionCollection() throws Exception {
+        singleOrderByNoIntersection( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByNoIntersectionConnection() throws Exception {
+        singleOrderByNoIntersection( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByNotCollection() throws Exception {
+        singleOrderByNot( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderByNotConnection() throws Exception {
+        singleOrderByNot( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderBySameRangeScanGreaterCollection() throws Exception {
+        singleOrderBySameRangeScanGreater( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderBySameRangeScanGreaterConnection() throws Exception {
+        singleOrderBySameRangeScanGreater( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderBySameRangeScanGreaterThanEqualCollection() throws Exception {
+        singleOrderBySameRangeScanGreaterThanEqual( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderBySameRangeScanLessCollection() throws Exception {
+        singleOrderBySameRangeScanLessEqual( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderBySameRangeScanLessConnection() throws Exception {
+        singleOrderBySameRangeScanLessEqual( new ConnectionHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderBySameRangeScanLessThanEqualCollection() throws Exception {
+        singleOrderBySameRangeScanLessThanEqual( new CollectionIoHelper( app ) );
+    }
+
+
+    @Test
+    public void singleOrderBySameRangeScanLessThanEqualConnection() throws Exception {
+        singleOrderBySameRangeScanLessThanEqual( new ConnectionHelper( app ) );
+    }
+
+    class ConnectionNoTypeHelper extends ConnectionHelper {
+
+        public ConnectionNoTypeHelper( final CoreApplication app ) {
+            super( app );
+        }
+
+
+        /**
+         * (non-Javadoc) @see org.apache.usergrid.persistence.query.SingleOrderByMaxLimitCollection
+         * .ConnectionHelper#getResults
+         * (org.apache.usergrid.persistence.Query)
+         */
+        @Override
+        public Results getResults( Query query ) throws Exception {
+            query.setConnectionType( CONNECTION );
+            // don't set it on purpose
+            query.setEntityType( null );
+            return app.getEntityManager().searchConnectedEntities( rootEntity, query );
+        }
+    }
+
+    public void singleOrderByMaxLimit( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = Query.MAX_LIMIT;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
+            entity.put( "name", String.valueOf( i ) );
+
+            io.writeEntity( entity );
+            //we have to sleep, or we kill embedded cassandra
+            Thread.sleep( 10 );
+
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = new Query();
+        query.addSort( "created" );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+
+        Results results;
+
+        start = System.currentTimeMillis();
+
+        do {
+
+            // now do simple ordering, should be returned in order
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( String.valueOf( count ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.getCursor() != null );
+
+        stop = System.currentTimeMillis();
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+
+        assertEquals( size, count );
+    }
+
+
+    protected void singleOrderByIntersection( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 700;
+        int queryLimit = Query.MAX_LIMIT;
+
+        // the number of entities that should be written including an intersection
+        int intersectIncrement = 5;
+
+        long start = System.currentTimeMillis();
+
+        List<String> expected = new ArrayList<String>( size / intersectIncrement );
+
+        LOG.info( "Writing {} entities.", size );
+
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            String name = String.valueOf( i );
+
+            boolean intersect = i % intersectIncrement == 0;
+
+            entity.put( "name", String.valueOf( i ) );
+            // if we hit the increment, set this to true
+            entity.put( "intersect", intersect );
+
+            io.writeEntity( entity );
+
+            if ( intersect ) {
+                expected.add( name );
+            }
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = new Query();
+        query.addSort( "created" );
+        query.addEqualityFilter( "intersect", true );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+
+        Results results;
+
+        start = System.currentTimeMillis();
+
+        do {
+
+            // now do simple ordering, should be returned in order
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( expected.get( count ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.getCursor() != null );
+
+        stop = System.currentTimeMillis();
+
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+
+        assertEquals( expected.size(), count );
+    }
+
+
+    protected void singleOrderByComplexIntersection( IoHelper io ) throws Exception {
+
+        int size = 2000;
+        int queryLimit = Query.MAX_LIMIT;
+
+        // the number of entities that should be written including an intersection
+        int intersectIncrement = 5;
+        int secondIncrement = 9;
+
+        long start = System.currentTimeMillis();
+
+        io.doSetup();
+
+        LOG.info( "Writing {} entities.", size );
+
+        List<String> expectedResults = new ArrayList<String>( size / secondIncrement );
+
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            String name = String.valueOf( i );
+            boolean intersect1 = i % intersectIncrement == 0;
+            boolean intersect2 = i % secondIncrement == 0;
+            entity.put( "name", name );
+            // if we hit the increment, set this to true
+
+            entity.put( "intersect", intersect1 );
+            entity.put( "intersect2", intersect2 );
+            io.writeEntity( entity );
+
+            if ( intersect1 && intersect2 ) {
+                expectedResults.add( name );
+            }
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = new Query();
+        query.addSort( "created" );
+        query.addEqualityFilter( "intersect", true );
+        query.addEqualityFilter( "intersect2", true );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+
+        Results results;
+
+        start = System.currentTimeMillis();
+
+        do {
+
+            // now do simple ordering, should be returned in order
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( expectedResults.get( count ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.getCursor() != null );
+
+        stop = System.currentTimeMillis();
+
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+
+        assertEquals( expectedResults.size(), count );
+    }
+
+
+    protected void singleOrderByNoIntersection( IoHelper io ) throws Exception {
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = Query.MAX_LIMIT;
+
+        // the number of entities that should be written including an intersection
+        int secondIncrement = 9;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
+            entity.put( "name", String.valueOf( i ) );
+            // if we hit the increment, set this to true
+            entity.put( "intersect", false );
+            entity.put( "intersect2", i % secondIncrement == 0 );
+            io.writeEntity( entity );
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = new Query();
+        query.addSort( "created" );
+        // nothing will ever match this, the search should short circuit
+        query.addEqualityFilter( "intersect", true );
+        query.addEqualityFilter( "intersect2", true );
+        query.setLimit( queryLimit );
+
+        start = System.currentTimeMillis();
+
+        Results results = io.getResults( query );
+
+        // now do simple ordering, should be returned in order
+
+        stop = System.currentTimeMillis();
+
+        LOG.info( "Query took {} ms to return {} entities", stop - start, 0 );
+
+        assertEquals( 0, results.size() );
+    }
+
+
+    protected void singleOrderByComplexUnion( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = Query.MAX_LIMIT;
+
+        // the number of entities that should be written including an intersection
+        int intersectIncrement = 5;
+        int secondIncrement = 9;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        List<String> expectedResults = new ArrayList<String>( size / secondIncrement );
+
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            String name = String.valueOf( i );
+            boolean intersect1 = i % intersectIncrement == 0;
+            boolean intersect2 = i % secondIncrement == 0;
+            entity.put( "name", name );
+            // if we hit the increment, set this to true
+
+            entity.put( "intersect", intersect1 );
+            entity.put( "intersect2", intersect2 );
+            io.writeEntity( entity );
+
+            if ( intersect1 || intersect2 ) {
+                expectedResults.add( name );
+            }
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = Query.fromQL( "select * where intersect = true OR intersect2 = true order by created" );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+
+        Results results;
+
+        start = System.currentTimeMillis();
+
+        do {
+
+            // now do simple ordering, should be returned in order
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( expectedResults.get( count ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.getCursor() != null );
+
+        stop = System.currentTimeMillis();
+
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+
+        assertEquals( expectedResults.size(), count );
+    }
+
+
+    protected void singleOrderByNot( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = Query.MAX_LIMIT;
+
+        // the number of entities that should be written including an intersection
+        int intersectIncrement = 5;
+        int secondIncrement = 9;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        List<String> expectedResults = new ArrayList<String>( size / secondIncrement );
+
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            String name = String.valueOf( i );
+            boolean intersect1 = i % intersectIncrement == 0;
+            boolean intersect2 = i % secondIncrement == 0;
+            entity.put( "name", name );
+            // if we hit the increment, set this to true
+
+            entity.put( "intersect", intersect1 );
+            entity.put( "intersect2", intersect2 );
+            io.writeEntity( entity );
+
+            if ( !( intersect1 && intersect2 ) ) {
+                expectedResults.add( name );
+            }
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = Query.fromQL( "select * where NOT (intersect = true AND intersect2 = true) order by created" );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+
+        Results results;
+
+        start = System.currentTimeMillis();
+
+        do {
+
+            // now do simple ordering, should be returned in order
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( expectedResults.get( count ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.getCursor() != null );
+
+        stop = System.currentTimeMillis();
+
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+
+        assertEquals( expectedResults.size(), count );
+    }
+
+
+    protected void singleOrderByLessThanLimit( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = Query.MAX_LIMIT;
+
+        int matchMax = queryLimit - 1;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        List<String> expected = new ArrayList<String>( matchMax );
+
+        for ( int i = 0; i < size; i++ ) {
+            String name = String.valueOf( i );
+            boolean searched = i < matchMax;
+
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            entity.put( "name", name );
+            entity.put( "searched", searched );
+            io.writeEntity( entity );
+
+            if ( searched ) {
+                expected.add( name );
+            }
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = new Query();
+        query.addSort( "created" );
+        query.setLimit( queryLimit );
+        query.addEqualityFilter( "searched", true );
+
+        int count = 0;
+
+        start = System.currentTimeMillis();
+
+        // now do simple ordering, should be returned in order
+        Results results = io.getResults( query );
+
+        for ( int i = 0; i < results.size(); i++ ) {
+            assertEquals( expected.get( count ), results.getEntities().get( i ).getName() );
+            count++;
+        }
+
+        assertTrue( results.getCursor() == null );
+
+        stop = System.currentTimeMillis();
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+
+        assertEquals( expected.size(), count );
+    }
+
+
+    protected void singleOrderBySameRangeScanLessThanEqual( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = 100;
+        int startValue = 400;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        List<String> expected = new ArrayList<String>( size );
+
+        for ( int i = 0; i < size; i++ ) {
+            String name = String.valueOf( i );
+
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            entity.put( "name", name );
+            entity.put( "index", i );
+            io.writeEntity( entity );
+            expected.add( name );
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = new Query();
+        query.addSort( "index desc" );
+        query.addLessThanEqualFilter( "index", startValue );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+        int delta = size - startValue;
+
+        start = System.currentTimeMillis();
+
+        // now do simple ordering, should be returned in order
+        Results results;
+
+        do {
+
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( expected.get( size - delta - count ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.hasCursor() );
+
+        assertEquals( expected.size() - delta + 1, count );
+
+        stop = System.currentTimeMillis();
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+    }
+
+
+    protected void singleOrderBySameRangeScanLessEqual( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = 100;
+        int startValue = 400;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        List<String> expected = new ArrayList<String>( size );
+
+        for ( int i = 0; i < size; i++ ) {
+            String name = String.valueOf( i );
+
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            entity.put( "name", name );
+            entity.put( "index", i );
+            io.writeEntity( entity );
+            expected.add( name );
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = new Query();
+        query.addSort( "index desc" );
+        query.addLessThanFilter( "index", startValue );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+        int delta = size - startValue;
+
+        start = System.currentTimeMillis();
+
+        // now do simple ordering, should be returned in order
+        Results results;
+
+        do {
+
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( expected.get( size - delta - count - 1 ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.hasCursor() );
+
+        assertEquals( expected.size() - delta, count );
+
+        stop = System.currentTimeMillis();
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+    }
+
+
+    protected void singleOrderBySameRangeScanGreaterThanEqual( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = 100;
+        int startValue = 100;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        List<String> expected = new ArrayList<String>( size );
+
+        for ( int i = 0; i < size; i++ ) {
+            String name = String.valueOf( i );
+
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            entity.put( "name", name );
+            entity.put( "index", i );
+            io.writeEntity( entity );
+            expected.add( name );
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = new Query();
+        query.addSort( "index desc" );
+        query.addGreaterThanEqualFilter( "index", startValue );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+
+        start = System.currentTimeMillis();
+
+        // now do simple ordering, should be returned in order
+        Results results;
+
+        do {
+
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( expected.get( size - count - 1 ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.hasCursor() );
+
+        assertEquals( expected.size() - startValue, count );
+
+        stop = System.currentTimeMillis();
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+    }
+
+
+    protected void singleOrderBySameRangeScanGreater( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = 100;
+        int startValue = 99;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        List<String> expected = new ArrayList<String>( size );
+
+        for ( int i = 0; i < size; i++ ) {
+            String name = String.valueOf( i );
+
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            entity.put( "name", name );
+            entity.put( "index", i );
+            io.writeEntity( entity );
+            expected.add( name );
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = new Query();
+        query.addSort( "index desc" );
+        query.addGreaterThanFilter( "index", startValue );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+
+        start = System.currentTimeMillis();
+
+        // now do simple ordering, should be returned in order
+        Results results;
+
+        do {
+
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( expected.get( size - count - 1 ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.hasCursor() );
+
+        assertEquals( expected.size() - startValue - 1, count );
+
+        stop = System.currentTimeMillis();
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+    }
+
+
+    protected void singleOrderByBoundRangeScanDesc( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = 100;
+        int startValue = 100;
+        int endValue = 400;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        List<String> expected = new ArrayList<String>( size );
+
+        for ( int i = 0; i < size; i++ ) {
+            String name = String.valueOf( i );
+
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            entity.put( "name", name );
+            entity.put( "index", i );
+            io.writeEntity( entity );
+            expected.add( name );
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = Query.fromQL(
+                String.format( "select * where index >= %d AND index <= %d order by index desc", startValue,
+                        endValue ) );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+        int delta = size - endValue;
+
+        start = System.currentTimeMillis();
+
+        // now do simple ordering, should be returned in order
+        Results results;
+
+        do {
+
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( expected.get( size - count - delta ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.hasCursor() );
+
+        assertEquals( expected.size() - startValue - delta + 1, count );
+
+        stop = System.currentTimeMillis();
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+    }
+
+
+    protected void singleOrderByBoundRangeScanAsc( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = 100;
+        int startValue = 100;
+        int endValue = 400;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        List<String> expected = new ArrayList<String>( size );
+
+        for ( int i = 0; i < size; i++ ) {
+            String name = String.valueOf( i );
+
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            entity.put( "name", name );
+            entity.put( "index", i );
+            io.writeEntity( entity );
+            expected.add( name );
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = Query.fromQL(
+                String.format( "select * where index >= %d AND index <= %d order by index asc", startValue,
+                        endValue ) );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+        int delta = size - endValue;
+
+        start = System.currentTimeMillis();
+
+        // now do simple ordering, should be returned in order
+        Results results;
+
+        do {
+
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( expected.get( delta + count ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.hasCursor() );
+
+        assertEquals( expected.size() - startValue - delta + 1, count );
+
+        stop = System.currentTimeMillis();
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+    }
+
+
+    /**
+     * Tests that when an empty query is issued, we page through all entities correctly
+     *
+     * @param io the io helper
+     */
+    protected void allIn( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 300;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
+            entity.put( "name", String.valueOf( i ) );
+
+            io.writeEntity( entity );
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        app.getEntityManager().refreshIndex();
+
+        Query query = new Query();
+        query.setLimit( 100 );
+
+        int count = 0;
+
+        Results results;
+
+        start = System.currentTimeMillis();
+
+        do {
+
+            // now do simple ordering, should be returned in order
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                assertEquals( String.valueOf( count ), results.getEntities().get( i ).getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.getCursor() != null );
+
+        stop = System.currentTimeMillis();
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+
+        assertEquals( size, count );
+    }
+
+
+    protected void multiOrderBy( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = Query.MAX_LIMIT;
+
+        // the number of entities that should be written including an intersection
+
+        Set<Entity> sortedResults = new TreeSet<Entity>( new Comparator<Entity>() {
+
+            @Override
+            public int compare( Entity o1, Entity o2 ) {
+                boolean o1Boolean = ( Boolean ) o1.getProperty( "boolean" );
+                boolean o2Boolean = ( Boolean ) o2.getProperty( "boolean" );
+
+                if ( o1Boolean != o2Boolean ) {
+                    if ( o1Boolean ) {
+                        return -1;
+                    }
+
+                    return 1;
+                }
+
+                int o1Index = ( Integer ) o1.getProperty( "index" );
+                int o2Index = ( Integer ) o2.getProperty( "index" );
+
+                if ( o1Index > o2Index ) {
+                    return 1;
+                }
+                else if ( o2Index > o1Index ) {
+                    return -1;
+                }
+
+                return 0;
+            }
+        } );
+
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            String name = String.valueOf( i );
+            boolean bool = i % 2 == 0;
+            entity.put( "name", name );
+            entity.put( "boolean", bool );
+
+            /**
+             * we want them to be ordered from the "newest" time uuid to the oldec since we
+             * have a low cardinality value as the first second clause.  This way the test
+             *won't accidentally pass b/c the UUID ordering matches the index ordering.  If we were
+             *to reverse the value of index (size-i) the test would pass incorrectly
+             */
+
+            entity.put( "index", i );
+
+            Entity saved = io.writeEntity( entity );
+
+            sortedResults.add( saved );
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        app.getEntityManager().refreshIndex();
+
+        Query query = Query.fromQL( "select * order by boolean desc, index asc" );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+
+        Results results;
+
+        start = System.currentTimeMillis();
+
+        Iterator<Entity> itr = sortedResults.iterator();
+
+        do {
+
+            // now do simple ordering, should be returned in order
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+                Entity expected = itr.next();
+                Entity returned = results.getEntities().get( i );
+
+                assertEquals( "Order incorrect", expected.getName(), returned.getName() );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.getCursor() != null );
+
+        stop = System.currentTimeMillis();
+
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+
+        assertEquals( sortedResults.size(), count );
+    }
+
+
+    protected void multiOrderByComplexUnion( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        int size = 200;
+        int queryLimit = Query.MAX_LIMIT;
+
+        // the number of entities that should be written including an intersection
+        int intersectIncrement = 5;
+        int secondIncrement = 9;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        Set<Entity> sortedResults = new TreeSet<Entity>( new Comparator<Entity>() {
+
+            @Override
+            public int compare( Entity o1, Entity o2 ) {
+                long o1Index = ( Long ) o1.getProperty( "created" );
+                long o2Index = ( Long ) o2.getProperty( "created" );
+
+                if ( o1Index > o2Index ) {
+                    return 1;
+                }
+                else if ( o2Index > o1Index ) {
+                    return -1;
+                }
+
+
+                boolean o1Boolean = ( Boolean ) o1.getProperty( "intersect" );
+                boolean o2Boolean = ( Boolean ) o2.getProperty( "intersect" );
+
+                if ( o1Boolean != o2Boolean ) {
+                    if ( o1Boolean ) {
+                        return -1;
+                    }
+
+                    return 1;
+                }
+
+
+                return 0;
+            }
+        } );
+
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
+
+            String name = String.valueOf( i );
+            boolean intersect1 = i % intersectIncrement == 0;
+            boolean intersect2 = i % secondIncrement == 0;
+            entity.put( "name", name );
+            // if we hit the increment, set this to true
+
+            entity.put( "intersect", intersect1 );
+            entity.put( "intersect2", intersect2 );
+            Entity e = io.writeEntity( entity );
+
+            if ( intersect1 || intersect2 ) {
+                sortedResults.add( e );
+            }
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        app.getEntityManager().refreshIndex();
+
+        Query query =
+                Query.fromQL( "select * where intersect = true OR intersect2 = true order by created, intersect desc" );
+        query.setLimit( queryLimit );
+
+        int count = 0;
+
+        Results results;
+
+        start = System.currentTimeMillis();
+
+        Iterator<Entity> expected = sortedResults.iterator();
+
+        do {
+
+            // now do simple ordering, should be returned in order
+            results = io.getResults( query );
+
+            for ( Entity result : results.getEntities() ) {
+                assertEquals( expected.next(), result );
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.getCursor() != null );
+
+        stop = System.currentTimeMillis();
+
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+
+        assertEquals( sortedResults.size(), count );
+    }
+
+
+    /**
+     * Tests that when an empty query is issued, we page through all entities correctly
+     *
+     * @param io the io helper
+     */
+    protected void notOrderBy( IoHelper io ) throws Exception {
+
+        io.doSetup();
+
+        /**
+         * Leave this as a large size.  We have to write over 1k to reproduce this issue
+         */
+        int size = 200;
+
+        long start = System.currentTimeMillis();
+
+        LOG.info( "Writing {} entities.", size );
+
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
+            entity.put( "name", String.valueOf( i ) );
+            entity.put( "boolean", !(i % 2 == 0));
+            entity.put( "index", i);
+
+            io.writeEntity( entity );
+        }
+
+        long stop = System.currentTimeMillis();
+
+        LOG.info( "Writes took {} ms", stop - start );
+
+        Query query = Query.fromQL("select * where NOT boolean = false order by index asc");
+        query.setLimit( 20 );
+
+        int index = 0;
+        int count = 0;
+
+        Results results;
+
+        start = System.currentTimeMillis();
+
+        do {
+
+            // now do simple ordering, should be returned in order
+            results = io.getResults( query );
+
+            for ( int i = 0; i < results.size(); i++ ) {
+//                assertEquals( String.valueOf( index ), results.getEntities().get( i ).getName() );
+//                index +=2;
+                count++;
+            }
+
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.getCursor() != null );
+
+        stop = System.currentTimeMillis();
+        LOG.info( "Query took {} ms to return {} entities", stop - start, count );
+
+        assertEquals( size/2, count );
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByCollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByCollectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByCollectionIT.java
deleted file mode 100644
index 3651129..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByCollectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class MultiOrderByCollectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void multiOrderByCollection() throws Exception {
-        multiOrderBy( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByComplexUnionCollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByComplexUnionCollectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByComplexUnionCollectionIT.java
deleted file mode 100644
index 6d7d799..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByComplexUnionCollectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class MultiOrderByComplexUnionCollectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void multiOrderByComplexUnionCollection() throws Exception {
-        multiOrderByComplexUnion( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByComplexUnionConnectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByComplexUnionConnectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByComplexUnionConnectionIT.java
deleted file mode 100644
index 9543d1e..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByComplexUnionConnectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class MultiOrderByComplexUnionConnectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void multiOrderByComplexUnionConnection() throws Exception {
-        multiOrderByComplexUnion( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByConnectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByConnectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByConnectionIT.java
deleted file mode 100644
index 3a0c5fd..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/MultiOrderByConnectionIT.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-import org.apache.usergrid.cassandra.Concurrent;
-
-
-/** @author tnine */
-@Concurrent()
-public class MultiOrderByConnectionIT extends AbstractIteratingQueryIT {
-
-    @Test
-    public void multOrderByConnection() throws Exception {
-        multiOrderBy( new ConnectionHelper(app) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotOrderByCollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotOrderByCollectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotOrderByCollectionIT.java
deleted file mode 100644
index 193bbce..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotOrderByCollectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class NotOrderByCollectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void orderByWithNot() throws Exception {
-        notOrderBy( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotOrderByConnectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotOrderByConnectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotOrderByConnectionIT.java
deleted file mode 100644
index 03ede21..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotOrderByConnectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class NotOrderByConnectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void orderByWithNot() throws Exception {
-        notOrderBy( new ConnectionHelper(app) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotSubPropertyIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotSubPropertyIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotSubPropertyIT.java
index 13f7b22..d0b292d 100644
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotSubPropertyIT.java
+++ b/stack/core/src/test/java/org/apache/usergrid/persistence/query/NotSubPropertyIT.java
@@ -23,13 +23,17 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
+import org.junit.ClassRule;
+import org.junit.Rule;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.usergrid.persistence.index.query.Query;
+import org.apache.usergrid.CoreApplication;
+import org.apache.usergrid.CoreITSetup;
+import org.apache.usergrid.CoreITSetupImpl;
 import org.apache.usergrid.persistence.Results;
-import org.apache.usergrid.persistence.cassandra.QueryProcessor;
+import org.apache.usergrid.persistence.index.query.Query;
 
 import static org.junit.Assert.assertEquals;
 
@@ -37,141 +41,136 @@ import static org.junit.Assert.assertEquals;
 /**
  * Tests sub entites in full results
  */
-public class NotSubPropertyIT extends AbstractIteratingQueryIT {
+public class NotSubPropertyIT {
 
 
     private static final Logger LOG = LoggerFactory.getLogger( IntersectionUnionPagingIT.class );
 
-        private static final String notQuery =
-                "select * where NOT subArray.usageType = 'true1'";
-
-        private static final int PAGE_SIZE = 300;
+    private static final String notQuery = "select * where NOT subArray.usageType = 'true1'";
 
+    private static final int PAGE_SIZE = 300;
 
-        @Test
-        public void testNotPagingCollection() throws Exception {
 
+    @ClassRule
+    public static CoreITSetup setup = new CoreITSetupImpl(  );
 
-            final CollectionIoHelper collectionIoHelper = new CollectionIoHelper( app );
+    @Rule
+    public CoreApplication app = new CoreApplication( setup );
 
-            List<UUID> expected = performSetup( collectionIoHelper );
 
-
-            testSubPropertySearching( collectionIoHelper, notQuery, expected );
-        }
+    @Test
+    public void testNotPagingCollection() throws Exception {
 
 
-        @Test
-        public void testNotPagingConnection() throws Exception {
+        final CollectionIoHelper collectionIoHelper = new CollectionIoHelper( app );
 
-            final ConnectionHelper connectionHelper = new ConnectionHelper( app );
+        List<UUID> expected = performSetup( collectionIoHelper );
 
-            List<UUID> expected = performSetup( connectionHelper );
 
+        testSubPropertySearching( collectionIoHelper, notQuery, expected );
+    }
 
-            testSubPropertySearching( connectionHelper, notQuery, expected );
-        }
 
+    @Test
+    public void testNotPagingConnection() throws Exception {
 
-    /**
-     * Perform the writes
-     * @param io
-     * @return
-     * @throws Exception
-     */
-        private List<UUID> performSetup( final IoHelper io ) throws Exception {
-            io.doSetup();
+        final ConnectionHelper connectionHelper = new ConnectionHelper( app );
 
-            int size = ( int ) ( QueryProcessor.PAGE_SIZE*2.5);
+        List<UUID> expected = performSetup( connectionHelper );
 
-            long start = System.currentTimeMillis();
 
-            LOG.info( "Writing {} entities.", size );
+        testSubPropertySearching( connectionHelper, notQuery, expected );
+    }
 
 
+    /**
+     * Perform the writes
+     */
+    private List<UUID> performSetup( final IoHelper io ) throws Exception {
+        io.doSetup();
 
-            List<UUID> expected = new ArrayList<UUID>(size);
+        int size = 200;
 
-            for ( int i = 0; i < size; i++ ) {
-                Map<String, Object> entity = new HashMap<String, Object>();
+        long start = System.currentTimeMillis();
 
+        LOG.info( "Writing {} entities.", size );
 
-                final boolean usageTypeBool = i%2 == 0;
-                final String usageType =  String.valueOf( usageTypeBool );
 
+        List<UUID> expected = new ArrayList<UUID>( size );
 
-                List<Map<String, Object>> subArray = new ArrayList<Map<String, Object>>();
+        for ( int i = 0; i < size; i++ ) {
+            Map<String, Object> entity = new HashMap<String, Object>();
 
-                for(int j = 0; j < 2; j ++){
 
-                    Map<String, Object> subFields = new HashMap<String, Object>();
-                    subFields.put( "startDate", 10000 );
-                    subFields.put( "endDate", 20000);
-                    subFields.put( "usageType", usageType+j  );
+            final boolean usageTypeBool = i % 2 == 0;
+            final String usageType = String.valueOf( usageTypeBool );
 
-                    subArray.add( subFields );
-                }
 
+            List<Map<String, Object>> subArray = new ArrayList<Map<String, Object>>();
 
-                entity.put( "subArray", subArray );
+            for ( int j = 0; j < 2; j++ ) {
 
-                UUID entityId = io.writeEntity( entity ).getUuid();
+                Map<String, Object> subFields = new HashMap<String, Object>();
+                subFields.put( "startDate", 10000 );
+                subFields.put( "endDate", 20000 );
+                subFields.put( "usageType", usageType + j );
 
-                if(!usageTypeBool){
-                    expected.add(entityId);
-                }
+                subArray.add( subFields );
+            }
 
 
+            entity.put( "subArray", subArray );
 
+            UUID entityId = io.writeEntity( entity ).getUuid();
 
+            if ( !usageTypeBool ) {
+                expected.add( entityId );
             }
-
-            long stop = System.currentTimeMillis();
-
-            LOG.info( "Writes took {} ms", stop - start );
-
-            return expected;
         }
 
+        long stop = System.currentTimeMillis();
 
-        private void testSubPropertySearching( final IoHelper io, final String queryString,
-                                               final List<UUID> expectedResults )
-                throws Exception {
+        LOG.info( "Writes took {} ms", stop - start );
 
+        return expected;
+    }
 
 
-            //our field1Or has a result size < our page size, so it shouldn't blow up when the cursor is getting created
-            //the leaf iterator should insert it's own "no value left" into the cursor
-            Query query = Query.fromQL( queryString );
-            query.setLimit( PAGE_SIZE );
+    private void testSubPropertySearching( final IoHelper io, final String queryString,
+                                           final List<UUID> expectedResults ) throws Exception {
 
-            Results results;
 
-            long start = System.currentTimeMillis();
-            int expectedIndex = 0;
+        //our field1Or has a result size < our page size, so it shouldn't blow up when the cursor is getting created
+        //the leaf iterator should insert it's own "no value left" into the cursor
+        Query query = Query.fromQL( queryString );
+        query.setLimit( PAGE_SIZE );
 
-            do {
+        Results results;
 
-                // now do simple ordering, should be returned in order
-                results = io.getResults( query );
+        long start = System.currentTimeMillis();
+        int expectedIndex = 0;
 
+        do {
 
+            // now do simple ordering, should be returned in order
+            results = io.getResults( query );
 
-                for ( int i = 0; i < results.size(); i++, expectedIndex++ ) {
-                    final UUID returned = results.getEntities().get( i ).getUuid();
-                    final UUID expected = expectedResults.get( expectedIndex );
 
-                    assertEquals( "Not returned as excpected", expected, returned );
-                }
+            for ( int i = 0; i < results.size(); i++, expectedIndex++ ) {
+                final UUID returned = results.getEntities().get( i ).getUuid();
+                final UUID expected = expectedResults.get( expectedIndex );
 
-                query.setCursor( results.getCursor() );
+                assertEquals( "Not returned as excpected", expected, returned );
             }
-            while ( results.getCursor() != null );
 
-            long stop = System.currentTimeMillis();
+            query.setCursor( results.getCursor() );
+        }
+        while ( results.getCursor() != null );
+
+        long stop = System.currentTimeMillis();
 
-            LOG.info( "Query took {} ms to return {} entities", stop - start, expectedResults.size() );
+        LOG.info( "Query took {} ms to return {} entities", stop - start, expectedResults.size() );
 
-            assertEquals( "All names returned", expectedResults.size(), expectedIndex );
-        }
+        assertEquals( "All names returned", expectedResults.size(), expectedIndex );
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanAscCollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanAscCollectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanAscCollectionIT.java
deleted file mode 100644
index 1af7501..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanAscCollectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByBoundRangeScanAscCollectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByBoundRangeScanAscCollection() throws Exception {
-        singleOrderByBoundRangeScanAsc( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanAscConnectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanAscConnectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanAscConnectionIT.java
deleted file mode 100644
index 8b5bd68..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanAscConnectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByBoundRangeScanAscConnectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByBoundRangeScanAscConnection() throws Exception {
-        singleOrderByBoundRangeScanAsc( new ConnectionHelper(app) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanDescCollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanDescCollectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanDescCollectionIT.java
deleted file mode 100644
index 2982ffa..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanDescCollectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByBoundRangeScanDescCollectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByBoundRangeScanDescCollection() throws Exception {
-        singleOrderByBoundRangeScanDesc( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanDescConnectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanDescConnectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanDescConnectionIT.java
deleted file mode 100644
index 65d5d57..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByBoundRangeScanDescConnectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByBoundRangeScanDescConnectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByBoundRangeScanDescConnection() throws Exception {
-        singleOrderByBoundRangeScanDesc( new ConnectionHelper(app) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexIntersectionCollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexIntersectionCollectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexIntersectionCollectionIT.java
deleted file mode 100644
index c7be821..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexIntersectionCollectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByComplexIntersectionCollectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByComplexIntersectionCollection() throws Exception {
-        singleOrderByComplexIntersection( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexIntersectionConnectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexIntersectionConnectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexIntersectionConnectionIT.java
deleted file mode 100644
index 1fe1320..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexIntersectionConnectionIT.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByComplexIntersectionConnectionIT extends AbstractIteratingQueryIT {
-
-    @Test
-    public void singleOrderByComplexIntersectionConnection() throws Exception {
-        singleOrderByComplexIntersection( new ConnectionHelper(app) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexUnionCollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexUnionCollectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexUnionCollectionIT.java
deleted file mode 100644
index 00d8d10..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexUnionCollectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByComplexUnionCollectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByComplexUnionCollection() throws Exception {
-        singleOrderByComplexUnion( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexUnionConnectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexUnionConnectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexUnionConnectionIT.java
deleted file mode 100644
index e69e730..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByComplexUnionConnectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByComplexUnionConnectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByComplexUnionConnection() throws Exception {
-        singleOrderByComplexUnion( new ConnectionHelper(app) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByIntersectionCollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByIntersectionCollectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByIntersectionCollectionIT.java
deleted file mode 100644
index 29ff610..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByIntersectionCollectionIT.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-import org.apache.usergrid.cassandra.Concurrent;
-
-
-/** @author tnine */
-@Concurrent()
-public class SingleOrderByIntersectionCollectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByIntersectionCollection() throws Exception {
-        singleOrderByIntersection( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByIntersectionConnectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByIntersectionConnectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByIntersectionConnectionIT.java
deleted file mode 100644
index ff1b29b..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByIntersectionConnectionIT.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-import org.apache.usergrid.cassandra.Concurrent;
-
-
-/** @author tnine */
-@Concurrent()
-public class SingleOrderByIntersectionConnectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByIntersectionConnection() throws Exception {
-        singleOrderByIntersection( new ConnectionHelper(app) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByLessThanLimitCollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByLessThanLimitCollectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByLessThanLimitCollectionIT.java
deleted file mode 100644
index f597a82..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByLessThanLimitCollectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByLessThanLimitCollectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByLessThanLimitCollection() throws Exception {
-        singleOrderByLessThanLimit( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByLessThanLimitConnectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByLessThanLimitConnectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByLessThanLimitConnectionIT.java
deleted file mode 100644
index edb02c7..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByLessThanLimitConnectionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByLessThanLimitConnectionIT extends AbstractIteratingQueryIT {
-    @Test
-    public void singleOrderByLessThanLimitConnection() throws Exception {
-        singleOrderByLessThanLimit( new ConnectionHelper(app) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByMaxLimitCollectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByMaxLimitCollectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByMaxLimitCollectionIT.java
deleted file mode 100644
index 876e223..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByMaxLimitCollectionIT.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByMaxLimitCollectionIT extends AbstractIteratingQueryIT {
-
-    @Test
-    public void singleOrderByMaxLimitCollection() throws Exception {
-        singleOrderByMaxLimit( new CollectionIoHelper( app ) );
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1fbe3e54/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByMaxLimitConnectionIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByMaxLimitConnectionIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByMaxLimitConnectionIT.java
deleted file mode 100644
index 0b58023..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/query/SingleOrderByMaxLimitConnectionIT.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.persistence.query;
-
-
-import org.junit.Test;
-
-
-/** @author tnine */
-public class SingleOrderByMaxLimitConnectionIT extends AbstractIteratingQueryIT {
-
-    @Test
-    public void singleOrderByMaxLimitConnection() throws Exception {
-        singleOrderByMaxLimit( new ConnectionHelper(app) );
-    }
-}