@Test public void mustNotLogMessagesWithinConfiguredTimeLimit() { FakeClock clock = getDefaultFakeClock(); logger.setTimeLimit( 1, TimeUnit.MILLISECONDS, clock ); logMethod.log( logger, "### AAA ###" ); logMethod.log( logger, "### BBB ###" ); clock.forward( 1, TimeUnit.MILLISECONDS ); logMethod.log( logger, "### CCC ###" ); logProvider.assertContainsMessageMatching( containsString( "### AAA ###" ) ); logProvider.assertNone( currentLog( inLog( CappedLogger.class ), containsString( "### BBB ###" ) ) ); logProvider.assertContainsMessageMatching( containsString( "### CCC ###" ) ); }
@Test public void mustLogAfterResetWithTimeLimit() { FakeClock clock = getDefaultFakeClock(); logger.setTimeLimit( 1, TimeUnit.MILLISECONDS, clock ); logMethod.log( logger, "### AAA ###" ); logMethod.log( logger, "### BBB ###" ); logger.reset(); logMethod.log( logger, "### CCC ###" ); logProvider.assertContainsMessageMatching( containsString( "### AAA ###" ) ); logProvider.assertNone( currentLog( inLog( CappedLogger.class ), containsString( "### BBB ###" ) ) ); logProvider.assertContainsMessageMatching( containsString( "### CCC ###" ) ); }
@Test public void unsettingTimeLimitMustLetMessagesThrough() { FakeClock clock = getDefaultFakeClock(); logger.setTimeLimit( 1, TimeUnit.MILLISECONDS, clock ); logMethod.log( logger, "### AAA ###" ); logMethod.log( logger, "### BBB ###" ); clock.forward( 1, TimeUnit.MILLISECONDS ); logMethod.log( logger, "### CCC ###" ); logMethod.log( logger, "### DDD ###" ); logger.unsetTimeLimit(); // Note that we are not advancing the clock! logMethod.log( logger, "### EEE ###" ); logProvider.assertContainsMessageMatching( containsString( "### AAA ###" ) ); logProvider.assertNone( currentLog( inLog( CappedLogger.class ), containsString( "### BBB ###" ) ) ); logProvider.assertContainsMessageMatching( containsString( "### CCC ###" ) ); logProvider.assertNone( currentLog( inLog( CappedLogger.class ), containsString( "### DDD ###" ) ) ); logProvider.assertContainsMessageMatching( containsString( "### EEE ###" ) ); }
@Test public void mustLogAfterResetWithCountLimit() { int limit = 10; logger.setCountLimit( limit ); String[] lines = logLines( limit + 1 ); logger.reset(); String[] moreLines = logLines( 1, limit + 1 ); assertLoggedLines( ArrayUtils.addAll( ArrayUtils.subarray( lines, 0, limit ), moreLines ), 1 + limit ); logProvider.assertNone( currentLog( inLog( CappedLogger.class ), containsString( lines[limit] ) ) ); logProvider.assertContainsMessageMatching( containsString( moreLines[0] ) ); }
@Test public void mustOnlyLogMessagesThatPassBothLimits() { FakeClock clock = getDefaultFakeClock(); logger.setCountLimit( 2 ); logger.setTimeLimit( 1, TimeUnit.MILLISECONDS, clock ); logMethod.log( logger, "### AAA ###" ); logMethod.log( logger, "### BBB ###" ); // Filtered by the time limit clock.forward( 1, TimeUnit.MILLISECONDS ); logMethod.log( logger, "### CCC ###" ); // Filtered by the count limit logger.reset(); logMethod.log( logger, "### DDD ###" ); logProvider.assertContainsMessageMatching( containsString( "### AAA ###" ) ); logProvider.assertNone( currentLog( inLog( CappedLogger.class ), containsString( "### BBB ###" ) ) ); logProvider.assertNone( currentLog( inLog( CappedLogger.class ), containsString( "### CCC ###" ) ) ); logProvider.assertContainsMessageMatching( containsString( "### DDD ###" ) ); }
@Test public void scanStoreMustLogCrashPointerCleanupDuringRecovery() throws Exception { // given dirtyDatabase(); // when AssertableLogProvider logProvider = new AssertableLogProvider( true ); factory.setUserLogProvider( logProvider ); factory.setInternalLogProvider( logProvider ); startDatabase().shutdown(); // then logProvider.assertContainsLogCallContaining( "Label index cleanup job registered" ); logProvider.assertContainsLogCallContaining( "Label index cleanup job started" ); logProvider.assertContainsMessageMatching( Matchers.stringContainsInOrder( Iterables.asIterable( "Label index cleanup job finished", "Number of pages visited", "Number of cleaned crashed pointers", "Time spent" ) ) ); logProvider.assertContainsLogCallContaining( "Label index cleanup job closed" ); }