PageRenderTime 44ms CodeModel.GetById 33ms app.highlight 9ms RepoModel.GetById 0ms app.codeStats 0ms

/apache-log4j-1.2.17/tests/src/java/org/apache/log4j/varia/LevelMatchFilterTestCase.java

#
Java | 147 lines | 86 code | 30 blank | 31 comment | 2 complexity | 8fe787a0908dd0ba0603cce24a72f5f5 MD5 | raw file
Possible License(s): Apache-2.0
  1/*
  2 * Licensed to the Apache Software Foundation (ASF) under one or more
  3 * contributor license agreements.  See the NOTICE file distributed with
  4 * this work for additional information regarding copyright ownership.
  5 * The ASF licenses this file to You under the Apache License, Version 2.0
  6 * (the "License"); you may not use this file except in compliance with
  7 * the License.  You may obtain a copy of the License at
  8 * 
  9 *      http://www.apache.org/licenses/LICENSE-2.0
 10 * 
 11 * Unless required by applicable law or agreed to in writing, software
 12 * distributed under the License is distributed on an "AS IS" BASIS,
 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14 * See the License for the specific language governing permissions and
 15 * limitations under the License.
 16 */
 17
 18package org.apache.log4j.varia;
 19
 20import junit.framework.TestCase;
 21import junit.framework.TestSuite;
 22import junit.framework.Test;
 23
 24import org.apache.log4j.Logger;
 25import org.apache.log4j.Level;
 26import org.apache.log4j.Appender;
 27import org.apache.log4j.FileAppender;
 28import org.apache.log4j.Layout;
 29import org.apache.log4j.SimpleLayout;
 30import org.apache.log4j.varia.LevelMatchFilter;
 31import org.apache.log4j.varia.DenyAllFilter;
 32
 33import org.apache.log4j.util.Transformer;
 34import org.apache.log4j.util.Compare;
 35import org.apache.log4j.util.LineNumberFilter;
 36
 37/**
 38   Test case for varia/LevelMatchFilter.java.
 39 */
 40public class LevelMatchFilterTestCase extends TestCase {
 41  
 42  static String ACCEPT_FILE     = "output/LevelMatchFilter_accept";
 43  static String ACCEPT_FILTERED = "output/LevelMatchFilter_accept_filtered";
 44  static String ACCEPT_WITNESS  = "witness/LevelMatchFilter_accept";
 45
 46  static String DENY_FILE       = "output/LevelMatchFilter_deny";
 47  static String DENY_FILTERED   = "output/LevelMatchFilter_deny_filtered";
 48  static String DENY_WITNESS    = "witness/LevelMatchFilter_deny";
 49
 50  Logger root; 
 51  Logger logger;
 52
 53  public LevelMatchFilterTestCase(String name) {
 54    super(name);
 55  }
 56
 57  public void setUp() {
 58    root = Logger.getRootLogger();
 59    root.removeAllAppenders();
 60  }
 61
 62  public void tearDown() {  
 63    root.getLoggerRepository().resetConfiguration();
 64  }
 65
 66  public void accept() throws Exception {
 67    
 68    // set up appender
 69    Layout layout = new SimpleLayout();
 70    Appender appender = new FileAppender(layout, ACCEPT_FILE, false);
 71    
 72    // create LevelMatchFilter
 73    LevelMatchFilter matchFilter = new LevelMatchFilter();
 74 
 75     // attach match filter to appender
 76    appender.addFilter(matchFilter);
 77   
 78    // attach DenyAllFilter to end of filter chain to deny neutral
 79    // (non matching) messages
 80    appender.addFilter(new DenyAllFilter());
 81        
 82    // set appender on root and set level to debug
 83    root.addAppender(appender);
 84    root.setLevel(Level.TRACE);
 85    
 86    Level[] levelArray = new Level[] {Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN, 
 87				      Level.ERROR, Level.FATAL};
 88    for (int x = 0; x < levelArray.length; x++) {
 89      // set the level to match
 90      matchFilter.setLevelToMatch(levelArray[x].toString());
 91      common("pass " + x + "; filter set to accept only " 
 92	     + levelArray[x].toString() + " msgs");
 93    }
 94    
 95    Transformer.transform(ACCEPT_FILE, ACCEPT_FILTERED, new LineNumberFilter());
 96    assertTrue(Compare.compare(ACCEPT_FILTERED, ACCEPT_WITNESS));
 97  }
 98
 99  public void deny() throws Exception {
100    
101    // set up appender
102    Layout layout = new SimpleLayout();
103    Appender appender = new FileAppender(layout, DENY_FILE, false);
104    
105    // create LevelMatchFilter, set to deny matches
106    LevelMatchFilter matchFilter = new LevelMatchFilter();
107    matchFilter.setAcceptOnMatch(false);
108 
109     // attach match filter to appender
110    appender.addFilter(matchFilter);
111           
112    // set appender on root and set level to debug
113    root.addAppender(appender);
114    root.setLevel(Level.TRACE);
115    
116    Level[] levelArray = new Level[] {Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN,
117				      Level.ERROR, Level.FATAL};
118    for (int x = 0; x < levelArray.length; x++) {
119      // set the level to match
120      matchFilter.setLevelToMatch(levelArray[x].toString());
121      common("pass " + x + "; filter set to deny only " + levelArray[x].toString()
122              + " msgs");
123    }
124    
125    Transformer.transform(DENY_FILE, DENY_FILTERED, new LineNumberFilter());
126    assertTrue(Compare.compare(DENY_FILTERED, DENY_WITNESS));
127  }
128
129
130  void common(String msg) {
131    Logger logger = Logger.getLogger("test");
132    logger.trace(msg);
133    logger.debug(msg);
134    logger.info(msg);
135    logger.warn(msg);
136    logger.error(msg);
137    logger.fatal(msg);
138  }
139
140  public static Test suite() {
141    TestSuite suite = new TestSuite();
142    suite.addTest(new LevelMatchFilterTestCase("accept"));
143    suite.addTest(new LevelMatchFilterTestCase("deny"));
144    return suite;
145  }
146
147}