1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.log4j;
19
20 import junit.framework.TestCase;
21 import junit.framework.TestSuite;
22 import junit.framework.Test;
23
24 import org.apache.log4j.helpers.AbsoluteTimeDateFormat;
25 import org.apache.log4j.util.*;
26
27
28
29
30 public class MinimumTestCase extends TestCase {
31
32 static String FILTERED = "output/filtered";
33
34 static String EXCEPTION1 = "java.lang.Exception: Just testing";
35 static String EXCEPTION2 = "\\s*at .*\\(.*\\)";
36 static String EXCEPTION3 = "\\s*at .*\\(Native Method\\)";
37 static String EXCEPTION4 = "\\s*at .*\\(.*Compiled Code\\)";
38 static String EXCEPTION5 = "\\s*at .*\\(.*libgcj.*\\)";
39
40
41
42 static String TTCC_PAT = Filter.ABSOLUTE_DATE_AND_TIME_PAT+
43 " \\[main]\\ (TRACE|DEBUG|INFO|WARN|ERROR|FATAL) .* - Message \\d{1,2}";
44
45 static String TTCC2_PAT = Filter.ABSOLUTE_DATE_AND_TIME_PAT+
46 " \\[main]\\ (TRACE|DEBUG|INFO|WARN|ERROR|FATAL) .* - Messages should bear numbers 0 through 29\\.";
47
48
49
50 Logger root;
51 Logger logger;
52
53 public MinimumTestCase(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 simple() throws Exception {
67
68 Layout layout = new SimpleLayout();
69 Appender appender = new FileAppender(layout, "output/simple", false);
70 root.addAppender(appender);
71 common();
72
73 Transformer.transform(
74 "output/simple", FILTERED,
75 new Filter[] { new LineNumberFilter(),
76 new SunReflectFilter(),
77 new JunitTestRunnerFilter() });
78 assertTrue(Compare.compare(FILTERED, "witness/simple"));
79 }
80
81 public void ttcc() throws Exception {
82
83 Layout layout = new TTCCLayout(AbsoluteTimeDateFormat.DATE_AND_TIME_DATE_FORMAT);
84 Appender appender = new FileAppender(layout, "output/ttcc", false);
85 root.addAppender(appender);
86
87 String oldName = Thread.currentThread().getName();
88 Thread.currentThread().setName("main");
89 common();
90 Thread.currentThread().setName(oldName);
91
92 ControlFilter cf1 = new ControlFilter(new String[]{TTCC_PAT,
93 TTCC2_PAT, EXCEPTION1, EXCEPTION2,
94 EXCEPTION3, EXCEPTION4, EXCEPTION5 });
95
96 Transformer.transform(
97 "output/ttcc", FILTERED,
98 new Filter[] {
99 cf1, new LineNumberFilter(),
100 new AbsoluteDateAndTimeFilter(),
101 new SunReflectFilter(), new JunitTestRunnerFilter()
102 });
103
104 assertTrue(Compare.compare(FILTERED, "witness/ttcc"));
105 }
106
107
108 void common() {
109
110 int i = 0;
111
112
113
114
115
116 Logger ERR = Logger.getLogger("ERR");
117 ERR.setLevel(Level.ERROR);
118 Logger INF = Logger.getLogger("INF");
119 INF.setLevel(Level.INFO);
120 Logger INF_ERR = Logger.getLogger("INF.ERR");
121 INF_ERR.setLevel(Level.ERROR);
122 Logger DEB = Logger.getLogger("DEB");
123 DEB.setLevel(Level.DEBUG);
124 Logger TRC = Logger.getLogger("TRC");
125 TRC.setLevel(Level.TRACE);
126
127
128 Logger INF_UNDEF = Logger.getLogger("INF.UNDEF");
129 Logger INF_ERR_UNDEF = Logger.getLogger("INF.ERR.UNDEF");
130 Logger UNDEF = Logger.getLogger("UNDEF");
131
132
133
134 ERR.log(Level.FATAL, "Message " + i); i++;
135 ERR.error( "Message " + i); i++;
136
137 INF.log(Level.FATAL, "Message " + i); i++;
138 INF.error( "Message " + i); i++;
139 INF.warn ( "Message " + i); i++;
140 INF.info ( "Message " + i); i++;
141
142 INF_UNDEF.log(Level.FATAL, "Message " + i); i++;
143 INF_UNDEF.error( "Message " + i); i++;
144 INF_UNDEF.warn ( "Message " + i); i++;
145 INF_UNDEF.info ( "Message " + i); i++;
146
147 INF_ERR.log(Level.FATAL, "Message " + i); i++;
148 INF_ERR.error( "Message " + i); i++;
149
150 INF_ERR_UNDEF.log(Level.FATAL, "Message " + i); i++;
151 INF_ERR_UNDEF.error( "Message " + i); i++;
152
153 DEB.log(Level.FATAL, "Message " + i); i++;
154 DEB.error( "Message " + i); i++;
155 DEB.warn ( "Message " + i); i++;
156 DEB.info ( "Message " + i); i++;
157 DEB.debug( "Message " + i); i++;
158
159 TRC.log(Level.FATAL, "Message " + i); i++;
160 TRC.error( "Message " + i); i++;
161 TRC.warn ( "Message " + i); i++;
162 TRC.info ( "Message " + i); i++;
163 TRC.debug( "Message " + i); i++;
164 TRC.trace( "Message " + i); i++;
165
166
167 UNDEF.log(Level.FATAL, "Message " + i); i++;
168 UNDEF.error("Message " + i); i++;
169 UNDEF.warn ("Message " + i); i++;
170 UNDEF.info ("Message " + i); i++;
171 UNDEF.debug("Message " + i, new Exception("Just testing."));
172 int printCount = i;
173 i++;
174
175
176
177 ERR.warn("Message " + i); i++;
178 ERR.info("Message " + i); i++;
179 ERR.debug("Message " + i); i++;
180
181 INF.debug("Message " + i); i++;
182 INF_UNDEF.debug("Message " + i); i++;
183
184
185 INF_ERR.warn("Message " + i); i++;
186 INF_ERR.info("Message " + i); i++;
187 INF_ERR.debug("Message " + i); i++;
188 INF_ERR_UNDEF.warn("Message " + i); i++;
189 INF_ERR_UNDEF.info("Message " + i); i++;
190 INF_ERR_UNDEF.debug("Message " + i); i++;
191
192 UNDEF.trace("Message " + i, new Exception("Just testing.")); i++;
193
194
195 INF.info("Messages should bear numbers 0 through "+printCount+".");
196 }
197
198 public static Test suite() {
199 TestSuite suite = new TestSuite();
200 suite.addTest(new MinimumTestCase("simple"));
201 suite.addTest(new MinimumTestCase("ttcc"));
202 return suite;
203 }
204
205 }