2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
20 package org.onap.policy.drools.utils.logging;
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;
27 import java.time.Duration;
28 import java.time.Instant;
29 import org.junit.Test;
32 public class MdcTransactionTest {
35 public void resetSubTransaction() {
36 MdcTransaction trans =
37 MdcTransaction.newTransaction(null, null).resetSubTransaction();
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());
48 assertNullSubTransactionFields(trans);
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));
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));
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));
85 private void assertNullSubTransactionFields(MdcTransaction trans) {
86 assertNull(trans.getInvocationId());
87 assertNullSubTransactionFieldsButInvocationId(trans);
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());
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));
119 public void flush() {
120 MdcTransaction trans =
121 MdcTransaction.newTransaction()
123 .setInvocationId(null)
125 .setVirtualServerName(null)
127 .setServerIpAddress(null)
129 .setServiceName(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")
147 assertTransactionFields(trans);
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));
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));
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());
202 public void metric() {
203 MdcTransaction trans =
204 MdcTransaction.newTransaction(null, null).metric();
206 assertTransactionFields(trans);
210 public void transaction() {
211 MdcTransaction trans =
212 MdcTransaction.newTransaction(null, null).transaction();
214 assertTransactionFields(trans);
218 public void subTransaction() {
219 MdcTransaction trans =
220 MdcTransaction.newTransaction(null, "partner");
222 MdcTransaction subTrans = MdcTransaction.newSubTransaction(null);
224 assertTransactionFields(trans);
225 assertTransactionFields(subTrans);
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());
235 assertNotEquals(trans.getInvocationId(), subTrans.getInvocationId());
236 assertNull(trans.getInvocationId());
237 assertNotNull(subTrans.getInvocationId());
239 assertNotNull(subTrans.getStartTime());
240 assertNullSubTransactionFieldsButInvocationId(trans);
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());
257 subTrans.setStatusCode(false).setResponseCode("400");
259 MdcTransaction subTrans2 = MdcTransaction.fromTransaction(subTrans);
261 assertEquals(subTrans.toString(), subTrans2.toString());
264 subTrans2.setStatusCode("202").setProcessKey("junit").metric();
266 trans.resetSubTransaction().setStatusCode(true).setResponseCode("200").metric();