Fix sonar issues in drools-pdp
[policy/drools-pdp.git] / policy-utils / src / test / java / org / onap / policy / drools / utils / logging / MdcTransactionTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * policy-utils
4  * ================================================================================
5  * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 package org.onap.policy.drools.utils.logging;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertNotEquals;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertNull;
26
27 import java.time.Duration;
28 import java.time.Instant;
29 import org.junit.Test;
30 import org.slf4j.MDC;
31
32 public class MdcTransactionTest {
33
34     @Test
35     public void resetSubTransaction() {
36         MdcTransaction trans =
37             MdcTransaction.newTransaction(null, null).resetSubTransaction();
38
39         assertNotNull(trans.getRequestId());
40         assertNotNull(trans.getPartner());
41         assertNotNull(trans.getServiceName());
42         assertNotNull(trans.getServer());
43         assertNotNull(trans.getServerIpAddress());
44         assertNotNull(trans.getServerFqdn());
45         assertNotNull(trans.getVirtualServerName());
46         assertNotNull(trans.getStartTime());
47
48         assertNullSubTransactionFields(trans);
49
50         assertNotNull(MDC.get(MdcTransactionConstants.REQUEST_ID));
51         assertNotNull(MDC.get(MdcTransactionConstants.PARTNER_NAME));
52         assertNotNull(MDC.get(MdcTransactionConstants.VIRTUAL_SERVER_NAME));
53         assertNotNull(MDC.get(MdcTransactionConstants.SERVER));
54         assertNotNull(MDC.get(MdcTransactionConstants.SERVER_IP_ADDRESS));
55         assertNotNull(MDC.get(MdcTransactionConstants.SERVER_FQDN));
56         assertNotNull(MDC.get(MdcTransactionConstants.SERVICE_NAME));
57
58         assertNull(MDC.get(MdcTransactionConstants.INVOCATION_ID));
59         assertNull(MDC.get(MdcTransactionConstants.BEGIN_TIMESTAMP));
60         assertNull(MDC.get(MdcTransactionConstants.END_TIMESTAMP));
61         assertNull(MDC.get(MdcTransactionConstants.ELAPSED_TIME));
62         assertNull(MDC.get(MdcTransactionConstants.SERVICE_INSTANCE_ID));
63         assertNull(MDC.get(MdcTransactionConstants.INSTANCE_UUID));
64         assertNull(MDC.get(MdcTransactionConstants.PROCESS_KEY));
65         assertNull(MDC.get(MdcTransactionConstants.STATUS_CODE));
66         assertNull(MDC.get(MdcTransactionConstants.RESPONSE_CODE));
67         assertNull(MDC.get(MdcTransactionConstants.RESPONSE_DESCRIPTION));
68         assertNull(MDC.get(MdcTransactionConstants.SEVERITY));
69         assertNull(MDC.get(MdcTransactionConstants.ALERT_SEVERITY));
70         assertNull(MDC.get(MdcTransactionConstants.TARGET_ENTITY));
71         assertNull(MDC.get(MdcTransactionConstants.TARGET_SERVICE_NAME));
72         assertNull(MDC.get(MdcTransactionConstants.TARGET_VIRTUAL_ENTITY));
73         assertNull(MDC.get(MdcTransactionConstants.CLIENT_IP_ADDRESS));
74         assertNull(MDC.get(MdcTransactionConstants.REMOTE_HOST));
75
76         assertEquals(trans.getRequestId(), MDC.get(MdcTransactionConstants.REQUEST_ID));
77         assertEquals(trans.getPartner(), MDC.get(MdcTransactionConstants.PARTNER_NAME));
78         assertEquals(trans.getVirtualServerName(), MDC.get(MdcTransactionConstants.VIRTUAL_SERVER_NAME));
79         assertEquals(trans.getServer(), MDC.get(MdcTransactionConstants.SERVER));
80         assertEquals(trans.getServerIpAddress(), MDC.get(MdcTransactionConstants.SERVER_IP_ADDRESS));
81         assertEquals(trans.getServerFqdn(), MDC.get(MdcTransactionConstants.SERVER_FQDN));
82         assertEquals(trans.getServiceName(), MDC.get(MdcTransactionConstants.SERVICE_NAME));
83     }
84
85     private void assertNullSubTransactionFields(MdcTransaction trans) {
86         assertNull(trans.getInvocationId());
87         assertNullSubTransactionFieldsButInvocationId(trans);
88     }
89
90     private void assertNullSubTransactionFieldsButInvocationId(MdcTransaction trans) {
91         assertNull(trans.getEndTime());
92         assertNull(trans.getElapsedTime());
93         assertNull(trans.getServiceInstanceId());
94         assertNull(trans.getStatusCode());
95         assertNull(trans.getResponseCode());
96         assertNull(trans.getResponseDescription());
97         assertNull(trans.getInstanceUuid());
98         assertNull(trans.getTargetEntity());
99         assertNull(trans.getTargetServiceName());
100         assertNull(trans.getProcessKey());
101         assertNull(trans.getClientIpAddress());
102         assertNull(trans.getRemoteHost());
103         assertNull(trans.getAlertSeverity());
104         assertNull(trans.getTargetVirtualEntity());
105     }
106
107     protected void assertTransactionFields(MdcTransaction trans) {
108         assertEquals(trans.getRequestId(), MDC.get(MdcTransactionConstants.REQUEST_ID));
109         assertEquals(trans.getPartner(), MDC.get(MdcTransactionConstants.PARTNER_NAME));
110         assertEquals(trans.getVirtualServerName(), MDC.get(MdcTransactionConstants.VIRTUAL_SERVER_NAME));
111         assertEquals(trans.getServer(), MDC.get(MdcTransactionConstants.SERVER));
112         assertEquals(trans.getServerIpAddress(), MDC.get(MdcTransactionConstants.SERVER_IP_ADDRESS));
113         assertEquals(trans.getServerFqdn(), MDC.get(MdcTransactionConstants.SERVER_FQDN));
114         assertEquals(trans.getServiceName(), MDC.get(MdcTransactionConstants.SERVICE_NAME));
115
116     }
117
118     @Test
119     public void flush() {
120         MdcTransaction trans =
121                         MdcTransaction.newTransaction()
122                 .setRequestId(null)
123                 .setInvocationId(null)
124                 .setPartner(null)
125                 .setVirtualServerName(null)
126                 .setServer(null)
127                 .setServerIpAddress(null)
128                 .setServerFqdn(null)
129                 .setServiceName(null)
130                 .setStartTime(null)
131                 .setEndTime(null)
132                 .setServiceInstanceId("service-instance-id")
133                 .setInstanceUuid(null)
134                 .setProcessKey("process-key")
135                 .setStatusCode("status-code")
136                 .setResponseCode("response-code")
137                 .setResponseDescription("response-description")
138                 .setSeverity("severity")
139                 .setAlertSeverity("alert-severity")
140                 .setTargetEntity("target-entity")
141                 .setTargetServiceName("target-service-name")
142                 .setTargetVirtualEntity("target-virtual-entity")
143                 .setClientIpAddress("client-ip-address")
144                 .setRemoteHost("remote-host")
145                 .flush();
146
147         assertTransactionFields(trans);
148
149         assertNotNull(MDC.get(MdcTransactionConstants.INVOCATION_ID));
150         assertNotNull(MDC.get(MdcTransactionConstants.BEGIN_TIMESTAMP));
151         assertNotNull(MDC.get(MdcTransactionConstants.END_TIMESTAMP));
152         assertNotNull(MDC.get(MdcTransactionConstants.ELAPSED_TIME));
153         assertNotNull(MDC.get(MdcTransactionConstants.SERVICE_INSTANCE_ID));
154         assertNotNull(MDC.get(MdcTransactionConstants.INSTANCE_UUID));
155         assertNotNull(MDC.get(MdcTransactionConstants.PROCESS_KEY));
156         assertNotNull(MDC.get(MdcTransactionConstants.STATUS_CODE));
157         assertNotNull(MDC.get(MdcTransactionConstants.RESPONSE_CODE));
158         assertNotNull(MDC.get(MdcTransactionConstants.RESPONSE_DESCRIPTION));
159         assertNotNull(MDC.get(MdcTransactionConstants.SEVERITY));
160         assertNotNull(MDC.get(MdcTransactionConstants.ALERT_SEVERITY));
161         assertNotNull(MDC.get(MdcTransactionConstants.TARGET_ENTITY));
162         assertNotNull(MDC.get(MdcTransactionConstants.TARGET_SERVICE_NAME));
163         assertNotNull(MDC.get(MdcTransactionConstants.TARGET_VIRTUAL_ENTITY));
164         assertNotNull(MDC.get(MdcTransactionConstants.CLIENT_IP_ADDRESS));
165         assertNotNull(MDC.get(MdcTransactionConstants.REMOTE_HOST));
166
167         assertEquals(trans.getInvocationId(), MDC.get(MdcTransactionConstants.INVOCATION_ID));
168         assertEquals(trans.timestamp(trans.getStartTime()), MDC.get(MdcTransactionConstants.BEGIN_TIMESTAMP));
169         assertEquals(trans.timestamp(trans.getEndTime()), MDC.get(MdcTransactionConstants.END_TIMESTAMP));
170         assertNotEquals(trans.getElapsedTime(), MDC.get(MdcTransactionConstants.ELAPSED_TIME));
171         assertEquals(String.valueOf(Duration.between(trans.getStartTime(), trans.getEndTime()).toMillis()),
172             MDC.get(MdcTransactionConstants.ELAPSED_TIME));
173         assertEquals(trans.getServiceInstanceId(), MDC.get(MdcTransactionConstants.SERVICE_INSTANCE_ID));
174         assertEquals(trans.getInstanceUuid(), MDC.get(MdcTransactionConstants.INSTANCE_UUID));
175         assertEquals(trans.getProcessKey(),MDC.get(MdcTransactionConstants.PROCESS_KEY));
176         assertEquals(trans.getStatusCode(), MDC.get(MdcTransactionConstants.STATUS_CODE));
177         assertEquals(trans.getResponseCode(), MDC.get(MdcTransactionConstants.RESPONSE_CODE));
178         assertEquals(trans.getResponseDescription(), MDC.get(MdcTransactionConstants.RESPONSE_DESCRIPTION));
179         assertEquals(trans.getSeverity(), MDC.get(MdcTransactionConstants.SEVERITY));
180         assertEquals(trans.getAlertSeverity(), MDC.get(MdcTransactionConstants.ALERT_SEVERITY));
181         assertEquals(trans.getTargetEntity(), MDC.get(MdcTransactionConstants.TARGET_ENTITY));
182         assertEquals(trans.getTargetServiceName(), MDC.get(MdcTransactionConstants.TARGET_SERVICE_NAME));
183         assertEquals(trans.getTargetVirtualEntity(), MDC.get(MdcTransactionConstants.TARGET_VIRTUAL_ENTITY));
184         assertEquals(trans.getClientIpAddress(), MDC.get(MdcTransactionConstants.CLIENT_IP_ADDRESS));
185         assertEquals(trans.getRemoteHost(), MDC.get(MdcTransactionConstants.REMOTE_HOST));
186
187         assertEquals("service-instance-id", trans.getServiceInstanceId());
188         assertEquals("process-key", trans.getProcessKey());
189         assertEquals("status-code", trans.getStatusCode());
190         assertEquals("response-code", trans.getResponseCode());
191         assertEquals("response-description", trans.getResponseDescription());
192         assertEquals("severity", trans.getSeverity());
193         assertEquals("alert-severity", trans.getAlertSeverity());
194         assertEquals("target-entity", trans.getTargetEntity());
195         assertEquals("target-service-name", trans.getTargetServiceName());
196         assertEquals("target-virtual-entity", trans.getTargetVirtualEntity());
197         assertEquals("client-ip-address", trans.getClientIpAddress());
198         assertEquals("remote-host", trans.getRemoteHost());
199     }
200
201     @Test
202     public void metric() {
203         MdcTransaction trans =
204             MdcTransaction.newTransaction(null, null).metric();
205
206         assertTransactionFields(trans);
207     }
208
209     @Test
210     public void transaction() {
211         MdcTransaction trans =
212             MdcTransaction.newTransaction(null, null).transaction();
213
214         assertTransactionFields(trans);
215     }
216
217     @Test
218     public void subTransaction() {
219         MdcTransaction trans =
220             MdcTransaction.newTransaction(null, "partner");
221
222         MdcTransaction subTrans = MdcTransaction.newSubTransaction(null);
223
224         assertTransactionFields(trans);
225         assertTransactionFields(subTrans);
226
227         assertEquals(trans.getRequestId(), trans.getRequestId());
228         assertEquals(trans.getPartner(), trans.getPartner());
229         assertEquals(trans.getVirtualServerName(), trans.getVirtualServerName());
230         assertEquals(trans.getServer(), trans.getServer());
231         assertEquals(trans.getServerIpAddress(), trans.getServerIpAddress());
232         assertEquals(trans.getServerFqdn(), trans.getServerFqdn());
233         assertEquals(trans.getServiceName(), trans.getServiceName());
234
235         assertNotEquals(trans.getInvocationId(), subTrans.getInvocationId());
236         assertNull(trans.getInvocationId());
237         assertNotNull(subTrans.getInvocationId());
238
239         assertNotNull(subTrans.getStartTime());
240         assertNullSubTransactionFieldsButInvocationId(trans);
241
242         subTrans.setServiceInstanceId("service-instance-id")
243             .setInstanceUuid(null)
244             .setProcessKey("process-key")
245             .setStatusCode("status-code")
246             .setResponseCode("response-code")
247             .setResponseDescription("response-description")
248             .setSeverity("severity")
249             .setAlertSeverity("alert-severity")
250             .setTargetEntity("target-entity")
251             .setTargetServiceName("target-service-name")
252             .setTargetVirtualEntity("target-virtual-entity")
253             .setClientIpAddress("client-ip-address")
254             .setRemoteHost("remote-host")
255             .setEndTime(Instant.now());
256
257         subTrans.setStatusCode(false).setResponseCode("400");
258
259         MdcTransaction subTrans2 = MdcTransaction.fromTransaction(subTrans);
260
261         assertEquals(subTrans.toString(), subTrans2.toString());
262
263         subTrans.metric();
264         subTrans2.setStatusCode("202").setProcessKey("junit").metric();
265
266         trans.resetSubTransaction().setStatusCode(true).setResponseCode("200").metric();
267     }
268
269 }