Mercurial > hg > release > thermostat-1.6
changeset 1701:5971a3ba1ca8
Show THERMOSTAT_HOME/USER_THERMOSTAT_HOME in launcher logs.
Reviewed-by: omajid
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2015-March/013323.html
PR2423
author | Severin Gehwolf <sgehwolf@redhat.com> |
---|---|
date | Tue, 24 Mar 2015 13:25:59 +0100 |
parents | c4c7131a6285 |
children | ea755f774135 |
files | launcher/src/main/java/com/redhat/thermostat/launcher/internal/LauncherImpl.java launcher/src/test/java/com/redhat/thermostat/launcher/internal/ActivatorTest.java launcher/src/test/java/com/redhat/thermostat/launcher/internal/LauncherImplTest.java |
diffstat | 3 files changed, 81 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/launcher/src/main/java/com/redhat/thermostat/launcher/internal/LauncherImpl.java Fri May 29 16:32:41 2015 +0200 +++ b/launcher/src/main/java/com/redhat/thermostat/launcher/internal/LauncherImpl.java Tue Mar 24 13:25:59 2015 +0100 @@ -91,7 +91,7 @@ private static final String SETUP_SCRIPT_NAME = "thermostat-setup"; private static final Translate<LocaleResources> t = LocaleResources.createLocalizer(); - private Logger logger; + private static final Logger logger = LoggingUtils.getLogger(LauncherImpl.class); private final AtomicInteger usageCount = new AtomicInteger(0); private final BundleContext context; @@ -130,7 +130,10 @@ this.paths = Objects.requireNonNull(paths); loggingInitializer.initialize(); - logger = LoggingUtils.getLogger(LauncherImpl.class); + // We log this in the constructor so as to not log it multiple times when a command invokes + // run() multiple times. This works since it is a singleton service. + logger.log(Level.CONFIG, "THERMOSTAT_HOME=" + paths.getSystemThermostatHome().getAbsolutePath()); + logger.log(Level.CONFIG, "USER_THERMOSTAT_HOME=" + paths.getUserThermostatHome().getAbsolutePath()); } @Override
--- a/launcher/src/test/java/com/redhat/thermostat/launcher/internal/ActivatorTest.java Fri May 29 16:32:41 2015 +0200 +++ b/launcher/src/test/java/com/redhat/thermostat/launcher/internal/ActivatorTest.java Tue Mar 24 13:25:59 2015 +0100 @@ -197,6 +197,8 @@ assertNotNull(action); Keyring keyringService = mock(Keyring.class); CommonPaths paths = mock(CommonPaths.class); + when(paths.getSystemThermostatHome()).thenReturn(mock(File.class)); + when(paths.getUserThermostatHome()).thenReturn(mock(File.class)); when(paths.getSystemLibRoot()).thenReturn(new File("")); when(paths.getSystemPluginRoot()).thenReturn(new File("")); when(paths.getUserPluginRoot()).thenReturn(new File(""));
--- a/launcher/src/test/java/com/redhat/thermostat/launcher/internal/LauncherImplTest.java Fri May 29 16:32:41 2015 +0200 +++ b/launcher/src/test/java/com/redhat/thermostat/launcher/internal/LauncherImplTest.java Tue Mar 24 13:25:59 2015 +0100 @@ -37,6 +37,7 @@ package com.redhat.thermostat.launcher.internal; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.Matchers.anyString; @@ -50,7 +51,9 @@ import java.util.Collection; import java.util.EnumSet; import java.util.concurrent.ExecutorService; +import java.util.logging.Handler; import java.util.logging.Level; +import java.util.logging.LogRecord; import java.util.logging.Logger; import org.apache.commons.cli.Option; @@ -96,7 +99,7 @@ private static final String name3 = "test3"; private static final String name4 = "test4"; private static SecurityManager secMan; - + @BeforeClass public static void beforeClassSetUp() { // Launcher calls System.exit(). This causes issues for unit testing. @@ -273,6 +276,8 @@ when(paths.getUserSetupCompleteStampFile()).thenReturn(setupFile); ClientPreferences prefs = new ClientPreferences(paths); + when(paths.getSystemThermostatHome()).thenReturn(mock(File.class)); + when(paths.getUserThermostatHome()).thenReturn(mock(File.class)); launcher = new LauncherImpl(bundleContext, ctxFactory, registry, infos, new CommandSource(bundleContext), environment, dbServiceFactory, version, prefs, keyring, paths, loggingInitializer); } @@ -558,6 +563,44 @@ assertEquals(expectedVersionInfo, ctxFactory.getOutput()); assertTrue(timerFactory.isShutdown()); } + + /** + * Tests if USER_THERMOSTAT_HOME and THERMOSTAT_HOME gets logged correctly + * on instantiation. + */ + @Test + public void verifyLogsUserHomeThermostatHomeOnInstantiation() { + Logger logger = Logger.getLogger("com.redhat.thermostat"); + logger.setLevel(Level.ALL); + assertTrue(logger.getLevel() == Level.ALL); + TestLogHandler handler = new TestLogHandler(); + logger.addHandler(handler); + ClientPreferences prefs = mock(ClientPreferences.class); + Keyring keyring = mock(Keyring.class); + CommonPaths logPaths = mock(CommonPaths.class); + when(logPaths.getUserThermostatHome()).thenReturn(mock(File.class)); + when(logPaths.getSystemThermostatHome()).thenReturn(mock(File.class)); + + try { + assertFalse(handler.loggedThermostatHome); + assertFalse(handler.loggedUserHome); + // this should trigger logging + new LauncherImpl(bundleContext, ctxFactory, registry, + infos, new CommandSource(bundleContext), + environment, dbServiceFactory, + version, prefs, keyring, logPaths, + loggingInitializer); + assertTrue(handler.loggedThermostatHome); + assertTrue(handler.loggedUserHome); + verify(logPaths).getUserThermostatHome(); + verify(logPaths).getSystemThermostatHome(); + } finally { + // clean-up in order to avoid logs for other tests. + logger.removeHandler(handler); + handler = null; + logger.setLevel(Level.INFO); + } + } @Test public void verifyListenersAdded() { @@ -637,6 +680,35 @@ ctxFactory.getCommandRegistry().registerCommand(cmdName, mockCmd); runAndVerifyCommand(new String[] { cmdName }, expected, isInShell); - } + } + + private static class TestLogHandler extends Handler { + + private boolean loggedThermostatHome; + private boolean loggedUserHome; + + @Override + public void close() throws SecurityException { + // nothing + } + + @Override + public void flush() { + // nothing + } + + @Override + public void publish(LogRecord record) { + String logMessage = record.getMessage(); + System.out.println(logMessage); + if (record.getLevel() == Level.CONFIG && logMessage.startsWith("THERMOSTAT_HOME")) { + loggedThermostatHome = true; + } + if (record.getLevel() == Level.CONFIG && logMessage.startsWith("USER_THERMOSTAT_HOME")) { + loggedUserHome = true; + } + } + + } }