@Test public void shouldWantToRecoverBrokenStore() throws Exception { try ( FileSystemAbstraction fileSystemAbstraction = createAndCrashWithDefaultConfig() ) { PageCache pageCache = pageCacheRule.getPageCache( fileSystemAbstraction ); RecoveryRequiredChecker recoverer = getRecoveryCheckerWithDefaultConfig( fileSystemAbstraction, pageCache ); assertThat( recoverer.isRecoveryRequiredAt( databaseLayout ), is( true ) ); } }
private FileSystemAbstraction createAndCrashWithDefaultConfig() { return createSomeDataAndCrash( storeDir, fileSystem, Config.defaults() ); }
private RecoveryRequiredChecker getRecoveryCheckerWithDefaultConfig( FileSystemAbstraction fileSystem, PageCache pageCache ) { return getRecoveryChecker( fileSystem, pageCache, Config.defaults() ); }
private void recoverBrokenStoreWithConfig( Config config ) throws IOException { try ( FileSystemAbstraction fileSystemAbstraction = createSomeDataAndCrash( storeDir, fileSystem, config ) ) { PageCache pageCache = pageCacheRule.getPageCache( fileSystemAbstraction ); RecoveryRequiredChecker recoverer = getRecoveryChecker( fileSystemAbstraction, pageCache, config ); assertThat( recoverer.isRecoveryRequiredAt( databaseLayout ), is( true ) ); new TestGraphDatabaseFactory() .setFileSystem( fileSystemAbstraction ) .newEmbeddedDatabaseBuilder( storeDir ) .setConfig( config.getRaw() ) .newGraphDatabase() .shutdown(); assertThat( recoverer.isRecoveryRequiredAt( databaseLayout ), is( false ) ); } }
@Test public void shouldBeAbleToRecoverBrokenStoreWithLogsInSeparateRelativeLocation() throws Exception { File customTransactionLogsLocation = new File( storeDir, "tx-logs" ); Config config = Config.defaults( logical_logs_location, customTransactionLogsLocation.getName() ); recoverBrokenStoreWithConfig( config ); }
@Test public void shouldNotWantToRecoverIntactStore() throws Exception { PageCache pageCache = pageCacheRule.getPageCache( fileSystem ); RecoveryRequiredChecker recoverer = getRecoveryCheckerWithDefaultConfig( fileSystem, pageCache ); assertThat( recoverer.isRecoveryRequiredAt( databaseLayout ), is( false ) ); }
@Test( expected = RecoveryRequiredException.class ) public void shouldThrowIfBrokenStore() throws IOException, RecoveryRequiredException { try ( FileSystemAbstraction fileSystemAbstraction = createAndCrashWithDefaultConfig() ) { PageCache pageCache = pageCacheRule.getPageCache( fileSystemAbstraction ); RecoveryRequiredChecker.assertRecoveryIsNotRequired( fileSystemAbstraction, pageCache, Config.defaults(), databaseLayout, new Monitors() ); fail(); } }
@Test public void shouldBeAbleToRecoverBrokenStoreWithLogsInSeparateAbsoluteLocation() throws Exception { File customTransactionLogsLocation = testDirectory.directory( "tx-logs" ); Config config = Config.defaults( logical_logs_location, customTransactionLogsLocation.getAbsolutePath() ); recoverBrokenStoreWithConfig( config ); }
@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 ) ); } }