Skip to content

Commit

Permalink
Make MuninnPageCache always take a PageSwapperFactory
Browse files Browse the repository at this point in the history
And also spread the use of PageCacheRule to the StandardStore tests.
  • Loading branch information
chrisvest committed Mar 13, 2015
1 parent c2c1329 commit ef2282e
Show file tree
Hide file tree
Showing 11 changed files with 148 additions and 95 deletions.
Expand Up @@ -24,16 +24,14 @@
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.LockSupport; import java.util.concurrent.locks.LockSupport;


import org.neo4j.io.fs.FileSystemAbstraction;
import org.neo4j.io.fs.FileUtils; import org.neo4j.io.fs.FileUtils;
import org.neo4j.io.pagecache.PageSwapperFactory;
import org.neo4j.io.pagecache.PagedFile;
import org.neo4j.io.pagecache.RunnablePageCache;
import org.neo4j.io.pagecache.tracing.EvictionEvent; import org.neo4j.io.pagecache.tracing.EvictionEvent;
import org.neo4j.io.pagecache.tracing.EvictionRunEvent; import org.neo4j.io.pagecache.tracing.EvictionRunEvent;
import org.neo4j.io.pagecache.tracing.MajorFlushEvent; import org.neo4j.io.pagecache.tracing.MajorFlushEvent;
import org.neo4j.io.pagecache.tracing.PageCacheTracer; import org.neo4j.io.pagecache.tracing.PageCacheTracer;
import org.neo4j.io.pagecache.PageSwapperFactory;
import org.neo4j.io.pagecache.PagedFile;
import org.neo4j.io.pagecache.RunnablePageCache;
import org.neo4j.io.pagecache.impl.SingleFilePageSwapperFactory;
import org.neo4j.io.pagecache.tracing.PageFaultEvent; import org.neo4j.io.pagecache.tracing.PageFaultEvent;


/** /**
Expand Down Expand Up @@ -139,7 +137,7 @@ public class MuninnPageCache implements RunnablePageCache
// or has another FreePageWaiter at the head. // or has another FreePageWaiter at the head.
// This contraption basically gives us a "transfer stack" with some space // This contraption basically gives us a "transfer stack" with some space
// optimisations for the initial bulk of contents. // optimisations for the initial bulk of contents.
// This field is accessed via Unsafe. @SuppressWarnings( "unused" ) // This field is accessed via Unsafe.
private volatile Object freelist; private volatile Object freelist;


// Linked list of mappings - guarded by synchronized(this) // Linked list of mappings - guarded by synchronized(this)
Expand All @@ -153,15 +151,6 @@ public class MuninnPageCache implements RunnablePageCache
// Flag for when page cache is closed - writes guarded by synchronized(this), reads can be unsynchronized // Flag for when page cache is closed - writes guarded by synchronized(this), reads can be unsynchronized
private volatile boolean closed; private volatile boolean closed;


public MuninnPageCache(
FileSystemAbstraction fs,
int maxPages,
int pageSize,
PageCacheTracer monitor )
{
this( new SingleFilePageSwapperFactory( fs ), maxPages, pageSize, monitor );
}

public MuninnPageCache( public MuninnPageCache(
PageSwapperFactory swapperFactory, PageSwapperFactory swapperFactory,
int maxPages, int maxPages,
Expand Down
Expand Up @@ -38,8 +38,10 @@
import org.neo4j.io.fs.StoreChannel; import org.neo4j.io.fs.StoreChannel;
import org.neo4j.io.pagecache.PageCacheTest; import org.neo4j.io.pagecache.PageCacheTest;
import org.neo4j.io.pagecache.PageCursor; import org.neo4j.io.pagecache.PageCursor;
import org.neo4j.io.pagecache.PageSwapperFactory;
import org.neo4j.io.pagecache.PagedFile; import org.neo4j.io.pagecache.PagedFile;
import org.neo4j.io.pagecache.RecordingPageCacheTracer; import org.neo4j.io.pagecache.RecordingPageCacheTracer;
import org.neo4j.io.pagecache.impl.SingleFilePageSwapperFactory;
import org.neo4j.io.pagecache.tracing.EvictionRunEvent; import org.neo4j.io.pagecache.tracing.EvictionRunEvent;
import org.neo4j.io.pagecache.tracing.PageCacheTracer; import org.neo4j.io.pagecache.tracing.PageCacheTracer;


Expand Down Expand Up @@ -68,7 +70,8 @@ protected MuninnPageCache createPageCache(
int pageSize, int pageSize,
PageCacheTracer tracer ) PageCacheTracer tracer )
{ {
return new MuninnPageCache( fs, maxPages, pageSize, tracer ); PageSwapperFactory swapperFactory = new SingleFilePageSwapperFactory( fs );
return new MuninnPageCache( swapperFactory, maxPages, pageSize, tracer );
} }


@Override @Override
Expand All @@ -90,7 +93,7 @@ public void mustEvictCleanPageWithoutFlushing() throws Exception
writeInitialDataTo( file ); writeInitialDataTo( file );
RecordingPageCacheTracer tracer = new RecordingPageCacheTracer(); RecordingPageCacheTracer tracer = new RecordingPageCacheTracer();


MuninnPageCache pageCache = new MuninnPageCache( fs, 2, 8, tracer ); MuninnPageCache pageCache = createPageCache( fs, 2, 8, tracer );
PagedFile pagedFile = pageCache.map( file, 8 ); PagedFile pagedFile = pageCache.map( file, 8 );


try ( PageCursor cursor = pagedFile.io( 0, PF_SHARED_LOCK ) ) try ( PageCursor cursor = pagedFile.io( 0, PF_SHARED_LOCK ) )
Expand Down Expand Up @@ -121,7 +124,7 @@ public void mustFlushDirtyPagesOnEvictingFirstPage() throws Exception
writeInitialDataTo( file ); writeInitialDataTo( file );
RecordingPageCacheTracer tracer = new RecordingPageCacheTracer(); RecordingPageCacheTracer tracer = new RecordingPageCacheTracer();


MuninnPageCache pageCache = new MuninnPageCache( fs, 2, 8, tracer ); MuninnPageCache pageCache = createPageCache( fs, 2, 8, tracer );
PagedFile pagedFile = pageCache.map( file, 8 ); PagedFile pagedFile = pageCache.map( file, 8 );


try ( PageCursor cursor = pagedFile.io( 0, PF_EXCLUSIVE_LOCK ) ) try ( PageCursor cursor = pagedFile.io( 0, PF_EXCLUSIVE_LOCK ) )
Expand Down Expand Up @@ -149,7 +152,7 @@ public void mustFlushDirtyPagesOnEvictingLastPage() throws Exception
writeInitialDataTo( file ); writeInitialDataTo( file );
RecordingPageCacheTracer tracer = new RecordingPageCacheTracer(); RecordingPageCacheTracer tracer = new RecordingPageCacheTracer();


MuninnPageCache pageCache = new MuninnPageCache( fs, 2, 8, tracer ); MuninnPageCache pageCache = createPageCache( fs, 2, 8, tracer );
PagedFile pagedFile = pageCache.map( file, 8 ); PagedFile pagedFile = pageCache.map( file, 8 );


try ( PageCursor cursor = pagedFile.io( 1, PF_EXCLUSIVE_LOCK ) ) try ( PageCursor cursor = pagedFile.io( 1, PF_EXCLUSIVE_LOCK ) )
Expand Down Expand Up @@ -177,7 +180,7 @@ public void mustFlushDirtyPagesOnEvictingAllPages() throws Exception
writeInitialDataTo( file ); writeInitialDataTo( file );
RecordingPageCacheTracer tracer = new RecordingPageCacheTracer(); RecordingPageCacheTracer tracer = new RecordingPageCacheTracer();


MuninnPageCache pageCache = new MuninnPageCache( fs, 4, 8, tracer ); MuninnPageCache pageCache = createPageCache( fs, 4, 8, tracer );
PagedFile pagedFile = pageCache.map( file, 8 ); PagedFile pagedFile = pageCache.map( file, 8 );


try ( PageCursor cursor = pagedFile.io( 0, PF_EXCLUSIVE_LOCK | PF_NO_GROW ) ) try ( PageCursor cursor = pagedFile.io( 0, PF_EXCLUSIVE_LOCK | PF_NO_GROW ) )
Expand Down Expand Up @@ -209,7 +212,7 @@ public void closingTheCursorMustUnlockModifiedPage() throws Exception
{ {
writeInitialDataTo( file ); writeInitialDataTo( file );


final MuninnPageCache pageCache = new MuninnPageCache( fs, 2, 8, PageCacheTracer.NULL ); final MuninnPageCache pageCache = createPageCache( fs, 2, 8, PageCacheTracer.NULL );
final PagedFile pagedFile = pageCache.map( file, 8 ); final PagedFile pagedFile = pageCache.map( file, 8 );


Future<?> task = executor.submit( new Runnable() Future<?> task = executor.submit( new Runnable()
Expand Down Expand Up @@ -270,7 +273,7 @@ public void writeAll( ByteBuffer src, long position ) throws IOException
} }
}; };


MuninnPageCache pageCache = new MuninnPageCache( fs, 2, 8, PageCacheTracer.NULL ); MuninnPageCache pageCache = createPageCache( fs, 2, 8, PageCacheTracer.NULL );
final PagedFile pagedFile = pageCache.map( file, 8 ); final PagedFile pagedFile = pageCache.map( file, 8 );


Future<?> task = executor.submit( new Callable<Object>() Future<?> task = executor.submit( new Callable<Object>()
Expand Down
Expand Up @@ -23,19 +23,21 @@
import java.nio.file.Files; import java.nio.file.Files;


import org.neo4j.io.fs.DefaultFileSystemAbstraction; import org.neo4j.io.fs.DefaultFileSystemAbstraction;
import org.neo4j.io.pagecache.tracing.PageCacheTracer; import org.neo4j.io.pagecache.PageSwapperFactory;
import org.neo4j.io.pagecache.PagedFile; import org.neo4j.io.pagecache.PagedFile;
import org.neo4j.io.pagecache.RunnablePageCache; import org.neo4j.io.pagecache.RunnablePageCache;
import org.neo4j.io.pagecache.impl.SingleFilePageSwapperFactory;
import org.neo4j.io.pagecache.impl.muninn.MuninnPageCache; import org.neo4j.io.pagecache.impl.muninn.MuninnPageCache;
import org.neo4j.io.pagecache.tracing.PageCacheTracer;


import static java.lang.System.getProperty; import static java.lang.System.getProperty;
import static java.nio.file.Paths.get; import static java.nio.file.Paths.get;
import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.Matchers.greaterThanOrEqualTo; import static org.hamcrest.Matchers.greaterThanOrEqualTo;
import static org.hamcrest.Matchers.lessThan; import static org.hamcrest.Matchers.lessThan;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
import static org.neo4j.io.pagecache.tracing.PageCacheTracer.NULL;
import static org.neo4j.io.pagecache.stress.StressTestRecord.SizeOfCounter; import static org.neo4j.io.pagecache.stress.StressTestRecord.SizeOfCounter;
import static org.neo4j.io.pagecache.tracing.PageCacheTracer.NULL;


/** /**
* A stress test for page cache(s). * A stress test for page cache(s).
Expand Down Expand Up @@ -85,12 +87,12 @@ private PageCacheStressTest( Builder builder )


public void run() throws Exception public void run() throws Exception
{ {
DefaultFileSystemAbstraction fs = new DefaultFileSystemAbstraction();
PageSwapperFactory swapperFactory = new SingleFilePageSwapperFactory( fs );
RunnablePageCache pageCacheUnderTest = new MuninnPageCache( RunnablePageCache pageCacheUnderTest = new MuninnPageCache(
new DefaultFileSystemAbstraction(), swapperFactory, numberOfCachePages, cachePageSize, tracer );
numberOfCachePages, cachePageSize, tracer );
RunnablePageCache pageCacheKeepingCount = new MuninnPageCache( RunnablePageCache pageCacheKeepingCount = new MuninnPageCache(
new DefaultFileSystemAbstraction(), swapperFactory, numberOfCachePages, cachePageSize, tracer );
numberOfCachePages, cachePageSize, tracer );


Thread thread1 = new Thread( pageCacheUnderTest ); Thread thread1 = new Thread( pageCacheUnderTest );
Thread thread2 = new Thread( pageCacheKeepingCount ); Thread thread2 = new Thread( pageCacheKeepingCount );
Expand Down
Expand Up @@ -19,15 +19,13 @@
*/ */
package org.neo4j.kernel.impl.store.format.v2_2; package org.neo4j.kernel.impl.store.format.v2_2;


import java.io.File;

import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;


import java.io.File;

import org.neo4j.io.pagecache.PageCache; import org.neo4j.io.pagecache.PageCache;
import org.neo4j.io.pagecache.tracing.PageCacheTracer;
import org.neo4j.io.pagecache.impl.muninn.MuninnPageCache;
import org.neo4j.kernel.DefaultIdGeneratorFactory; import org.neo4j.kernel.DefaultIdGeneratorFactory;
import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.configuration.Config;
import org.neo4j.kernel.impl.store.NeoStore; import org.neo4j.kernel.impl.store.NeoStore;
Expand All @@ -41,12 +39,11 @@
import org.neo4j.kernel.impl.util.StringLogger; import org.neo4j.kernel.impl.util.StringLogger;
import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.kernel.monitoring.Monitors;
import org.neo4j.test.EphemeralFileSystemRule; import org.neo4j.test.EphemeralFileSystemRule;
import org.neo4j.test.PageCacheRule;


import static java.util.Arrays.asList; import static java.util.Arrays.asList;

import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;

import static org.neo4j.kernel.impl.store.NeoStore.DEFAULT_NAME; import static org.neo4j.kernel.impl.store.NeoStore.DEFAULT_NAME;
import static org.neo4j.kernel.impl.store.StoreFactory.NODE_STORE_NAME; import static org.neo4j.kernel.impl.store.StoreFactory.NODE_STORE_NAME;
import static org.neo4j.kernel.impl.store.impl.StoreMatchers.records; import static org.neo4j.kernel.impl.store.impl.StoreMatchers.records;
Expand All @@ -59,14 +56,16 @@ public class NodeFormatComplianceTest
{ {
@Rule @Rule
public EphemeralFileSystemRule fsRule = new EphemeralFileSystemRule(); public EphemeralFileSystemRule fsRule = new EphemeralFileSystemRule();
@Rule
public PageCacheRule pageCacheRule = new PageCacheRule( false ); // TODO that we have to set this to false is indicative of bugs in this code!
private PageCache pageCache; private PageCache pageCache;
private StoreFactory storeFactory; private StoreFactory storeFactory;
private final File storeDir = new File( "dir" ).getAbsoluteFile(); private final File storeDir = new File( "dir" ).getAbsoluteFile();


@Before @Before
public void setup() public void setup()
{ {
pageCache = new MuninnPageCache( fsRule.get(), 1024, 1024, PageCacheTracer.NULL ); pageCache = pageCacheRule.getPageCache( fsRule.get() );
storeFactory = new StoreFactory( StoreFactory.configForStoreDir( new Config(), storeDir ), storeFactory = new StoreFactory( StoreFactory.configForStoreDir( new Config(), storeDir ),
new DefaultIdGeneratorFactory(), pageCache, fsRule.get(), StringLogger.DEV_NULL, new Monitors() ); new DefaultIdGeneratorFactory(), pageCache, fsRule.get(), StringLogger.DEV_NULL, new Monitors() );
} }
Expand All @@ -92,6 +91,8 @@ public void readsRecords() throws Throwable


// Then // Then
assertThat( records( store ), equalTo( asList( expectedRecord ) ) ); assertThat( records( store ), equalTo( asList( expectedRecord ) ) );
store.stop();
store.shutdown();
} }


@Test @Test
Expand All @@ -117,6 +118,7 @@ public void writesRecords() throws Throwable
// Then // Then
NodeStore nodeStore = storeFactory.newNodeStore(); NodeStore nodeStore = storeFactory.newNodeStore();
NodeRecord record = nodeStore.getRecord( expectedRecord.getId() ); NodeRecord record = nodeStore.getRecord( expectedRecord.getId() );
nodeStore.close();
assertThat( record, equalTo( expectedRecord ) ); assertThat( record, equalTo( expectedRecord ) );
} }


Expand All @@ -142,6 +144,8 @@ public void customCursorShouldReadNextRel() throws Throwable


// When // When
long firstRelId = cursor.firstRelationship(); long firstRelId = cursor.firstRelationship();
store.stop();
store.shutdown();


// Then // Then
assertThat( firstRelId, equalTo( nextRel ) ); assertThat( firstRelId, equalTo( nextRel ) );
Expand Down
Expand Up @@ -19,21 +19,22 @@
*/ */
package org.neo4j.kernel.impl.store.format.v2_2; package org.neo4j.kernel.impl.store.format.v2_2;


import java.io.File; import org.junit.After;
import java.io.IOException;

import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;


import org.neo4j.io.pagecache.tracing.PageCacheTracer; import java.io.File;
import java.io.IOException;

import org.neo4j.io.pagecache.PageCache;
import org.neo4j.io.pagecache.PageCursor; import org.neo4j.io.pagecache.PageCursor;
import org.neo4j.io.pagecache.PagedFile; import org.neo4j.io.pagecache.PagedFile;
import org.neo4j.io.pagecache.StubPageCursor; import org.neo4j.io.pagecache.StubPageCursor;
import org.neo4j.io.pagecache.impl.muninn.MuninnPageCache;
import org.neo4j.kernel.impl.store.format.Store; import org.neo4j.kernel.impl.store.format.Store;
import org.neo4j.kernel.impl.store.standard.StoreFormat; import org.neo4j.kernel.impl.store.standard.StoreFormat;
import org.neo4j.kernel.impl.store.standard.StoreToolkit; import org.neo4j.kernel.impl.store.standard.StoreToolkit;
import org.neo4j.test.EphemeralFileSystemRule; import org.neo4j.test.EphemeralFileSystemRule;
import org.neo4j.test.PageCacheRule;


import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;


Expand All @@ -43,12 +44,14 @@ public abstract class RecordFormatTest<FORMAT extends StoreFormat<RECORD, CURSOR
{ {
@Rule @Rule
public EphemeralFileSystemRule fsRule = new EphemeralFileSystemRule(); public EphemeralFileSystemRule fsRule = new EphemeralFileSystemRule();
@Rule
public PageCacheRule pageCacheRule = new PageCacheRule( false ); // TODO that we have to set this to false is indicative of bugs in this code!


protected StubPageCursor pageCursor; protected StubPageCursor pageCursor;
protected final FORMAT format; protected final FORMAT format;
protected StoreFormat.RecordFormat<RECORD> recordFormat; protected StoreFormat.RecordFormat<RECORD> recordFormat;
protected StoreToolkit storeToolkit; protected StoreToolkit storeToolkit;
protected MuninnPageCache pageCache; protected PageCache pageCache;
protected PagedFile pagedFile; protected PagedFile pagedFile;


public RecordFormatTest( FORMAT format ) public RecordFormatTest( FORMAT format )
Expand All @@ -62,11 +65,17 @@ public void setup() throws IOException
{ {
int pageSize = 1024; int pageSize = 1024;
pageCursor = new StubPageCursor( 0l, pageSize ); pageCursor = new StubPageCursor( 0l, pageSize );
pageCache = new MuninnPageCache( fsRule.get(), 1024, 1024, PageCacheTracer.NULL ); pageCache = pageCacheRule.getPageCache( fsRule.get() );
pagedFile = pageCache.map( new File("store"), 1024 ); pagedFile = pageCache.map( new File("store"), 1024 );
storeToolkit = new StoreToolkit( format.recordSize( null ), pageSize, 0, null, null ); storeToolkit = new StoreToolkit( format.recordSize( null ), pageSize, 0, null, null );
} }


@After
public void tearDown() throws IOException
{
pagedFile.close();
}

// //
// Utilities // Utilities
// //
Expand Down
Expand Up @@ -19,15 +19,13 @@
*/ */
package org.neo4j.kernel.impl.store.format.v2_2; package org.neo4j.kernel.impl.store.format.v2_2;


import java.io.File;

import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;


import java.io.File;

import org.neo4j.io.pagecache.PageCache; import org.neo4j.io.pagecache.PageCache;
import org.neo4j.io.pagecache.tracing.PageCacheTracer;
import org.neo4j.io.pagecache.impl.muninn.MuninnPageCache;
import org.neo4j.kernel.DefaultIdGeneratorFactory; import org.neo4j.kernel.DefaultIdGeneratorFactory;
import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.configuration.Config;
import org.neo4j.kernel.impl.store.NeoStore; import org.neo4j.kernel.impl.store.NeoStore;
Expand All @@ -39,12 +37,11 @@
import org.neo4j.kernel.impl.util.StringLogger; import org.neo4j.kernel.impl.util.StringLogger;
import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.kernel.monitoring.Monitors;
import org.neo4j.test.EphemeralFileSystemRule; import org.neo4j.test.EphemeralFileSystemRule;
import org.neo4j.test.PageCacheRule;


import static java.util.Arrays.asList; import static java.util.Arrays.asList;

import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;

import static org.neo4j.kernel.impl.store.NeoStore.DEFAULT_NAME; import static org.neo4j.kernel.impl.store.NeoStore.DEFAULT_NAME;
import static org.neo4j.kernel.impl.store.StoreFactory.RELATIONSHIP_STORE_NAME; import static org.neo4j.kernel.impl.store.StoreFactory.RELATIONSHIP_STORE_NAME;
import static org.neo4j.kernel.impl.store.impl.StoreMatchers.records; import static org.neo4j.kernel.impl.store.impl.StoreMatchers.records;
Expand All @@ -57,14 +54,16 @@ public class RelationshipFormatComplianceTest
{ {
@Rule @Rule
public EphemeralFileSystemRule fsRule = new EphemeralFileSystemRule(); public EphemeralFileSystemRule fsRule = new EphemeralFileSystemRule();
@Rule
public PageCacheRule pageCacheRule = new PageCacheRule( false ); // TODO that we have to set this to false is indicative of bugs in this code!
private PageCache pageCache; private PageCache pageCache;
private StoreFactory storeFactory; private StoreFactory storeFactory;
private final File storeDir = new File( "dir" ).getAbsoluteFile(); private final File storeDir = new File( "dir" ).getAbsoluteFile();


@Before @Before
public void setup() public void setup()
{ {
pageCache = new MuninnPageCache( fsRule.get(), 1024, 1024, PageCacheTracer.NULL ); pageCache = pageCacheRule.getPageCache( fsRule.get() );
storeFactory = new StoreFactory( StoreFactory.configForStoreDir( new Config(), storeDir ), new DefaultIdGeneratorFactory(), pageCache, fsRule.get(), StringLogger.DEV_NULL, new Monitors() ); storeFactory = new StoreFactory( StoreFactory.configForStoreDir( new Config(), storeDir ), new DefaultIdGeneratorFactory(), pageCache, fsRule.get(), StringLogger.DEV_NULL, new Monitors() );
} }


Expand All @@ -81,15 +80,18 @@ public void readsRecords() throws Throwable
neoStore.close(); neoStore.close();


// When // When
StandardStore<RelationshipRecord, RelationshipStoreFormat_v2_2.RelationshipRecordCursor> store = new RelationshipStoreFormat_v2_2 format = new RelationshipStoreFormat_v2_2();
StandardStore<>( new RelationshipStoreFormat_v2_2(), new File( storeDir, DEFAULT_NAME + RELATIONSHIP_STORE_NAME ), File fileName = new File( storeDir, DEFAULT_NAME + RELATIONSHIP_STORE_NAME );
new TestStoreIdGenerator(), new MuninnPageCache( fsRule.get(), 1024, 1024, PageCacheTracer.NULL ), fsRule.get(), TestStoreIdGenerator idGenerator = new TestStoreIdGenerator();
StringLogger.DEV_NULL ); StandardStore<RelationshipRecord, RelationshipStoreFormat_v2_2.RelationshipRecordCursor> store =
new StandardStore<>( format, fileName, idGenerator, pageCache, fsRule.get(), StringLogger.DEV_NULL );
store.init(); store.init();
store.start(); store.start();


// Then // Then
assertThat( records( store ), equalTo( asList( expectedRecord ) ) ); assertThat( records( store ), equalTo( asList( expectedRecord ) ) );
store.stop();
store.shutdown();
} }


@Test @Test
Expand All @@ -98,10 +100,11 @@ public void writesRecords() throws Throwable
// Given // Given
storeFactory.createNeoStore().close(); // NodeStore wont start unless it's child stores exist, so create those storeFactory.createNeoStore().close(); // NodeStore wont start unless it's child stores exist, so create those


StandardStore<RelationshipRecord, RelationshipStoreFormat_v2_2.RelationshipRecordCursor> store = new RelationshipStoreFormat_v2_2 format = new RelationshipStoreFormat_v2_2();
StandardStore<>( new RelationshipStoreFormat_v2_2(), new File( storeDir, DEFAULT_NAME + RELATIONSHIP_STORE_NAME ), File fileName = new File( storeDir, DEFAULT_NAME + RELATIONSHIP_STORE_NAME );
new TestStoreIdGenerator(), new MuninnPageCache( fsRule.get(), 1024, 1024, PageCacheTracer.NULL ), fsRule.get(), TestStoreIdGenerator idGenerator = new TestStoreIdGenerator();
StringLogger.DEV_NULL ); StandardStore<RelationshipRecord, RelationshipStoreFormat_v2_2.RelationshipRecordCursor> store =
new StandardStore<>( format, fileName, idGenerator, pageCache, fsRule.get(), StringLogger.DEV_NULL );
store.init(); store.init();
store.start(); store.start();


Expand All @@ -117,5 +120,6 @@ public void writesRecords() throws Throwable
RelationshipStore relStore = storeFactory.newRelationshipStore(); RelationshipStore relStore = storeFactory.newRelationshipStore();
RelationshipRecord record = relStore.getRecord( expectedRecord.getId() ); RelationshipRecord record = relStore.getRecord( expectedRecord.getId() );
assertThat( record, equalTo( expectedRecord ) ); assertThat( record, equalTo( expectedRecord ) );
relStore.close();
} }
} }

0 comments on commit ef2282e

Please sign in to comment.