7522abe0a154b2e2a29518e97bc35f0c962a5a09
[policy/apex-pdp.git] / testsuites / integration / integration-executor-test / src / test / java / org / onap / policy / apex / testsuites / integration / executor / event / TestEventInstantiation.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2019-2020 Nordix Foundation.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.apex.testsuites.integration.executor.event;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertNull;
27 import static org.junit.Assert.assertTrue;
28
29 import java.io.IOException;
30 import java.util.Date;
31 import java.util.HashMap;
32 import java.util.Map;
33
34 import org.junit.After;
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters;
38 import org.onap.policy.apex.context.parameters.ContextParameterConstants;
39 import org.onap.policy.apex.context.parameters.ContextParameters;
40 import org.onap.policy.apex.context.parameters.SchemaParameters;
41 import org.onap.policy.apex.core.engine.EngineParameters;
42 import org.onap.policy.apex.core.engine.engine.ApexEngine;
43 import org.onap.policy.apex.core.engine.engine.impl.ApexEngineFactory;
44 import org.onap.policy.apex.core.engine.event.EnEvent;
45 import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
46 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
47 import org.onap.policy.apex.model.basicmodel.handling.ApexModelException;
48 import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
49 import org.onap.policy.apex.plugins.executor.mvel.MvelExecutorParameters;
50 import org.onap.policy.apex.testsuites.integration.common.model.SampleDomainModelFactory;
51 import org.onap.policy.common.parameters.ParameterService;
52 import org.slf4j.ext.XLogger;
53 import org.slf4j.ext.XLoggerFactory;
54
55 /**
56  * The Class TestEventInstantiation.
57  *
58  * @author Liam Fallon (liam.fallon@ericsson.com)
59  */
60 public class TestEventInstantiation {
61     // Logger for this class
62     private static final XLogger logger = XLoggerFactory.getXLogger(TestEventInstantiation.class);
63
64     private SchemaParameters schemaParameters;
65     private ContextParameters contextParameters;
66     private EngineParameters engineParameters;
67
68     /**
69      * Before test.
70      */
71     @Before
72     public void beforeTest() {
73         schemaParameters = new SchemaParameters();
74
75         schemaParameters.setName(ContextParameterConstants.SCHEMA_GROUP_NAME);
76         schemaParameters.getSchemaHelperParameterMap().put("JAVA", new JavaSchemaHelperParameters());
77
78         ParameterService.register(schemaParameters);
79
80         contextParameters = new ContextParameters();
81
82         contextParameters.setName(ContextParameterConstants.MAIN_GROUP_NAME);
83         contextParameters.getDistributorParameters().setName(ContextParameterConstants.DISTRIBUTOR_GROUP_NAME);
84         contextParameters.getLockManagerParameters().setName(ContextParameterConstants.LOCKING_GROUP_NAME);
85         contextParameters.getPersistorParameters().setName(ContextParameterConstants.PERSISTENCE_GROUP_NAME);
86
87         ParameterService.register(contextParameters);
88         ParameterService.register(contextParameters.getDistributorParameters());
89         ParameterService.register(contextParameters.getLockManagerParameters());
90         ParameterService.register(contextParameters.getPersistorParameters());
91
92         engineParameters = new EngineParameters();
93         engineParameters.getExecutorParameterMap().put("MVEL", new MvelExecutorParameters());
94         ParameterService.register(engineParameters);
95     }
96
97     /**
98      * After test.
99      */
100     @After
101     public void afterTest() {
102         ParameterService.deregister(engineParameters);
103
104         ParameterService.deregister(contextParameters.getDistributorParameters());
105         ParameterService.deregister(contextParameters.getLockManagerParameters());
106         ParameterService.deregister(contextParameters.getPersistorParameters());
107         ParameterService.deregister(contextParameters);
108
109         ParameterService.deregister(schemaParameters);
110     }
111
112     /**
113      * Test event instantiation.
114      *
115      * @throws ApexModelException on errors in handling Apex models
116      * @throws IOException Signals that an I/O exception has occurred.
117      * @throws ApexException the apex exception
118      */
119     @Test
120     public void testEventInstantiation() throws ApexModelException, IOException, ApexException {
121         final String xmlFileName = "xml/ApexModel_MVEL.xml";
122
123         logger.debug("Running TestEventInstantiation test  on file {} . . .", xmlFileName);
124
125         final AxPolicyModel apexPolicyModel = new SampleDomainModelFactory().getSamplePolicyModel("MVEL");
126         assertNotNull(apexPolicyModel);
127
128         final ApexEngine apexEngine = new ApexEngineFactory().createApexEngine(apexPolicyModel.getKey());
129         apexEngine.updateModel(apexPolicyModel, false);
130         apexEngine.start();
131
132         final EnEvent event = apexEngine.createEvent(new AxArtifactKey("Event0000", "0.0.1"));
133
134         Object slogan1 = event.put("TestSlogan", "This is a slogan");
135         assertNull(slogan1);
136         slogan1 = event.get("TestSlogan");
137         assertNotNull(slogan1);
138         assertEquals("This is a slogan", slogan1);
139
140         Object mc1 = event.put("TestMatchCase", Byte.valueOf("4"));
141         assertNull(mc1);
142         mc1 = event.get("TestMatchCase");
143         assertNotNull(mc1);
144         assertEquals((byte) 4, mc1);
145
146         Object mc2 = event.put("TestMatchCase", Byte.valueOf("16"));
147         assertNotNull(mc2);
148         assertEquals((byte) 4, mc2);
149         mc2 = event.get("TestMatchCase");
150         assertNotNull(mc2);
151         assertEquals((byte) 16, mc2);
152
153         final Date timeNow = new Date();
154         Object timestamp1 = event.put("TestTimestamp", timeNow.getTime());
155         assertNull(timestamp1);
156         timestamp1 = event.get("TestTimestamp");
157         assertNotNull(timestamp1);
158         assertEquals(timeNow.getTime(), timestamp1);
159
160         final double temperature = 123.456789;
161         Object temp1 = event.put("TestTemperature", temperature);
162         assertNull(temp1);
163         temp1 = event.get("TestTemperature");
164         assertNotNull(temp1);
165         assertEquals(temperature, temp1);
166
167         Object value = event.put("TestMatchCase", null);
168         assertEquals(16, ((Byte) value).intValue());
169         value = event.get("TestMatchCase");
170         assertNull(value);
171
172         try {
173             event.put("TestMatchCase", "Hello");
174         } catch (final Exception e) {
175             assertEquals("Event0000:0.0.1:NULL:TestMatchCase: object \"Hello\" of class \"java.lang.String\" "
176                     + "not compatible with class \"java.lang.Byte\"", e.getMessage());
177         }
178
179         try {
180             event.put("TestMatchCase", 123.45);
181         } catch (final Exception e) {
182             assertEquals("Event0000:0.0.1:NULL:TestMatchCase: object \"123.45\" of class \"java.lang.Double\" "
183                     + "not compatible with class \"java.lang.Byte\"", e.getMessage());
184         }
185
186         event.put("TestMatchCase", Byte.valueOf("16"));
187
188         final String slogan2 = (String) event.get("TestSlogan");
189         assertNotNull(slogan2);
190         assertEquals("This is a slogan", slogan2);
191
192         final byte mc21 = (byte) event.get("TestMatchCase");
193         assertNotNull(mc21);
194         assertEquals(16, mc21);
195
196         final byte mc22 = (byte) event.get("TestMatchCase");
197         assertNotNull(mc22);
198         assertEquals((byte) 16, mc22);
199
200         final long timestamp2 = (Long) event.get("TestTimestamp");
201         assertNotNull(timestamp2);
202         assertEquals(timestamp2, timestamp1);
203
204         final double temp2 = (double) event.get("TestTemperature");
205         assertNotNull(temp2);
206         assertTrue(temp2 == 123.456789);
207
208         final Double temp3 = (Double) event.get("TestTemperature");
209         assertNotNull(temp3);
210         assertTrue(temp3 == 123.456789);
211
212         final Date aDate = new Date(1433453067123L);
213         final Map<String, Object> eventDataList = new HashMap<String, Object>();
214         eventDataList.put("TestSlogan", "This is a test slogan");
215         eventDataList.put("TestMatchCase", Byte.valueOf("123"));
216         eventDataList.put("TestTimestamp", aDate.getTime());
217         eventDataList.put("TestTemperature", 34.5445667);
218
219         event.putAll(eventDataList);
220
221         final String slogan3 = (String) event.get("TestSlogan");
222         assertNotNull(slogan3);
223         assertEquals("This is a test slogan", slogan3);
224
225         final byte mc31 = (byte) event.get("TestMatchCase");
226         assertNotNull(mc31);
227         assertEquals((byte) 123, mc31);
228
229         final long timestamp3 = (Long) event.get("TestTimestamp");
230         assertNotNull(timestamp3);
231         assertEquals(timestamp3, aDate.getTime());
232
233         final double temp4 = (double) event.get("TestTemperature");
234         assertNotNull(temp4);
235         assertTrue(temp4 == 34.5445667);
236
237         logger.debug(event.toString());
238     }
239 }