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.onap.dcae.analytics.tca.core.exception.AnalyticsParsingException;
29 import org.onap.dcae.analytics.tca.core.service.TcaAaiEnrichmentContext;
30 import org.onap.dcae.analytics.tca.core.service.TcaAbatementContext;
31 import org.onap.dcae.analytics.tca.core.service.TcaExecutionContext;
32 import org.onap.dcae.analytics.tca.model.facade.TcaAlert;
33 import org.onap.dcae.analytics.tca.model.policy.TcaPolicy;
35 import com.fasterxml.jackson.databind.ObjectMapper;
38 * @author Rajiv Singla
40 class TcaProcessingServiceImplTest {
43 // Environment environment;
45 public TcaPolicy convertTcaPolicy(String tcaPolicyString) {
46 return TCA_POLICY_JSON_FUNCTION.apply(tcaPolicyString).orElseThrow(
47 () -> new AnalyticsParsingException("Unable to parse Tca Policy String: " + tcaPolicyString,
48 new IllegalArgumentException()));
52 void getTcaExecutionResults() throws Exception {
53 TcaAbatementContext tcaAbatementContext = new TestTcaAbatementContext();
54 TcaAaiEnrichmentContext tcaAaiEnrichmentContext = new TestTcaAaiEnrichmentContext();
56 // TcaAppProperties tcaAppProperties = new TcaAppProperties(environment);
57 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\"}]}]}";
58 // TcaPolicyWrapper tcaPolicyWrapper = new TcaPolicyWrapper(tcaAppProperties);
59 TcaPolicy tcaPolicy = convertTcaPolicy(policy);
60 TcaProcessingService tcaProcessingService = new TcaProcessingServiceImpl(tcaAbatementContext, tcaAaiEnrichmentContext);
62 String cefMessage = "{\r\n" +
64 " \"commonEventHeader\": {\r\n" +
65 " \"domain\": \"measurementsForVfScaling\",\r\n" +
66 " \"eventId\": \"UC1-SCL01081-1492639920787\",\r\n" +
67 " \"eventName\": \"Mfvs_eNodeB_RANKPI\",\r\n" +
68 " \"lastEpochMicrosec\": 1492639920787,\r\n" +
69 " \"nfNamingCode\": \"ENBE\",\r\n" +
70 " \"priority\": \"Normal\",\r\n" +
71 " \"reportingEntityId\": \"\",\r\n" +
72 " \"reportingEntityName\": \"vtc2e7admn2\",\r\n" +
73 " \"sequence\": 0,\r\n" +
74 " \"sourceId\": \"SCL01081_9B_1\",\r\n" +
75 " \"sourceName\": \"SCL01081\",\r\n" +
76 " \"startEpochMicrosec\": 1492639920787,\r\n" +
77 " \"version\": 3.0\r\n" +
79 " \"measurementsForVfScalingFields\": {\r\n" +
80 " \"additionalFields\": [\r\n" +
82 " \"name\": \"software_version \",\r\n" +
83 " \"value\": \"version1\"\r\n" +
86 " \"name\": \"vendor \",\r\n" +
87 " \"value\": \"Ericsson \"\r\n" +
90 " \"additionalMeasurements\": [\r\n" +
92 " \"name\": \"OaaS_UC1_EricssonSleepingCell\",\r\n" +
93 " \"arrayOfFields\": [\r\n" +
95 " \"name\": \"PMRAATTCBRA\",\r\n" +
96 " \"value\": \"1353\"\r\n" +
99 " \"name\": \"PMRASUCCCBRA\",\r\n" +
100 " \"value\": \"1351\"\r\n" +
103 " \"name\": \"PMCELLDOWNTIMEAUTO\",\r\n" +
104 " \"value\": \"0\"\r\n" +
107 " \"name\": \"PMCELLDOWNTIMEMAN\",\r\n" +
108 " \"value\": \"0\"\r\n" +
111 " \"name\": \"PMRRCCONNESTABATT\",\r\n" +
112 " \"value\": \"297\"\r\n" +
115 " \"name\": \"PMRRCCONNESTABSUCC\",\r\n" +
116 " \"value\": \"297\"\r\n" +
121 " \"vNicPerformanceArray\": [\r\n" +
123 " \"receivedBroadcastPacketsAccumulated\": 5000,\r\n" +
124 " \"receivedBroadcastPacketsDelta\": 5,\r\n" +
125 " \"receivedDiscardedPacketsAccumulated\": 12,\r\n" +
126 " \"receivedDiscardedPacketsDelta\": 2,\r\n" +
127 " \"receivedErrorPacketsAccumulated\": 2,\r\n" +
128 " \"receivedErrorPacketsDelta\": 1,\r\n" +
129 " \"valuesAreSuspect\": false,\r\n" +
130 " \"vNicIdentifier\": \"someVNicIdentifier\"\r\n" +
133 " \"measurementInterval\": 900,\r\n" +
134 " \"measurementsForVfScalingVersion\": 2.0\r\n" +
140 String cefViolationMessage = "{\r\n" +
141 " \"event\": {\r\n" +
142 " \"commonEventHeader\": {\r\n" +
143 " \"domain\": \"measurementsForVfScaling\",\r\n" +
144 " \"eventId\": \"UC1-SCL01081-1492639920787\",\r\n" +
145 " \"eventName\": \"Mfvs_eNodeB_RANKPI\",\r\n" +
146 " \"lastEpochMicrosec\": 1492639920787,\r\n" +
147 " \"nfNamingCode\": \"ENBE\",\r\n" +
148 " \"priority\": \"Normal\",\r\n" +
149 " \"reportingEntityId\": \"\",\r\n" +
150 " \"reportingEntityName\": \"vtc2e7admn2\",\r\n" +
151 " \"sequence\": 0,\r\n" +
152 " \"sourceId\": \"SCL01081_9B_1\",\r\n" +
153 " \"sourceName\": \"SCL01081\",\r\n" +
154 " \"startEpochMicrosec\": 1492639920787,\r\n" +
155 " \"version\": 3.0\r\n" +
157 " \"measurementsForVfScalingFields\": {\r\n" +
158 " \"additionalFields\": [\r\n" +
160 " \"name\": \"software_version \",\r\n" +
161 " \"value\": \"version1\"\r\n" +
164 " \"name\": \"vendor \",\r\n" +
165 " \"value\": \"Ericsson \"\r\n" +
168 " \"additionalMeasurements\": [\r\n" +
170 " \"name\": \"OaaS_UC1_EricssonSleepingCell\",\r\n" +
171 " \"arrayOfFields\": [\r\n" +
173 " \"name\": \"PMRAATTCBRA\",\r\n" +
174 " \"value\": \"1353\"\r\n" +
177 " \"name\": \"PMRASUCCCBRA\",\r\n" +
178 " \"value\": \"1351\"\r\n" +
181 " \"name\": \"PMCELLDOWNTIMEAUTO\",\r\n" +
182 " \"value\": \"0\"\r\n" +
185 " \"name\": \"PMCELLDOWNTIMEMAN\",\r\n" +
186 " \"value\": \"0\"\r\n" +
189 " \"name\": \"PMRRCCONNESTABATT\",\r\n" +
190 " \"value\": \"297\"\r\n" +
193 " \"name\": \"PMRRCCONNESTABSUCC\",\r\n" +
194 " \"value\": \"297\"\r\n" +
199 " \"vNicPerformanceArray\": [\r\n" +
201 " \"receivedBroadcastPacketsAccumulated\": 21000,\r\n" +
202 " \"receivedBroadcastPacketsDelta\": 5,\r\n" +
203 " \"receivedDiscardedPacketsAccumulated\": 12,\r\n" +
204 " \"receivedDiscardedPacketsDelta\": 2,\r\n" +
205 " \"receivedErrorPacketsAccumulated\": 2,\r\n" +
206 " \"receivedErrorPacketsDelta\": 1,\r\n" +
207 " \"valuesAreSuspect\": false,\r\n" +
208 " \"vNicIdentifier\": \"someVNicIdentifier\"\r\n" +
211 " \"measurementInterval\": 900,\r\n" +
212 " \"measurementsForVfScalingVersion\": 2.0\r\n" +
218 String cefAbatementMessage = "{\r\n" +
219 " \"event\": {\r\n" +
220 " \"commonEventHeader\": {\r\n" +
221 " \"domain\": \"measurementsForVfScaling\",\r\n" +
222 " \"eventId\": \"UC1-SCL01081-1492639920787\",\r\n" +
223 " \"eventName\": \"Mfvs_eNodeB_RANKPI\",\r\n" +
224 " \"lastEpochMicrosec\": 1492639920787,\r\n" +
225 " \"nfNamingCode\": \"ENBE\",\r\n" +
226 " \"priority\": \"Normal\",\r\n" +
227 " \"reportingEntityId\": \"\",\r\n" +
228 " \"reportingEntityName\": \"vtc2e7admn2\",\r\n" +
229 " \"sequence\": 0,\r\n" +
230 " \"sourceId\": \"SCL01081_9B_1\",\r\n" +
231 " \"sourceName\": \"SCL01081\",\r\n" +
232 " \"startEpochMicrosec\": 1492639920787,\r\n" +
233 " \"version\": 3.0\r\n" +
235 " \"measurementsForVfScalingFields\": {\r\n" +
236 " \"additionalFields\": [\r\n" +
238 " \"name\": \"software_version \",\r\n" +
239 " \"value\": \"version1\"\r\n" +
242 " \"name\": \"vendor \",\r\n" +
243 " \"value\": \"Ericsson \"\r\n" +
246 " \"additionalMeasurements\": [\r\n" +
248 " \"name\": \"OaaS_UC1_EricssonSleepingCell\",\r\n" +
249 " \"arrayOfFields\": [\r\n" +
251 " \"name\": \"PMRAATTCBRA\",\r\n" +
252 " \"value\": \"1353\"\r\n" +
255 " \"name\": \"PMRASUCCCBRA\",\r\n" +
256 " \"value\": \"1351\"\r\n" +
259 " \"name\": \"PMCELLDOWNTIMEAUTO\",\r\n" +
260 " \"value\": \"0\"\r\n" +
263 " \"name\": \"PMCELLDOWNTIMEMAN\",\r\n" +
264 " \"value\": \"0\"\r\n" +
267 " \"name\": \"PMRRCCONNESTABATT\",\r\n" +
268 " \"value\": \"297\"\r\n" +
271 " \"name\": \"PMRRCCONNESTABSUCC\",\r\n" +
272 " \"value\": \"297\"\r\n" +
277 " \"vNicPerformanceArray\": [\r\n" +
279 " \"receivedBroadcastPacketsAccumulated\": 0,\r\n" +
280 " \"receivedBroadcastPacketsDelta\": 5,\r\n" +
281 " \"receivedDiscardedPacketsAccumulated\": 12,\r\n" +
282 " \"receivedDiscardedPacketsDelta\": 2,\r\n" +
283 " \"receivedErrorPacketsAccumulated\": 2,\r\n" +
284 " \"receivedErrorPacketsDelta\": 1,\r\n" +
285 " \"valuesAreSuspect\": false,\r\n" +
286 " \"vNicIdentifier\": \"someVNicIdentifier\"\r\n" +
289 " \"measurementInterval\": 900,\r\n" +
290 " \"measurementsForVfScalingVersion\": 2.0\r\n" +
296 String cefInapplicableMessage = "{\r\n" +
297 " \"event\": {\r\n" +
298 " \"commonEventHeader\": {\r\n" +
299 " \"domain\": \"measurementsForVfScaling\",\r\n" +
300 " \"eventId\": \"UC1-SCL01081-1492639920787\",\r\n" +
301 " \"eventName\": \"testEventName\",\r\n" +
302 " \"lastEpochMicrosec\": 1492639920787,\r\n" +
303 " \"nfNamingCode\": \"ENBE\",\r\n" +
304 " \"priority\": \"Normal\",\r\n" +
305 " \"reportingEntityId\": \"\",\r\n" +
306 " \"reportingEntityName\": \"vtc2e7admn2\",\r\n" +
307 " \"sequence\": 0,\r\n" +
308 " \"sourceId\": \"SCL01081_9B_1\",\r\n" +
309 " \"sourceName\": \"SCL01081\",\r\n" +
310 " \"startEpochMicrosec\": 1492639920787,\r\n" +
311 " \"version\": 3.0\r\n" +
313 " \"measurementsForVfScalingFields\": {\r\n" +
314 " \"additionalFields\": [\r\n" +
316 " \"name\": \"software_version \",\r\n" +
317 " \"value\": \"version1\"\r\n" +
320 " \"name\": \"vendor \",\r\n" +
321 " \"value\": \"Ericsson \"\r\n" +
324 " \"additionalMeasurements\": [\r\n" +
326 " \"name\": \"OaaS_UC1_EricssonSleepingCell\",\r\n" +
327 " \"arrayOfFields\": [\r\n" +
329 " \"name\": \"PMRAATTCBRA\",\r\n" +
330 " \"value\": \"1353\"\r\n" +
333 " \"name\": \"PMRASUCCCBRA\",\r\n" +
334 " \"value\": \"1351\"\r\n" +
337 " \"name\": \"PMCELLDOWNTIMEAUTO\",\r\n" +
338 " \"value\": \"0\"\r\n" +
341 " \"name\": \"PMCELLDOWNTIMEMAN\",\r\n" +
342 " \"value\": \"0\"\r\n" +
345 " \"name\": \"PMRRCCONNESTABATT\",\r\n" +
346 " \"value\": \"297\"\r\n" +
349 " \"name\": \"PMRRCCONNESTABSUCC\",\r\n" +
350 " \"value\": \"297\"\r\n" +
355 " \"vNicPerformanceArray\": [\r\n" +
357 " \"receivedBroadcastPacketsAccumulated\": 5000,\r\n" +
358 " \"receivedBroadcastPacketsDelta\": 5,\r\n" +
359 " \"receivedDiscardedPacketsAccumulated\": 12,\r\n" +
360 " \"receivedDiscardedPacketsDelta\": 2,\r\n" +
361 " \"receivedErrorPacketsAccumulated\": 2,\r\n" +
362 " \"receivedErrorPacketsDelta\": 1,\r\n" +
363 " \"valuesAreSuspect\": false,\r\n" +
364 " \"vNicIdentifier\": \"someVNicIdentifier\"\r\n" +
367 " \"measurementInterval\": 900,\r\n" +
368 " \"measurementsForVfScalingVersion\": 2.0\r\n" +
374 ObjectMapper objectMapper = new ObjectMapper();
375 final List<TcaExecutionContext> tcaExecutionResults = tcaProcessingService.getTcaExecutionResults(
376 "testRequestId", "testTransactionId", tcaPolicy,
377 Arrays.asList(cefMessage, cefViolationMessage,
379 cefInapplicableMessage));
381 for (TcaExecutionContext tcaExecutionResult : tcaExecutionResults) {
382 final TcaAlert tcaAlert = tcaExecutionResult.getTcaResultContext().getTcaAlert();
383 String tcaAlertString = "";
384 if (tcaAlert != null) {
385 tcaAlertString = objectMapper.writeValueAsString(tcaAlert);