1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.log4j.rule;
18
19
20 import junit.framework.TestCase;
21 import org.apache.log4j.Level;
22 import org.apache.log4j.Logger;
23 import org.apache.log4j.spi.LoggingEvent;
24 import org.apache.log4j.util.SerializationTestHelper;
25
26 import java.io.IOException;
27 import java.util.Calendar;
28 import java.util.GregorianCalendar;
29 import java.util.Stack;
30
31 /***
32 * Test for AndRule.
33 */
34 public class AndRuleTest extends TestCase {
35
36 /***
37 * Create new test.
38 *
39 * @param testName test name.
40 */
41 public AndRuleTest(final String testName) {
42 super(testName);
43 }
44
45 /***
46 * AndRule.getRule(Stack) throws exception if only one rule provided.
47 */
48 public void test1() {
49 Stack stack = new Stack();
50 stack.push(LevelEqualsRule.getRule("INFO"));
51 try {
52 AndRule.getRule(stack);
53 fail("Should have thrown IllegalArgumentException");
54 } catch (IllegalArgumentException ex) {
55 }
56 }
57
58 /***
59 * AndRule.getRule(Stack) throws exception if non-rules are provided.
60 */
61 public void test2() {
62 Stack stack = new Stack();
63 stack.push("Hello");
64 stack.push("World");
65 try {
66 AndRule.getRule(stack);
67 fail("Should have thrown IllegalArgumentException");
68 } catch (IllegalArgumentException ex) {
69 }
70 }
71
72 /***
73 * Test And of Level and Time.
74 */
75 public void test3() {
76 Stack stack = new Stack();
77 stack.push(LevelEqualsRule.getRule("INFO"));
78 stack.push(TimestampInequalityRule.getRule(">=", "2008/05/21 00:44:45"));
79 Rule rule = AndRule.getRule(stack);
80 assertEquals(0, stack.size());
81 Calendar cal = new GregorianCalendar(2008, 04, 21, 00, 45, 44);
82 LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
83 Logger.getRootLogger(), cal.getTimeInMillis(), Level.INFO,
84 "Hello, World", null);
85 assertTrue(rule.evaluate(event, null));
86 }
87
88 /***
89 * Test And of Level and Time when Level does not match.
90 */
91 public void test4() {
92 Stack stack = new Stack();
93 stack.push(LevelEqualsRule.getRule("INFO"));
94 stack.push(TimestampInequalityRule.getRule(">=", "2008/05/21 00:44:45"));
95 Rule rule = AndRule.getRule(stack);
96 assertEquals(0, stack.size());
97 Calendar cal = new GregorianCalendar(2008, 04, 21, 00, 45, 44);
98 LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
99 Logger.getRootLogger(), cal.getTimeInMillis(), Level.WARN,
100 "Hello, World", null);
101 assertFalse(rule.evaluate(event, null));
102 }
103
104 /***
105 * Test And of Level and Time when Time does not match.
106 */
107 public void test5() {
108 Stack stack = new Stack();
109 stack.push(LevelEqualsRule.getRule("INFO"));
110 stack.push(TimestampInequalityRule.getRule(">=", "2009/05/21 00:44:45"));
111 Rule rule = AndRule.getRule(stack);
112 assertEquals(0, stack.size());
113 Calendar cal = new GregorianCalendar(2008, 04, 21, 00, 45, 44);
114 LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
115 Logger.getRootLogger(), cal.getTimeInMillis(), Level.INFO,
116 "Hello, World", null);
117 assertFalse(rule.evaluate(event, null));
118 }
119
120
121 /***
122 * Test deserialized And.
123 */
124 public void test6() throws IOException, ClassNotFoundException {
125 Stack stack = new Stack();
126 stack.push(LevelEqualsRule.getRule("INFO"));
127 stack.push(TimestampInequalityRule.getRule(">=", "2008/05/21 00:44:45"));
128 Rule rule = (Rule) SerializationTestHelper.serializeClone(AndRule.getRule(stack));
129 assertEquals(0, stack.size());
130 Calendar cal = new GregorianCalendar(2008, 04, 21, 00, 45, 44);
131 LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
132 Logger.getRootLogger(), cal.getTimeInMillis(), Level.INFO,
133 "Hello, World", null);
134 assertTrue(rule.evaluate(event, null));
135 }
136
137
138 /***
139 * Test deserialized And when Level doesn't match.
140 */
141 public void test7() throws IOException, ClassNotFoundException {
142 Stack stack = new Stack();
143 stack.push(LevelEqualsRule.getRule("INFO"));
144 stack.push(TimestampInequalityRule.getRule(">=", "2008/05/21 00:44:45"));
145 Rule rule = (Rule) SerializationTestHelper.serializeClone(AndRule.getRule(stack));
146 assertEquals(0, stack.size());
147 Calendar cal = new GregorianCalendar(2008, 04, 21, 00, 45, 44);
148 LoggingEvent event = new LoggingEvent("org.apache.log4j.Logger",
149 Logger.getRootLogger(), cal.getTimeInMillis(), Level.WARN,
150 "Hello, World", null);
151 assertFalse(rule.evaluate(event, null));
152 }
153
154 }