Skip to content

Commit 0a7ad81

Browse files
Shaddollnatemort
authored andcommitted
Add unit tests for replay logger
1 parent 606808c commit 0a7ad81

File tree

1 file changed

+276
-0
lines changed

1 file changed

+276
-0
lines changed
Lines changed: 276 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,276 @@
1+
/**
2+
* Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
*
4+
* <p>Modifications copyright (C) 2017 Uber Technologies, Inc.
5+
*
6+
* <p>Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
7+
* except in compliance with the License. A copy of the License is located at
8+
*
9+
* <p>http://aws.amazon.com/apache2.0
10+
*
11+
* <p>or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
13+
* specific language governing permissions and limitations under the License.
14+
*/
15+
package com.uber.cadence.internal.logging;
16+
17+
import static org.junit.Assert.assertEquals;
18+
import static org.junit.Assert.assertFalse;
19+
import static org.junit.Assert.assertTrue;
20+
import static org.mockito.Mockito.mock;
21+
import static org.mockito.Mockito.verify;
22+
import static org.mockito.Mockito.when;
23+
24+
import com.uber.cadence.internal.replay.ReplayAware;
25+
import java.util.function.Supplier;
26+
import org.junit.Before;
27+
import org.junit.Test;
28+
import org.mockito.Mock;
29+
import org.mockito.MockitoAnnotations;
30+
import org.slf4j.Logger;
31+
import org.slf4j.Marker;
32+
33+
public class ReplayAwareLoggerTest {
34+
35+
@Mock private Logger mockLogger;
36+
37+
@Mock private ReplayAware mockReplayAware;
38+
39+
@Mock private Supplier<Boolean> enableLoggingInReplay;
40+
41+
private ReplayAwareLogger replayAwareLogger;
42+
43+
@Before
44+
public void setUp() {
45+
MockitoAnnotations.openMocks(this);
46+
replayAwareLogger = new ReplayAwareLogger(mockLogger, mockReplayAware, enableLoggingInReplay);
47+
}
48+
49+
private void setReplayMode(boolean isReplaying, boolean loggingEnabledInReplay) {
50+
when(mockReplayAware.isReplaying()).thenReturn(isReplaying);
51+
when(enableLoggingInReplay.get()).thenReturn(loggingEnabledInReplay);
52+
}
53+
54+
// ===========================
55+
// Tests for is*Enabled Methods
56+
// ===========================
57+
58+
@Test
59+
public void testIsTraceEnabledWhenLoggingAllowed() {
60+
setReplayMode(false, false);
61+
when(mockLogger.isTraceEnabled()).thenReturn(true);
62+
assertTrue(replayAwareLogger.isTraceEnabled());
63+
}
64+
65+
@Test
66+
public void testIsTraceEnabledWhenLoggingSkipped() {
67+
setReplayMode(true, false);
68+
assertFalse(replayAwareLogger.isTraceEnabled());
69+
}
70+
71+
@Test
72+
public void testIsTraceEnabledWhenReplayAndEnabled() {
73+
setReplayMode(true, true);
74+
when(mockLogger.isTraceEnabled()).thenReturn(true);
75+
assertTrue(replayAwareLogger.isTraceEnabled());
76+
}
77+
78+
@Test
79+
public void testIsDebugEnabledWhenLoggingAllowed() {
80+
setReplayMode(false, false);
81+
when(mockLogger.isDebugEnabled()).thenReturn(true);
82+
assertTrue(replayAwareLogger.isDebugEnabled());
83+
}
84+
85+
@Test
86+
public void testIsDebugEnabledWhenLoggingSkipped() {
87+
setReplayMode(true, false);
88+
assertFalse(replayAwareLogger.isDebugEnabled());
89+
}
90+
91+
@Test
92+
public void testIsDebugEnabledWhenReplayAndEnabled() {
93+
setReplayMode(true, true);
94+
when(mockLogger.isDebugEnabled()).thenReturn(true);
95+
assertTrue(replayAwareLogger.isDebugEnabled());
96+
}
97+
98+
@Test
99+
public void testIsInfoEnabledWhenLoggingAllowed() {
100+
setReplayMode(false, false);
101+
when(mockLogger.isInfoEnabled()).thenReturn(true);
102+
assertTrue(replayAwareLogger.isInfoEnabled());
103+
}
104+
105+
@Test
106+
public void testIsInfoEnabledWhenLoggingSkipped() {
107+
setReplayMode(true, false);
108+
assertFalse(replayAwareLogger.isInfoEnabled());
109+
}
110+
111+
@Test
112+
public void testIsInfoEnabledWhenReplayAndEnabled() {
113+
setReplayMode(true, true);
114+
when(mockLogger.isInfoEnabled()).thenReturn(true);
115+
assertTrue(replayAwareLogger.isInfoEnabled());
116+
}
117+
118+
@Test
119+
public void testIsWarnEnabledWhenLoggingAllowed() {
120+
setReplayMode(false, false);
121+
when(mockLogger.isWarnEnabled()).thenReturn(true);
122+
assertTrue(replayAwareLogger.isWarnEnabled());
123+
}
124+
125+
@Test
126+
public void testIsWarnEnabledWhenLoggingSkipped() {
127+
setReplayMode(true, false);
128+
assertFalse(replayAwareLogger.isWarnEnabled());
129+
}
130+
131+
@Test
132+
public void testIsWarnEnabledWhenReplayAndEnabled() {
133+
setReplayMode(true, true);
134+
when(mockLogger.isWarnEnabled()).thenReturn(true);
135+
assertTrue(replayAwareLogger.isWarnEnabled());
136+
}
137+
138+
@Test
139+
public void testIsErrorEnabledWhenLoggingAllowed() {
140+
setReplayMode(false, false);
141+
when(mockLogger.isErrorEnabled()).thenReturn(true);
142+
assertTrue(replayAwareLogger.isErrorEnabled());
143+
}
144+
145+
@Test
146+
public void testIsErrorEnabledWhenLoggingSkipped() {
147+
setReplayMode(true, false);
148+
assertFalse(replayAwareLogger.isErrorEnabled());
149+
}
150+
151+
@Test
152+
public void testIsErrorEnabledWhenReplayAndEnabled() {
153+
setReplayMode(true, true);
154+
when(mockLogger.isErrorEnabled()).thenReturn(true);
155+
assertTrue(replayAwareLogger.isErrorEnabled());
156+
}
157+
158+
// ===========================
159+
// Tests for Each Log Level
160+
// ===========================
161+
162+
// TRACE Level Methods
163+
@Test
164+
public void testTraceMethods() {
165+
setReplayMode(false, false);
166+
replayAwareLogger.trace("Trace message");
167+
replayAwareLogger.trace("Trace format {}", "arg");
168+
replayAwareLogger.trace("Trace format {} {}", "arg1", "arg2");
169+
replayAwareLogger.trace("Trace format {}", "arg1", "arg2", "arg3");
170+
Throwable exception = new RuntimeException("Test exception");
171+
replayAwareLogger.trace("Trace with exception", exception);
172+
Marker marker = mock(Marker.class);
173+
replayAwareLogger.trace(marker, "Marker trace");
174+
175+
verify(mockLogger).trace("Trace message");
176+
verify(mockLogger).trace("Trace format {}", "arg");
177+
verify(mockLogger).trace("Trace format {} {}", "arg1", "arg2");
178+
verify(mockLogger).trace("Trace format {}", "arg1", "arg2", "arg3");
179+
verify(mockLogger).trace("Trace with exception", exception);
180+
verify(mockLogger).trace(marker, "Marker trace");
181+
}
182+
183+
// DEBUG Level Methods
184+
@Test
185+
public void testDebugMethods() {
186+
setReplayMode(false, false);
187+
replayAwareLogger.debug("Debug message");
188+
replayAwareLogger.debug("Debug format {}", "arg");
189+
replayAwareLogger.debug("Debug format {} {}", "arg1", "arg2");
190+
replayAwareLogger.debug("Debug format {}", "arg1", "arg2", "arg3");
191+
Throwable exception = new RuntimeException("Test exception");
192+
replayAwareLogger.debug("Debug with exception", exception);
193+
Marker marker = mock(Marker.class);
194+
replayAwareLogger.debug(marker, "Marker debug");
195+
196+
verify(mockLogger).debug("Debug message");
197+
verify(mockLogger).debug("Debug format {}", "arg");
198+
verify(mockLogger).debug("Debug format {} {}", "arg1", "arg2");
199+
verify(mockLogger).debug("Debug format {}", "arg1", "arg2", "arg3");
200+
verify(mockLogger).debug("Debug with exception", exception);
201+
verify(mockLogger).debug(marker, "Marker debug");
202+
}
203+
204+
// INFO Level Methods
205+
@Test
206+
public void testInfoMethods() {
207+
setReplayMode(false, false);
208+
replayAwareLogger.info("Info message");
209+
replayAwareLogger.info("Info format {}", "arg");
210+
replayAwareLogger.info("Info format {} {}", "arg1", "arg2");
211+
replayAwareLogger.info("Info format {}", "arg1", "arg2", "arg3");
212+
Throwable exception = new RuntimeException("Test exception");
213+
replayAwareLogger.info("Info with exception", exception);
214+
Marker marker = mock(Marker.class);
215+
replayAwareLogger.info(marker, "Marker info");
216+
217+
verify(mockLogger).info("Info message");
218+
verify(mockLogger).info("Info format {}", "arg");
219+
verify(mockLogger).info("Info format {} {}", "arg1", "arg2");
220+
verify(mockLogger).info("Info format {}", "arg1", "arg2", "arg3");
221+
verify(mockLogger).info("Info with exception", exception);
222+
verify(mockLogger).info(marker, "Marker info");
223+
}
224+
225+
// WARN Level Methods
226+
@Test
227+
public void testWarnMethods() {
228+
setReplayMode(false, false);
229+
replayAwareLogger.warn("Warn message");
230+
replayAwareLogger.warn("Warn format {}", "arg");
231+
replayAwareLogger.warn("Warn format {} {}", "arg1", "arg2");
232+
replayAwareLogger.warn("Warn format {}", "arg1", "arg2", "arg3");
233+
Throwable exception = new RuntimeException("Test exception");
234+
replayAwareLogger.warn("Warn with exception", exception);
235+
Marker marker = mock(Marker.class);
236+
replayAwareLogger.warn(marker, "Marker warn");
237+
238+
verify(mockLogger).warn("Warn message");
239+
verify(mockLogger).warn("Warn format {}", "arg");
240+
verify(mockLogger).warn("Warn format {} {}", "arg1", "arg2");
241+
verify(mockLogger).warn("Warn format {}", "arg1", "arg2", "arg3");
242+
verify(mockLogger).warn("Warn with exception", exception);
243+
verify(mockLogger).warn(marker, "Marker warn");
244+
}
245+
246+
// ERROR Level Methods
247+
@Test
248+
public void testErrorMethods() {
249+
setReplayMode(false, false);
250+
replayAwareLogger.error("Error message");
251+
replayAwareLogger.error("Error format {}", "arg");
252+
replayAwareLogger.error("Error format {} {}", "arg1", "arg2");
253+
replayAwareLogger.error("Error format {}", "arg1", "arg2", "arg3");
254+
Throwable exception = new RuntimeException("Test exception");
255+
replayAwareLogger.error("Error with exception", exception);
256+
Marker marker = mock(Marker.class);
257+
replayAwareLogger.error(marker, "Marker error");
258+
259+
verify(mockLogger).error("Error message");
260+
verify(mockLogger).error("Error format {}", "arg");
261+
verify(mockLogger).error("Error format {} {}", "arg1", "arg2");
262+
verify(mockLogger).error("Error format {}", "arg1", "arg2", "arg3");
263+
verify(mockLogger).error("Error with exception", exception);
264+
verify(mockLogger).error(marker, "Marker error");
265+
}
266+
267+
// ===========================
268+
// Test getName Delegation
269+
// ===========================
270+
@Test
271+
public void testGetNameDelegation() {
272+
when(mockLogger.getName()).thenReturn("TestLogger");
273+
assertEquals("TestLogger", replayAwareLogger.getName());
274+
verify(mockLogger).getName();
275+
}
276+
}

0 commit comments

Comments
 (0)