policy/drools-pdp jdk11 upgrades
[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  * ================================================================================
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 testResetSubTransaction() {
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.TARGET_ENTITY));
70         assertNull(MDC.get(MdcTransactionConstants.TARGET_SERVICE_NAME));
71         assertNull(MDC.get(MdcTransactionConstants.TARGET_VIRTUAL_ENTITY));
72         assertNull(MDC.get(MdcTransactionConstants.CLIENT_IP_ADDRESS));
73         assertNull(MDC.get(MdcTransactionConstants.REMOTE_HOST));
74
75         assertEquals(trans.getRequestId(), MDC.get(MdcTransactionConstants.REQUEST_ID));
76         assertEquals(trans.getPartner(), MDC.get(MdcTransactionConstants.PARTNER_NAME));
77         assertEquals(trans.getVirtualServerName(), MDC.get(MdcTransactionConstants.VIRTUAL_SERVER_NAME));
78         assertEquals(trans.getServer(), MDC.get(MdcTransactionConstants.SERVER));
79         assertEquals(trans.getServerIpAddress(), MDC.get(MdcTransactionConstants.SERVER_IP_ADDRESS));
80         assertEquals(trans.getServerFqdn(), MDC.get(MdcTransactionConstants.SERVER_FQDN));
81         assertEquals(trans.getServiceName(), MDC.get(MdcTransactionConstants.SERVICE_NAME));
82     }
83
84     private void assertNullSubTransactionFields(MdcTransaction trans) {
85         assertNull(trans.getInvocationId());
86         assertNullSubTransactionFieldsButInvocationId(trans);
87     }
88
89     private void assertNullSubTransactionFieldsButInvocationId(MdcTransaction trans) {
90         assertNull(trans.getEndTime());
91         assertNull(trans.getElapsedTime());
92         assertNull(trans.getServiceInstanceId());
93         assertNull(trans.getStatusCode());
94         assertNull(trans.getResponseCode());
95         assertNull(trans.getResponseDescription());
96         assertNull(trans.getInstanceUuid());
97         assertNull(trans.getTargetEntity());
98         assertNull(trans.getTargetServiceName());
99         assertNull(trans.getProcessKey());
100         assertNull(trans.getClientIpAddress());
101         assertNull(trans.getRemoteHost());
102         assertNull(trans.getSeverity());
103         assertNull(trans.getTargetVirtualEntity());
104     }
105
106     protected void assertTransactionFields(MdcTransaction trans) {
107         assertEquals(trans.getRequestId(), MDC.get(MdcTransactionConstants.REQUEST_ID));
108         assertEquals(trans.getPartner(), MDC.get(MdcTransactionConstants.PARTNER_NAME));
109         assertEquals(trans.getVirtualServerName(), MDC.get(MdcTransactionConstants.VIRTUAL_SERVER_NAME));
110         assertEquals(trans.getServer(), MDC.get(MdcTransactionConstants.SERVER));
111         assertEquals(trans.getServerIpAddress(), MDC.get(MdcTransactionConstants.SERVER_IP_ADDRESS));
112         assertEquals(trans.getServerFqdn(), MDC.get(MdcTransactionConstants.SERVER_FQDN));
113         assertEquals(trans.getServiceName(), MDC.get(MdcTransactionConstants.SERVICE_NAME));
114
115     }
116
117     @Test
118     public void testFlush() {
119         MdcTransaction trans =
120                         MdcTransaction.newTransaction()
121                 .setRequestId(null)
122                 .setInvocationId(null)
123                 .setPartner(null)
124                 .setVirtualServerName(null)
125                 .setServer(null)
126                 .setServerIpAddress(null)
127                 .setServerFqdn(null)
128                 .setServiceName(null)
129                 .setStartTime(null)
130                 .setEndTime(null)
131                 .setServiceInstanceId("service-instance-id")
132                 .setInstanceUuid(null)
133                 .setProcessKey("process-key")
134                 .setStatusCode("status-code")
135                 .setResponseCode("response-code")
136                 .setResponseDescription("response-description")
137                 .setSeverity("severity")
138                 .setTargetEntity("target-entity")
139                 .setTargetServiceName("target-service-name")
140                 .setTargetVirtualEntity("target-virtual-entity")
141                 .setClientIpAddress("client-ip-address")
142                 .setRemoteHost("remote-host")
143                 .flush();
144
145         assertTransactionFields(trans);
146
147         assertNotNull(MDC.get(MdcTransactionConstants.INVOCATION_ID));
148         assertNotNull(MDC.get(MdcTransactionConstants.BEGIN_TIMESTAMP));
149         assertNotNull(MDC.get(MdcTransactionConstants.END_TIMESTAMP));
150         assertNotNull(MDC.get(MdcTransactionConstants.ELAPSED_TIME));
151         assertNotNull(MDC.get(MdcTransactionConstants.SERVICE_INSTANCE_ID));
152         assertNotNull(MDC.get(MdcTransactionConstants.INSTANCE_UUID));
153         assertNotNull(MDC.get(MdcTransactionConstants.PROCESS_KEY));
154         assertNotNull(MDC.get(MdcTransactionConstants.STATUS_CODE));
155         assertNotNull(MDC.get(MdcTransactionConstants.RESPONSE_CODE));
156         assertNotNull(MDC.get(MdcTransactionConstants.RESPONSE_DESCRIPTION));
157         assertNotNull(MDC.get(MdcTransactionConstants.SEVERITY));
158         assertNotNull(MDC.get(MdcTransactionConstants.TARGET_ENTITY));
159         assertNotNull(MDC.get(MdcTransactionConstants.TARGET_SERVICE_NAME));
160         assertNotNull(MDC.get(MdcTransactionConstants.TARGET_VIRTUAL_ENTITY));
161         assertNotNull(MDC.get(MdcTransactionConstants.CLIENT_IP_ADDRESS));
162         assertNotNull(MDC.get(MdcTransactionConstants.REMOTE_HOST));
163
164         assertEquals(trans.getInvocationId(), MDC.get(MdcTransactionConstants.INVOCATION_ID));
165         assertEquals(trans.timestamp(trans.getStartTime()), MDC.get(MdcTransactionConstants.BEGIN_TIMESTAMP));
166         assertEquals(trans.timestamp(trans.getEndTime()), MDC.get(MdcTransactionConstants.END_TIMESTAMP));
167         assertNotEquals(trans.getElapsedTime(), MDC.get(MdcTransactionConstants.ELAPSED_TIME));
168         assertEquals(String.valueOf(Duration.between(trans.getStartTime(), trans.getEndTime()).toMillis()),
169             MDC.get(MdcTransactionConstants.ELAPSED_TIME));
170         assertEquals(trans.getServiceInstanceId(), MDC.get(MdcTransactionConstants.SERVICE_INSTANCE_ID));
171         assertEquals(trans.getInstanceUuid(), MDC.get(MdcTransactionConstants.INSTANCE_UUID));
172         assertEquals(trans.getProcessKey(),MDC.get(MdcTransactionConstants.PROCESS_KEY));
173         assertEquals(trans.getStatusCode(), MDC.get(MdcTransactionConstants.STATUS_CODE));
174         assertEquals(trans.getResponseCode(), MDC.get(MdcTransactionConstants.RESPONSE_CODE));
175         assertEquals(trans.getResponseDescription(), MDC.get(MdcTransactionConstants.RESPONSE_DESCRIPTION));
176         assertEquals(trans.getSeverity(), MDC.get(MdcTransactionConstants.SEVERITY));
177         assertEquals(trans.getTargetEntity(), MDC.get(MdcTransactionConstants.TARGET_ENTITY));
178         assertEquals(trans.getTargetServiceName(), MDC.get(MdcTransactionConstants.TARGET_SERVICE_NAME));
179         assertEquals(trans.getTargetVirtualEntity(), MDC.get(MdcTransactionConstants.TARGET_VIRTUAL_ENTITY));
180         assertEquals(trans.getClientIpAddress(), MDC.get(MdcTransactionConstants.CLIENT_IP_ADDRESS));
181         assertEquals(trans.getRemoteHost(), MDC.get(MdcTransactionConstants.REMOTE_HOST));
182
183         assertEquals("service-instance-id", trans.getServiceInstanceId());
184         assertEquals("process-key", trans.getProcessKey());
185         assertEquals("status-code", trans.getStatusCode());
186         assertEquals("response-code", trans.getResponseCode());
187         assertEquals("response-description", trans.getResponseDescription());
188         assertEquals("severity", trans.getSeverity());
189         assertEquals("target-entity", trans.getTargetEntity());
190         assertEquals("target-service-name", trans.getTargetServiceName());
191         assertEquals("target-virtual-entity", trans.getTargetVirtualEntity());
192         assertEquals("client-ip-address", trans.getClientIpAddress());
193         assertEquals("remote-host", trans.getRemoteHost());
194     }
195
196     @Test
197     public void testMetric() {
198         MdcTransaction trans =
199             MdcTransaction.newTransaction(null, null).metric();
200
201         assertTransactionFields(trans);
202     }
203
204     @Test
205     public void testTransaction() {
206         MdcTransaction trans =
207             MdcTransaction.newTransaction(null, null).transaction();
208
209         assertTransactionFields(trans);
210     }
211
212     @Test
213     public void testSubTransaction() {
214         MdcTransaction trans =
215             MdcTransaction.newTransaction(null, "partner");
216
217         MdcTransaction subTrans = MdcTransaction.newSubTransaction(null);
218
219         assertTransactionFields(trans);
220         assertTransactionFields(subTrans);
221
222         assertEquals(trans.getRequestId(), trans.getRequestId());
223         assertEquals(trans.getPartner(), trans.getPartner());
224         assertEquals(trans.getVirtualServerName(), trans.getVirtualServerName());
225         assertEquals(trans.getServer(), trans.getServer());
226         assertEquals(trans.getServerIpAddress(), trans.getServerIpAddress());
227         assertEquals(trans.getServerFqdn(), trans.getServerFqdn());
228         assertEquals(trans.getServiceName(), trans.getServiceName());
229
230         assertNotEquals(trans.getInvocationId(), subTrans.getInvocationId());
231         assertNull(trans.getInvocationId());
232         assertNotNull(subTrans.getInvocationId());
233
234         assertNotNull(subTrans.getStartTime());
235         assertNullSubTransactionFieldsButInvocationId(trans);
236
237         subTrans.setServiceInstanceId("service-instance-id")
238             .setInstanceUuid(null)
239             .setProcessKey("process-key")
240             .setStatusCode("status-code")
241             .setResponseCode("response-code")
242             .setResponseDescription("response-description")
243             .setSeverity("severity")
244             .setTargetEntity("target-entity")
245             .setTargetServiceName("target-service-name")
246             .setTargetVirtualEntity("target-virtual-entity")
247             .setClientIpAddress("client-ip-address")
248             .setRemoteHost("remote-host")
249             .setEndTime(Instant.now());
250
251         subTrans.setStatusCode(false).setResponseCode("400");
252
253         MdcTransaction subTrans2 = MdcTransaction.fromTransaction(subTrans);
254
255         assertEquals(subTrans.toString(), subTrans2.toString());
256
257         subTrans.metric();
258         subTrans2.setStatusCode("202").setProcessKey("junit").metric();
259
260         trans.resetSubTransaction().setStatusCode(true).setResponseCode("200").metric();
261     }
262
263 }