From 3f13eb0de496426ae9635d04714b0059946501ec Mon Sep 17 00:00:00 2001 From: Anton Persson Date: Wed, 15 Nov 2017 14:27:09 +0100 Subject: [PATCH] Move native index reader test to new query api --- .../NativeSchemaNumberIndexAccessorTest.java | 49 +++++++++++-------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessorTest.java index 0a2ce91e97352..f5fab85ee8cc4 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessorTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessorTest.java @@ -45,6 +45,7 @@ import org.neo4j.internal.kernel.api.IndexOrder; import org.neo4j.internal.kernel.api.IndexQuery; import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException; +import org.neo4j.kernel.api.exceptions.index.IndexNotApplicableKernelException; import org.neo4j.kernel.api.index.IndexEntryUpdate; import org.neo4j.kernel.api.index.IndexUpdater; import org.neo4j.kernel.api.schema.index.IndexDescriptor; @@ -314,7 +315,7 @@ public void shouldReturnAllEntriesForExistsPredicate() throws Exception // when IndexReader reader = accessor.newReader(); - PrimitiveLongIterator result = reader.query( IndexQuery.exists( 0 ) ); + PrimitiveLongIterator result = query( reader, IndexQuery.exists( 0 ) ); // then assertEntityIdHits( extractEntityIds( updates, alwaysTrue() ), result ); @@ -325,7 +326,7 @@ public void shouldReturnNoEntriesForExistsPredicateForEmptyIndex() throws Except { // when IndexReader reader = accessor.newReader(); - PrimitiveLongIterator result = reader.query( IndexQuery.exists( 0 ) ); + PrimitiveLongIterator result = query( reader, IndexQuery.exists( 0 ) ); // then long[] actual = PrimitiveLongCollections.asArray( result ); @@ -344,7 +345,7 @@ public void shouldReturnMatchingEntriesForExactPredicate() throws Exception for ( IndexEntryUpdate update : updates ) { Value value = update.values()[0]; - PrimitiveLongIterator result = reader.query( IndexQuery.exact( 0, value ) ); + PrimitiveLongIterator result = query( reader, IndexQuery.exact( 0, value ) ); assertEntityIdHits( extractEntityIds( updates, in( value ) ), result ); } } @@ -359,7 +360,7 @@ public void shouldReturnNoEntriesForMismatchingExactPredicate() throws Exception // when IndexReader reader = accessor.newReader(); Object value = NON_EXISTENT_VALUE; - PrimitiveLongIterator result = reader.query( IndexQuery.exact( 0, value ) ); + PrimitiveLongIterator result = query( reader, IndexQuery.exact( 0, value ) ); assertEntityIdHits( EMPTY_LONG_ARRAY, result ); } @@ -372,7 +373,7 @@ public void shouldReturnMatchingEntriesForRangePredicateWithInclusiveStartAndExc // when IndexReader reader = accessor.newReader(); - PrimitiveLongIterator result = reader.query( + PrimitiveLongIterator result = query( reader, IndexQuery.range( 0, Double.NEGATIVE_INFINITY, true, Double.POSITIVE_INFINITY, false ) ); assertEntityIdHits( extractEntityIds( updates, lessThan( Double.POSITIVE_INFINITY ) ), result ); } @@ -386,7 +387,7 @@ public void shouldReturnMatchingEntriesForRangePredicateWithInclusiveStartAndInc // when IndexReader reader = accessor.newReader(); - PrimitiveLongIterator result = reader.query( + PrimitiveLongIterator result = query( reader, IndexQuery.range( 0, Double.NEGATIVE_INFINITY, true, Double.POSITIVE_INFINITY, true ) ); assertEntityIdHits( extractEntityIds( updates, alwaysTrue() ), result ); } @@ -400,7 +401,7 @@ public void shouldReturnMatchingEntriesForRangePredicateWithExclusiveStartAndExc // when IndexReader reader = accessor.newReader(); - PrimitiveLongIterator result = reader.query( + PrimitiveLongIterator result = query( reader, IndexQuery.range( 0, Double.NEGATIVE_INFINITY, false, Double.POSITIVE_INFINITY, false ) ); assertEntityIdHits( extractEntityIds( updates, all( greaterThan( Double.NEGATIVE_INFINITY ), lessThan( Double.POSITIVE_INFINITY ) ) ), result ); @@ -415,19 +416,20 @@ public void shouldReturnMatchingEntriesForRangePredicateWithExclusiveStartAndInc // when IndexReader reader = accessor.newReader(); - PrimitiveLongIterator result = reader.query( + PrimitiveLongIterator result = query( reader, IndexQuery.range( 0, Double.NEGATIVE_INFINITY, false, Double.POSITIVE_INFINITY, true ) ); assertEntityIdHits( extractEntityIds( updates, all( greaterThan( Double.NEGATIVE_INFINITY ), greaterThan( Double.NEGATIVE_INFINITY ) ) ), result ); } // + @Test public void throwForUnsupportedIndexOrder() throws Exception { // given // Unsupported index order for query - IndexReader indexReader = accessor.newReader(); + IndexReader reader = accessor.newReader(); IndexOrder unsupportedOrder = IndexOrder.DESCENDING; IndexQuery.ExactPredicate unsupportedQuery = IndexQuery.exact( 0, "Legolas" ); @@ -439,7 +441,7 @@ public void throwForUnsupportedIndexOrder() throws Exception CoreMatchers.containsString( unsupportedQuery.toString() ) ) ); // when - indexReader.query( new SimpleNodeValueClient(), unsupportedOrder, unsupportedQuery ); + reader.query( new SimpleNodeValueClient(), unsupportedOrder, unsupportedQuery ); } @Test @@ -451,23 +453,23 @@ public void respectIndexOrder() throws Exception Value[] expectedValues = layoutUtil.extractValuesFromUpdates( someUpdates ); // when - IndexReader indexReader = accessor.newReader(); + IndexReader reader = accessor.newReader(); IndexQuery.NumberRangePredicate supportedQuery = IndexQuery.range( 0, Double.NEGATIVE_INFINITY, true, Double.POSITIVE_INFINITY, true ); for ( IndexOrder supportedOrder : NativeSchemaNumberIndexProvider.CAPABILITY.orderCapability( ValueGroup.NUMBER ) ) { - if ( IndexOrder.ASCENDING.equals( supportedOrder ) ) + if ( supportedOrder == IndexOrder.ASCENDING ) { Arrays.sort( expectedValues, Values.COMPARATOR ); } - if ( IndexOrder.DESCENDING.equals( supportedOrder ) ) + if ( supportedOrder == IndexOrder.DESCENDING ) { Arrays.sort( expectedValues, Values.COMPARATOR.reversed() ); } SimpleNodeValueClient client = new SimpleNodeValueClient(); - indexReader.query( client, supportedOrder, supportedQuery ); + reader.query( client, supportedOrder, supportedQuery ); int i = 0; while ( client.next() ) { @@ -488,7 +490,7 @@ public void shouldReturnNoEntriesForRangePredicateOutsideAnyMatch() throws Excep // when IndexReader reader = accessor.newReader(); - PrimitiveLongIterator result = reader.query( + PrimitiveLongIterator result = query( reader, IndexQuery.range( 0, NON_EXISTENT_VALUE, true, NON_EXISTENT_VALUE + 10, true ) ); assertEntityIdHits( EMPTY_LONG_ARRAY, result ); } @@ -516,12 +518,12 @@ public void mustHandleNestedQueries() throws Exception long[] expectedOuter = new long[]{2, 3}; long[] expectedInner = new long[]{0, 1}; - PrimitiveLongIterator outerIter = reader.query( outerQuery ); + PrimitiveLongIterator outerIter = query( reader, outerQuery ); Collection outerResult = new ArrayList<>(); while ( outerIter.hasNext() ) { outerResult.add( outerIter.next() ); - PrimitiveLongIterator innerIter = reader.query( innerQuery ); + PrimitiveLongIterator innerIter = query( reader, innerQuery ); assertEntityIdHits( expectedInner, innerIter ); } assertEntityIdHits( expectedOuter, outerResult ); @@ -555,19 +557,19 @@ public void mustHandleMultipleNestedQueries() throws Exception long[] expected3 = new long[]{0, 1}; Collection result1 = new ArrayList<>(); - PrimitiveLongIterator iter1 = reader.query( query1 ); + PrimitiveLongIterator iter1 = query( reader, query1 ); while ( iter1.hasNext() ) { result1.add( iter1.next() ); Collection result2 = new ArrayList<>(); - PrimitiveLongIterator iter2 = reader.query( query2 ); + PrimitiveLongIterator iter2 = query( reader, query2 ); while ( iter2.hasNext() ) { result2.add( iter2.next() ); Collection result3 = new ArrayList<>(); - PrimitiveLongIterator iter3 = reader.query( query3 ); + PrimitiveLongIterator iter3 = query( reader, query3 ); while ( iter3.hasNext() ) { result3.add( iter3.next() ); @@ -768,6 +770,13 @@ public void shouldSeeNoEntriesInAllEntriesReaderOnEmptyIndex() throws Exception assertEquals( expectedIds, ids ); } + private PrimitiveLongIterator query( IndexReader reader, IndexQuery query ) throws IndexNotApplicableKernelException + { + NodeValueIterator client = new NodeValueIterator(); + reader.query( client, IndexOrder.NONE, query ); + return client; + } + private static int compare( Value value, Number other ) { return COMPARATOR.compare( value, Values.of( other ) );