blob: 73459d33163418318d2079bf1a6e85a81cbacebd [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.karaf.log.core.internal;
import java.util.Hashtable;
import junit.framework.TestCase;
import org.apache.karaf.log.core.LogMBean;
import org.apache.karaf.log.core.LogService;
import org.easymock.EasyMock;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
/**
* Test cases for {@link SetLogLevel}
*/
@SuppressWarnings("unchecked")
public class SetLogLevelTest extends TestCase {
private static final String ROOT_LOGGER = "log4j.rootLogger";
private static final String PACKAGE_LOGGER = "log4j.logger.org.apache.karaf.test";
private LogService logService;
private LogMBean logMBean;
@SuppressWarnings("rawtypes")
private Hashtable properties;
@Override
protected void setUp() throws Exception {
super.setUp();
properties = new Hashtable<String, String>();
final Configuration configuration = EasyMock.createMock(Configuration.class);
EasyMock.expect(configuration.getProperties()).andReturn(properties);
configuration.update(properties);
ConfigurationAdmin configAdmin = EasyMock.createMock(ConfigurationAdmin.class);
EasyMock.expect(configAdmin.getConfiguration(LogServiceImpl.CONFIGURATION_PID, null)).andReturn(configuration);
logService = new LogServiceImpl(configAdmin, new LruList(100));
logMBean = new LogMBeanImpl(logService);
EasyMock.replay(configAdmin);
EasyMock.replay(configuration);
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testInvalidLogLevel() throws Exception {
try {
logMBean.setLevel("INVALID");
fail("Exception expected");
} catch(IllegalArgumentException e) {
// Expected
}
}
public void testSetLogLevel() throws Exception {
logMBean.setLevel("org.apache.karaf.test", "INFO");
assertEquals("INFO", properties.get(PACKAGE_LOGGER));
}
public void testSetRootLogLevel() throws Exception {
logMBean.setLevel("INFO");
assertEquals("INFO", properties.get(ROOT_LOGGER));
}
public void testSetLogLevelLowerCase() throws Exception {
logMBean.setLevel("org.apache.karaf.test", "info");
assertEquals("INFO", properties.get(PACKAGE_LOGGER));
}
public void testSetRootLogLevelLowerCase() throws Exception {
logMBean.setLevel("info");
assertEquals("INFO", properties.get(ROOT_LOGGER));
}
public void testChangeLogLevel() throws Exception {
properties.put(PACKAGE_LOGGER, "DEBUG");
logMBean.setLevel("org.apache.karaf.test", "INFO");
assertEquals("INFO", properties.get(PACKAGE_LOGGER));
}
public void testChangeRootLogLevel() throws Exception {
properties.put(ROOT_LOGGER, "DEBUG");
logMBean.setLevel("INFO");
assertEquals("INFO", properties.get(ROOT_LOGGER));
}
public void testChangeLogLevelWithAppender() throws Exception {
properties.put(PACKAGE_LOGGER, "DEBUG, APPENDER1");
logMBean.setLevel("org.apache.karaf.test", "INFO");
assertEquals("INFO, APPENDER1", properties.get(PACKAGE_LOGGER));
}
public void testChangeRootLogLevelWithAppender() throws Exception {
properties.put(ROOT_LOGGER, "DEBUG, APPENDER1");
logMBean.setLevel("INFO");
assertEquals("INFO, APPENDER1", properties.get(ROOT_LOGGER));
}
public void testUnsetLogLevel() throws Exception {
properties.put(PACKAGE_LOGGER, "DEBUG");
logMBean.setLevel("org.apache.karaf.test", "DEFAULT");
assertFalse("Configuration for logger org.apache.karaf.test has been removed", properties.containsKey(PACKAGE_LOGGER));
}
public void testUnsetRootLogLevel() throws Exception {
properties.put(ROOT_LOGGER, "INFO");
logMBean.setLevel("org.apache.karaf.test", "DEFAULT");
assertEquals("Configuration for root logger should not be removed", "INFO", properties.get(ROOT_LOGGER));
}
}