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