2 * ================================================================================
3 * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 * ============LICENSE_END=========================================================
20 package org.onap.dcae.analytics.tca.web.service;
22 import static org.onap.dcae.analytics.tca.model.util.json.TcaModelJsonConversion.TCA_POLICY_JSON_FUNCTION;
24 import java.util.Arrays;
25 import java.util.List;
27 import org.junit.jupiter.api.Test;
28 import org.mockito.Mockito;
29 import org.onap.dcae.analytics.tca.core.exception.AnalyticsParsingException;
30 import org.onap.dcae.analytics.tca.core.service.TcaAaiEnrichmentContext;
31 import org.onap.dcae.analytics.tca.core.service.TcaAbatementContext;
32 import org.onap.dcae.analytics.tca.core.service.TcaExecutionContext;
33 import org.onap.dcae.analytics.tca.model.facade.TcaAlert;
34 import org.onap.dcae.analytics.tca.model.policy.TcaPolicy;
35 import org.onap.dcae.analytics.tca.web.domain.TcaPolicyWrapper;
37 import com.fasterxml.jackson.databind.ObjectMapper;
40 * @author Rajiv Singla
42 class TcaProcessingServiceImplTest {
45 // Environment environment;
47 public TcaPolicy convertTcaPolicy(String tcaPolicyString) {
48 return TCA_POLICY_JSON_FUNCTION.apply(tcaPolicyString).orElseThrow(
49 () -> new AnalyticsParsingException("Unable to parse Tca Policy String: " + tcaPolicyString,
50 new IllegalArgumentException()));
54 void getTcaExecutionResults() throws Exception {
55 TcaAbatementContext tcaAbatementContext = new TestTcaAbatementContext();
56 TcaAaiEnrichmentContext tcaAaiEnrichmentContext = new TestTcaAaiEnrichmentContext();
58 TcaPolicyWrapper tcaPolicyWrapper = Mockito.mock(TcaPolicyWrapper.class);
59 // TcaAppProperties tcaAppProperties = new TcaAppProperties(environment);
60 String policy = "{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"Mfvs_eNodeB_RANKPI\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"resource=vFirewall;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":4000,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"},{\"closedLoopControlName\":\"CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":20000,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\"},{\"closedLoopControlName\":\"CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09\",\"closedLoopEventStatus\":\"ABATED\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"CRITICAL\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"resource=vLoadBalancer;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":500,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"},{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":5000,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\"}]},{\"eventName\":\"virtualVMEventName\",\"controlLoopSchemaType\":\"VM\",\"policyScope\":\"resource=virtualVM;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":500,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"}]}]}";
61 // TcaPolicyWrapper tcaPolicyWrapper = new TcaPolicyWrapper(tcaAppProperties);
62 TcaPolicy tcaPolicy = convertTcaPolicy(policy);
63 Mockito.when(tcaPolicyWrapper.getTcaPolicy()).thenReturn(tcaPolicy);
64 TcaProcessingService tcaProcessingService = new TcaProcessingServiceImpl(tcaAbatementContext, tcaAaiEnrichmentContext);
66 String cefMessage = "{\r\n" +
68 " \"commonEventHeader\": {\r\n" +
69 " \"domain\": \"measurementsForVfScaling\",\r\n" +
70 " \"eventId\": \"UC1-SCL01081-1492639920787\",\r\n" +
71 " \"eventName\": \"Mfvs_eNodeB_RANKPI\",\r\n" +
72 " \"lastEpochMicrosec\": 1492639920787,\r\n" +
73 " \"nfNamingCode\": \"ENBE\",\r\n" +
74 " \"priority\": \"Normal\",\r\n" +
75 " \"reportingEntityId\": \"\",\r\n" +
76 " \"reportingEntityName\": \"vtc2e7admn2\",\r\n" +
77 " \"sequence\": 0,\r\n" +
78 " \"sourceId\": \"SCL01081_9B_1\",\r\n" +
79 " \"sourceName\": \"SCL01081\",\r\n" +
80 " \"startEpochMicrosec\": 1492639920787,\r\n" +
81 " \"version\": 3.0\r\n" +
83 " \"measurementsForVfScalingFields\": {\r\n" +
84 " \"additionalFields\": [\r\n" +
86 " \"name\": \"software_version \",\r\n" +
87 " \"value\": \"version1\"\r\n" +
90 " \"name\": \"vendor \",\r\n" +
91 " \"value\": \"Ericsson \"\r\n" +
94 " \"additionalMeasurements\": [\r\n" +
96 " \"name\": \"OaaS_UC1_EricssonSleepingCell\",\r\n" +
97 " \"arrayOfFields\": [\r\n" +
99 " \"name\": \"PMRAATTCBRA\",\r\n" +
100 " \"value\": \"1353\"\r\n" +
103 " \"name\": \"PMRASUCCCBRA\",\r\n" +
104 " \"value\": \"1351\"\r\n" +
107 " \"name\": \"PMCELLDOWNTIMEAUTO\",\r\n" +
108 " \"value\": \"0\"\r\n" +
111 " \"name\": \"PMCELLDOWNTIMEMAN\",\r\n" +
112 " \"value\": \"0\"\r\n" +
115 " \"name\": \"PMRRCCONNESTABATT\",\r\n" +
116 " \"value\": \"297\"\r\n" +
119 " \"name\": \"PMRRCCONNESTABSUCC\",\r\n" +
120 " \"value\": \"297\"\r\n" +
125 " \"vNicPerformanceArray\": [\r\n" +
127 " \"receivedBroadcastPacketsAccumulated\": 5000,\r\n" +
128 " \"receivedBroadcastPacketsDelta\": 5,\r\n" +
129 " \"receivedDiscardedPacketsAccumulated\": 12,\r\n" +
130 " \"receivedDiscardedPacketsDelta\": 2,\r\n" +
131 " \"receivedErrorPacketsAccumulated\": 2,\r\n" +
132 " \"receivedErrorPacketsDelta\": 1,\r\n" +
133 " \"valuesAreSuspect\": false,\r\n" +
134 " \"vNicIdentifier\": \"someVNicIdentifier\"\r\n" +
137 " \"measurementInterval\": 900,\r\n" +
138 " \"measurementsForVfScalingVersion\": 2.0\r\n" +
144 String cefViolationMessage = "{\r\n" +
145 " \"event\": {\r\n" +
146 " \"commonEventHeader\": {\r\n" +
147 " \"domain\": \"measurementsForVfScaling\",\r\n" +
148 " \"eventId\": \"UC1-SCL01081-1492639920787\",\r\n" +
149 " \"eventName\": \"Mfvs_eNodeB_RANKPI\",\r\n" +
150 " \"lastEpochMicrosec\": 1492639920787,\r\n" +
151 " \"nfNamingCode\": \"ENBE\",\r\n" +
152 " \"priority\": \"Normal\",\r\n" +
153 " \"reportingEntityId\": \"\",\r\n" +
154 " \"reportingEntityName\": \"vtc2e7admn2\",\r\n" +
155 " \"sequence\": 0,\r\n" +
156 " \"sourceId\": \"SCL01081_9B_1\",\r\n" +
157 " \"sourceName\": \"SCL01081\",\r\n" +
158 " \"startEpochMicrosec\": 1492639920787,\r\n" +
159 " \"version\": 3.0\r\n" +
161 " \"measurementsForVfScalingFields\": {\r\n" +
162 " \"additionalFields\": [\r\n" +
164 " \"name\": \"software_version \",\r\n" +
165 " \"value\": \"version1\"\r\n" +
168 " \"name\": \"vendor \",\r\n" +
169 " \"value\": \"Ericsson \"\r\n" +
172 " \"additionalMeasurements\": [\r\n" +
174 " \"name\": \"OaaS_UC1_EricssonSleepingCell\",\r\n" +
175 " \"arrayOfFields\": [\r\n" +
177 " \"name\": \"PMRAATTCBRA\",\r\n" +
178 " \"value\": \"1353\"\r\n" +
181 " \"name\": \"PMRASUCCCBRA\",\r\n" +
182 " \"value\": \"1351\"\r\n" +
185 " \"name\": \"PMCELLDOWNTIMEAUTO\",\r\n" +
186 " \"value\": \"0\"\r\n" +
189 " \"name\": \"PMCELLDOWNTIMEMAN\",\r\n" +
190 " \"value\": \"0\"\r\n" +
193 " \"name\": \"PMRRCCONNESTABATT\",\r\n" +
194 " \"value\": \"297\"\r\n" +
197 " \"name\": \"PMRRCCONNESTABSUCC\",\r\n" +
198 " \"value\": \"297\"\r\n" +
203 " \"vNicPerformanceArray\": [\r\n" +
205 " \"receivedBroadcastPacketsAccumulated\": 21000,\r\n" +
206 " \"receivedBroadcastPacketsDelta\": 5,\r\n" +
207 " \"receivedDiscardedPacketsAccumulated\": 12,\r\n" +
208 " \"receivedDiscardedPacketsDelta\": 2,\r\n" +
209 " \"receivedErrorPacketsAccumulated\": 2,\r\n" +
210 " \"receivedErrorPacketsDelta\": 1,\r\n" +
211 " \"valuesAreSuspect\": false,\r\n" +
212 " \"vNicIdentifier\": \"someVNicIdentifier\"\r\n" +
215 " \"measurementInterval\": 900,\r\n" +
216 " \"measurementsForVfScalingVersion\": 2.0\r\n" +
222 String cefAbatementMessage = "{\r\n" +
223 " \"event\": {\r\n" +
224 " \"commonEventHeader\": {\r\n" +
225 " \"domain\": \"measurementsForVfScaling\",\r\n" +
226 " \"eventId\": \"UC1-SCL01081-1492639920787\",\r\n" +
227 " \"eventName\": \"Mfvs_eNodeB_RANKPI\",\r\n" +
228 " \"lastEpochMicrosec\": 1492639920787,\r\n" +
229 " \"nfNamingCode\": \"ENBE\",\r\n" +
230 " \"priority\": \"Normal\",\r\n" +
231 " \"reportingEntityId\": \"\",\r\n" +
232 " \"reportingEntityName\": \"vtc2e7admn2\",\r\n" +
233 " \"sequence\": 0,\r\n" +
234 " \"sourceId\": \"SCL01081_9B_1\",\r\n" +
235 " \"sourceName\": \"SCL01081\",\r\n" +
236 " \"startEpochMicrosec\": 1492639920787,\r\n" +
237 " \"version\": 3.0\r\n" +
239 " \"measurementsForVfScalingFields\": {\r\n" +
240 " \"additionalFields\": [\r\n" +
242 " \"name\": \"software_version \",\r\n" +
243 " \"value\": \"version1\"\r\n" +
246 " \"name\": \"vendor \",\r\n" +
247 " \"value\": \"Ericsson \"\r\n" +
250 " \"additionalMeasurements\": [\r\n" +
252 " \"name\": \"OaaS_UC1_EricssonSleepingCell\",\r\n" +
253 " \"arrayOfFields\": [\r\n" +
255 " \"name\": \"PMRAATTCBRA\",\r\n" +
256 " \"value\": \"1353\"\r\n" +
259 " \"name\": \"PMRASUCCCBRA\",\r\n" +
260 " \"value\": \"1351\"\r\n" +
263 " \"name\": \"PMCELLDOWNTIMEAUTO\",\r\n" +
264 " \"value\": \"0\"\r\n" +
267 " \"name\": \"PMCELLDOWNTIMEMAN\",\r\n" +
268 " \"value\": \"0\"\r\n" +
271 " \"name\": \"PMRRCCONNESTABATT\",\r\n" +
272 " \"value\": \"297\"\r\n" +
275 " \"name\": \"PMRRCCONNESTABSUCC\",\r\n" +
276 " \"value\": \"297\"\r\n" +
281 " \"vNicPerformanceArray\": [\r\n" +
283 " \"receivedBroadcastPacketsAccumulated\": 0,\r\n" +
284 " \"receivedBroadcastPacketsDelta\": 5,\r\n" +
285 " \"receivedDiscardedPacketsAccumulated\": 12,\r\n" +
286 " \"receivedDiscardedPacketsDelta\": 2,\r\n" +
287 " \"receivedErrorPacketsAccumulated\": 2,\r\n" +
288 " \"receivedErrorPacketsDelta\": 1,\r\n" +
289 " \"valuesAreSuspect\": false,\r\n" +
290 " \"vNicIdentifier\": \"someVNicIdentifier\"\r\n" +
293 " \"measurementInterval\": 900,\r\n" +
294 " \"measurementsForVfScalingVersion\": 2.0\r\n" +
300 String cefInapplicableMessage = "{\r\n" +
301 " \"event\": {\r\n" +
302 " \"commonEventHeader\": {\r\n" +
303 " \"domain\": \"measurementsForVfScaling\",\r\n" +
304 " \"eventId\": \"UC1-SCL01081-1492639920787\",\r\n" +
305 " \"eventName\": \"testEventName\",\r\n" +
306 " \"lastEpochMicrosec\": 1492639920787,\r\n" +
307 " \"nfNamingCode\": \"ENBE\",\r\n" +
308 " \"priority\": \"Normal\",\r\n" +
309 " \"reportingEntityId\": \"\",\r\n" +
310 " \"reportingEntityName\": \"vtc2e7admn2\",\r\n" +
311 " \"sequence\": 0,\r\n" +
312 " \"sourceId\": \"SCL01081_9B_1\",\r\n" +
313 " \"sourceName\": \"SCL01081\",\r\n" +
314 " \"startEpochMicrosec\": 1492639920787,\r\n" +
315 " \"version\": 3.0\r\n" +
317 " \"measurementsForVfScalingFields\": {\r\n" +
318 " \"additionalFields\": [\r\n" +
320 " \"name\": \"software_version \",\r\n" +
321 " \"value\": \"version1\"\r\n" +
324 " \"name\": \"vendor \",\r\n" +
325 " \"value\": \"Ericsson \"\r\n" +
328 " \"additionalMeasurements\": [\r\n" +
330 " \"name\": \"OaaS_UC1_EricssonSleepingCell\",\r\n" +
331 " \"arrayOfFields\": [\r\n" +
333 " \"name\": \"PMRAATTCBRA\",\r\n" +
334 " \"value\": \"1353\"\r\n" +
337 " \"name\": \"PMRASUCCCBRA\",\r\n" +
338 " \"value\": \"1351\"\r\n" +
341 " \"name\": \"PMCELLDOWNTIMEAUTO\",\r\n" +
342 " \"value\": \"0\"\r\n" +
345 " \"name\": \"PMCELLDOWNTIMEMAN\",\r\n" +
346 " \"value\": \"0\"\r\n" +
349 " \"name\": \"PMRRCCONNESTABATT\",\r\n" +
350 " \"value\": \"297\"\r\n" +
353 " \"name\": \"PMRRCCONNESTABSUCC\",\r\n" +
354 " \"value\": \"297\"\r\n" +
359 " \"vNicPerformanceArray\": [\r\n" +
361 " \"receivedBroadcastPacketsAccumulated\": 5000,\r\n" +
362 " \"receivedBroadcastPacketsDelta\": 5,\r\n" +
363 " \"receivedDiscardedPacketsAccumulated\": 12,\r\n" +
364 " \"receivedDiscardedPacketsDelta\": 2,\r\n" +
365 " \"receivedErrorPacketsAccumulated\": 2,\r\n" +
366 " \"receivedErrorPacketsDelta\": 1,\r\n" +
367 " \"valuesAreSuspect\": false,\r\n" +
368 " \"vNicIdentifier\": \"someVNicIdentifier\"\r\n" +
371 " \"measurementInterval\": 900,\r\n" +
372 " \"measurementsForVfScalingVersion\": 2.0\r\n" +
378 ObjectMapper objectMapper = new ObjectMapper();
379 final List<TcaExecutionContext> tcaExecutionResults = tcaProcessingService.getTcaExecutionResults(
380 "testRequestId", "testTransactionId", tcaPolicyWrapper,
381 Arrays.asList(cefMessage, cefViolationMessage,
383 cefInapplicableMessage));
385 for (TcaExecutionContext tcaExecutionResult : tcaExecutionResults) {
386 final TcaAlert tcaAlert = tcaExecutionResult.getTcaResultContext().getTcaAlert();
387 String tcaAlertString = "";
388 if (tcaAlert != null) {
389 tcaAlertString = objectMapper.writeValueAsString(tcaAlert);