2 * ============LICENSE_START=======================================================
 
   4 * ================================================================================
 
   5 * Copyright 2018 TechMahindra
 
   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.
 
  18 * ============LICENSE_END=========================================================
 
  20 package org.onap.universalvesadapter.adapter;
 
  22 import static org.junit.Assert.assertNotEquals;
 
  23 import static org.junit.Assert.assertNotNull;
 
  25 import java.util.HashMap;
 
  28 import org.junit.Before;
 
  29 import org.junit.Ignore;
 
  30 import org.junit.Test;
 
  31 import org.junit.runner.RunWith;
 
  32 import org.mockito.InjectMocks;
 
  33 import org.mockito.Mock;
 
  34 import org.mockito.MockitoAnnotations;
 
  35 import org.onap.universalvesadapter.Application;
 
  36 import org.onap.universalvesadapter.exception.VesException;
 
  37 import org.onap.universalvesadapter.service.VESAdapterInitializer;
 
  38 import org.slf4j.Logger;
 
  39 import org.slf4j.LoggerFactory;
 
  40 import org.springframework.boot.test.context.SpringBootTest;
 
  41 import org.springframework.test.context.junit4.SpringRunner;
 
  43 @RunWith(SpringRunner.class)
 
  44 @SpringBootTest(classes=Application.class)
 
  46 public class UniversalEventAdapterTest  {
 
  48          private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
 
  51     private VESAdapterInitializer vESAdapterInitializer;  
 
  54     private UniversalEventAdapter universalVesAdapter;
 
  59         MockitoAnnotations.initMocks(this);
 
  65         public void testtransform()  {
 
  66         StringBuffer incomingJsonString = new StringBuffer("{ ")
 
  67                 .append("\"protocol version\":\"v2c\", ")
 
  68                 .append("\"notify OID\":\".1.3.6.1.4.1.1751.2.46.12.1.1\", ")
 
  69                 .append("\"cambria.partition\":\"dcae-snmp.client.research.att.com\", ")
 
  70                 .append("\"trap category\":\"UCSNMP-HEARTBEAT\", ")
 
  71                 .append("\"epoch_serno\": 15161177410000, ")
 
  72                 .append("\"community\":\"public\", ")
 
  73                 .append("\"time received\": 1516117741, ")
 
  74                 .append("\"agent name\":\"localhost\", ")
 
  75                 .append("\"agent address\":\"127.0.0.1\", ")
 
  76                 .append("\"community len\": 6, ")
 
  77                 .append("\"notify OID len\": 12, ")
 
  78                 .append("\"varbinds\": [{ ")
 
  79                 .append("    \"varbind_type\":\"octet\", ")
 
  80                 .append("    \"varbind_oid\":\".1.3.6.1.4.1.74.2.46.12.1.1.1\", ")
 
  81                 .append("    \"varbind_value\":\"ucsnmp heartbeat - ignore\" ")
 
  83                 .append("    \"varbind_type\":\"octet\", ")
 
  84                 .append("    \"varbind_oid\":\".1.3.6.1.4.1.74.2.46.12.1.1.2\", ")
 
  85                 .append("    \"varbind_value\":\"Tue Jan 16 10:49:01 EST 2018\" ")
 
  89         Map<String,String> testMap=new HashMap<String,String>();
 
  90         testMap.put("defaultSnmpMappingFile", "<?xml version=\"1.0\"?>\r\n" + 
 
  91                         "<smooks-resource-list\r\n" + 
 
  92                         "        xmlns=\"http://www.milyn.org/xsd/smooks-1.1.xsd\"\r\n" + 
 
  93                         "        xmlns:json=\"http://www.milyn.org/xsd/smooks/json-1.1.xsd\"\r\n" + 
 
  94                         "        xmlns:jb=\"http://www.milyn.org/xsd/smooks/javabean-1.4.xsd\">\r\n" + 
 
  95                         "    <json:reader rootName=\"vesevent\"  keyWhitspaceReplacement=\"-\">\r\n" + 
 
  96                         "    <json:keyMap>\r\n" + 
 
  97                         "               <json:key from=\"date&time\" to=\"date-and-time\" />\r\n" + 
 
  98                         "           </json:keyMap>\r\n" + 
 
  99                         "       </json:reader>\r\n" + 
 
 101                         "     <jb:bean class=\"org.onap.dcaegen2.ves.domain.VesEvent\" beanId=\"vesEvent\" createOnElement=\"vesevent\">\r\n" + 
 
 102                         "       <jb:wiring property=\"event\" beanIdRef=\"event\"/>\r\n" + 
 
 105                         "     <jb:bean class=\"org.onap.dcaegen2.ves.domain.Event\" beanId=\"event\" createOnElement=\"vesevent\">\r\n" + 
 
 106                         "       <jb:wiring property=\"commonEventHeader\" beanIdRef=\"commonEventHeader\"/>\r\n" + 
 
 107                         "       <jb:wiring property=\"faultFields\" beanIdRef=\"faultFields\"/>         \r\n" + 
 
 108                         "       <!--<jb:wiring property=\"measurementsForVfScalingFields\" beanIdRef=\"measurementsForVfScalingFields\"/> -->           \r\n" + 
 
 110                         "    <!--<jb:bean class=\"org.onap.dcaegen2.ves.domain.MeasurementsForVfScalingFields\" beanId=\"measurementsForVfScalingFields\" createOnElement=\"simple\">\r\n" + 
 
 111                         "       <jb:wiring property=\"additionalMeasurements\" beanIdRef=\"additionalMeasurements\"/>\r\n" + 
 
 112                         "    </jb:bean>-->\r\n" + 
 
 114                         "    <jb:bean class=\"org.onap.dcaegen2.ves.domain.CommonEventHeader\" beanId=\"commonEventHeader\" createOnElement=\"vesevent\">\r\n" + 
 
 115                         "               <jb:expression property=\"version\">\"3.0\"</jb:expression>\r\n" + 
 
 116                         "               <jb:expression property=\"eventId\">\"XXXX\"</jb:expression>\r\n" + 
 
 117                         "               <jb:expression property=\"reportingEntityName\">\"VesAdapter\"</jb:expression>\r\n" + 
 
 118                         "               <jb:expression property=\"domain\">\"fault\"</jb:expression>\r\n" + 
 
 119                         "               <jb:expression property=\"eventName\" execOnElement=\"vesevent\" >commonEventHeader.domain+\"_\"+commonEventHeader.reportingEntityName +\"_\"+ faultFields.alarmCondition;</jb:expression>\r\n" + 
 
 120                         "       <jb:value property=\"sequence\" data=\"0\" default=\"0\" decoder=\"Long\"/>\r\n" + 
 
 121                         "       <jb:value property=\"lastEpochMicrosec\" data=\"#/time-received\"  decoder=\"Double\" />\r\n" + 
 
 122                         "       <jb:value property=\"startEpochMicrosec\" data=\"#/time-received\"  decoder=\"Double\"/>\r\n" + 
 
 123                         "               <jb:expression property=\"priority\">\"Medium\"</jb:expression>\r\n" + 
 
 124                         "       <jb:expression property=\"sourceName\">\"VesAdapter\"</jb:expression>\r\n" + 
 
 127                         "    <jb:bean class=\"org.onap.dcaegen2.ves.domain.FaultFields\" beanId=\"faultFields\" createOnElement=\"vesevent\">\r\n" + 
 
 128                         "       <jb:value property=\"alarmCondition\" data=\"#/trap-category\" />\r\n" + 
 
 129                         "               <jb:expression property=\"eventSeverity\">\"MINOR\"</jb:expression>\r\n" + 
 
 130                         "               <jb:expression property=\"eventSourceType\">\"SNMP Agent\"</jb:expression>\r\n" + 
 
 131                         "       <jb:expression property=\"specificProblem\">\"SNMP Fault\"</jb:expression>\r\n" + 
 
 132                         "       <jb:value property=\"faultFieldsVersion\" data=\"2.0\" default=\"2.0\" decoder=\"Double\" />\r\n" + 
 
 133                         "       <jb:wiring property=\"alarmAdditionalInformation\" beanIdRef=\"alarmAdditionalInformationroot\"/>   \r\n" + 
 
 134                         "               <jb:expression property=\"vfStatus\">\"Active\"</jb:expression>\r\n" + 
 
 137                         "     <jb:bean class=\"java.util.ArrayList\" beanId=\"alarmAdditionalInformationroot\" createOnElement=\"vesevent\">\r\n" + 
 
 138                         "       <jb:wiring beanIdRef=\"alarmAdditionalInformation\"/>\r\n" + 
 
 141                         "      <jb:bean class=\"org.onap.dcaegen2.ves.domain.AlarmAdditionalInformation\" beanId=\"alarmAdditionalInformation\" createOnElement=\"varbinds/element\">\r\n" + 
 
 142                         "       <jb:value property=\"name\" data=\"#/varbind_oid\"/>\r\n" + 
 
 143                         "        <jb:value property=\"value\" data=\"#/varbind_value\" />\r\n" + 
 
 145                         "       <!--<jb:bean class=\"java.util.ArrayList\" beanId=\"additionalMeasurements\" createOnElement=\"simple\">\r\n" + 
 
 146                         "       <jb:wiring beanIdRef=\"additionalMeasurement\"/>\r\n" + 
 
 149                         "    <jb:bean class=\"org.onap.dcaegen2.ves.domain.AdditionalMeasurement\" beanId=\"additionalMeasurement\" createOnElement=\"varbinds/element\">\r\n" + 
 
 150                         "       <jb:value property=\"name\" data=\"#/varbind_value\" />\r\n" + 
 
 151                         "    </jb:bean>  -->  \r\n" + 
 
 153                         "</smooks-resource-list>");
 
 154         testMap.put(".1.3.6.1.4.1.1751.2.46.12", "<?xml version=\"1.0\"?>\r\n" + 
 
 155                         "<smooks-resource-list\r\n" + 
 
 156                         "        xmlns=\"http://www.milyn.org/xsd/smooks-1.1.xsd\"\r\n" + 
 
 157                         "        xmlns:json=\"http://www.milyn.org/xsd/smooks/json-1.1.xsd\"\r\n" + 
 
 158                         "        xmlns:jb=\"http://www.milyn.org/xsd/smooks/javabean-1.4.xsd\">\r\n" + 
 
 159                         "    <json:reader rootName=\"vesevent\"  keyWhitspaceReplacement=\"-\">\r\n" + 
 
 160                         "    <json:keyMap>\r\n" + 
 
 161                         "               <json:key from=\"date&time\" to=\"date-and-time\" />\r\n" + 
 
 162                         "           </json:keyMap>\r\n" + 
 
 163                         "       </json:reader>\r\n" + 
 
 165                         "     <jb:bean class=\"org.onap.dcaegen2.ves.domain.VesEvent\" beanId=\"vesEvent\" createOnElement=\"vesevent\">\r\n" + 
 
 166                         "       <jb:wiring property=\"event\" beanIdRef=\"event\"/>\r\n" + 
 
 169                         "     <jb:bean class=\"org.onap.dcaegen2.ves.domain.Event\" beanId=\"event\" createOnElement=\"vesevent\">\r\n" + 
 
 170                         "       <jb:wiring property=\"commonEventHeader\" beanIdRef=\"commonEventHeader\"/>\r\n" + 
 
 171                         "       <jb:wiring property=\"faultFields\" beanIdRef=\"faultFields\"/>         \r\n" + 
 
 172                         "       <!--<jb:wiring property=\"measurementsForVfScalingFields\" beanIdRef=\"measurementsForVfScalingFields\"/> -->           \r\n" + 
 
 174                         "    <!--<jb:bean class=\"org.onap.dcaegen2.ves.domain.MeasurementsForVfScalingFields\" beanId=\"measurementsForVfScalingFields\" createOnElement=\"simple\">\r\n" + 
 
 175                         "       <jb:wiring property=\"additionalMeasurements\" beanIdRef=\"additionalMeasurements\"/>\r\n" + 
 
 176                         "    </jb:bean>-->\r\n" + 
 
 178                         "    <jb:bean class=\"org.onap.dcaegen2.ves.domain.CommonEventHeader\" beanId=\"commonEventHeader\" createOnElement=\"vesevent\">\r\n" + 
 
 179                         "               <jb:expression property=\"version\">\"3.0\"</jb:expression>\r\n" + 
 
 180                         "               <jb:expression property=\"eventId\">\"XXXX\"</jb:expression>\r\n" + 
 
 181                         "               <jb:expression property=\"reportingEntityName\">\"VesAdapter\"</jb:expression>\r\n" + 
 
 182                         "               <jb:expression property=\"domain\">\"fault\"</jb:expression>\r\n" + 
 
 183                         "               <jb:expression property=\"eventName\" execOnElement=\"vesevent\" >commonEventHeader.domain+\"_\"+commonEventHeader.reportingEntityName +\"_\"+ faultFields.alarmCondition;</jb:expression>\r\n" + 
 
 184                         "       <jb:value property=\"sequence\" data=\"0\" default=\"0\" decoder=\"Long\"/>\r\n" + 
 
 185                         "       <jb:value property=\"lastEpochMicrosec\" data=\"#/time-received\"  decoder=\"Double\" />\r\n" + 
 
 186                         "       <jb:value property=\"startEpochMicrosec\" data=\"#/time-received\"  decoder=\"Double\"/>\r\n" + 
 
 187                         "               <jb:expression property=\"priority\">\"Medium\"</jb:expression>\r\n" + 
 
 188                         "       <jb:expression property=\"sourceName\">\"VesAdapter\"</jb:expression>\r\n" + 
 
 191                         "    <jb:bean class=\"org.onap.dcaegen2.ves.domain.FaultFields\" beanId=\"faultFields\" createOnElement=\"vesevent\">\r\n" + 
 
 192                         "       <jb:value property=\"alarmCondition\" data=\"#/trap-category\" />\r\n" + 
 
 193                         "               <jb:expression property=\"eventSeverity\">\"MINOR\"</jb:expression>\r\n" + 
 
 194                         "               <jb:expression property=\"eventSourceType\">\"SNMP Agent\"</jb:expression>\r\n" + 
 
 195                         "       <jb:expression property=\"specificProblem\">\"SNMP Fault\"</jb:expression>\r\n" + 
 
 196                         "       <jb:value property=\"faultFieldsVersion\" data=\"2.0\" default=\"2.0\" decoder=\"Double\" />\r\n" + 
 
 197                         "       <jb:wiring property=\"alarmAdditionalInformation\" beanIdRef=\"alarmAdditionalInformationroot\"/>   \r\n" + 
 
 198                         "               <jb:expression property=\"vfStatus\">\"Active\"</jb:expression>\r\n" + 
 
 201                         "     <jb:bean class=\"java.util.ArrayList\" beanId=\"alarmAdditionalInformationroot\" createOnElement=\"vesevent\">\r\n" + 
 
 202                         "       <jb:wiring beanIdRef=\"alarmAdditionalInformation\"/>\r\n" + 
 
 205                         "      <jb:bean class=\"org.onap.dcaegen2.ves.domain.AlarmAdditionalInformation\" beanId=\"alarmAdditionalInformation\" createOnElement=\"varbinds/element\">\r\n" + 
 
 206                         "       <jb:value property=\"name\" data=\"#/varbind_oid\"/>\r\n" + 
 
 207                         "        <jb:value property=\"value\" data=\"#/varbind_value\" />\r\n" + 
 
 209                         "       <!--<jb:bean class=\"java.util.ArrayList\" beanId=\"additionalMeasurements\" createOnElement=\"simple\">\r\n" + 
 
 210                         "       <jb:wiring beanIdRef=\"additionalMeasurement\"/>\r\n" + 
 
 213                         "    <jb:bean class=\"org.onap.dcaegen2.ves.domain.AdditionalMeasurement\" beanId=\"additionalMeasurement\" createOnElement=\"varbinds/element\">\r\n" + 
 
 214                         "       <jb:value property=\"name\" data=\"#/varbind_value\" />\r\n" + 
 
 215                         "    </jb:bean>  -->  \r\n" + 
 
 217                         "</smooks-resource-list>");
 
 221             VESAdapterInitializer.setMappingFiles(testMap);
 
 222                 String actualResult = universalVesAdapter.transform(incomingJsonString.toString(), "snmp");
 
 223             assertNotNull(actualResult);
 
 224             assertNotEquals("", actualResult);
 
 225         } catch (VesException exception) {
 
 226                 errorLogger.error("Error occurred : {}", exception );