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