Changes for checkstyle 8.32
[policy/apex-pdp.git] / testsuites / integration / integration-uservice-test / src / test / java / org / onap / policy / apex / testsuites / integration / uservice / engdep / EngDepMessagingTest.java
1 /*-
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
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.uservice.engdep;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.fail;
27
28 import java.io.IOException;
29 import java.net.URISyntaxException;
30 import java.util.Date;
31 import java.util.HashMap;
32 import java.util.Map;
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;
52
53 // CHECKSTYLE:OFF: checkstyle:magicNumber
54
55 /**
56  * The Class EngDepMessagingTest.
57  *
58  * @author Liam Fallon (liam.fallon@ericsson.com)
59  */
60 public class EngDepMessagingTest {
61     // Logger for this class
62     private static final XLogger LOGGER = XLoggerFactory.getXLogger(EngDepMessagingTest.class);
63
64     private static final long MAX_START_WAIT = 10000; // 10 sec
65
66     private SchemaParameters schemaParameters;
67     private ContextParameters contextParameters;
68     private EngineServiceParameters engineServiceParameters;
69
70     /**
71      * Clear relative file root environment variable.
72      */
73     @Before
74     public void clearRelativeFileRoot() {
75         System.clearProperty("APEX_RELATIVE_FILE_ROOT");
76     }
77
78     /**
79      * Before test.
80      */
81     @Before
82     public void beforeTest() {
83         schemaParameters = new SchemaParameters();
84
85         schemaParameters.setName(ContextParameterConstants.SCHEMA_GROUP_NAME);
86         schemaParameters.getSchemaHelperParameterMap().put("JAVA", new JavaSchemaHelperParameters());
87
88         ParameterService.register(schemaParameters, true);
89
90         contextParameters = new ContextParameters();
91
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);
96
97         ParameterService.register(contextParameters, true);
98         ParameterService.register(contextParameters.getDistributorParameters(), true);
99         ParameterService.register(contextParameters.getLockManagerParameters(), true);
100         ParameterService.register(contextParameters.getPersistorParameters(), true);
101
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());
110
111         ParameterService.register(engineServiceParameters, true);
112         ParameterService.register(engineServiceParameters.getEngineParameters(), true);
113     }
114
115     /**
116      * After test.
117      */
118     @After
119     public void afterTest() {
120         ParameterService.deregister(engineServiceParameters);
121         ParameterService.deregister(engineServiceParameters.getEngineParameters());
122
123         ParameterService.deregister(contextParameters.getDistributorParameters());
124         ParameterService.deregister(contextParameters.getLockManagerParameters());
125         ParameterService.deregister(contextParameters.getPersistorParameters());
126         ParameterService.deregister(contextParameters);
127
128         ParameterService.deregister(schemaParameters);
129     }
130
131     /**
132      * Test EngDep messaging.
133      *
134      * @throws URISyntaxException the URI syntax exception
135      * @throws IOException Signals that an I/O exception has occurred.
136      * @throws ApexException the apex exception
137      */
138     @Test
139     public void testEngDepMessaging() throws URISyntaxException, IOException, ApexException {
140         LOGGER.debug("engine<-->deployment messaging test starting . .  .");
141
142         ModelService.clear();
143
144         final EngineTestServer server = new EngineTestServer(engineServiceParameters);
145         assertNotNull(server);
146
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);
152         }
153         if (server.isStarting()) {
154             fail("Test server failed to start after " + MAX_START_WAIT + " ms");
155         }
156
157         final AxPolicyModel apexPolicyModel = new SampleDomainModelFactory().getSamplePolicyModel("JAVASCRIPT");
158
159         final BatchDeployer deployer1 = new BatchDeployer("localhost", 58820, System.out);
160         assertNotNull(deployer1);
161
162         deployer1.init();
163         deployer1.deployModel(apexPolicyModel, false, false);
164         deployer1.close();
165
166         // Send events
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);
173
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);
178
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);
183
184         // Wait for results
185         while (server.getTotalActionEventsReceived() < 2) {
186             ThreadUtilities.sleep(100);
187         }
188         ThreadUtilities.sleep(500);
189
190         assertEquals(2, server.getTotalActionEventsReceived());
191
192         deployer1.init();
193         deployer1.close();
194
195         // Test re-initialization of model
196         final BatchDeployer deployer2 = new BatchDeployer("localhost", 58820, System.out);
197         assertNotNull(deployer2);
198
199         deployer2.init();
200         deployer2.deployModel(apexPolicyModel, true, true);
201         deployer2.close();
202
203         server.sendEvent(event0);
204         server.sendEvent(event1);
205
206         // Wait for results
207         while (server.getTotalActionEventsReceived() < 4) {
208             ThreadUtilities.sleep(100);
209         }
210         ThreadUtilities.sleep(500);
211
212         assertEquals(4, server.getTotalActionEventsReceived());
213
214         deployer2.init();
215         deployer2.close();
216
217         server.stopServer();
218         LOGGER.debug("engine<-->deployment messaging test finished");
219     }
220
221     /**
222      * Tear down.
223      *
224      * @throws Exception the exception
225      */
226     @After
227     public void tearDown() throws Exception {
228         ModelService.clear();
229     }
230 }