2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2016-2018 Ericsson. All rights reserved.
4 * Modifications Copyright (C) 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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.apex.testsuites.integration.uservice.engdep;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.fail;
28 import java.io.IOException;
29 import java.net.URISyntaxException;
30 import java.util.Date;
31 import java.util.HashMap;
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.deployment.BatchDeployer;
41 import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities;
42 import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
43 import org.onap.policy.apex.model.basicmodel.service.ModelService;
44 import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
45 import org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters;
46 import org.onap.policy.apex.service.engine.event.ApexEvent;
47 import org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters;
48 import org.onap.policy.apex.testsuites.integration.common.model.SampleDomainModelFactory;
49 import org.onap.policy.common.parameters.ParameterService;
50 import org.slf4j.ext.XLogger;
51 import org.slf4j.ext.XLoggerFactory;
53 // CHECKSTYLE:OFF: checkstyle:magicNumber
56 * The Class EngDepMessagingTest.
58 * @author Liam Fallon (liam.fallon@ericsson.com)
60 public class EngDepMessagingTest {
61 // Logger for this class
62 private static final XLogger LOGGER = XLoggerFactory.getXLogger(EngDepMessagingTest.class);
64 private static final long MAX_START_WAIT = 10000; // 10 sec
66 private SchemaParameters schemaParameters;
67 private ContextParameters contextParameters;
68 private EngineServiceParameters engineServiceParameters;
71 * Clear relative file root environment variable.
74 public void clearRelativeFileRoot() {
75 System.clearProperty("APEX_RELATIVE_FILE_ROOT");
82 public void beforeTest() {
83 schemaParameters = new SchemaParameters();
85 schemaParameters.setName(ContextParameterConstants.SCHEMA_GROUP_NAME);
86 schemaParameters.getSchemaHelperParameterMap().put("JAVA", new JavaSchemaHelperParameters());
88 ParameterService.register(schemaParameters, true);
90 contextParameters = new ContextParameters();
92 contextParameters.setName(ContextParameterConstants.MAIN_GROUP_NAME);
93 contextParameters.getDistributorParameters().setName(ContextParameterConstants.DISTRIBUTOR_GROUP_NAME);
94 contextParameters.getLockManagerParameters().setName(ContextParameterConstants.LOCKING_GROUP_NAME);
95 contextParameters.getPersistorParameters().setName(ContextParameterConstants.PERSISTENCE_GROUP_NAME);
97 ParameterService.register(contextParameters, true);
98 ParameterService.register(contextParameters.getDistributorParameters(), true);
99 ParameterService.register(contextParameters.getLockManagerParameters(), true);
100 ParameterService.register(contextParameters.getPersistorParameters(), true);
102 engineServiceParameters = new EngineServiceParameters();
103 engineServiceParameters.setName("EngDepMessagingTest");
104 engineServiceParameters.setVersion("0.0.1");
105 engineServiceParameters.setDeploymentPort(58820);
106 engineServiceParameters.setInstanceCount(3);
107 engineServiceParameters.setId(100);
108 engineServiceParameters.getEngineParameters().getExecutorParameterMap().put("JAVASCRIPT",
109 new JavascriptExecutorParameters());
111 ParameterService.register(engineServiceParameters, true);
112 ParameterService.register(engineServiceParameters.getEngineParameters(), true);
119 public void afterTest() {
120 ParameterService.deregister(engineServiceParameters);
121 ParameterService.deregister(engineServiceParameters.getEngineParameters());
123 ParameterService.deregister(contextParameters.getDistributorParameters());
124 ParameterService.deregister(contextParameters.getLockManagerParameters());
125 ParameterService.deregister(contextParameters.getPersistorParameters());
126 ParameterService.deregister(contextParameters);
128 ParameterService.deregister(schemaParameters);
132 * Test EngDep messaging.
134 * @throws URISyntaxException the URI syntax exception
135 * @throws IOException Signals that an I/O exception has occurred.
136 * @throws ApexException the apex exception
139 public void testEngDepMessaging() throws URISyntaxException, IOException, ApexException {
140 LOGGER.debug("engine<-->deployment messaging test starting . . .");
142 ModelService.clear();
144 final EngineTestServer server = new EngineTestServer(engineServiceParameters);
145 assertNotNull(server);
147 final Thread serverThread = new Thread(server);
148 serverThread.start();
149 final long starttime = System.currentTimeMillis();
150 while (server.isStarting() && System.currentTimeMillis() - starttime < MAX_START_WAIT) {
151 ThreadUtilities.sleep(100);
153 if (server.isStarting()) {
154 fail("Test server failed to start after " + MAX_START_WAIT + " ms");
157 final AxPolicyModel apexPolicyModel = new SampleDomainModelFactory().getSamplePolicyModel("JAVASCRIPT");
159 final BatchDeployer deployer1 = new BatchDeployer("localhost", 58820, System.out);
160 assertNotNull(deployer1);
163 deployer1.deployModel(apexPolicyModel, false, false);
167 final Date testStartTime = new Date();
168 final Map<String, Object> eventDataMap = new HashMap<>();
169 eventDataMap.put("TestSlogan", "This is a test slogan");
170 eventDataMap.put("TestMatchCase", (byte) 123);
171 eventDataMap.put("TestTimestamp", testStartTime.getTime());
172 eventDataMap.put("TestTemperature", 34.5445667);
174 final ApexEvent event0 =
175 new ApexEvent("Event0000", "0.0.1", "org.onap.policy.apex.domains.sample.events", "apex", "test");
176 event0.putAll(eventDataMap);
177 server.sendEvent(event0);
179 final ApexEvent event1 =
180 new ApexEvent("Event0100", "0.0.1", "org.onap.policy.apex.domains.sample.events", "apex", "test");
181 event1.putAll(eventDataMap);
182 server.sendEvent(event1);
185 while (server.getTotalActionEventsReceived() < 2) {
186 ThreadUtilities.sleep(100);
188 ThreadUtilities.sleep(500);
190 assertEquals(2, server.getTotalActionEventsReceived());
195 // Test re-initialization of model
196 final BatchDeployer deployer2 = new BatchDeployer("localhost", 58820, System.out);
197 assertNotNull(deployer2);
200 deployer2.deployModel(apexPolicyModel, true, true);
203 server.sendEvent(event0);
204 server.sendEvent(event1);
207 while (server.getTotalActionEventsReceived() < 4) {
208 ThreadUtilities.sleep(100);
210 ThreadUtilities.sleep(500);
212 assertEquals(4, server.getTotalActionEventsReceived());
218 LOGGER.debug("engine<-->deployment messaging test finished");
224 * @throws Exception the exception
227 public void tearDown() throws Exception {
228 ModelService.clear();