PageRenderTime 31ms CodeModel.GetById 20ms app.highlight 9ms RepoModel.GetById 0ms app.codeStats 0ms

/apache-log4j-1.2.17/tests/src/java/org/apache/log4j/helpers/PatternParserTestCase.java

#
Java | 136 lines | 74 code | 32 blank | 30 comment | 1 complexity | 189fc69a793482f0bc76f08908817b90 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.helpers;
 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.PatternLayout;
 29import org.apache.log4j.MDC;
 30
 31import org.apache.log4j.util.Compare;
 32
 33/**
 34   Test case for helpers/PatternParser.java. Tests the various 
 35   conversion patterns supported by PatternParser. This test
 36   class tests PatternParser via the PatternLayout class which
 37   uses it.
 38 */
 39public class PatternParserTestCase extends TestCase {
 40  
 41  static String OUTPUT_FILE   = "output/PatternParser";
 42  static String WITNESS_FILE  = "witness/PatternParser";
 43
 44  static String msgPattern = "%m%n";
 45  
 46  Logger root; 
 47  Logger logger;
 48
 49  public PatternParserTestCase(String name) {
 50    super(name);
 51  }
 52
 53  public void setUp() {
 54    root = Logger.getRootLogger();
 55    root.removeAllAppenders();
 56  }
 57
 58  public void tearDown() {  
 59    root.getLoggerRepository().resetConfiguration();
 60  }
 61
 62  /**
 63    Test case for MDC conversion pattern. */
 64  public void mdcPattern() throws Exception {
 65    
 66    String mdcMsgPattern1 = "%m : %X%n";
 67    String mdcMsgPattern2 = "%m : %X{key1}%n";
 68    String mdcMsgPattern3 = "%m : %X{key2}%n";
 69    String mdcMsgPattern4 = "%m : %X{key3}%n";
 70    String mdcMsgPattern5 = "%m : %X{key1},%X{key2},%X{key3}%n";
 71    
 72    // set up appender
 73    PatternLayout layout = new PatternLayout(msgPattern);
 74    Appender appender = new FileAppender(layout, OUTPUT_FILE+"_mdc", false);
 75            
 76    // set appender on root and set level to debug
 77    root.addAppender(appender);
 78    root.setLevel(Level.DEBUG);
 79    
 80    // output starting message
 81    root.debug("starting mdc pattern test");
 82 
 83    layout.setConversionPattern(mdcMsgPattern1);
 84    root.debug("empty mdc, no key specified in pattern");
 85    
 86    layout.setConversionPattern(mdcMsgPattern2);
 87    root.debug("empty mdc, key1 in pattern");
 88    
 89    layout.setConversionPattern(mdcMsgPattern3);
 90    root.debug("empty mdc, key2 in pattern");
 91    
 92    layout.setConversionPattern(mdcMsgPattern4);
 93    root.debug("empty mdc, key3 in pattern");
 94    
 95    layout.setConversionPattern(mdcMsgPattern5);
 96    root.debug("empty mdc, key1, key2, and key3 in pattern");
 97
 98    MDC.put("key1", "value1");
 99    MDC.put("key2", "value2");
100
101    layout.setConversionPattern(mdcMsgPattern1);
102    root.debug("filled mdc, no key specified in pattern");
103    
104    layout.setConversionPattern(mdcMsgPattern2);
105    root.debug("filled mdc, key1 in pattern");
106    
107    layout.setConversionPattern(mdcMsgPattern3);
108    root.debug("filled mdc, key2 in pattern");
109    
110    layout.setConversionPattern(mdcMsgPattern4);
111    root.debug("filled mdc, key3 in pattern");
112    
113    layout.setConversionPattern(mdcMsgPattern5);
114    root.debug("filled mdc, key1, key2, and key3 in pattern");
115
116    MDC.remove("key1");
117    MDC.remove("key2");
118
119    layout.setConversionPattern(msgPattern);
120    root.debug("finished mdc pattern test");
121
122    assertTrue(Compare.compare(OUTPUT_FILE+"_mdc", WITNESS_FILE+"_mdc"));
123  }
124
125  public static Test suite() {
126    TestSuite suite = new TestSuite();
127    //
128    //   MDC requires JDK 1.2+
129    //
130    if (!System.getProperty("java.version").startsWith("1.1.")) {
131       suite.addTest(new PatternParserTestCase("mdcPattern"));
132    }
133    return suite;
134  }
135
136}