From 86bec73a9c8db5c695042b83d54b06fe2ce9de6d Mon Sep 17 00:00:00 2001 From: Duarte Meneses Date: Wed, 24 Jun 2015 16:10:14 +0200 Subject: [PATCH] Fix Quality flaws in batch --- .../PersistentCacheProviderTest.java | 5 +++ .../bootstrapper/LogCallbackAppenderTest.java | 31 ++++++++++++------ .../bootstrapper/LoggingConfiguratorTest.java | 32 ++++++++++++++++++- 3 files changed, 58 insertions(+), 10 deletions(-) diff --git a/sonar-batch/src/test/java/org/sonar/batch/bootstrap/PersistentCacheProviderTest.java b/sonar-batch/src/test/java/org/sonar/batch/bootstrap/PersistentCacheProviderTest.java index 24bdf6047d57..813c5efce704 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/bootstrap/PersistentCacheProviderTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/bootstrap/PersistentCacheProviderTest.java @@ -55,4 +55,9 @@ public void test_enableCache() { provider = new PersistentCacheProvider(); assertThat(provider.provide(props).isForceUpdate()).isFalse(); } + + @Test + public void test_reconfigure() { + + } } diff --git a/sonar-batch/src/test/java/org/sonar/batch/bootstrapper/LogCallbackAppenderTest.java b/sonar-batch/src/test/java/org/sonar/batch/bootstrapper/LogCallbackAppenderTest.java index ea1fd3a470e4..b01b214e345f 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/bootstrapper/LogCallbackAppenderTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/bootstrapper/LogCallbackAppenderTest.java @@ -24,6 +24,8 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.reset; + import ch.qos.logback.classic.Level; import ch.qos.logback.classic.spi.ILoggingEvent; import org.junit.Test; @@ -39,21 +41,32 @@ public class LogCallbackAppenderTest { public void setUp() { listener = mock(LogListener.class); appender = new LogCallbackAppender(listener); - event = mock(ILoggingEvent.class); - when(event.getMessage()).thenReturn("test"); - when(event.getLevel()).thenReturn(Level.INFO); } + @Test - public void testAppendLog() { - + public void testLevelTranslation() { + testMessage("test", Level.INFO, LogListener.Level.INFO); + testMessage("test", Level.DEBUG, LogListener.Level.DEBUG); + testMessage("test", Level.ERROR, LogListener.Level.ERROR); + testMessage("test", Level.TRACE, LogListener.Level.TRACE); + testMessage("test", Level.WARN, LogListener.Level.WARN); + + // this should never happen + testMessage("test", Level.OFF, LogListener.Level.DEBUG); + } + + private void testMessage(String msg, Level level, LogListener.Level translatedLevel) { + reset(listener); + event = mock(ILoggingEvent.class); + when(event.getMessage()).thenReturn(msg); + when(event.getLevel()).thenReturn(level); + appender.append(event); verify(event).getMessage(); verify(event).getLevel(); - - verify(listener).log("test", LogListener.Level.INFO); - + verify(listener).log(msg, translatedLevel); verifyNoMoreInteractions(event, listener); } @@ -61,6 +74,6 @@ public void testAppendLog() { public void testChangeTarget() { listener = mock(LogListener.class); appender.setTarget(listener); - testAppendLog(); + testLevelTranslation(); } } diff --git a/sonar-batch/src/test/java/org/sonar/batch/bootstrapper/LoggingConfiguratorTest.java b/sonar-batch/src/test/java/org/sonar/batch/bootstrapper/LoggingConfiguratorTest.java index 2f7311a39de4..5e139684e190 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/bootstrapper/LoggingConfiguratorTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/bootstrapper/LoggingConfiguratorTest.java @@ -19,12 +19,20 @@ */ package org.sonar.batch.bootstrapper; +import org.apache.commons.io.IOUtils; +import org.junit.Rule; +import org.junit.rules.TemporaryFolder; import org.sonar.home.log.LogListener; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; @@ -34,10 +42,13 @@ import org.junit.Before; public class LoggingConfiguratorTest { + private static final String DEFAULT_CLASSPATH_CONF = "/org/sonar/batch/bootstrapper/logback.xml"; private static final String TEST_STR = "foo"; private LoggingConfiguration conf = new LoggingConfiguration(); private ByteArrayOutputStream out; private SimpleLogListener listener; + @Rule + public TemporaryFolder folder = new TemporaryFolder(); @Before public void setUp() { @@ -56,6 +67,25 @@ public void log(String msg, Level level) { this.level = level; } } + + @Test + public void testWithFile() throws FileNotFoundException, IOException { + InputStream is = this.getClass().getResourceAsStream(DEFAULT_CLASSPATH_CONF); + File tmpFolder = folder.getRoot(); + File testFile = new File(tmpFolder, "test"); + OutputStream os = new FileOutputStream(testFile); + IOUtils.copy(is, os); + os.close(); + + conf.setListener(listener); + LoggingConfigurator.apply(conf, testFile); + + Logger logger = LoggerFactory.getLogger(this.getClass()); + logger.info(TEST_STR); + + assertThat(listener.msg).endsWith(TEST_STR); + assertThat(listener.level).isEqualTo(LogListener.Level.INFO); + } @Test public void testCustomAppender() throws UnsupportedEncodingException {