From c1ac1c25d513823a1f9f2f4cd8f5e4f14e7b2b67 Mon Sep 17 00:00:00 2001 From: Tomas Olvecky Date: Fri, 22 Nov 2013 14:40:17 +0100 Subject: [PATCH] Add logback as a default config module. Change-Id: Idd15449925dc20cfc731d97ee8cef5c42a5a4d80 Signed-off-by: Tomas Olvecky --- .../logback/config/LogbackModuleFactory.java | 52 +++++++++------ .../logback/config/LogbackModuleTest.java | 66 +++++++++---------- ...ackModuleWithInitialConfigurationTest.java | 11 ++-- .../LogbackWithXmlConfigModuleTest.java | 35 +++++----- 4 files changed, 88 insertions(+), 76 deletions(-) diff --git a/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleFactory.java b/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleFactory.java index a157e1ed5d..5e8612f7b9 100644 --- a/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleFactory.java +++ b/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleFactory.java @@ -8,6 +8,22 @@ */ package org.opendaylight.controller.config.yang.logback.config; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; +import org.opendaylight.controller.config.api.DependencyResolver; +import org.opendaylight.controller.config.api.DependencyResolverFactory; +import org.opendaylight.controller.config.api.ModuleIdentifier; +import org.osgi.framework.BundleContext; +import org.slf4j.LoggerFactory; + import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.encoder.PatternLayoutEncoder; @@ -17,21 +33,10 @@ import ch.qos.logback.core.Appender; import ch.qos.logback.core.rolling.FixedWindowRollingPolicy; import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy; import ch.qos.logback.core.rolling.TimeBasedRollingPolicy; + import com.google.common.base.Preconditions; import com.google.common.collect.Lists; -import org.apache.commons.lang3.StringUtils; -import org.opendaylight.controller.config.api.DependencyResolver; -import org.opendaylight.controller.config.api.ModuleIdentifier; -import org.osgi.framework.BundleContext; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; +import com.google.common.collect.Sets; /** * @@ -39,15 +44,15 @@ import java.util.Map.Entry; public class LogbackModuleFactory extends org.opendaylight.controller.config.yang.logback.config.AbstractLogbackModuleFactory { - private static final String INSTANCE_NAME = "singleton"; + public static final String INSTANCE_NAME = "singleton"; private Map loggersDTOs; private Map rollingDTOs; private Map consoleDTOs; private Map fileDTOs; @Override - public LogbackModule instantiateModule(String instanceName, - DependencyResolver dependencyResolver, BundleContext bundleContext) { + public LogbackModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + BundleContext bundleContext) { Preconditions.checkArgument(instanceName.equals(INSTANCE_NAME), "There should be just one instance of logback, named " + INSTANCE_NAME); prepareDTOs(); @@ -61,9 +66,8 @@ public class LogbackModuleFactory extends } @Override - public LogbackModule instantiateModule(String instanceName, - DependencyResolver dependencyResolver, LogbackModule oldModule, - AutoCloseable oldInstance, BundleContext bundleContext) { + public LogbackModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + LogbackModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { Preconditions.checkArgument(instanceName.equals(INSTANCE_NAME), "There should be just one instance of logback, named " + INSTANCE_NAME); prepareDTOs(); @@ -220,4 +224,14 @@ public class LogbackModuleFactory extends return Lists.newArrayList(loggersToReturn.values()); } + @Override + public Set getDefaultModules(DependencyResolverFactory dependencyResolverFactory, + BundleContext bundleContext) { + DependencyResolver resolver = dependencyResolverFactory.createDependencyResolver(new ModuleIdentifier( + getImplementationName(), INSTANCE_NAME)); + LogbackModule defaultLogback = instantiateModule(INSTANCE_NAME, resolver, bundleContext); + Set defaultModules = Sets.newHashSet(defaultLogback); + return defaultModules; + } + } diff --git a/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleTest.java b/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleTest.java index 846b9cd352..296ce79f6e 100644 --- a/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleTest.java +++ b/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleTest.java @@ -7,29 +7,24 @@ */ package org.opendaylight.controller.config.yang.logback.config; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import javax.management.InstanceAlreadyExistsException; -import javax.management.InstanceNotFoundException; -import javax.management.ObjectName; - import org.junit.Before; import org.junit.Ignore; import org.junit.Test; -import org.opendaylight.controller.config.api.ConflictingVersionException; import org.opendaylight.controller.config.api.ValidationException; import org.opendaylight.controller.config.api.jmx.CommitStatus; import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; +import javax.management.ObjectName; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; +import static org.junit.matchers.JUnitMatchers.containsString; + public class LogbackModuleTest extends AbstractConfigTest { private static final String INSTANCE_NAME = "singleton"; @@ -37,14 +32,14 @@ public class LogbackModuleTest extends AbstractConfigTest { private LogbackModuleFactory factory; @Before - public void setUp() throws IOException, ClassNotFoundException, InterruptedException { + public void setUp() throws Exception { factory = new LogbackModuleFactory(); super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(factory)); } @Test - public void testCreateBean() throws InstanceAlreadyExistsException { + public void testCreateBean() throws Exception { CommitStatus status = createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5, "target/%i.log", "rolling", @@ -55,7 +50,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testReusingInstance() throws InstanceAlreadyExistsException { + public void testReusingInstance() throws Exception { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0, "FileAppender").commit(); @@ -70,8 +65,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testRecreateInstance() throws InstanceAlreadyExistsException, ValidationException, - ConflictingVersionException, InstanceNotFoundException { + public void testRecreateInstance() throws Exception { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0, "FileAppender").commit(); @@ -88,7 +82,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testDestroyInstance() throws InstanceNotFoundException, InstanceAlreadyExistsException { + public void testDestroyInstance() throws Exception { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0, "FileAppender").commit(); @@ -104,7 +98,7 @@ public class LogbackModuleTest extends AbstractConfigTest { @Ignore @Test - public void testValidation1() throws InstanceAlreadyExistsException { + public void testValidation1() throws Exception { try { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", @@ -116,7 +110,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation2() throws InstanceAlreadyExistsException { + public void testValidation2() throws Exception { try { createBeans(true, "target/rollingApp", null, "30MB", 1, 5, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0, "FileAppender").commit(); @@ -127,7 +121,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation4() throws InstanceAlreadyExistsException { + public void testValidation4() throws Exception { try { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", null, 1, 5, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", @@ -139,7 +133,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation6() throws InstanceAlreadyExistsException { + public void testValidation6() throws Exception { try { createBeans(true, "", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0, "FileAppender") @@ -151,7 +145,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation7() throws InstanceAlreadyExistsException { + public void testValidation7() throws Exception { try { createBeans( @@ -164,7 +158,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation8() throws InstanceAlreadyExistsException { + public void testValidation8() throws Exception { try { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5, "target/%i.log", "rolling", "consoleName", "ALL", null, "DEBUG", "FixedWindowRollingPolicy", 0, @@ -176,7 +170,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation9() throws InstanceAlreadyExistsException { + public void testValidation9() throws Exception { try { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5, "target/%i.log", "rolling", "consoleName", "ALL", "", "DEBUG", "FixedWindowRollingPolicy", 0, @@ -188,7 +182,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation10() throws InstanceAlreadyExistsException { + public void testValidation10() throws Exception { try { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", null, 5, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", @@ -200,7 +194,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation11() throws InstanceAlreadyExistsException { + public void testValidation11() throws Exception { try { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, null, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", @@ -212,7 +206,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation12() throws InstanceAlreadyExistsException { + public void testValidation12() throws Exception { try { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, null, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", null, 1, "FileAppender") @@ -224,7 +218,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation13() throws InstanceAlreadyExistsException { + public void testValidation13() throws Exception { try { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, null, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "", 1, "FileAppender") @@ -236,7 +230,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testValidation14() throws InstanceAlreadyExistsException { + public void testValidation14() throws Exception { try { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, null, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "RollingPolicy", 1, @@ -248,7 +242,7 @@ public class LogbackModuleTest extends AbstractConfigTest { } @Test - public void testTimeBasedRollingPolicy() throws InstanceAlreadyExistsException { + public void testTimeBasedRollingPolicy() throws Exception { createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", null, null, "target/%d.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "TimeBasedRollingPolicy", 1, "FileAppender").commit(); @@ -257,10 +251,10 @@ public class LogbackModuleTest extends AbstractConfigTest { private ConfigTransactionJMXClient createBeans(Boolean isAppend, String rollingFileName, String encoderPattern, String maxFileSize, Integer minIndex, Integer maxIndex, String fileNamePattern, String rollingName, String consoleName, String thresholdFilter, String loggerName, String level, String rollingPolicyType, - int maxHistory, String fileAppName) throws InstanceAlreadyExistsException { + int maxHistory, String fileAppName) throws Exception { ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), INSTANCE_NAME); - LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameCreated, LogbackModuleMXBean.class); + ObjectName nameRetrieved = transaction.lookupConfigBean(factory.getImplementationName(), INSTANCE_NAME); + LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameRetrieved, LogbackModuleMXBean.class); List rollingAppenders = new ArrayList<>(); RollingFileAppenderTO rollingAppender = new RollingFileAppenderTO(); diff --git a/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleWithInitialConfigurationTest.java b/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleWithInitialConfigurationTest.java index 79e46ae6d2..eeb8289e86 100644 --- a/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleWithInitialConfigurationTest.java +++ b/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleWithInitialConfigurationTest.java @@ -17,7 +17,9 @@ import java.util.Arrays; import java.util.List; import javax.management.InstanceAlreadyExistsException; +import javax.management.InstanceNotFoundException; import javax.management.JMX; +import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import org.apache.commons.io.FileUtils; @@ -142,7 +144,8 @@ public class LogbackModuleWithInitialConfigurationTest extends AbstractConfigTes } - public ObjectName createBeans() throws JoranException, InstanceAlreadyExistsException, IOException { + public ObjectName createBeans() throws JoranException, InstanceAlreadyExistsException, IOException, + MalformedObjectNameException, InstanceNotFoundException { LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); @@ -200,8 +203,8 @@ public class LogbackModuleWithInitialConfigurationTest extends AbstractConfigTes loggersDTOs.add(log); ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), "singleton"); - LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameCreated, LogbackModuleMXBean.class); + ObjectName nameRetrieved = transaction.lookupConfigBean(factory.getImplementationName(), LogbackModuleFactory.INSTANCE_NAME); + LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameRetrieved, LogbackModuleMXBean.class); bean.setLoggerTO(loggersDTOs); bean.setRollingFileAppenderTO(rollingAppenders); @@ -210,6 +213,6 @@ public class LogbackModuleWithInitialConfigurationTest extends AbstractConfigTes transaction.commit(); - return nameCreated; + return nameRetrieved; } } diff --git a/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackWithXmlConfigModuleTest.java b/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackWithXmlConfigModuleTest.java index 004c18c5e0..8718f8a9ce 100644 --- a/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackWithXmlConfigModuleTest.java +++ b/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackWithXmlConfigModuleTest.java @@ -17,6 +17,7 @@ import java.util.List; import javax.management.InstanceAlreadyExistsException; import javax.management.InstanceNotFoundException; import javax.management.JMX; +import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import org.apache.commons.io.FileUtils; @@ -27,12 +28,12 @@ import org.opendaylight.controller.config.manager.impl.factoriesresolver.Hardcod import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; import org.slf4j.LoggerFactory; -import com.google.common.collect.Lists; - import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.joran.JoranConfigurator; import ch.qos.logback.core.joran.spi.JoranException; +import com.google.common.collect.Lists; + public class LogbackWithXmlConfigModuleTest extends AbstractConfigTest { private LogbackModuleFactory factory; @@ -56,14 +57,16 @@ public class LogbackWithXmlConfigModuleTest extends AbstractConfigTest { /** * Tests configuration of Logger factory. + * + * @throws MalformedObjectNameException */ @Test - public void test() throws InstanceAlreadyExistsException, InstanceNotFoundException { + public void test() throws InstanceAlreadyExistsException, InstanceNotFoundException, MalformedObjectNameException { ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), "singleton"); + ObjectName nameRetrieved = transaction.lookupConfigBean(factory.getImplementationName(), LogbackModuleFactory.INSTANCE_NAME); - LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameCreated, LogbackModuleMXBean.class); + LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameRetrieved, LogbackModuleMXBean.class); assertEquals(1, bean.getConsoleAppenderTO().size()); @@ -73,9 +76,9 @@ public class LogbackWithXmlConfigModuleTest extends AbstractConfigTest { transaction = configRegistryClient.createTransaction(); - nameCreated = transaction.lookupConfigBean(factory.getImplementationName(), "singleton"); + nameRetrieved = transaction.lookupConfigBean(factory.getImplementationName(), "singleton"); - bean = JMX.newMXBeanProxy(platformMBeanServer, nameCreated, LogbackModuleMXBean.class); + bean = JMX.newMXBeanProxy(platformMBeanServer, nameRetrieved, LogbackModuleMXBean.class); assertEquals(1, bean.getConsoleAppenderTO().size()); assertEquals(1, bean.getRollingFileAppenderTO().size()); @@ -89,11 +92,6 @@ public class LogbackWithXmlConfigModuleTest extends AbstractConfigTest { @Test public void testAllLoggers() throws InstanceAlreadyExistsException, InstanceNotFoundException { ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - transaction.createModule(factory.getImplementationName(), "singleton"); - - transaction.commit(); - - transaction = configRegistryClient.createTransaction(); LogbackModuleMXBean bean = JMX.newMXBeanProxy(ManagementFactory.getPlatformMBeanServer(), transaction.lookupConfigBean("logback", "singleton"), LogbackModuleMXBean.class); @@ -103,13 +101,16 @@ public class LogbackWithXmlConfigModuleTest extends AbstractConfigTest { /** * Add new logger using FileAppender + * + * @throws MalformedObjectNameException */ @Test - public void testAddNewLogger() throws InstanceAlreadyExistsException, InstanceNotFoundException { + public void testAddNewLogger() throws InstanceAlreadyExistsException, InstanceNotFoundException, + MalformedObjectNameException { ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), "singleton"); - LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameCreated, LogbackModuleMXBean.class); + ObjectName nameRetrieved = transaction.lookupConfigBean(factory.getImplementationName(), LogbackModuleFactory.INSTANCE_NAME); + LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameRetrieved, LogbackModuleMXBean.class); assertEquals(5, bean.getLoggerTO().size()); @@ -124,8 +125,8 @@ public class LogbackWithXmlConfigModuleTest extends AbstractConfigTest { transaction.commit(); transaction = configRegistryClient.createTransaction(); - nameCreated = transaction.lookupConfigBean(factory.getImplementationName(), "singleton"); - bean = JMX.newMXBeanProxy(platformMBeanServer, nameCreated, LogbackModuleMXBean.class); + nameRetrieved = transaction.lookupConfigBean(factory.getImplementationName(), "singleton"); + bean = JMX.newMXBeanProxy(platformMBeanServer, nameRetrieved, LogbackModuleMXBean.class); assertEquals(6, bean.getLoggerTO().size()); } -- 2.36.6