1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  package org.slf4j.reload4j;
26  
27  import static org.junit.Assert.assertEquals;
28  import static org.junit.Assert.assertNotNull;
29  import static org.junit.Assert.assertNull;
30  import static org.junit.Assert.fail;
31  
32  import java.util.HashMap;
33  import java.util.Map;
34  
35  import org.apache.log4j.spi.LoggingEvent;
36  import org.junit.After;
37  import org.junit.Before;
38  import org.junit.Test;
39  import org.slf4j.Logger;
40  import org.slf4j.LoggerFactory;
41  import org.slf4j.MDC;
42  import org.slf4j.Marker;
43  import org.slf4j.MarkerFactory;
44  
45  
46  
47  
48  
49  
50  
51  public class InvocationTest {
52  
53      ListAppender listAppender = new ListAppender();
54      org.apache.log4j.Logger root;
55  
56      @Before
57      public void setUp() throws Exception {
58          root = org.apache.log4j.Logger.getRootLogger();
59          root.addAppender(listAppender);
60      }
61  
62      @After
63      public void tearDown() throws Exception {
64          root.getLoggerRepository().resetConfiguration();
65      }
66  
67      @Test
68      public void test1() {
69  
70          Logger logger = LoggerFactory.getLogger("test1");
71          logger.debug("Hello world.");
72          assertEquals(1, listAppender.list.size());
73      }
74  
75      @Test
76      public void test2() {
77          Integer i1 = Integer.valueOf(1);
78          Integer i2 = Integer.valueOf(2);
79          Integer i3 = Integer.valueOf(3);
80          Exception e = new Exception("This is a test exception.");
81          Logger logger = LoggerFactory.getLogger("test2");
82  
83          logger.trace("Hello trace.");
84  
85          logger.debug("Hello world 1.");
86          logger.debug("Hello world {}", i1);
87          logger.debug("val={} val={}", i1, i2);
88          logger.debug("val={} val={} val={}", new Object[] { i1, i2, i3 });
89  
90          logger.debug("Hello world 2", e);
91          logger.info("Hello world 2.");
92  
93          logger.warn("Hello world 3.");
94          logger.warn("Hello world 3", e);
95  
96          logger.error("Hello world 4.");
97          logger.error("Hello world {}", Integer.valueOf(3));
98          logger.error("Hello world 4.", e);
99          assertEquals(11, listAppender.list.size());
100     }
101 
102     @Test
103     public void testNull() {
104         Logger logger = LoggerFactory.getLogger("testNull");
105         logger.trace(null);
106         logger.debug(null);
107         logger.info(null);
108         logger.warn(null);
109         logger.error(null);
110 
111         Exception e = new Exception("This is a test exception.");
112         logger.debug(null, e);
113         logger.info(null, e);
114         logger.warn(null, e);
115         logger.error(null, e);
116         assertEquals(8, listAppender.list.size());
117     }
118 
119     
120     
121     @Test
122     public void testNullParameter_BUG78() {
123         Logger logger = LoggerFactory.getLogger("testNullParameter_BUG78");
124         String[] parameters = null;
125         String msg = "hello {}";
126 
127         logger.debug(msg, (Object[]) parameters);
128 
129         assertEquals(1, listAppender.list.size());
130         LoggingEvent e = (LoggingEvent) listAppender.list.get(0);
131         assertEquals(msg, e.getMessage());
132     }
133 
134     @Test
135     public void testMarker() {
136         Logger logger = LoggerFactory.getLogger("testMarker");
137         Marker blue = MarkerFactory.getMarker("BLUE");
138         logger.trace(blue, "hello");
139         logger.debug(blue, "hello");
140         logger.info(blue, "hello");
141         logger.warn(blue, "hello");
142         logger.error(blue, "hello");
143 
144         logger.debug(blue, "hello {}", "world");
145         logger.info(blue, "hello {}", "world");
146         logger.warn(blue, "hello {}", "world");
147         logger.error(blue, "hello {}", "world");
148 
149         logger.debug(blue, "hello {} and {} ", "world", "universe");
150         logger.info(blue, "hello {} and {} ", "world", "universe");
151         logger.warn(blue, "hello {} and {} ", "world", "universe");
152         logger.error(blue, "hello {} and {} ", "world", "universe");
153         assertEquals(12, listAppender.list.size());
154     }
155 
156     @Test
157     public void testMDC() {
158         MDC.put("k", "v");
159         assertNotNull(MDC.get("k"));
160         assertEquals("v", MDC.get("k"));
161 
162         MDC.remove("k");
163         assertNull(MDC.get("k"));
164 
165         MDC.put("k1", "v1");
166         assertEquals("v1", MDC.get("k1"));
167         MDC.clear();
168         assertNull(MDC.get("k1"));
169 
170         try {
171             MDC.put(null, "x");
172             fail("null keys are invalid");
173         } catch (IllegalArgumentException e) {
174         }
175     }
176 
177     @Test
178     public void testMDCContextMapValues() {
179         Map<String, String> map = new HashMap<>();
180         map.put("ka", "va");
181         map.put("kb", "vb");
182 
183         MDC.put("k", "v");
184         assertEquals("v", MDC.get("k"));
185         MDC.setContextMap(map);
186         assertNull(MDC.get("k"));
187         assertEquals("va", MDC.get("ka"));
188         assertEquals("vb", MDC.get("kb"));
189     }
190 
191     @Test
192     public void testCallerInfo() {
193         Logger logger = LoggerFactory.getLogger("testMarker");
194         listAppender.extractLocationInfo = true;
195         logger.debug("hello");
196         LoggingEvent event = listAppender.list.get(0);
197         assertEquals(this.getClass().getName(), event.getLocationInformation().getClassName());
198     }
199 
200     @Test
201     public void testCallerInfoWithFluentAPI() {
202         Logger logger = LoggerFactory.getLogger("testMarker");
203         listAppender.extractLocationInfo = true;
204         logger.atDebug().log("hello");
205         LoggingEvent event = listAppender.list.get(0);
206         assertEquals(this.getClass().getName(), event.getLocationInformation().getClassName());
207     }
208 
209 }