Inital code drop of logback-config.
[controller.git] / opendaylight / config / logback-config / src / test / java / org / opendaylight / controller / config / yang / logback / config / LogbackWithXmlConfigModuleTest.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.config.yang.logback.config;
9
10 import static org.junit.Assert.assertEquals;
11
12 import java.io.File;
13 import java.io.IOException;
14 import java.lang.management.ManagementFactory;
15
16 import javax.management.InstanceAlreadyExistsException;
17 import javax.management.InstanceNotFoundException;
18 import javax.management.JMX;
19 import javax.management.ObjectName;
20
21 import org.apache.commons.io.FileUtils;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
25 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
26 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
27 import org.slf4j.LoggerFactory;
28
29 import ch.qos.logback.classic.LoggerContext;
30 import ch.qos.logback.classic.joran.JoranConfigurator;
31 import ch.qos.logback.core.joran.spi.JoranException;
32
33 public class LogbackWithXmlConfigModuleTest extends AbstractConfigTest {
34
35     private LogbackModuleFactory factory;
36     private LoggerContext lc;
37
38     @Before
39     public void setUp() throws JoranException, IOException {
40
41         factory = new LogbackModuleFactory();
42         super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
43                 factory));
44
45         lc = (LoggerContext) LoggerFactory.getILoggerFactory();
46         JoranConfigurator configurator = new JoranConfigurator();
47         lc.reset();
48         configurator.setContext(lc);
49         configurator
50                 .doConfigure("src/test/resources/simple_config_logback.xml");
51         File f = new File("target/it");
52         if (f.exists())
53             FileUtils.cleanDirectory(f);
54     }
55
56     /**
57      * Tests configuration of Logger factory.
58      */
59     @Test
60     public void test() throws InstanceAlreadyExistsException,
61             InstanceNotFoundException {
62
63         ConfigTransactionJMXClient transaction = configRegistryClient
64                 .createTransaction();
65         ObjectName nameCreated = transaction.createModule(
66                 factory.getImplementationName(), "singleton");
67
68         LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameCreated,
69                 LogbackModuleMXBean.class);
70
71         assertEquals(1, bean.getConsoleAppenderTO().size());
72
73         assertEquals(1, bean.getRollingFileAppenderTO().size());
74
75         transaction.commit();
76
77         transaction = configRegistryClient.createTransaction();
78
79         nameCreated = transaction.lookupConfigBean(
80                 factory.getImplementationName(), "singleton");
81
82         bean = JMX.newMXBeanProxy(platformMBeanServer, nameCreated,
83                 LogbackModuleMXBean.class);
84
85         assertEquals(1, bean.getConsoleAppenderTO().size());
86         assertEquals(1, bean.getRollingFileAppenderTO().size());
87
88     }
89
90     /**
91      * Tests filtering loggers. Loggers inherited from ROOT logger and duplicate
92      * loggers should be removed.
93      */
94     @Test
95     public void testAllLoggers() throws InstanceAlreadyExistsException,
96             InstanceNotFoundException {
97         ConfigTransactionJMXClient transaction = configRegistryClient
98                 .createTransaction();
99         transaction.createModule(factory.getImplementationName(), "singleton");
100
101         transaction.commit();
102
103         transaction = configRegistryClient.createTransaction();
104
105         LogbackModuleMXBean bean = JMX.newMXBeanProxy(
106                 ManagementFactory.getPlatformMBeanServer(),
107                 transaction.lookupConfigBean("logback", "singleton"),
108                 LogbackModuleMXBean.class);
109
110         assertEquals(5, bean.getLoggerTO().size());
111     }
112
113 }