2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2016-2018 Ericsson. All rights reserved.
4 * Modifications Copyright (C) 2020-2021 Nordix Foundation.
5 * Modifications Copyright (C) 2022 Bell Canada.
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.
19 * SPDX-License-Identifier: Apache-2.0
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.apex.plugins.event.protocol.xml;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotNull;
27 import static org.junit.Assert.assertNull;
28 import static org.junit.Assert.assertTrue;
30 import java.util.Date;
31 import java.util.HashMap;
33 import java.util.Random;
34 import org.apache.commons.lang3.RandomStringUtils;
35 import org.junit.Test;
36 import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
37 import org.onap.policy.apex.service.engine.event.ApexEvent;
38 import org.onap.policy.apex.service.engine.event.ApexEventException;
39 import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
40 import org.slf4j.ext.XLogger;
41 import org.slf4j.ext.XLoggerFactory;
44 * The Class TestApexXMLEventHandlerURL.
46 * @author Liam Fallon (liam.fallon@ericsson.com)
48 public class XmlEventHandlerTest {
49 private static final XLogger logger = XLoggerFactory.getXLogger(XmlEventHandlerTest.class);
52 * Test XML to apex event. Null value is passed as parameter.
54 * @throws ApexException on Apex event handling errors
56 @Test(expected = ApexException.class)
57 public void testApexEventToApexNullObject() throws ApexException {
58 final Apex2XmlEventConverter xmlEventConverter = new Apex2XmlEventConverter();
59 // This is only for code coverage stats. This method does nothing
60 xmlEventConverter.init(null);
62 xmlEventConverter.toApexEvent("XMLEventName", null);
66 * Test XML to apex event. There is no string passed as parameter.
68 * @throws ApexException on Apex event handling errors
70 @Test(expected = ApexEventRuntimeException.class)
71 public void testApexEventToApexNotString() throws ApexException {
72 final Apex2XmlEventConverter xmlEventConverter = new Apex2XmlEventConverter();
74 xmlEventConverter.toApexEvent("XMLEventName", new Random().nextInt());
78 * Test not valid XML to apex event.
80 * @throws ApexException on Apex event handling errors
82 @Test(expected = ApexException.class)
83 public void testApexEventToApexNotXml() throws ApexException {
84 final Apex2XmlEventConverter xmlEventConverter = new Apex2XmlEventConverter();
86 xmlEventConverter.toApexEvent("XMLEventName", RandomStringUtils.randomAlphabetic(25));
90 * Test XML to apex event.
92 * @throws ApexException on Apex event handling errors
95 public void testXmltoApexEvent() throws ApexException {
97 final Apex2XmlEventConverter xmlEventConverter = new Apex2XmlEventConverter();
98 assertNotNull(xmlEventConverter);
100 final String apexEventXmlStringIn = XmlEventGenerator.xmlEvent();
102 logger.debug("input event\n" + apexEventXmlStringIn);
104 for (final ApexEvent apexEvent : xmlEventConverter.toApexEvent("XMLEventName", apexEventXmlStringIn)) {
105 assertNotNull(apexEvent);
107 logger.debug(apexEvent.toString());
109 assertTrue(apexEvent.getName().equals("Event0000") || apexEvent.getName().equals("Event0100"));
110 assertEquals("0.0.1", apexEvent.getVersion());
111 assertEquals("org.onap.policy.apex.sample.events", apexEvent.getNameSpace());
112 assertEquals("test", apexEvent.getSource());
113 assertEquals("apex", apexEvent.getTarget());
114 assertTrue(apexEvent.get("TestSlogan").toString().startsWith("Test slogan for External Event"));
116 final Object testMatchCaseSelected = apexEvent.get("TestMatchCaseSelected");
117 assertNull(testMatchCaseSelected);
119 } catch (final Exception e) {
121 throw new ApexException("Exception reading Apex event xml file", e);
126 * Test null as apex event to xml.
128 * @throws ApexEventException on Apex event handling errors
130 @Test(expected = ApexEventException.class)
131 public void testApexEventToXmlNullEvent() throws ApexEventException {
132 final Apex2XmlEventConverter xmlEventConverter = new Apex2XmlEventConverter();
133 xmlEventConverter.fromApexEvent(null);
137 * Test apex event to xml.
139 * @throws ApexException on Apex event handling errors
142 public void testApexEventToXml() throws ApexException {
144 final Apex2XmlEventConverter xmlEventConverter = new Apex2XmlEventConverter();
145 assertNotNull(xmlEventConverter);
147 final Date event0000StartTime = new Date();
148 final Map<String, Object> event0000DataMap = new HashMap<String, Object>();
149 event0000DataMap.put("TestSlogan", "This is a test slogan");
150 event0000DataMap.put("TestMatchCase", 12345);
151 event0000DataMap.put("TestTimestamp", event0000StartTime.getTime());
152 event0000DataMap.put("TestTemperature", 34.5445667);
153 event0000DataMap.put("NullValue", null);
155 final ApexEvent apexEvent0000 =
156 new ApexEvent("Event0000", "0.0.1", "org.onap.policy.apex.sample.events", "test", "apex", "");
157 apexEvent0000.putAll(event0000DataMap);
159 final String apexEvent0000XmlString = xmlEventConverter.fromApexEvent(apexEvent0000);
161 logger.debug(apexEvent0000XmlString);
163 assertTrue(apexEvent0000XmlString.contains("<name>Event0000</name>"));
164 assertTrue(apexEvent0000XmlString.contains("<version>0.0.1</version>"));
165 assertTrue(apexEvent0000XmlString.contains("<value>This is a test slogan</value>"));
166 assertTrue(apexEvent0000XmlString.contains("<value>12345</value>"));
167 assertTrue(apexEvent0000XmlString.contains("<value></value>"));
168 assertTrue(apexEvent0000XmlString.contains("<value>" + event0000StartTime.getTime() + "</value>"));
169 assertTrue(apexEvent0000XmlString.contains("<value>34.5445667</value>"));
171 final Date event0004StartTime = new Date(1434363272000L);
172 final Map<String, Object> event0004DataMap = new HashMap<String, Object>();
173 event0004DataMap.put("TestSlogan", "Test slogan for External Event");
174 event0004DataMap.put("TestMatchCase", Integer.valueOf(2));
175 event0004DataMap.put("TestTimestamp", Long.valueOf(event0004StartTime.getTime()));
176 event0004DataMap.put("TestTemperature", Double.valueOf(1064.43));
177 event0004DataMap.put("TestMatchCaseSelected", Integer.valueOf(2));
178 event0004DataMap.put("TestMatchStateTime", Long.valueOf(1434370506078L));
179 event0004DataMap.put("TestEstablishCaseSelected", Integer.valueOf(0));
180 event0004DataMap.put("TestEstablishStateTime", Long.valueOf(1434370506085L));
181 event0004DataMap.put("TestDecideCaseSelected", Integer.valueOf(3));
182 event0004DataMap.put("TestDecideStateTime", Long.valueOf(1434370506092L));
183 event0004DataMap.put("TestActCaseSelected", Integer.valueOf(2));
184 event0004DataMap.put("TestActStateTime", Long.valueOf(1434370506095L));
186 final ApexEvent apexEvent0004 = new ApexEvent("Event0004", "0.0.1",
187 "org.onap.policy.apex.domains.sample.events", "test", "apex", "");
188 apexEvent0004.putAll(event0004DataMap);
190 final String apexEvent0004XmlString = xmlEventConverter.fromApexEvent(apexEvent0004);
192 logger.debug(apexEvent0004XmlString);
194 assertTrue(apexEvent0004XmlString.contains("<name>Event0004</name>"));
195 assertTrue(apexEvent0004XmlString.contains("<version>0.0.1</version>"));
196 assertTrue(apexEvent0004XmlString.contains("<value>Test slogan for External Event</value>"));
197 assertTrue(apexEvent0004XmlString.contains("<value>1434370506078</value>"));
198 assertTrue(apexEvent0004XmlString.contains("<value>" + event0004StartTime.getTime() + "</value>"));
199 assertTrue(apexEvent0004XmlString.contains("<value>1064.43</value>"));
200 } catch (final Exception e) {
202 throw new ApexException("Exception reading Apex event xml file", e);