PageRenderTime 55ms CodeModel.GetById 26ms 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. package org.apache.log4j.helpers;
  18. import junit.framework.TestCase;
  19. import junit.framework.TestSuite;
  20. import junit.framework.Test;
  21. import org.apache.log4j.Logger;
  22. import org.apache.log4j.Level;
  23. import org.apache.log4j.Appender;
  24. import org.apache.log4j.FileAppender;
  25. import org.apache.log4j.PatternLayout;
  26. import org.apache.log4j.MDC;
  27. import org.apache.log4j.util.Compare;
  28. /**
  29. Test case for helpers/PatternParser.java. Tests the various
  30. conversion patterns supported by PatternParser. This test
  31. class tests PatternParser via the PatternLayout class which
  32. uses it.
  33. */
  34. public class PatternParserTestCase extends TestCase {
  35. static String OUTPUT_FILE = "output/PatternParser";
  36. static String WITNESS_FILE = "witness/PatternParser";
  37. static String msgPattern = "%m%n";
  38. Logger root;
  39. Logger logger;
  40. public PatternParserTestCase(String name) {
  41. super(name);
  42. }
  43. public void setUp() {
  44. root = Logger.getRootLogger();
  45. root.removeAllAppenders();
  46. }
  47. public void tearDown() {
  48. root.getLoggerRepository().resetConfiguration();
  49. }
  50. /**
  51. Test case for MDC conversion pattern. */
  52. public void mdcPattern() throws Exception {
  53. String mdcMsgPattern1 = "%m : %X%n";
  54. String mdcMsgPattern2 = "%m : %X{key1}%n";
  55. String mdcMsgPattern3 = "%m : %X{key2}%n";
  56. String mdcMsgPattern4 = "%m : %X{key3}%n";
  57. String mdcMsgPattern5 = "%m : %X{key1},%X{key2},%X{key3}%n";
  58. // set up appender
  59. PatternLayout layout = new PatternLayout(msgPattern);
  60. Appender appender = new FileAppender(layout, OUTPUT_FILE+"_mdc", false);
  61. // set appender on root and set level to debug
  62. root.addAppender(appender);
  63. root.setLevel(Level.DEBUG);
  64. // output starting message
  65. root.debug("starting mdc pattern test");
  66. layout.setConversionPattern(mdcMsgPattern1);
  67. root.debug("empty mdc, no key specified in pattern");
  68. layout.setConversionPattern(mdcMsgPattern2);
  69. root.debug("empty mdc, key1 in pattern");
  70. layout.setConversionPattern(mdcMsgPattern3);
  71. root.debug("empty mdc, key2 in pattern");
  72. layout.setConversionPattern(mdcMsgPattern4);
  73. root.debug("empty mdc, key3 in pattern");
  74. layout.setConversionPattern(mdcMsgPattern5);
  75. root.debug("empty mdc, key1, key2, and key3 in pattern");
  76. MDC.put("key1", "value1");
  77. MDC.put("key2", "value2");
  78. layout.setConversionPattern(mdcMsgPattern1);
  79. root.debug("filled mdc, no key specified in pattern");
  80. layout.setConversionPattern(mdcMsgPattern2);
  81. root.debug("filled mdc, key1 in pattern");
  82. layout.setConversionPattern(mdcMsgPattern3);
  83. root.debug("filled mdc, key2 in pattern");
  84. layout.setConversionPattern(mdcMsgPattern4);
  85. root.debug("filled mdc, key3 in pattern");
  86. layout.setConversionPattern(mdcMsgPattern5);
  87. root.debug("filled mdc, key1, key2, and key3 in pattern");
  88. MDC.remove("key1");
  89. MDC.remove("key2");
  90. layout.setConversionPattern(msgPattern);
  91. root.debug("finished mdc pattern test");
  92. assertTrue(Compare.compare(OUTPUT_FILE+"_mdc", WITNESS_FILE+"_mdc"));
  93. }
  94. public static Test suite() {
  95. TestSuite suite = new TestSuite();
  96. //
  97. // MDC requires JDK 1.2+
  98. //
  99. if (!System.getProperty("java.version").startsWith("1.1.")) {
  100. suite.addTest(new PatternParserTestCase("mdcPattern"));
  101. }
  102. return suite;
  103. }
  104. }