Skip to content

Commit

Permalink
Simplified and deduplicated some methods of MessageMatcher
Browse files Browse the repository at this point in the history
  • Loading branch information
tinwelint committed Jun 5, 2019
1 parent 4a81a3e commit 835aaf1
Show file tree
Hide file tree
Showing 27 changed files with 130 additions and 200 deletions.
Expand Up @@ -69,12 +69,12 @@ public void databaseErrorShouldLogFullMessageInDebugLogAndHelpfulPointerInUserLo
reporter.report( error ); reporter.report( error );


// then // then
userLog.rawMessageMatcher().assertContainsLogCallContaining( "Client triggered an unexpected error" ); userLog.rawMessageMatcher().assertContains( "Client triggered an unexpected error" );
userLog.rawMessageMatcher().assertContainsLogCallContaining( reference.toString() ); userLog.rawMessageMatcher().assertContains( reference.toString() );
userLog.rawMessageMatcher().assertContainsLogCallContaining( "Database error" ); userLog.rawMessageMatcher().assertContains( "Database error" );


internalLog.rawMessageMatcher().assertContainsLogCallContaining( reference.toString() ); internalLog.rawMessageMatcher().assertContains( reference.toString() );
internalLog.rawMessageMatcher().assertContainsLogCallContaining( "Database error" ); internalLog.rawMessageMatcher().assertContains( "Database error" );
} }


private static ErrorReporter newErrorReporter( LogProvider userLog, LogProvider internalLog ) private static ErrorReporter newErrorReporter( LogProvider userLog, LogProvider internalLog )
Expand Down
Expand Up @@ -125,7 +125,7 @@ public void shouldReportFailureWhenAllThreadsInThreadPoolAreBusy() throws Throwa
assertThat( connection3, util.eventuallyReceives( assertThat( connection3, util.eventuallyReceives(
msgFailure( Status.Request.NoThreadsAvailable, "There are no available threads to serve this request at the moment" ) ) ); msgFailure( Status.Request.NoThreadsAvailable, "There are no available threads to serve this request at the moment" ) ) );


userLogProvider.rawMessageMatcher().assertContainsMessageContaining( userLogProvider.rawMessageMatcher().assertContains(
"since there are no available threads to serve it at the moment. You can retry at a later time" ); "since there are no available threads to serve it at the moment. You can retry at a later time" );
internalLogProvider.assertAtLeastOnce( AssertableLogProvider internalLogProvider.assertAtLeastOnce( AssertableLogProvider
.inLog( startsWith( BoltConnection.class.getPackage().getName() ) ) .inLog( startsWith( BoltConnection.class.getPackage().getName() ) )
Expand Down Expand Up @@ -160,9 +160,9 @@ public void shouldStopConnectionsWhenRelatedJobIsRejectedOnShutdown() throws Thr
server.shutdownDatabase(); server.shutdownDatabase();


// Expect no scheduling error logs // Expect no scheduling error logs
userLogProvider.rawMessageMatcher().assertNoLogCallContaining( userLogProvider.rawMessageMatcher().assertNotContains(
"since there are no available threads to serve it at the moment. You can retry at a later time" ); "since there are no available threads to serve it at the moment. You can retry at a later time" );
internalLogProvider.rawMessageMatcher().assertNoLogCallContaining( internalLogProvider.rawMessageMatcher().assertNotContains(
"since there are no available threads to serve it at the moment. You can retry at a later time" ); "since there are no available threads to serve it at the moment. You can retry at a later time" );
} }


Expand Down
Expand Up @@ -139,7 +139,7 @@ public void shouldDetectSabotagedRelationshipWhereEverItIs() throws Exception
RecordType.RELATIONSHIP ); RecordType.RELATIONSHIP );


assertTrue( "Couldn't detect sabotaged relationship " + sabotage, relationshipInconsistencies > 0 ); assertTrue( "Couldn't detect sabotaged relationship " + sabotage, relationshipInconsistencies > 0 );
logProvider.rawMessageMatcher().assertContainsLogCallContaining( sabotage.after.toString() ); logProvider.rawMessageMatcher().assertContains( sabotage.after.toString() );
} }
} }
finally finally
Expand Down
Expand Up @@ -48,18 +48,18 @@ public void shouldSeeExpectedDiagnostics()
cleanupRule.add( db ); cleanupRule.add( db );


// THEN we should have logged // THEN we should have logged
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Network information" ); logProvider.rawMessageMatcher().assertContains( "Network information" );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Disk space on partition" ); logProvider.rawMessageMatcher().assertContains( "Disk space on partition" );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Local timezone" ); logProvider.rawMessageMatcher().assertContains( "Local timezone" );
// page cache info // page cache info
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Page cache: 4M" ); logProvider.rawMessageMatcher().assertContains( "Page cache: 4M" );
// neostore records // neostore records
for ( MetaDataStore.Position position : MetaDataStore.Position.values() ) for ( MetaDataStore.Position position : MetaDataStore.Position.values() )
{ {
logProvider.rawMessageMatcher().assertContainsMessageContaining( position.name() ); logProvider.rawMessageMatcher().assertContains( position.name() );
} }
// transaction log info // transaction log info
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Transaction log" ); logProvider.rawMessageMatcher().assertContains( "Transaction log" );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "TimeZone version: " ); logProvider.rawMessageMatcher().assertContains( "TimeZone version: " );
} }
} }
Expand Up @@ -174,8 +174,8 @@ public void truncateNewerTransactionLogFileWhenForced() throws IOException
database = startDbNoRecoveryOfCorruptedLogs(); database = startDbNoRecoveryOfCorruptedLogs();
database.shutdown(); database.shutdown();


logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to read transaction log version 0." ); logProvider.rawMessageMatcher().assertContains( "Fail to read transaction log version 0." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"Fail to read transaction log version 0. Last valid transaction start offset is: 5668." ); "Fail to read transaction log version 0. Last valid transaction start offset is: 5668." );
assertEquals( numberOfClosedTransactions, recoveryMonitor.getNumberOfRecoveredTransactions() ); assertEquals( numberOfClosedTransactions, recoveryMonitor.getNumberOfRecoveredTransactions() );
} }
Expand All @@ -188,11 +188,11 @@ public void recoverFirstCorruptedTransactionSingleFileNoCheckpoint() throws IOEx
GraphDatabaseService recoveredDatabase = startDbNoRecoveryOfCorruptedLogs(); GraphDatabaseService recoveredDatabase = startDbNoRecoveryOfCorruptedLogs();
recoveredDatabase.shutdown(); recoveredDatabase.shutdown();


logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to read transaction log version 0." ); logProvider.rawMessageMatcher().assertContains( "Fail to read transaction log version 0." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to read first transaction of log version 0." ); logProvider.rawMessageMatcher().assertContains( "Fail to read first transaction of log version 0." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"Recovery required from position LogPosition{logVersion=0, byteOffset=16}" ); "Recovery required from position LogPosition{logVersion=0, byteOffset=16}" );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to recover all transactions. Any later transactions after" + logProvider.rawMessageMatcher().assertContains( "Fail to recover all transactions. Any later transactions after" +
" position LogPosition{logVersion=0, byteOffset=16} are unreadable and will be truncated." ); " position LogPosition{logVersion=0, byteOffset=16} are unreadable and will be truncated." );


assertEquals( 0, logFiles.getHighestLogVersion() ); assertEquals( 0, logFiles.getHighestLogVersion() );
Expand Down Expand Up @@ -237,11 +237,11 @@ public void recoverNotAFirstCorruptedTransactionSingleFileNoCheckpoint() throws
database = startDbNoRecoveryOfCorruptedLogs(); database = startDbNoRecoveryOfCorruptedLogs();
database.shutdown(); database.shutdown();


logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to read transaction log version 0." ); logProvider.rawMessageMatcher().assertContains( "Fail to read transaction log version 0." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"Recovery required from position LogPosition{logVersion=0, byteOffset=16}" ); "Recovery required from position LogPosition{logVersion=0, byteOffset=16}" );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to recover all transactions." ); logProvider.rawMessageMatcher().assertContains( "Fail to recover all transactions." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"Any later transaction after LogPosition{logVersion=0, byteOffset=6245} are unreadable and will be truncated." ); "Any later transaction after LogPosition{logVersion=0, byteOffset=6245} are unreadable and will be truncated." );


assertEquals( 0, logFiles.getHighestLogVersion() ); assertEquals( 0, logFiles.getHighestLogVersion() );
Expand Down Expand Up @@ -278,11 +278,11 @@ public void recoverNotAFirstCorruptedTransactionMultipleFilesNoCheckpoints() thr
database = startDbNoRecoveryOfCorruptedLogs(); database = startDbNoRecoveryOfCorruptedLogs();
database.shutdown(); database.shutdown();


logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to read transaction log version 3." ); logProvider.rawMessageMatcher().assertContains( "Fail to read transaction log version 3." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"Recovery required from position LogPosition{logVersion=0, byteOffset=16}" ); "Recovery required from position LogPosition{logVersion=0, byteOffset=16}" );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to recover all transactions." ); logProvider.rawMessageMatcher().assertContains( "Fail to recover all transactions." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"Any later transaction after LogPosition{logVersion=3, byteOffset=4632} are unreadable and will be truncated." ); "Any later transaction after LogPosition{logVersion=3, byteOffset=4632} are unreadable and will be truncated." );


assertEquals( 3, logFiles.getHighestLogVersion() ); assertEquals( 3, logFiles.getHighestLogVersion() );
Expand Down Expand Up @@ -316,11 +316,11 @@ public void recoverNotAFirstCorruptedTransactionMultipleFilesMultipleCheckpoints
database = startDbNoRecoveryOfCorruptedLogs(); database = startDbNoRecoveryOfCorruptedLogs();
database.shutdown(); database.shutdown();


logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to read transaction log version 3." ); logProvider.rawMessageMatcher().assertContains( "Fail to read transaction log version 3." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"Recovery required from position LogPosition{logVersion=3, byteOffset=593}" ); "Recovery required from position LogPosition{logVersion=3, byteOffset=593}" );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to recover all transactions." ); logProvider.rawMessageMatcher().assertContains( "Fail to recover all transactions." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"Any later transaction after LogPosition{logVersion=3, byteOffset=4650} are unreadable and will be truncated." ); "Any later transaction after LogPosition{logVersion=3, byteOffset=4650} are unreadable and will be truncated." );


assertEquals( 3, logFiles.getHighestLogVersion() ); assertEquals( 3, logFiles.getHighestLogVersion() );
Expand All @@ -347,11 +347,11 @@ public void recoverFirstCorruptedTransactionAfterCheckpointInLastLogFile() throw
database = startDbNoRecoveryOfCorruptedLogs(); database = startDbNoRecoveryOfCorruptedLogs();
database.shutdown(); database.shutdown();


logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to read transaction log version 5." ); logProvider.rawMessageMatcher().assertContains( "Fail to read transaction log version 5." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to read first transaction of log version 5." ); logProvider.rawMessageMatcher().assertContains( "Fail to read first transaction of log version 5." );
logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"Recovery required from position LogPosition{logVersion=5, byteOffset=593}" ); "Recovery required from position LogPosition{logVersion=5, byteOffset=593}" );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "Fail to recover all transactions. " + logProvider.rawMessageMatcher().assertContains( "Fail to recover all transactions. " +
"Any later transactions after position LogPosition{logVersion=5, byteOffset=593} " + "Any later transactions after position LogPosition{logVersion=5, byteOffset=593} " +
"are unreadable and will be truncated." ); "are unreadable and will be truncated." );


Expand Down
Expand Up @@ -194,8 +194,8 @@ public void reportProgressOnRecovery() throws IOException
{ {
assertEquals( 10, count( recoveredDatabase.getAllNodes() ) ); assertEquals( 10, count( recoveredDatabase.getAllNodes() ) );
} }
logProvider.rawMessageMatcher().assertContainsMessageContaining( "10% completed" ); logProvider.rawMessageMatcher().assertContains( "10% completed" );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "100% completed" ); logProvider.rawMessageMatcher().assertContains( "100% completed" );


database.shutdown(); database.shutdown();
recoveredDatabase.shutdown(); recoveredDatabase.shutdown();
Expand Down
Expand Up @@ -108,7 +108,7 @@ public void notifyAboutStoreFileDeletion() throws Exception
deleteFile( testDirectory.storeDir(), fileName ); deleteFile( testDirectory.storeDir(), fileName );
deletionListener.awaitDeletionNotification(); deletionListener.awaitDeletionNotification();


logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"'" + fileName + "' which belongs to the store was deleted while database was running." ); "'" + fileName + "' which belongs to the store was deleted while database was running." );
} }


Expand All @@ -123,7 +123,7 @@ public void notifyWhenFileWatchingFailToStart()
.setFileSystem( new NonWatchableFileSystemAbstraction() ) .setFileSystem( new NonWatchableFileSystemAbstraction() )
.newEmbeddedDatabase( testDirectory.storeDir( "failed-start-db" ) ); .newEmbeddedDatabase( testDirectory.storeDir( "failed-start-db" ) );


logProvider.rawMessageMatcher().assertContainsMessageContaining( "Can not create file watcher for current file system. " + logProvider.rawMessageMatcher().assertContains( "Can not create file watcher for current file system. " +
"File monitoring capabilities for store files will be disabled." ); "File monitoring capabilities for store files will be disabled." );
} }
finally finally
Expand Down Expand Up @@ -155,7 +155,7 @@ public void notifyAboutExplicitIndexFolderRemoval() throws InterruptedException,
deleteStoreDirectory( storeDir, monitoredDirectory ); deleteStoreDirectory( storeDir, monitoredDirectory );
deletionListener.awaitDeletionNotification(); deletionListener.awaitDeletionNotification();


logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"'" + monitoredDirectory + "' which belongs to the store was deleted while database was running." ); "'" + monitoredDirectory + "' which belongs to the store was deleted while database was running." );
} }


Expand Down Expand Up @@ -255,7 +255,7 @@ public void notifyWhenWholeStoreDirectoryRemoved() throws IOException, Interrupt


eventListener.awaitDeletionNotification(); eventListener.awaitDeletionNotification();


logProvider.rawMessageMatcher().assertContainsMessageContaining( logProvider.rawMessageMatcher().assertContains(
"'" + storeDirectoryName + "' which belongs to the store was deleted while database was running." ); "'" + storeDirectoryName + "' which belongs to the store was deleted while database was running." );
} }


Expand All @@ -272,7 +272,7 @@ public void shouldLogWhenDisabled()
.setConfig( GraphDatabaseSettings.filewatcher_enabled, Settings.FALSE ) .setConfig( GraphDatabaseSettings.filewatcher_enabled, Settings.FALSE )
.newGraphDatabase(); .newGraphDatabase();


logProvider.rawMessageMatcher().assertContainsMessageContaining( "File watcher disabled by configuration." ); logProvider.rawMessageMatcher().assertContains( "File watcher disabled by configuration." );
} }
finally finally
{ {
Expand Down
Expand Up @@ -140,14 +140,14 @@ public void scanStoreMustLogCrashPointerCleanupDuringRecovery() throws Exception
startDatabase().shutdown(); startDatabase().shutdown();


// then // then
logProvider.rawMessageMatcher().assertContainsLogCallContaining( "Label index cleanup job registered" ); logProvider.rawMessageMatcher().assertContains( "Label index cleanup job registered" );
logProvider.rawMessageMatcher().assertContainsLogCallContaining( "Label index cleanup job started" ); logProvider.rawMessageMatcher().assertContains( "Label index cleanup job started" );
logProvider.rawMessageMatcher().assertContainsMessageMatching( Matchers.stringContainsInOrder( Iterables.asIterable( logProvider.rawMessageMatcher().assertContains( Matchers.stringContainsInOrder( Iterables.asIterable(
"Label index cleanup job finished", "Label index cleanup job finished",
"Number of pages visited", "Number of pages visited",
"Number of cleaned crashed pointers", "Number of cleaned crashed pointers",
"Time spent" ) ) ); "Time spent" ) ) );
logProvider.rawMessageMatcher().assertContainsLogCallContaining( "Label index cleanup job closed" ); logProvider.rawMessageMatcher().assertContains( "Label index cleanup job closed" );
} }


@Test @Test
Expand Down Expand Up @@ -189,7 +189,7 @@ private void nativeIndexMustLogCrashPointerCleanupDuringRecovery( GraphDatabaseS
matchers.add( indexRecoveryLogMatcher( "Schema index cleanup job closed", subType ) ); matchers.add( indexRecoveryLogMatcher( "Schema index cleanup job closed", subType ) );
} }
AssertableLogProvider.MessageMatcher messageMatcher = logProvider.rawMessageMatcher(); AssertableLogProvider.MessageMatcher messageMatcher = logProvider.rawMessageMatcher();
matchers.forEach( messageMatcher::assertContainsExactlyOneMessageMatching ); matchers.forEach( messageMatcher::assertContainsSingle );
} }


private Matcher<String> indexRecoveryLogMatcher( String logMessage, String subIndexProviderKey ) private Matcher<String> indexRecoveryLogMatcher( String logMessage, String subIndexProviderKey )
Expand Down
Expand Up @@ -165,7 +165,7 @@ public void shouldLogCorrectTransactionLogDiagnosticsForNoTransactionLogs()
DataSourceDiagnostics.TRANSACTION_RANGE.dump( dataSource, logger ); DataSourceDiagnostics.TRANSACTION_RANGE.dump( dataSource, logger );


// THEN // THEN
logProvider.rawMessageMatcher().assertContainsMessageContaining( "No transactions" ); logProvider.rawMessageMatcher().assertContains( "No transactions" );
} }


@Test @Test
Expand All @@ -183,8 +183,8 @@ public void shouldLogCorrectTransactionLogDiagnosticsForTransactionsInOldestLog(
DataSourceDiagnostics.TRANSACTION_RANGE.dump( dataSource, logger ); DataSourceDiagnostics.TRANSACTION_RANGE.dump( dataSource, logger );


// THEN // THEN
logProvider.rawMessageMatcher().assertContainsMessageContaining( "transaction " + (prevLogLastTxId + 1) ); logProvider.rawMessageMatcher().assertContains( "transaction " + (prevLogLastTxId + 1) );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "version " + logVersion ); logProvider.rawMessageMatcher().assertContains( "version " + logVersion );
} }


@Test @Test
Expand All @@ -202,8 +202,8 @@ public void shouldLogCorrectTransactionLogDiagnosticsForTransactionsInSecondOlde
DataSourceDiagnostics.TRANSACTION_RANGE.dump( dataSource, logger ); DataSourceDiagnostics.TRANSACTION_RANGE.dump( dataSource, logger );


// THEN // THEN
logProvider.rawMessageMatcher().assertContainsMessageContaining( "transaction " + (prevLogLastTxId + 1) ); logProvider.rawMessageMatcher().assertContains( "transaction " + (prevLogLastTxId + 1) );
logProvider.rawMessageMatcher().assertContainsMessageContaining( "version " + (logVersion + 1) ); logProvider.rawMessageMatcher().assertContains( "version " + (logVersion + 1) );
} }


@Test @Test
Expand Down
Expand Up @@ -204,15 +204,15 @@ private Log getLog()


private void assertContainsWarningMessage() private void assertContainsWarningMessage()
{ {
logProvider.rawMessageMatcher().assertContainsMessageContaining( "WARNING! Deprecated configuration options used. See manual for details" ); logProvider.rawMessageMatcher().assertContains( "WARNING! Deprecated configuration options used. See manual for details" );
} }


private void assertContainsWarningMessage( String deprecationMessage ) private void assertContainsWarningMessage( String deprecationMessage )
{ {
assertContainsWarningMessage(); assertContainsWarningMessage();
if ( StringUtils.isNotEmpty( deprecationMessage ) ) if ( StringUtils.isNotEmpty( deprecationMessage ) )
{ {
logProvider.rawMessageMatcher().assertContainsMessageContaining( deprecationMessage ); logProvider.rawMessageMatcher().assertContains( deprecationMessage );
} }
} }
} }

0 comments on commit 835aaf1

Please sign in to comment.