private void redirectLogsTo(OutputStream os, Class<?> clazz) { Logger logger = (Logger) LoggerFactory.getLogger(clazz); Appender<ILoggingEvent> appender = mock(Appender.class); when(appender.isStarted()).thenReturn(true); doAnswer(writeTo(os)).when(appender).doAppend(any(ILoggingEvent.class)); logger.addAppender(appender); }
@Test public void shouldLogErrorWhenRegisterCommandWithoutSenderAnnotation() { //see https://github.com/MovingBlocks/Terasology/issues/2679 Appender<ILoggingEvent> appender = mockAppender(); ((ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)).addAppender(appender); systemUnderTest.register(new SystemWithCommandMissingSenderAnnotation()); systemUnderTest.initialise(); ArgumentCaptor<LoggingEvent> loggingEventArgumentCaptor = ArgumentCaptor.forClass(LoggingEvent.class); verify(appender).doAppend(loggingEventArgumentCaptor.capture()); List<String> allErrorLogMessages = loggingEventArgumentCaptor.getAllValues().stream() .filter(e -> e.getLevel().isGreaterOrEqual(Level.ERROR)) .map(LoggingEvent::getFormattedMessage) .collect(toList()); String expectedMessage = "Command commandWithoutSenderAnnotation provided by " + "SystemWithCommandMissingSenderAnnotation contains a EntityRef without @Sender annotation, " + "may cause a NullPointerException"; assertThat(allErrorLogMessages, hasItem(expectedMessage)); }
@Test public void requestWhenDebugSetToFalseThenDoesNotLogDebugInformation() throws Exception { Appender<ILoggingEvent> appender = mockAppenderFor("Spring Security Debugger"); this.spring.register(NoDebugWebSecurity.class).autowire(); this.mvc.perform(get("/")); assertThat(filterChainClass()).isNotEqualTo(DebugFilter.class); verify(appender, never()).doAppend(any(ILoggingEvent.class)); }
@Test public void requestWhenDebugSetToTrueThenLogsDebugInformation() throws Exception { Appender<ILoggingEvent> appender = mockAppenderFor("Spring Security Debugger"); this.spring.register(DebugWebSecurity.class).autowire(); this.mvc.perform(get("/")); assertThat(filterChainClass()).isEqualTo(DebugFilter.class); verify(appender, atLeastOnce()).doAppend(any(ILoggingEvent.class)); }
/** * Call the <code>doAppend</code> method on all attached appenders. */ public int appendLoopOnAppenders(E e) { int size = 0; for (Appender<E> appender : appenderList) { appender.doAppend(e); size++; } return size; }
@Test public void dropTableTraceLogPresentOnTraceLevelEvenIfQueryIsSlow() { Appender mockAppender = setLogLevelAndGetAppender(Level.TRACE); doAnswer(waitASecondAndAHalf).when(delegate).dropTable(any()); kvs.dropTable(TABLE_REF); verify(mockAppender).doAppend(traceLogMatcher.get()); verify(mockAppender).doAppend(slowLogMatcher.get()); }
@Test public void getAllTableNamesTraceLogPresentOnTraceLevelEvenIfQueryIsSlow() { Appender mockAppender = setLogLevelAndGetAppender(Level.TRACE); doAnswer(waitASecondAndAHalf).when(delegate).getAllTableNames(); kvs.getAllTableNames(); verify(mockAppender).doAppend(traceLogMatcher.get()); verify(mockAppender).doAppend(slowLogMatcher.get()); }
@Test public void getTraceLogPresentOnTraceLevelEvenIfQueryIsSlow() { Appender mockAppender = setLogLevelAndGetAppender(Level.TRACE); doAnswer(waitASecondAndAHalfAndReturn).when(delegate).get(TABLE_REF, timestampByCell); kvs.get(TABLE_REF, timestampByCell); verify(mockAppender).doAppend(traceLogMatcher.get()); verify(mockAppender).doAppend(slowLogMatcher.get()); }
@Test public void shouldLogSkipCopyingSingleFileIfDirectory() throws IOException { Asset asset = new Asset(config); File emptyDir = new File(folder.toFile(),"emptyDir"); emptyDir.mkdir(); asset.copySingleFile(emptyDir); verify(mockAppender, times(1)).doAppend(captorLoggingEvent.capture()); LoggingEvent loggingEvent = captorLoggingEvent.getValue(); assertThat(loggingEvent.getMessage()).isEqualTo("Skip copying single asset file [{}]. Is a directory."); }
@Test public void dropTableSlowLogPresentOnInfoLevel() { Appender mockAppender = setLogLevelAndGetAppender(Level.INFO); doAnswer(waitASecondAndAHalf).when(delegate).dropTable(any()); kvs.dropTable(TABLE_REF); verify(mockAppender).doAppend(slowLogMatcher.get()); }
@Test public void shouldLogWarningIfDocumentTypeNotFound() throws Exception { File sourceFolder = TestUtils.getTestResourcesAsSourceFolder(); JBakeConfiguration config = util.loadConfig(sourceFolder); config.getTemplateFileByDocType("none"); verify(mockAppender, times(1)).doAppend(captorLoggingEvent.capture()); LoggingEvent loggingEvent = captorLoggingEvent.getValue(); assertThat(loggingEvent.getMessage()).isEqualTo("Cannot find configuration key '{}' for document type '{}'"); }
@Test public void getAllTableNamesSlowLogPresentOnInfoLevel() { Appender mockAppender = setLogLevelAndGetAppender(Level.INFO); doAnswer(waitASecondAndAHalf).when(delegate).getAllTableNames(); kvs.getAllTableNames(); verify(mockAppender).doAppend(slowLogMatcher.get()); }
@Test public void getTraceLogPresentOnTraceLevel() { Appender mockAppender = setLogLevelAndGetAppender(Level.TRACE); kvs.get(TABLE_REF, timestampByCell); verify(mockAppender).doAppend(traceLogMatcher.get()); }
@Test public void shouldLogAWarningIfAsciidocOptionCouldNotBeFound() throws Exception { File sourceFolder = TestUtils.getTestResourcesAsSourceFolder(); DefaultJBakeConfiguration config = (DefaultJBakeConfiguration) util.loadConfig(sourceFolder); config.getAsciidoctorOption("template_dirs"); verify(mockAppender, times(1)).doAppend(captorLoggingEvent.capture()); LoggingEvent loggingEvent = captorLoggingEvent.getValue(); assertThat(loggingEvent.getMessage()).isEqualTo("Cannot find asciidoctor option '{}.{}'"); }
@Test public void getSlowLogPresentOnInfoLevel() { Appender mockAppender = setLogLevelAndGetAppender(Level.INFO); doAnswer(waitASecondAndAHalfAndReturn).when(delegate).get(TABLE_REF, timestampByCell); kvs.get(TABLE_REF, timestampByCell); verify(mockAppender).doAppend(slowLogMatcher.get()); }
@Test public void dropTableTraceLogPresentOnTraceLevel() { Appender mockAppender = setLogLevelAndGetAppender(Level.TRACE); kvs.dropTable(TABLE_REF); verify(mockAppender).doAppend(traceLogMatcher.get()); }
@Test public void getAllTableNamesTraceLogPresentOnTraceLevel() { Appender mockAppender = setLogLevelAndGetAppender(Level.TRACE); kvs.getAllTableNames(); verify(mockAppender).doAppend(traceLogMatcher.get()); }
@Test public void shouldLogWarningIfAssetFolderDoesNotExist() throws Exception { String contentFolderName = "content"; String templateFolderName = "template"; String destinationFolderName = "output"; String assetFolderName = "assets"; File templateFolder = TestUtils.newFolder(folder.toFile(), templateFolderName); File contentFolder = TestUtils.newFolder(folder.toFile(), contentFolderName); File destinationFolder = TestUtils.newFolder(folder.toFile(), destinationFolderName); File assetFolder = new File(folder.toFile(), assetFolderName); JBakeConfiguration configuration = mock(JBakeConfiguration.class); when(configuration.getSourceFolder()).thenReturn(folder.toFile()); when(configuration.getTemplateFolder()).thenReturn(templateFolder); when(configuration.getTemplateFolderName()).thenReturn(templateFolderName); when(configuration.getContentFolder()).thenReturn(contentFolder); when(configuration.getContentFolderName()).thenReturn(contentFolderName); when(configuration.getDestinationFolder()).thenReturn(destinationFolder); when(configuration.getAssetFolder()).thenReturn(assetFolder); JBakeConfigurationInspector inspector = new JBakeConfigurationInspector(configuration); inspector.inspect(); verify(mockAppender, times(1)).doAppend(captorLoggingEvent.capture()); LoggingEvent loggingEvent = captorLoggingEvent.getValue(); assertThat(loggingEvent.getMessage()).isEqualTo("No asset folder '{}' was found!"); assertThat(loggingEvent.getFormattedMessage()).isEqualTo("No asset folder '" + assetFolder.getAbsolutePath() + "' was found!"); }
@Override protected void append(E event) { if (!isStarted()) { return; } String discriminatingValue = discriminator.getDiscriminatingValue(event); long timestamp = getTimestamp(event); Appender<E> appender = appenderTracker.getOrCreate(discriminatingValue, timestamp); // marks the appender for removal as specified by the user if (eventMarksEndOfLife(event)) { appenderTracker.endOfLife(discriminatingValue); } appenderTracker.removeStaleComponents(timestamp); appender.doAppend(event); }
@Test public void testNoStart() { Appender<E> appender = getAppender(); appender.setContext(context); appender.setName("doh"); // is null OK? appender.doAppend(null); StatusChecker checker = new StatusChecker(context.getStatusManager()); StatusPrinter.print(context); checker.assertContainsMatch("Attempted to append to non started appender \\[doh\\]."); } }