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);