Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/2.3' into 3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
craigtaverner committed Apr 20, 2016
2 parents 299453b + b3c6b29 commit 325fad5
Showing 1 changed file with 62 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import org.neo4j.kernel.impl.store.counts.CountsTracker;
import org.neo4j.kernel.impl.store.counts.keys.CountsKeyFactory;
import org.neo4j.kernel.impl.store.counts.keys.IndexSampleKey;
import org.neo4j.kernel.impl.store.counts.keys.IndexStatisticsKey;
import org.neo4j.register.Register.DoubleLongRegister;
import org.neo4j.register.Registers;
import org.neo4j.test.TargetDirectory;
Expand All @@ -58,6 +59,7 @@ public class IndexSamplingIntegrationTest
public void shouldSampleNotUniqueIndex() throws Throwable
{
GraphDatabaseService db = null;
long deletedNodes = 0;
try
{
// Given
Expand All @@ -82,6 +84,17 @@ public void shouldSampleNotUniqueIndex() throws Throwable
db.createNode( label ).setProperty( property, names[i % names.length] );
tx.success();
}

}

try ( Transaction tx = db.beginTx() )
{
for ( int i = 0; i < (nodes / 10) ; i++ )
{
db.findNodes( label, property, names[i % names.length] ).next().delete();
deletedNodes++;
tx.success();
}
}
}
finally
Expand All @@ -96,15 +109,23 @@ public void shouldSampleNotUniqueIndex() throws Throwable
triggerIndexResamplingOnNextStartup();

// Then

// sampling will consider also the delete nodes till the next lucene compaction
DoubleLongRegister register = fetchIndexSamplingValues( db );
assertEquals( names.length, register.readFirst() );
assertEquals( nodes, register.readSecond() );

// but the deleted nodes should not be considered in the index size value
DoubleLongRegister indexSizeRegister = fetchIndexSizeValues( db );
assertEquals( 0, indexSizeRegister.readFirst() );
assertEquals( nodes - deletedNodes, indexSizeRegister.readSecond() );
}

@Test
public void shouldSampleUniqueIndex() throws Throwable
{
GraphDatabaseService db = null;
long deletedNodes = 0;
try
{
// Given
Expand All @@ -123,6 +144,19 @@ public void shouldSampleUniqueIndex() throws Throwable
tx.success();
}
}

try ( Transaction tx = db.beginTx() )
{
for ( int i = 0; i < nodes; i++ )
{
if ( i % 10 == 0 )
{
deletedNodes++;
db.findNode( label, property, "" + i ).delete();
tx.success();
}
}
}
}
finally
{
Expand All @@ -136,9 +170,13 @@ public void shouldSampleUniqueIndex() throws Throwable
triggerIndexResamplingOnNextStartup();

// Then
DoubleLongRegister register = fetchIndexSamplingValues( db );
assertEquals( nodes, register.readFirst() );
assertEquals( nodes, register.readSecond() );
DoubleLongRegister indexSampleRegister = fetchIndexSamplingValues( db );
assertEquals( nodes - deletedNodes, indexSampleRegister.readFirst() );
assertEquals( nodes - deletedNodes, indexSampleRegister.readSecond() );

DoubleLongRegister indexSizeRegister = fetchIndexSizeValues( db );
assertEquals( 0, indexSizeRegister.readFirst() );
assertEquals( nodes - deletedNodes, indexSizeRegister.readSecond() );
}

private DoubleLongRegister fetchIndexSamplingValues( GraphDatabaseService db )
Expand All @@ -163,6 +201,27 @@ private DoubleLongRegister fetchIndexSamplingValues( GraphDatabaseService db )
}
}

private DoubleLongRegister fetchIndexSizeValues( GraphDatabaseService db )
{
try
{
// Then
db = new TestGraphDatabaseFactory().newEmbeddedDatabase( testDirectory.graphDbDir().getAbsolutePath() );
@SuppressWarnings( "deprecation" )
GraphDatabaseAPI api = (GraphDatabaseAPI) db;
CountsTracker countsTracker = api.getDependencyResolver().resolveDependency( NeoStore.class ).getCounts();
IndexStatisticsKey key = CountsKeyFactory.indexStatisticsKey( 0, 0 ); // cheating a bit...
return countsTracker.get( key, Registers.newDoubleLongRegister() );
}
finally
{
if ( db != null )
{
db.shutdown();
}
}
}

private void triggerIndexResamplingOnNextStartup()
{
// Trigger index resampling on next at startup
Expand Down

0 comments on commit 325fad5

Please sign in to comment.