@Test void startTestDatabaseOnProvidedNonAbsoluteFile() { File directory = new File( "notAbsoluteDirectory" ); new TestGraphDatabaseFactory().newImpermanentDatabase( directory ).shutdown(); }
private File provideStoreDirectory() { GraphDatabaseService db = null; File homeStoreDir = testDir.databaseDir( "home" ); try { db = new TestGraphDatabaseFactory().newEmbeddedDatabase( homeStoreDir ); try ( Transaction transaction = db.beginTx() ) { db.createNode(); transaction.success(); } } finally { if ( db != null ) { db.shutdown(); } } return homeStoreDir; }
@Test public void shouldWriteToInternalDiagnosticsLog() throws Exception { // Given new TestGraphDatabaseFactory().newEmbeddedDatabaseBuilder( testDir.databaseDir() ) .setConfig( GraphDatabaseSettings.logs_directory, testDir.directory("logs").getAbsolutePath() ) .newGraphDatabase().shutdown(); File internalLog = new File( testDir.directory( "logs" ), INTERNAL_LOG_FILE ); // Then assertThat( internalLog.isFile(), is( true ) ); assertThat( internalLog.length(), greaterThan( 0L ) ); assertEquals( 1, countOccurrences( internalLog, "Database graph.db is ready." ) ); assertEquals( 2, countOccurrences( internalLog, "Database graph.db is unavailable." ) ); }
@Test public void shouldGiveNiceErrorWhenShutdownKernelApi() { GraphDatabaseService graphDb = graph; Node node = graphDb.createNode(); commit(); graphDb.shutdown(); try { asList( node.getLabels().iterator() ); fail( "Did not get a nice exception" ); } catch ( DatabaseShutdownException e ) { // good } }
@Test public void canFormatNode() { GraphDatabaseService db = new TestGraphDatabaseFactory().newImpermanentDatabase(); try ( Transaction transaction = db.beginTx() ) { final Node n = db.createNode(); json.assemble( new NodeRepresentation( n ) ); } finally { db.shutdown(); } assertTrue( stream.toString().contains( "\"self\" : \"http://localhost/node/0\"," ) ); } @Test
@Test public void shouldNotWriteDebugToInternalDiagnosticsLogByDefault() throws Exception { // Given GraphDatabaseService db = new TestGraphDatabaseFactory().newEmbeddedDatabaseBuilder( testDir.storeDir() ) .setConfig( GraphDatabaseSettings.logs_directory, testDir.directory("logs").getAbsolutePath() ) .newGraphDatabase(); // When LogService logService = ((GraphDatabaseAPI) db).getDependencyResolver().resolveDependency( LogService.class ); logService.getInternalLog( getClass() ).debug( "A debug entry" ); db.shutdown(); File internalLog = new File( testDir.directory( "logs" ), INTERNAL_LOG_FILE ); // Then assertThat( internalLog.isFile(), is( true ) ); assertThat( internalLog.length(), greaterThan( 0L ) ); assertEquals( 0, countOccurrences( internalLog, "A debug entry" ) ); }
@Test public void shouldBeAbleToMakeRepeatedCallsToSetNodeProperty() throws Exception { File file = dbRule.databaseLayout().databaseDirectory(); BatchInserter inserter = BatchInserters.inserter( file, fileSystemRule.get() ); long nodeId = inserter.createNode( Collections.emptyMap() ); final Object finalValue = 87; inserter.setNodeProperty( nodeId, "a", "some property value" ); inserter.setNodeProperty( nodeId, "a", 42 ); inserter.setNodeProperty( nodeId, "a", 3.14 ); inserter.setNodeProperty( nodeId, "a", true ); inserter.setNodeProperty( nodeId, "a", finalValue ); inserter.shutdown(); GraphDatabaseService db = dbRule.getGraphDatabaseAPI(); try ( Transaction ignored = db.beginTx() ) { assertThat( db.getNodeById( nodeId ).getProperty( "a" ), equalTo( finalValue ) ); } finally { db.shutdown(); } }
public static DbRepresentation of( File storeDir, boolean includeIndexes, Config config ) { GraphDatabaseBuilder builder = new TestGraphDatabaseFactory().newEmbeddedDatabaseBuilder( storeDir ); builder.setConfig( config.getRaw() ); GraphDatabaseService db = builder.newGraphDatabase(); try { return of( db, includeIndexes ); } finally { db.shutdown(); } }
@Test public void databaseShutdownDuringConstantCheckPointing() throws InterruptedException { GraphDatabaseService db = builder .setConfig( GraphDatabaseSettings.check_point_interval_time, 0 + "ms" ) .setConfig( GraphDatabaseSettings.check_point_interval_tx, "1" ) .setConfig( GraphDatabaseSettings.logical_log_rotation_threshold, "1g" ) .newGraphDatabase(); try ( Transaction tx = db.beginTx() ) { db.createNode(); tx.success(); } Thread.sleep( 10 ); db.shutdown(); }
@Test public void shouldBeAbleToRecoverBrokenStore() throws Exception { try ( FileSystemAbstraction fileSystemAbstraction = createAndCrashWithDefaultConfig() ) { PageCache pageCache = pageCacheRule.getPageCache( fileSystemAbstraction ); RecoveryRequiredChecker recoverer = getRecoveryCheckerWithDefaultConfig( fileSystemAbstraction, pageCache ); assertThat( recoverer.isRecoveryRequiredAt( databaseLayout ), is( true ) ); new TestGraphDatabaseFactory().setFileSystem( fileSystemAbstraction ).newImpermanentDatabase( storeDir ).shutdown(); assertThat( recoverer.isRecoveryRequiredAt( databaseLayout ), is( false ) ); } }
@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(); } }
private static void startStopDatabase( File storeDir ) { GraphDatabaseService databaseService = new TestGraphDatabaseFactory().newEmbeddedDatabaseBuilder( storeDir ) .setConfig( GraphDatabaseSettings.allow_upgrade, "true" ).newGraphDatabase(); databaseService.shutdown(); } }
private void prepare34DatabaseWithNodes() { GraphDatabaseService embeddedDatabase = new TestGraphDatabaseFactory().newEmbeddedDatabase( storeDir ); try { try ( Transaction transaction = embeddedDatabase.beginTx() ) { for ( int i = 0; i < 10; i++ ) { embeddedDatabase.createNode( Label.label( "label" + i ) ); } transaction.success(); } } finally { embeddedDatabase.shutdown(); } fileSystem.deleteFile( nativeLabelIndex ); }
@Test public void canRemoveFilesAndReinvokeShutdown() throws IOException { GraphDatabaseAPI databaseAPI = (GraphDatabaseAPI) this.graphDb; FileSystemAbstraction fileSystemAbstraction = getDatabaseFileSystem( databaseAPI ); graphDb.shutdown(); fileSystemAbstraction.deleteRecursively( databaseAPI.databaseLayout().databaseDirectory() ); graphDb.shutdown(); }
@Test public void testStartEntryWrittenOnceOnRollback() throws Exception { File storeDir = testDirectory.databaseDir(); final GraphDatabaseService db = new TestGraphDatabaseFactory().setFileSystem( fs.get() ).newImpermanentDatabase( storeDir ); createSomeTransactions( db ); EphemeralFileSystemAbstraction snapshot = fs.snapshot( db::shutdown ); new TestGraphDatabaseFactory().setFileSystem( snapshot ).newImpermanentDatabase( storeDir ).shutdown(); }
@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(); } }