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