/** * Copyright (c) 2009 - 2012 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package org.candlepin.logging; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.slf4j.MDC; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.core.spi.FilterReply; /** * LoggerAndMDCFilterTest */ public class LoggerAndMDCFilterTest { private LoggerAndMDCFilter filter; private LoggerContext context; @Before public void setUp() throws Exception { context = new LoggerContext(); context.start(); filter = new LoggerAndMDCFilter(); filter.setContext(context); filter.setKey("foo"); filter.setTopLogger("org.candlepin"); filter.setOnMatch(FilterReply.ACCEPT.toString()); filter.setOnMismatch(FilterReply.DENY.toString()); filter.start(); } @After public void tearDown() throws Exception { MDC.clear(); } @Test public void testDecideWithUnStartedFilter() { filter = new LoggerAndMDCFilter(); filter.setContext(context); Logger logger = context.getLogger("org.candlepin.foo"); assertEquals(FilterReply.NEUTRAL, filter.decide(null, logger, Level.DEBUG, null, null, null)); } @Test public void testDecideWithNoKey() { Logger logger = context.getLogger("org.candlepin.foo"); // The MDC doesn't have the key, so we'll return neutral assertEquals(FilterReply.NEUTRAL, filter.decide(null, logger, Level.DEBUG, null, null, null)); } @Test public void testDecideWithKey() { Logger logger = context.getLogger("org.candlepin.foo"); MDC.put("foo", "ALL"); assertEquals(FilterReply.ACCEPT, filter.decide(null, logger, Level.DEBUG, null, null, null)); } @Test public void testDecideWithLevelTooHigh() { Logger logger = context.getLogger("org.candlepin.foo"); MDC.put("foo", "NONE"); assertEquals(FilterReply.DENY, filter.decide(null, logger, Level.DEBUG, null, null, null)); } @Test public void testDecideWithWrongTopLogger() { Logger logger = context.getLogger("org.someoneelse.foo"); MDC.put("foo", "ALL"); assertEquals(FilterReply.DENY, filter.decide(null, logger, Level.DEBUG, null, null, null)); } @Test public void testStart() { filter = new LoggerAndMDCFilter(); filter.setContext(context); filter.start(); assertFalse(filter.isStarted()); filter.setTopLogger("org.candlepin"); filter.start(); assertFalse(filter.isStarted()); filter.setKey("foo"); filter.start(); assertTrue(filter.isStarted()); } }