package osgi.logger.provider; import static org.mockito.Mockito.*; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import junit.framework.TestCase; import org.osgi.framework.Bundle; import org.osgi.service.log.LogService; import org.slf4j.LoggerFactory; import osgi.enroute.logger.api.Level; import osgi.enroute.logger.api.LoggerAdmin.Control; import osgi.enroute.logger.api.LoggerAdmin.Settings; public class Slf4jTest extends TestCase { public void testFunctional() throws Exception { LoggerDispatcher.dispatcher = new LoggerDispatcher(); Bundle bundle = mock(Bundle.class); AbstractLogger l= new AbstractLogger(bundle, "test"); l.error("Error 1"); assertEquals( 1, LoggerDispatcher.dispatcher.queue.size()); assertTrue( l.error); assertTrue( l.warn); assertFalse( l.debug); assertFalse( l.trace); assertFalse( l.info); LoggerDispatcher.dispatcher.queue.clear(); } public void testAdmin() throws Exception { LoggerDispatcher.dispatcher = new LoggerDispatcher(); LoggerAdminImpl admin = new LoggerAdminImpl(); admin.setDaemon(false); Map<String,Object> map = new HashMap<>(); map.put("level", Level.DEBUG); admin.activate(map); assertEquals( admin, LoggerDispatcher.dispatcher.admin); LogService log = mock(LogService.class); admin.addLogService(log); AbstractLogger logger = (AbstractLogger) LoggerFactory.getLogger("test"); logger.error("Error={}", 1); logger.trace("Trace 1"); logger.debug("Debug 1"); TimeUnit.MILLISECONDS.sleep(500); verify(log).log(LogService.LOG_ERROR, "test :: Error=1"); verify(log).log(LogService.LOG_DEBUG, "test :: Debug 1"); reset(log); Settings s = new Settings(); Control c = new Control(); c.pattern = "*"; c.level = Level.ERROR; s.controls.add(c); admin.setSettings(s); logger.error("Error={}", 2); logger.trace("Trace 2"); logger.debug("Debug 2"); TimeUnit.MILLISECONDS.sleep(200); verify(log).log(LogService.LOG_ERROR, "test :: Error=2"); verifyNoMoreInteractions(log); } public void testSimple() { LoggerDispatcher.dispatcher = new LoggerDispatcher(); AbstractLogger logger = (AbstractLogger) LoggerFactory.getLogger("test"); // By default not initialized, all flags true assertTrue(logger.debug); assertTrue(logger.error); assertTrue(logger.warn); assertTrue(logger.info); assertTrue(logger.trace); assertFalse(logger.init); assertFalse(logger.registered); // Should not be registered yet assertEquals(0, LoggerDispatcher.dispatcher.loggers.size()); logger.trace("Trace"); assertEquals("Trace disables, so no msg in queue", 0, LoggerDispatcher.dispatcher.queue.size()); assertEquals("By default, trace is disabled but should register anyway", 1, LoggerDispatcher.dispatcher.loggers.size()); assertFalse(logger.debug); assertFalse(logger.info); assertFalse(logger.trace); assertTrue(logger.error); assertTrue(logger.warn); assertTrue(logger.init); assertTrue(logger.registered); logger.error("Error"); assertEquals(1, LoggerDispatcher.dispatcher.queue.size()); logger.close(); assertEquals("No more loggers", 0, LoggerDispatcher.dispatcher.loggers.size()); } }