Add logback as a default config module. 01/3001/2
authorTomas Olvecky <tolvecky@cisco.com>
Fri, 22 Nov 2013 13:40:17 +0000 (14:40 +0100)
committerTomas Olvecky <tolvecky@cisco.com>
Fri, 22 Nov 2013 17:42:44 +0000 (18:42 +0100)
Change-Id: Idd15449925dc20cfc731d97ee8cef5c42a5a4d80
Signed-off-by: Tomas Olvecky <tolvecky@cisco.com>
opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleFactory.java
opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleTest.java
opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleWithInitialConfigurationTest.java
opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackWithXmlConfigModuleTest.java

index a157e1ed5d4ff087b7d44963217e1886bfab9678..5e8612f7b94eae1fda8119ec7b25cafb98eafa0c 100644 (file)
@@ -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<String, LoggerTO> loggersDTOs;
     private Map<String, RollingFileAppenderTO> rollingDTOs;
     private Map<String, ConsoleAppenderTO> consoleDTOs;
     private Map<String, FileAppenderTO> 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<LogbackModule> getDefaultModules(DependencyResolverFactory dependencyResolverFactory,
+            BundleContext bundleContext) {
+        DependencyResolver resolver = dependencyResolverFactory.createDependencyResolver(new ModuleIdentifier(
+                getImplementationName(), INSTANCE_NAME));
+        LogbackModule defaultLogback = instantiateModule(INSTANCE_NAME, resolver, bundleContext);
+        Set<LogbackModule> defaultModules = Sets.newHashSet(defaultLogback);
+        return defaultModules;
+    }
+
 }
index 846b9cd352b48ebd34fa13ea99ab0301adf97501..296ce79f6e9cefeb5723107a59cef9b4cc0f3194 100644 (file)
@@ -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<RollingFileAppenderTO> rollingAppenders = new ArrayList<>();
         RollingFileAppenderTO rollingAppender = new RollingFileAppenderTO();
index 79e46ae6d212d56b4613643d48315ca535844375..eeb8289e86196665cd971ce932112779fee04bb7 100644 (file)
@@ -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;
     }
 }
index 004c18c5e08c0b2224e3f50b69654961a68e3258..8718f8a9ce3121c260d41555f8ff509849c09b97 100644 (file)
@@ -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());
     }