X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Flogback-config%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Flogback%2Fconfig%2FLogbackWithXmlConfigModuleTest.java;h=3c21e57f6e8aed1f298fd917bf434eda93d5647c;hp=ce3a019410d6617620b9992746373a132c58966c;hb=0c931b8d1fa153991b10705a4358fe39f93181cd;hpb=655dffff17a7c45d181d0b15decf627fdd1238eb 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 ce3a019410..3c21e57f6e 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 @@ -7,28 +7,31 @@ */ package org.opendaylight.controller.config.yang.logback.config; -import static org.junit.Assert.assertEquals; - -import java.io.File; -import java.io.IOException; -import java.lang.management.ManagementFactory; - -import javax.management.InstanceAlreadyExistsException; -import javax.management.InstanceNotFoundException; -import javax.management.JMX; -import javax.management.ObjectName; - +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; import org.apache.commons.io.FileUtils; import org.junit.Before; import org.junit.Test; +import org.opendaylight.controller.config.api.ConflictingVersionException; +import org.opendaylight.controller.config.api.ValidationException; 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 org.slf4j.LoggerFactory; -import ch.qos.logback.classic.LoggerContext; -import ch.qos.logback.classic.joran.JoranConfigurator; -import ch.qos.logback.core.joran.spi.JoranException; +import javax.management.InstanceAlreadyExistsException; +import javax.management.InstanceNotFoundException; +import javax.management.JMX; +import javax.management.MalformedObjectNameException; +import javax.management.ObjectName; +import java.io.File; +import java.io.IOException; +import java.lang.management.ManagementFactory; +import java.util.List; + +import static org.junit.Assert.assertEquals; public class LogbackWithXmlConfigModuleTest extends AbstractConfigTest { @@ -39,15 +42,13 @@ public class LogbackWithXmlConfigModuleTest extends AbstractConfigTest { public void setUp() throws JoranException, IOException { factory = new LogbackModuleFactory(); - super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver( - factory)); + super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext,factory)); lc = (LoggerContext) LoggerFactory.getILoggerFactory(); JoranConfigurator configurator = new JoranConfigurator(); lc.reset(); configurator.setContext(lc); - configurator - .doConfigure("src/test/resources/simple_config_logback.xml"); + configurator.doConfigure("src/test/resources/simple_config_logback.xml"); File f = new File("target/it"); if (f.exists()) FileUtils.cleanDirectory(f); @@ -55,18 +56,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, ValidationException, ConflictingVersionException { - ConfigTransactionJMXClient transaction = configRegistryClient - .createTransaction(); - ObjectName nameCreated = transaction.createModule( - factory.getImplementationName(), "singleton"); + ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); + 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()); @@ -76,11 +75,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()); @@ -92,22 +89,45 @@ public class LogbackWithXmlConfigModuleTest extends AbstractConfigTest { * loggers should be removed. */ @Test - public void testAllLoggers() throws InstanceAlreadyExistsException, - InstanceNotFoundException { - ConfigTransactionJMXClient transaction = configRegistryClient - .createTransaction(); - transaction.createModule(factory.getImplementationName(), "singleton"); + public void testAllLoggers() throws InstanceAlreadyExistsException, InstanceNotFoundException { + ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - transaction.commit(); + LogbackModuleMXBean bean = JMX.newMXBeanProxy(ManagementFactory.getPlatformMBeanServer(), + transaction.lookupConfigBean("logback", "singleton"), LogbackModuleMXBean.class); - transaction = configRegistryClient.createTransaction(); + assertEquals(5, bean.getLoggerTO().size()); + } - LogbackModuleMXBean bean = JMX.newMXBeanProxy( - ManagementFactory.getPlatformMBeanServer(), - transaction.lookupConfigBean("logback", "singleton"), - LogbackModuleMXBean.class); + /** + * Add new logger using FileAppender + * + * @throws MalformedObjectNameException + */ + @Test + public void testAddNewLogger() throws InstanceAlreadyExistsException, InstanceNotFoundException, + MalformedObjectNameException, ValidationException, ConflictingVersionException { + + ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); + ObjectName nameRetrieved = transaction.lookupConfigBean(factory.getImplementationName(), LogbackModuleFactory.INSTANCE_NAME); + LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameRetrieved, LogbackModuleMXBean.class); assertEquals(5, bean.getLoggerTO().size()); + + List loggers = Lists.newArrayList(bean.getLoggerTO()); + LoggerTO logger = new LoggerTO(); + logger.setAppenders(Lists.newArrayList("FILE")); + logger.setLevel("INFO"); + logger.setLoggerName("fileLogger"); + loggers.add(logger); + bean.setLoggerTO(loggers); + + transaction.commit(); + + transaction = configRegistryClient.createTransaction(); + nameRetrieved = transaction.lookupConfigBean(factory.getImplementationName(), "singleton"); + bean = JMX.newMXBeanProxy(platformMBeanServer, nameRetrieved, LogbackModuleMXBean.class); + + assertEquals(6, bean.getLoggerTO().size()); } }