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
+
18
+
19
+ package org .apache .eventmesh .common .utils ;
20
+
21
+ import static org .mockito .ArgumentMatchers .same ;
22
+ import static org .mockito .Mockito .doReturn ;
23
+ import static org .mockito .Mockito .mock ;
24
+ import static org .mockito .Mockito .verify ;
25
+
26
+ import java .util .function .Supplier ;
27
+
28
+ import org .junit .jupiter .api .BeforeEach ;
29
+ import org .junit .jupiter .api .Test ;
30
+ import org .junit .jupiter .api .extension .ExtendWith ;
31
+ import org .mockito .junit .jupiter .MockitoExtension ;
32
+ import org .slf4j .Logger ;
33
+ import org .slf4j .spi .LoggingEventBuilder ;
34
+
35
+ @ ExtendWith (MockitoExtension .class )
36
+ class LogUtilTest {
37
+
38
+ private Logger mockLogger ;
39
+ private LoggingEventBuilder mockEventBuilder ;
40
+ private Supplier <String > supplier ;
41
+ private String logMessage ;
42
+
43
+ @ BeforeEach
44
+ void setUp () {
45
+
46
+ mockLogger = mock (Logger .class );
47
+ mockEventBuilder = mock (LoggingEventBuilder .class );
48
+
49
+ supplier = () -> "{\" orderId\" : 12345, \" amount\" : 100}" ;
50
+ logMessage = "Processing order with data: {}" ;
51
+ }
52
+
53
+ @ Test
54
+ void testDebugLogsWithSupplier () {
55
+
56
+ doReturn (mockEventBuilder ).when (mockLogger ).atDebug ();
57
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier ));
58
+
59
+ LogUtil .debug (mockLogger , logMessage , supplier );
60
+
61
+ verify (mockLogger ).atDebug ();
62
+ verify (mockEventBuilder ).addArgument (same (supplier ));
63
+ verify (mockEventBuilder ).log (logMessage );
64
+
65
+ }
66
+
67
+ @ Test
68
+ void testDebugLogsWithSupplierAndException () {
69
+ Throwable throwable = new RuntimeException ("Order processing failed" );
70
+
71
+
72
+ doReturn (mockEventBuilder ).when (mockLogger ).atDebug ();
73
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier ));
74
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).setCause (throwable );
75
+
76
+ LogUtil .debug (mockLogger , logMessage , supplier , throwable );
77
+
78
+ verify (mockLogger ).atDebug ();
79
+ verify (mockEventBuilder ).addArgument (same (supplier ));
80
+ verify (mockEventBuilder ).setCause (throwable );
81
+ verify (mockEventBuilder ).log (logMessage );
82
+ }
83
+
84
+ @ Test
85
+ void testDebugLogsWithSuppliers () {
86
+
87
+ Supplier <String > supplier2 = () -> "{\" orderId\" : 67890, \" amount\" : 200}" ;
88
+
89
+ doReturn (mockEventBuilder ).when (mockLogger ).atDebug ();
90
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier ));
91
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier2 ));
92
+
93
+ LogUtil .debug (mockLogger , logMessage , supplier , supplier2 );
94
+
95
+ verify (mockLogger ).atDebug ();
96
+ verify (mockEventBuilder ).addArgument (same (supplier ));
97
+ verify (mockEventBuilder ).addArgument (same (supplier2 ));
98
+ verify (mockEventBuilder ).log (logMessage );
99
+ }
100
+
101
+ @ Test
102
+ void testInfoLogsWithSupplier () {
103
+
104
+ doReturn (mockEventBuilder ).when (mockLogger ).atInfo ();
105
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier ));
106
+
107
+ LogUtil .info (mockLogger , logMessage , supplier );
108
+
109
+ verify (mockLogger ).atInfo ();
110
+ verify (mockEventBuilder ).addArgument (same (supplier ));
111
+ verify (mockEventBuilder ).log (logMessage );
112
+
113
+ }
114
+
115
+ @ Test
116
+ void testInfoLogsWithSupplierAndException () {
117
+
118
+ Throwable throwable = new RuntimeException ("Order processing failed" );
119
+
120
+ doReturn (mockEventBuilder ).when (mockLogger ).atInfo ();
121
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier ));
122
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).setCause (throwable );
123
+
124
+ LogUtil .info (mockLogger , logMessage , supplier , throwable );
125
+
126
+ verify (mockLogger ).atInfo ();
127
+ verify (mockEventBuilder ).addArgument (same (supplier ));
128
+ verify (mockEventBuilder ).setCause (throwable );
129
+ verify (mockEventBuilder ).log (logMessage );
130
+
131
+ }
132
+
133
+ @ Test
134
+ void testInfoLogsWithSuppliers () {
135
+
136
+ Supplier <String > supplier2 = () -> "{\" orderId\" : 67890, \" amount\" : 200}" ;
137
+
138
+ doReturn (mockEventBuilder ).when (mockLogger ).atInfo ();
139
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier ));
140
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier2 ));
141
+
142
+ LogUtil .info (mockLogger , logMessage , supplier , supplier2 );
143
+
144
+ verify (mockLogger ).atInfo ();
145
+ verify (mockEventBuilder ).addArgument (same (supplier ));
146
+ verify (mockEventBuilder ).addArgument (same (supplier2 ));
147
+ verify (mockEventBuilder ).log (logMessage );
148
+ }
149
+
150
+ @ Test
151
+ void testWarnLogsWithSupplier () {
152
+
153
+ doReturn (mockEventBuilder ).when (mockLogger ).atWarn ();
154
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier ));
155
+
156
+ LogUtil .warn (mockLogger , logMessage , supplier );
157
+
158
+ verify (mockLogger ).atWarn ();
159
+ verify (mockEventBuilder ).addArgument (same (supplier ));
160
+ verify (mockEventBuilder ).log (logMessage );
161
+
162
+ }
163
+
164
+ @ Test
165
+ void testWarnLogsWithSupplierAndException () {
166
+
167
+ Throwable throwable = new RuntimeException ("Order processing failed" );
168
+
169
+ doReturn (mockEventBuilder ).when (mockLogger ).atWarn ();
170
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier ));
171
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).setCause (throwable );
172
+
173
+ LogUtil .warn (mockLogger , logMessage , supplier , throwable );
174
+
175
+ verify (mockLogger ).atWarn ();
176
+ verify (mockEventBuilder ).addArgument (same (supplier ));
177
+ verify (mockEventBuilder ).setCause (throwable );
178
+ verify (mockEventBuilder ).log (logMessage );
179
+
180
+ }
181
+
182
+ @ Test
183
+ void testWarnLogsWithSuppliers () {
184
+
185
+ Supplier <String > supplier2 = () -> "{\" orderId\" : 67890, \" amount\" : 200}" ;
186
+
187
+ doReturn (mockEventBuilder ).when (mockLogger ).atWarn ();
188
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier ));
189
+ doReturn (mockEventBuilder ).when (mockEventBuilder ).addArgument (same (supplier2 ));
190
+
191
+ LogUtil .warn (mockLogger , logMessage , supplier , supplier2 );
192
+
193
+ verify (mockLogger ).atWarn ();
194
+ verify (mockEventBuilder ).addArgument (same (supplier ));
195
+ verify (mockEventBuilder ).addArgument (same (supplier2 ));
196
+ verify (mockEventBuilder ).log (logMessage );
197
+ }
198
+
199
+ }
0 commit comments