This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-logservice.git
commit c9dcca5ca72d212f26bcc26e5e59d5373c1f32bc Author: Robert Munteanu <[email protected]> AuthorDate: Tue Dec 22 11:58:12 2015 +0000 SLING-5263 - implement some junit test cases for LogSupport.java Applied patch submitted by Tien Nguyen, with some refactoring to reduce code duplication. This closes #111. git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1721374 13f79535-47bb-0310-9956-ffa450edef68 --- .../logservice/internal/LogSupportTest.java | 136 ++++++++++++++------- 1 file changed, 89 insertions(+), 47 deletions(-) diff --git a/src/test/java/org/apache/sling/commons/logservice/internal/LogSupportTest.java b/src/test/java/org/apache/sling/commons/logservice/internal/LogSupportTest.java index 269ff49..7bf0c2f 100644 --- a/src/test/java/org/apache/sling/commons/logservice/internal/LogSupportTest.java +++ b/src/test/java/org/apache/sling/commons/logservice/internal/LogSupportTest.java @@ -22,12 +22,16 @@ import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; +import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.osgi.framework.Bundle; +import org.osgi.framework.BundleEvent; +import org.osgi.framework.BundleException; import org.osgi.framework.Constants; +import org.osgi.framework.FrameworkEvent; import org.osgi.framework.ServiceEvent; import org.osgi.framework.ServiceReference; import org.osgi.service.log.LogEntry; @@ -36,24 +40,39 @@ import org.osgi.service.startlevel.StartLevel; import org.slf4j.Logger; public class LogSupportTest { - @Test @SuppressWarnings("unchecked") - public void testServiceEvent() throws Exception { + + private Bundle bundle; + private LogSupport logSupport; + private Logger testLogger; + + @Before + @SuppressWarnings("unchecked") + public void prepare() throws Exception { + + bundle = Mockito.mock(Bundle.class); + Mockito.when(bundle.getSymbolicName()).thenReturn("foo.bundle"); + Mockito.when(bundle.getBundleId()).thenReturn(42L); + StartLevel startLevel = Mockito.mock(StartLevel.class); - LogSupport ls = new LogSupport(startLevel); - Field lf = LogSupport.class.getDeclaredField("loggers"); - lf.setAccessible(true); - Map<Long, Logger> loggers = (Map<Long, Logger>) lf.get(ls); + logSupport = new LogSupport(startLevel); + Field loggerField = LogSupport.class.getDeclaredField("loggers"); + loggerField.setAccessible(true); + Map<Long, Logger> loggers = (Map<Long, Logger>) loggerField.get(logSupport); + + testLogger = getMockInfoLogger(); + loggers.put(bundle.getBundleId(), testLogger); + } + + @Test + public void testServiceEvent() throws Exception { - Bundle b = Mockito.mock(Bundle.class); - Mockito.when(b.getSymbolicName()).thenReturn("foo.bundle"); - Mockito.when(b.getBundleId()).thenReturn(42L); final Map<String, Object> props = new HashMap<String, Object>(); props.put(Constants.OBJECTCLASS, new String [] {"some.class.Name"}); props.put(Constants.SERVICE_ID, 999L); ServiceReference sr = Mockito.mock(ServiceReference.class); - Mockito.when(sr.getBundle()).thenReturn(b); + Mockito.when(sr.getBundle()).thenReturn(bundle); Mockito.when(sr.getProperty(Mockito.anyString())).then(new Answer<Object>() { public Object answer(InvocationOnMock invocation) throws Throwable { return props.get(invocation.getArguments()[0]); @@ -62,33 +81,18 @@ public class LogSupportTest { Mockito.when(sr.getPropertyKeys()).thenReturn(props.keySet().toArray(new String[] {})); ServiceEvent se = new ServiceEvent(ServiceEvent.REGISTERED, sr); - Logger testLogger = getMockInfoLogger(); - loggers.put(42L, testLogger); - - ls.serviceChanged(se); + logSupport.serviceChanged(se); Mockito.verify(testLogger).info("Service [999, [some.class.Name]] ServiceEvent REGISTERED", (Throwable) null); } - @Test @SuppressWarnings("unchecked") + @Test public void testEarlyExit() throws Exception { - Bundle b = Mockito.mock(Bundle.class); - Mockito.when(b.getSymbolicName()).thenReturn("bar.bundle"); - Mockito.when(b.getBundleId()).thenReturn(1L); - + ServiceReference sr = Mockito.mock(ServiceReference.class); - LogEntry le = new LogEntryImpl(b, sr, LogService.LOG_DEBUG, "test", null); - - StartLevel startLevel = Mockito.mock(StartLevel.class); - LogSupport ls = new LogSupport(startLevel); - Field lf = LogSupport.class.getDeclaredField("loggers"); - lf.setAccessible(true); - Map<Long, Logger> loggers = (Map<Long, Logger>) lf.get(ls); + LogEntry le = new LogEntryImpl(bundle, sr, LogService.LOG_DEBUG, "test", null); - Logger testLogger = getMockInfoLogger(); - loggers.put(1L, testLogger); - - ls.fireLogEvent(le); + logSupport.fireLogEvent(le); // The log message is on DEBUG level while the logger is set to INFO level // we don't want the actual log.info() call to be made, neither do we want @@ -101,29 +105,67 @@ public class LogSupportTest { Mockito.verifyZeroInteractions(sr); } - @Test @SuppressWarnings("unchecked") + @Test public void testErrorLogger() throws Exception { - Bundle b = Mockito.mock(Bundle.class); - Mockito.when(b.getSymbolicName()).thenReturn("bar.bundle"); - Mockito.when(b.getBundleId()).thenReturn(1L); - + Exception e = new Exception(); - LogEntry le = new LogEntryImpl(b, null, LogService.LOG_ERROR, "my-error-msg", e); - - StartLevel startLevel = Mockito.mock(StartLevel.class); - LogSupport ls = new LogSupport(startLevel); - Field lf = LogSupport.class.getDeclaredField("loggers"); - lf.setAccessible(true); - Map<Long, Logger> loggers = (Map<Long, Logger>) lf.get(ls); - - Logger testLogger = getMockInfoLogger(); - loggers.put(1L, testLogger); - - ls.fireLogEvent(le); + LogEntry le = new LogEntryImpl(bundle, null, LogService.LOG_ERROR, "my-error-msg", e); + logSupport.fireLogEvent(le); + Mockito.verify(testLogger).error("my-error-msg (java.lang.Exception)", e); } + + @Test + public void testWarningLogger() throws Exception { + + Exception e = new Exception(); + LogEntry le = new LogEntryImpl(bundle, null, LogService.LOG_WARNING, "my-warning-message", e); + logSupport.fireLogEvent(le); + + Mockito.verify(testLogger).warn("my-warning-message (java.lang.Exception)", e); + } + + @Test + public void testInfoLogger() throws Exception { + + LogEntry le = new LogEntryImpl(bundle, null, LogService.LOG_INFO, "my-info-message", null); + + logSupport.fireLogEvent(le); + + Mockito.verify(testLogger).info("my-info-message", (Throwable) null); + } + + @Test + public void testBundleChanges() throws Exception { + + logSupport.bundleChanged(new BundleEvent(BundleEvent.INSTALLED, bundle)); + + Mockito.verify(testLogger).info("BundleEvent INSTALLED", (Throwable) null); + } + + @Test + public void testFrameworkEventStarted() throws Exception { + + FrameworkEvent frameworkEvent = new FrameworkEvent(FrameworkEvent.STARTED, bundle, null); + + logSupport.frameworkEvent(frameworkEvent); + + Mockito.verify(testLogger).info("FrameworkEvent STARTED", (Throwable) null); + } + + @Test + public void testFrameworkEventError() throws Exception { + + BundleException bundleException = new BundleException("my bundle exception", BundleException.ACTIVATOR_ERROR); + FrameworkEvent frameworkEvent = new FrameworkEvent(FrameworkEvent.ERROR, bundle, bundleException); + + logSupport.frameworkEvent(frameworkEvent); + + Mockito.verify(testLogger).error("FrameworkEvent ERROR (org.osgi.framework.BundleException: my bundle exception)", bundleException); + } + @Test public void testGetLevels() { Logger traceLogger = Mockito.mock(Logger.class); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
