2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.config.yang.logback.config;
10 import org.junit.Before;
11 import org.junit.Ignore;
12 import org.junit.Test;
13 import org.opendaylight.controller.config.api.ValidationException;
14 import org.opendaylight.controller.config.api.jmx.CommitStatus;
15 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
16 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
17 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
19 import javax.management.ObjectName;
20 import java.util.ArrayList;
21 import java.util.Arrays;
22 import java.util.List;
24 import static org.junit.Assert.assertThat;
25 import static org.junit.Assert.fail;
26 import static org.junit.matchers.JUnitMatchers.containsString;
28 public class LogbackModuleTest extends AbstractConfigTest {
30 private static final String INSTANCE_NAME = "singleton";
32 private LogbackModuleFactory factory;
35 public void setUp() throws Exception {
37 factory = new LogbackModuleFactory();
38 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(factory));
42 public void testCreateBean() throws Exception {
44 CommitStatus status = createBeans(true, "target/rollingApp",
45 "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5, "target/%i.log", "rolling",
46 "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0, "FileAppender").commit();
48 assertBeanCount(1, factory.getImplementationName());
49 assertStatus(status, 1, 0, 0);
53 public void testReusingInstance() throws Exception {
54 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5,
55 "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0,
56 "FileAppender").commit();
58 assertBeanCount(1, factory.getImplementationName());
60 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
61 CommitStatus status = transaction.commit();
63 assertBeanCount(1, factory.getImplementationName());
64 assertStatus(status, 0, 0, 1);
68 public void testRecreateInstance() throws Exception {
69 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5,
70 "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0,
71 "FileAppender").commit();
73 assertBeanCount(1, LogbackModuleFactory.NAME);
74 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
76 ObjectName logback = transaction.lookupConfigBean(LogbackModuleFactory.NAME, "singleton");
77 LogbackModuleMXBean nwBean = transaction.newMXBeanProxy(logback, LogbackModuleMXBean.class);
78 CommitStatus status = transaction.commit();
79 assertBeanCount(1, LogbackModuleFactory.NAME);
81 assertStatus(status, 0, 0, 1);
85 public void testDestroyInstance() throws Exception {
86 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5,
87 "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0,
88 "FileAppender").commit();
89 assertBeanCount(1, factory.getImplementationName());
91 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
92 transaction.destroyConfigBean(factory.getImplementationName(), INSTANCE_NAME);
93 CommitStatus status = transaction.commit();
95 assertBeanCount(0, factory.getImplementationName());
96 assertStatus(status, 0, 0, 0);
101 public void testValidation1() throws Exception {
103 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5,
104 "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy",
105 0, "FileAppender").commit();
107 } catch (ValidationException e) {
108 assertThat(e.getFailedValidations().toString(), containsString("FileName is null"));
113 public void testValidation2() throws Exception {
115 createBeans(true, "target/rollingApp", null, "30MB", 1, 5, "target/%i.log", "rolling", "consoleName",
116 "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0, "FileAppender").commit();
118 } catch (ValidationException e) {
119 assertThat(e.getFailedValidations().toString(), containsString("EncoderPattern is null"));
124 public void testValidation4() throws Exception {
126 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", null, 1, 5,
127 "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy",
128 0, "FileAppender").commit();
130 } catch (ValidationException e) {
131 assertThat(e.getFailedValidations().toString(), containsString("MaxFileSize is null"));
136 public void testValidation6() throws Exception {
138 createBeans(true, "", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5, "target/%i.log",
139 "rolling", "consoleName", "ALL", "logger1", "DEBUG", "FixedWindowRollingPolicy", 0, "FileAppender")
142 } catch (ValidationException e) {
143 assertThat(e.getFailedValidations().toString(), containsString("FileName needs to be set"));
148 public void testValidation7() throws Exception {
152 true, "target/rollingApp", "", "30MB", 1, 5, "target/%i.log", "rolling", "consoleName", "ALL", "logger1",
153 "DEBUG", "FixedWindowRollingPolicy", 0, "FileAppender").commit();
155 } catch (ValidationException e) {
156 assertThat(e.getFailedValidations().toString(), containsString("EncoderPattern needs to be set"));
161 public void testValidation8() throws Exception {
163 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5,
164 "target/%i.log", "rolling", "consoleName", "ALL", null, "DEBUG", "FixedWindowRollingPolicy", 0,
165 "FileAppender").commit();
167 } catch (ValidationException e) {
168 assertThat(e.getFailedValidations().toString(), containsString("LoggerName is null"));
173 public void testValidation9() throws Exception {
175 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1, 5,
176 "target/%i.log", "rolling", "consoleName", "ALL", "", "DEBUG", "FixedWindowRollingPolicy", 0,
177 "FileAppender").commit();
179 } catch (ValidationException e) {
180 assertThat(e.getFailedValidations().toString(), containsString("LoggerName needs to be set"));
185 public void testValidation10() throws Exception {
187 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", null,
188 5, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG",
189 "FixedWindowRollingPolicy", 0, "FileAppender").commit();
191 } catch (ValidationException e) {
192 assertThat(e.getFailedValidations().toString(), containsString("MinIndex is null"));
197 public void testValidation11() throws Exception {
199 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1,
200 null, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG",
201 "FixedWindowRollingPolicy", 0, "FileAppender").commit();
203 } catch (ValidationException e) {
204 assertThat(e.getFailedValidations().toString(), containsString("MaxIndex is null"));
209 public void testValidation12() throws Exception {
211 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1,
212 null, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", null, 1, "FileAppender")
215 } catch (ValidationException e) {
216 assertThat(e.getFailedValidations().toString(), containsString("RollingPolicyType is null"));
221 public void testValidation13() throws Exception {
223 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1,
224 null, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "", 1, "FileAppender")
227 } catch (ValidationException e) {
228 assertThat(e.getFailedValidations().toString(), containsString("RollingPolicyType is not set"));
233 public void testValidation14() throws Exception {
235 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", 1,
236 null, "target/%i.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "RollingPolicy", 1,
237 "FileAppender").commit();
239 } catch (ValidationException e) {
240 assertThat(e.getFailedValidations().toString(), containsString("RollingPolicyType is not supported"));
245 public void testTimeBasedRollingPolicy() throws Exception {
246 createBeans(true, "target/rollingApp", "%-4relative [%thread] %-5level %logger{35} - %msg%n", "30MB", null,
247 null, "target/%d.log", "rolling", "consoleName", "ALL", "logger1", "DEBUG", "TimeBasedRollingPolicy",
248 1, "FileAppender").commit();
251 private ConfigTransactionJMXClient createBeans(Boolean isAppend, String rollingFileName, String encoderPattern,
252 String maxFileSize, Integer minIndex, Integer maxIndex, String fileNamePattern, String rollingName,
253 String consoleName, String thresholdFilter, String loggerName, String level, String rollingPolicyType,
254 int maxHistory, String fileAppName) throws Exception {
255 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
256 ObjectName nameRetrieved = transaction.lookupConfigBean(factory.getImplementationName(), INSTANCE_NAME);
257 LogbackModuleMXBean bean = transaction.newMXBeanProxy(nameRetrieved, LogbackModuleMXBean.class);
259 List<RollingFileAppenderTO> rollingAppenders = new ArrayList<>();
260 RollingFileAppenderTO rollingAppender = new RollingFileAppenderTO();
261 rollingAppender.setAppend(isAppend);
262 rollingAppender.setEncoderPattern(encoderPattern);
263 rollingAppender.setFileName(rollingFileName);
264 rollingAppender.setMaxFileSize(maxFileSize);
265 rollingAppender.setMaxIndex(maxIndex);
266 rollingAppender.setMinIndex(minIndex);
267 rollingAppender.setFileNamePattern(fileNamePattern);
268 rollingAppender.setName(rollingName);
269 rollingAppender.setRollingPolicyType(rollingPolicyType);
270 rollingAppender.setMaxHistory(maxHistory);
271 rollingAppenders.add(rollingAppender);
273 List<ConsoleAppenderTO> consoleAppenders = new ArrayList<>();
274 ConsoleAppenderTO consoleAppender = new ConsoleAppenderTO();
275 consoleAppender.setEncoderPattern(encoderPattern);
276 consoleAppender.setName(consoleName);
277 consoleAppender.setThresholdFilter(thresholdFilter);
278 consoleAppenders.add(consoleAppender);
280 List<FileAppenderTO> fileAppenders = new ArrayList<>();
281 FileAppenderTO fileAppender = new FileAppenderTO();
282 fileAppender.setName(fileAppName);
283 fileAppender.setAppend(isAppend);
284 fileAppender.setEncoderPattern(encoderPattern);
285 fileAppender.setFileName(rollingFileName);
286 fileAppenders.add(fileAppender);
288 List<LoggerTO> loggers = new ArrayList<>();
290 LoggerTO logger = new LoggerTO();
292 logger.setAppenders(Arrays.<String> asList());
294 logger.setLevel(level);
295 logger.setLoggerName(loggerName);
297 bean.setLoggerTO(loggers);
298 bean.setRollingFileAppenderTO(rollingAppenders);
299 bean.setConsoleAppenderTO(consoleAppenders);
300 bean.setFileAppenderTO(fileAppenders);
302 transaction.validateConfig();