2 * ============LICENSE_START=======================================================
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
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 testResetSubTransaction() {
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.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));
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));
84 private void assertNullSubTransactionFields(MdcTransaction trans) {
85 assertNull(trans.getInvocationId());
86 assertNullSubTransactionFieldsButInvocationId(trans);
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());
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));
118 public void testFlush() {
119 MdcTransaction trans =
120 MdcTransaction.newTransaction()
122 .setInvocationId(null)
124 .setVirtualServerName(null)
126 .setServerIpAddress(null)
128 .setServiceName(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")
145 assertTransactionFields(trans);
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));
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));
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());
197 public void testMetric() {
198 MdcTransaction trans =
199 MdcTransaction.newTransaction(null, null).metric();
201 assertTransactionFields(trans);
205 public void testTransaction() {
206 MdcTransaction trans =
207 MdcTransaction.newTransaction(null, null).transaction();
209 assertTransactionFields(trans);
213 public void testSubTransaction() {
214 MdcTransaction trans =
215 MdcTransaction.newTransaction(null, "partner");
217 MdcTransaction subTrans = MdcTransaction.newSubTransaction(null);
219 assertTransactionFields(trans);
220 assertTransactionFields(subTrans);
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());
230 assertNotEquals(trans.getInvocationId(), subTrans.getInvocationId());
231 assertNull(trans.getInvocationId());
232 assertNotNull(subTrans.getInvocationId());
234 assertNotNull(subTrans.getStartTime());
235 assertNullSubTransactionFieldsButInvocationId(trans);
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());
251 subTrans.setStatusCode(false).setResponseCode("400");
253 MdcTransaction subTrans2 = MdcTransaction.fromTransaction(subTrans);
255 assertEquals(subTrans.toString(), subTrans2.toString());
258 subTrans2.setStatusCode("202").setProcessKey("junit").metric();
260 trans.resetSubTransaction().setStatusCode(true).setResponseCode("200").metric();