public static BatchInserter inserter( File databaseDirectory, FileSystemAbstraction fs, Map<String,String> config ) throws IOException { return inserter( databaseDirectory, fs, config, loadKernelExtension() ); }
public static BatchInserter inserter( File databaseDirectory, FileSystemAbstraction fs ) throws IOException { return inserter( databaseDirectory, fs, stringMap(), loadKernelExtension() ); }
public static BatchInserter inserter( File databaseDirectory, Map<String,String> config ) throws IOException { DefaultFileSystemAbstraction fileSystem = createFileSystem(); BatchInserter inserter = inserter( databaseDirectory, fileSystem, config, loadKernelExtension() ); return new FileSystemClosingBatchInserter( inserter, (IndexConfigStoreProvider) inserter, fileSystem ); }
/** * Get a {@link BatchInserter} given a store directory. * * @param databaseDirectory directory where particular neo4j database is located * @return a new {@link BatchInserter} * @throws IOException if there is an IO error */ public static BatchInserter inserter( File databaseDirectory ) throws IOException { DefaultFileSystemAbstraction fileSystem = createFileSystem(); BatchInserter batchInserter = inserter( databaseDirectory, fileSystem, stringMap() ); return new FileSystemClosingBatchInserter( batchInserter, (IndexConfigStoreProvider) batchInserter, fileSystem ); }
private BatchInserter newBatchInserterWithIndexProvider( KernelExtensionFactory<?> provider, IndexProviderDescriptor providerDescriptor ) throws Exception { Map<String,String> configuration = configuration(); configuration.put( GraphDatabaseSettings.default_schema_provider.name(), providerDescriptor.name() ); return BatchInserters.inserter( localTestDirectory.databaseDir(), fileSystemRule.get(), configuration, singletonList( provider ) ); }
private BatchInserter newBatchInserter( Config config ) throws Exception { return BatchInserters.inserter( storeDir.databaseDir(), fileSystemRule.get(), config.getRaw() ); }
private BatchInserter newBatchInserter() throws Exception { return BatchInserters.inserter( localTestDirectory.databaseDir(), fileSystemRule.get(), configuration() ); }
@Test void createBatchIndexFromAnyIndexStoreProvider() throws Exception { createEndCloseIndexProvider( BatchInserters.inserter( getStoreDir() ) ); createEndCloseIndexProvider( BatchInserters.inserter( getStoreDir(), fileSystem ) ); createEndCloseIndexProvider( BatchInserters.inserter( getStoreDir(), getConfig() ) ); createEndCloseIndexProvider( BatchInserters.inserter( getStoreDir(), getConfigWithProvider(), getExtensions() ) ); createEndCloseIndexProvider( BatchInserters.inserter( getStoreDir(), fileSystem, getConfig() ) ); createEndCloseIndexProvider( BatchInserters.inserter( getStoreDir(), fileSystem, getConfigWithProvider(), getExtensions() ) ); }
@Test public void automaticallyCloseCreatedFileSystemOnShutdown() throws Exception { verifyInserterFileSystemClose( inserter( getStoreDir() ) ); verifyInserterFileSystemClose( inserter( getStoreDir(), getConfig() ) ); verifyInserterFileSystemClose( inserter( getStoreDir(), getConfig(), getKernelExtensions() ) ); }
@Test public void messagesLogGetsClosed() throws Exception { File storeDir = localTestDirectory.databaseDir(); BatchInserter inserter = BatchInserters.inserter( storeDir, fileSystemRule.get(), stringMap() ); inserter.shutdown(); assertTrue( new File( storeDir, INTERNAL_LOG_FILE ).delete() ); }
@Test public void providedFileSystemNotClosedAfterShutdown() throws IOException { EphemeralFileSystemAbstraction fs = fileSystemRule.get(); verifyProvidedFileSystemOpenAfterShutdown( inserter( getStoreDir(), fs ), fs ); verifyProvidedFileSystemOpenAfterShutdown( inserter( getStoreDir(), fs, getConfig() ), fs ); verifyProvidedFileSystemOpenAfterShutdown( inserter( getStoreDir(), fs, getConfig(), getKernelExtensions() ), fs ); }
@BeforeClass public static void startGlobalInserter() throws IOException { // Global inserter can be used in tests which simply want to verify "local" behaviour, // e.g. create a node with some properties and read them back. globalInserter = BatchInserters.inserter( globalTestDirectory.directory( "global" ), fileSystemRule.get(), stringMap() ); }
@Test public void testCreatesStoreLockFile() throws Exception { // Given DatabaseLayout databaseLayout = testDirectory.databaseLayout(); // When BatchInserter inserter = BatchInserters.inserter( databaseLayout.databaseDirectory(), fileSystemRule.get() ); // Then assertThat( databaseLayout.getStoreLayout().storeLockFile().exists(), equalTo( true ) ); inserter.shutdown(); }
@Test public void givenBatchInserterWhenArrayPropertyUpdated4TimesThenShouldNotFail() throws IOException { BatchInserter batchInserter = BatchInserters.inserter( testDirectory.databaseDir(), fileSystemRule.get() ); long nodeId = batchInserter.createNode( Collections.emptyMap() ); for ( int i = 0; i < 4; i++ ) { batchInserter.setNodeProperty( nodeId, "array", new byte[]{2, 3, 98, 1, 43, 50, 3, 33, 51, 55, 116, 16, 23, 56, 9, -10, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1} ); } batchInserter.getNodeProperties( nodeId ); //fails here batchInserter.shutdown(); } }
@Test public void testHonorsPassedInParams() throws Exception { BatchInserter inserter = BatchInserters.inserter( testDirectory.databaseDir(), fileSystemRule.get(), stringMap( GraphDatabaseSettings.pagecache_memory.name(), "280K" ) ); NeoStores neoStores = ReflectionUtil.getPrivateField( inserter, "neoStores", NeoStores.class ); PageCache pageCache = ReflectionUtil.getPrivateField( neoStores, "pageCache", PageCache.class ); inserter.shutdown(); long mappedMemoryTotalSize = MuninnPageCache.memoryRequiredForPages( pageCache.maxCachedPages() ); assertThat( "memory mapped config is active", mappedMemoryTotalSize, is( allOf( greaterThan( kibiBytes( 270 ) ), lessThan( kibiBytes( 290 ) ) ) ) ); }
@Test( expected = ReservedIdException.class ) public void makeSureCantCreateNodeWithMagicNumber() throws IOException { // given File path = dbRule.databaseLayout().databaseDirectory(); BatchInserter inserter = BatchInserters.inserter( path, fileSystemRule.get() ); try { // when long id = IdGeneratorImpl.INTEGER_MINUS_ONE; inserter.createNode( id, null ); // then throws } finally { inserter.shutdown(); } } }
@Test public void shouldNotIndexNodesWithWrongLabel() throws Exception { // Given File file = new File( dbRule.getDatabaseDirAbsolutePath() ); BatchInserter inserter = BatchInserters.inserter( file, fileSystemRule.get() ); inserter.createNode( map("name", "Bob"), label( "User" ), label("Admin")); inserter.createDeferredSchemaIndex( label( "Banana" ) ).on( "name" ).create(); // When inserter.shutdown(); // Then GraphDatabaseService db = dbRule.getGraphDatabaseAPI(); try ( Transaction tx = db.beginTx() ) { assertThat( count( db.findNodes( label( "Banana" ), "name", "Bob" ) ), equalTo( 0L ) ); } finally { db.shutdown(); } }
@Test public void testFailsOnExistingStoreLockFile() throws IOException { // Given StoreLayout storeLayout = testDirectory.storeLayout(); try ( FileSystemAbstraction fileSystemAbstraction = new DefaultFileSystemAbstraction(); StoreLocker lock = new StoreLocker( fileSystemAbstraction, storeLayout ) ) { lock.checkLock(); // Then expected.expect( StoreLockException.class ); expected.expectMessage( "Unable to obtain lock on store lock file" ); // When BatchInserters.inserter( storeLayout.databaseLayout( "any" ).databaseDirectory(), fileSystemAbstraction ); } } }
@Test public void shouldIndexNodesWithMultipleLabels() throws Exception { // Given File path = dbRule.databaseLayout().databaseDirectory(); BatchInserter inserter = BatchInserters.inserter( path, fileSystemRule.get() ); inserter.createNode( map( "name", "Bob" ), label( "User" ), label( "Admin" ) ); inserter.createDeferredSchemaIndex( label( "User" ) ).on( "name" ).create(); inserter.createDeferredSchemaIndex( label( "Admin" ) ).on( "name" ).create(); // When inserter.shutdown(); // Then GraphDatabaseService db = dbRule.getGraphDatabaseAPI(); try ( Transaction tx = db.beginTx() ) { assertThat( count( db.findNodes( label( "User" ), "name", "Bob" ) ), equalTo(1L) ); assertThat( count( db.findNodes( label( "Admin" ), "name", "Bob" ) ), equalTo(1L) ); } finally { db.shutdown(); } }
@Test public void lazyLoadWithinWriteTransaction() throws Exception { // Given FileSystemAbstraction fileSystem = fs.get(); BatchInserter inserter = BatchInserters.inserter( testDirectory.databaseDir(), fileSystem ); int count = 3000; long nodeId = inserter.createNode( mapWithManyProperties( count /* larger than initial property index load threshold */ ) ); inserter.shutdown(); GraphDatabaseService db = new TestGraphDatabaseFactory().setFileSystem( fileSystem ).newImpermanentDatabase( testDirectory.databaseDir() ); // When try ( Transaction tx = db.beginTx() ) { db.createNode(); Node node = db.getNodeById( nodeId ); // Then assertEquals( count, Iterables.count( node.getPropertyKeys() ) ); tx.success(); } finally { db.shutdown(); } }