Checkstyle the services-engine package
[policy/apex-pdp.git] / services / services-engine / src / test / java / org / onap / policy / apex / service / engine / parameters / SyncParameterTests.java
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.service.engine.parameters;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
25 import static org.junit.Assert.fail;
26
27 import java.util.Arrays;
28
29 import org.junit.Test;
30 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
31 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters;
32 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters;
33 import org.onap.policy.apex.service.parameters.ApexParameterException;
34 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
35 import org.onap.policy.apex.service.parameters.ApexParameters;
36 import org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters;
37 import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
38 import org.onap.policy.apex.service.parameters.eventprotocol.EventProtocolParameters;
39
40 /**
41  * Test for an empty parameter file.
42  * 
43  * @author Liam Fallon (liam.fallon@ericsson.com)
44  */
45 public class SyncParameterTests {
46     @Test
47     public void syncBadNoSyncWithPeer() throws ApexParameterException {
48         final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsNoSyncWithPeer.json"};
49         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
50
51         try {
52             new ApexParameterHandler().getParameters(arguments);
53             fail("This test should throw an exception");
54         } catch (final ApexParameterException e) {
55             assertEquals("validation error(s) on parameters from "
56                     + "\"src/test/resources/parameters/syncBadParamsNoSyncWithPeer.json\"\n"
57                     + "Apex parameters invalid\n"
58                     + " parameter \\\"synchronousPeer\\\" is illegal on non synchronous event output "
59                     + "\"SyncProducer0\"", e.getMessage());
60         }
61     }
62
63     @Test
64     public void syncBadNotSyncWithPeer() throws ApexParameterException {
65         final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsNotSyncWithPeer.json"};
66         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
67
68         try {
69             new ApexParameterHandler().getParameters(arguments);
70             fail("This test should throw an exception");
71         } catch (final ApexParameterException e) {
72             assertEquals("validation error(s) on parameters from "
73                     + "\"src/test/resources/parameters/syncBadParamsNotSyncWithPeer.json\"\n"
74                     + "Apex parameters invalid\n"
75                     + " parameter \\\"synchronousPeer\\\" is illegal on non synchronous event output \"SyncProducer0\"",
76                     e.getMessage());
77         }
78     }
79
80     @Test
81     public void syncBadSyncBadPeers() throws ApexParameterException {
82         final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsBadPeers.json"};
83         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
84
85         try {
86             new ApexParameterHandler().getParameters(arguments);
87             fail("This test should throw an exception");
88         } catch (final ApexParameterException e) {
89             assertEquals("validation error(s) on parameters from "
90                     + "\"src/test/resources/parameters/syncBadParamsBadPeers.json\"" + "\nApex parameters invalid\n"
91                     + " specified \"synchronousPeer\" parameter value \"SyncConsumer1\" on event input "
92                     + "\"SyncConsumer0\" does not exist or is an invalid peer for this event handler\n"
93                     + " specified \"synchronousPeer\" parameter value \"SyncConsumer0\" on event input "
94                     + "\"SyncConsumer1\" does not exist or is an invalid peer for this event handler\n"
95                     + " specified \"synchronousPeer\" parameter value \"SyncProducer1\" on event output "
96                     + "\"SyncProducer0\" does not exist or is an invalid peer for this event handler\n"
97                     + " specified \"synchronousPeer\" parameter value \"SyncProducer0\" on event output "
98                     + "\"SyncProducer1\" does not exist or is an invalid peer for this event handler", e.getMessage());
99         }
100     }
101
102     @Test
103     public void syncBadSyncInvalidTimeout() throws ApexParameterException {
104         final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsInvalidTimeout.json"};
105         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
106
107         try {
108             new ApexParameterHandler().getParameters(arguments);
109             fail("This test should throw an exception");
110         } catch (final ApexParameterException e) {
111             assertEquals("validation error(s) on parameters from "
112                     + "\"src/test/resources/parameters/syncBadParamsInvalidTimeout.json\"\n"
113                     + "Apex parameters invalid\n"
114                     + " parameter \\\"synchronousTimeout\\\" value \"-1\" is illegal on synchronous event input "
115                     + "\"SyncConsumer0\", specify a non-negative timeout value in milliseconds\n"
116                     + " parameter \\\"synchronousTimeout\\\" value \"-99999999\" is illegal on synchronous event input "
117                     + "\"SyncConsumer1\", specify a non-negative timeout value in milliseconds\n"
118                     + " parameter \\\"synchronousTimeout\\\" value \"-10\" is illegal on synchronous event output "
119                     + "\"SyncProducer0\", specify a non-negative timeout value in milliseconds\n"
120                     + " parameter \\\"synchronousTimeout\\\" value \"-3\" is illegal on synchronous event output "
121                     + "\"SyncProducer1\", specify a non-negative timeout value in milliseconds\n"
122                     + " synchronous timeout of event input \"SyncConsumer0\" and event output \"SyncProducer0\" "
123                     + "[-1/-10] do not match\n"
124                     + " synchronous timeout of event input \"SyncConsumer1\" and event output "
125                     + "\"SyncProducer1\" [-99999999/-3] do not match", e.getMessage());
126         }
127     }
128
129     @Test
130     public void syncBadSyncBadTimeout() throws ApexParameterException {
131         final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsBadTimeout.json"};
132         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
133
134         try {
135             new ApexParameterHandler().getParameters(arguments);
136             fail("This test should throw an exception");
137         } catch (final ApexParameterException e) {
138             assertEquals("validation error(s) on parameters from "
139                     + "\"src/test/resources/parameters/syncBadParamsBadTimeout.json\"\n" + "Apex parameters invalid\n"
140                     + " parameter \\\"synchronousTimeout\\\" is illegal on non synchronous event output "
141                     + "\"MyOtherProducer\"", e.getMessage());
142         }
143     }
144
145     @Test
146     public void syncBadSyncUnpairedTimeout() throws ApexParameterException {
147         final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsUnpairedTimeout.json"};
148         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
149
150         try {
151             new ApexParameterHandler().getParameters(arguments);
152             fail("This test should throw an exception");
153         } catch (final ApexParameterException e) {
154             assertEquals("validation error(s) on parameters from "
155                     + "\"src/test/resources/parameters/syncBadParamsUnpairedTimeout.json\"\n"
156                     + "Apex parameters invalid\n"
157                     + " synchronous timeout of event input \"SyncConsumer0\" and event output "
158                     + "\"SyncProducer0\" [1/10] do not match\n"
159                     + " synchronous timeout of event input \"SyncConsumer1\" and event output "
160                     + "\"SyncProducer1\" [99999999/3] do not match", e.getMessage());
161         }
162     }
163
164     @Test
165     public void syncGoodSyncGoodTimeoutProducer() throws ApexParameterException {
166         final String[] args = {"-c", "src/test/resources/parameters/syncGoodParamsProducerTimeout.json"};
167         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
168
169         try {
170             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
171             assertEquals(12345, parameters.getEventInputParameters().get("SyncConsumer0")
172                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
173             assertEquals(1, parameters.getEventInputParameters().get("SyncConsumer1")
174                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
175             assertEquals(12345, parameters.getEventOutputParameters().get("SyncProducer0")
176                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
177             assertEquals(1, parameters.getEventOutputParameters().get("SyncProducer1")
178                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
179         } catch (final Exception e) {
180             fail("This test should not throw an exception");
181         }
182     }
183
184     @Test
185     public void syncGoodSyncGoodTimeoutConsumer() throws ApexParameterException {
186         final String[] args = {"-c", "src/test/resources/parameters/syncGoodParamsConsumerTimeout.json"};
187         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
188
189         try {
190             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
191             assertEquals(12345, parameters.getEventInputParameters().get("SyncConsumer0")
192                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
193             assertEquals(1, parameters.getEventInputParameters().get("SyncConsumer1")
194                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
195             assertEquals(12345, parameters.getEventOutputParameters().get("SyncProducer0")
196                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
197             assertEquals(1, parameters.getEventOutputParameters().get("SyncProducer1")
198                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
199         } catch (final Exception e) {
200             fail("This test should not throw an exception");
201         }
202     }
203
204     @Test
205     public void syncGoodSyncGoodTimeoutBoth() throws ApexParameterException {
206         final String[] args = {"-c", "src/test/resources/parameters/syncGoodParamsBothTimeout.json"};
207         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
208
209         try {
210             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
211             assertEquals(12345, parameters.getEventInputParameters().get("SyncConsumer0")
212                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
213             assertEquals(1, parameters.getEventInputParameters().get("SyncConsumer1")
214                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
215             assertEquals(12345, parameters.getEventOutputParameters().get("SyncProducer0")
216                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
217             assertEquals(1, parameters.getEventOutputParameters().get("SyncProducer1")
218                     .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
219         } catch (final Exception e) {
220             fail("This test should not throw an exception");
221         }
222     }
223
224     @Test
225     public void syncUnusedConsumerPeers() throws ApexParameterException {
226         final String[] args = {"-c", "src/test/resources/parameters/syncUnusedConsumerPeers.json"};
227         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
228
229         try {
230             new ApexParameterHandler().getParameters(arguments);
231             fail("This test should throw an exception");
232         } catch (final ApexParameterException e) {
233             assertEquals("validation error(s) on parameters from "
234                     + "\"src/test/resources/parameters/syncUnusedConsumerPeers.json\"\n" + "Apex parameters invalid\n"
235                     + " value of parameter \"synchronousPeer\" on event output \"SyncProducer1\" must be unique, "
236                     + "it s used on another event output\n"
237                     + " synchronous peers of event input \"SyncConsumer1\" and event output "
238                     + "\"SyncProducer1/SyncConsumer0\" do not match", e.getMessage());
239         }
240     }
241
242     @Test
243     public void syncMismatchedPeers() throws ApexParameterException {
244         final String[] args = {"-c", "src/test/resources/parameters/syncMismatchedPeers.json"};
245         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
246
247         try {
248             new ApexParameterHandler().getParameters(arguments);
249             fail("This test should throw an exception");
250         } catch (final ApexParameterException e) {
251             assertEquals("validation error(s) on parameters from "
252                     + "\"src/test/resources/parameters/syncMismatchedPeers.json\"\nApex parameters invalid\n"
253                     + " synchronous peers of event input \"SyncConsumer0\" and event output "
254                     + "\"SyncProducer0/SyncConsumer1\" do not match\n"
255                     + " synchronous peers of event input \"SyncConsumer1\" and event output "
256                     + "\"SyncProducer1/SyncConsumer0\" do not match", e.getMessage());
257         }
258     }
259
260     @Test
261     public void syncUnusedProducerPeers() throws ApexParameterException {
262         final String[] args = {"-c", "src/test/resources/parameters/syncUnusedProducerPeers.json"};
263         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
264
265         try {
266             new ApexParameterHandler().getParameters(arguments);
267             fail("This test should throw an exception");
268         } catch (final ApexParameterException e) {
269             assertEquals("validation error(s) on parameters from "
270                     + "\"src/test/resources/parameters/syncUnusedProducerPeers.json\"\nApex parameters invalid\n"
271                     + " value of parameter \"synchronousPeer\" on event input \"SyncConsumer1\" must be unique, "
272                     + "it is used on another event input\nsynchronous peers of event input \"SyncConsumer0\" and event"
273                     + " output \"SyncProducer1/SyncConsumer1\" do not match", e.getMessage());
274         }
275     }
276
277     @Test
278     public void syncMismatchedTimeout() throws ApexParameterException {
279         final String[] args = {"-c", "src/test/resources/parameters/syncUnusedProducerPeers.json"};
280         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
281
282         try {
283             new ApexParameterHandler().getParameters(arguments);
284             fail("This test should throw an exception");
285         } catch (final ApexParameterException e) {
286             assertEquals("validation error(s) on parameters from "
287                     + "\"src/test/resources/parameters/syncUnusedProducerPeers.json\"\n" + "Apex parameters invalid\n"
288                     + " value of parameter \"synchronousPeer\" on event input \"SyncConsumer1\" "
289                     + "must be unique, it s used on another event input\n"
290                     + " synchronous peers of event input \"SyncConsumer0\" and event output "
291                     + "\"SyncProducer1/SyncConsumer1\" do not match", e.getMessage());
292         }
293     }
294
295     @Test
296     public void syncGoodParametersTest() {
297         final String[] args = {"-c", "src/test/resources/parameters/SyncGoodParams.json"};
298         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
299
300         try {
301             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
302
303             assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
304             assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
305             assertEquals(45, parameters.getEngineServiceParameters().getId());
306             assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
307             assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
308
309             final CarrierTechnologyParameters prodCT0 =
310                     parameters.getEventOutputParameters().get("SyncProducer0").getCarrierTechnologyParameters();
311             final EventProtocolParameters prodEP0 =
312                     parameters.getEventOutputParameters().get("SyncProducer0").getEventProtocolParameters();
313             final CarrierTechnologyParameters consCT0 =
314                     parameters.getEventInputParameters().get("SyncConsumer0").getCarrierTechnologyParameters();
315             final EventProtocolParameters consEP0 =
316                     parameters.getEventInputParameters().get("SyncConsumer0").getEventProtocolParameters();
317             final CarrierTechnologyParameters prodCT1 =
318                     parameters.getEventOutputParameters().get("SyncProducer1").getCarrierTechnologyParameters();
319             final EventProtocolParameters prodEP1 =
320                     parameters.getEventOutputParameters().get("SyncProducer1").getEventProtocolParameters();
321             final CarrierTechnologyParameters consCT1 =
322                     parameters.getEventInputParameters().get("SyncConsumer1").getCarrierTechnologyParameters();
323             final EventProtocolParameters consEP1 =
324                     parameters.getEventInputParameters().get("SyncConsumer1").getEventProtocolParameters();
325
326             assertEquals("FILE", prodCT0.getLabel());
327             assertEquals("JSON", prodEP0.getLabel());
328             assertEquals("FILE", consCT0.getLabel());
329             assertEquals("JSON", consEP0.getLabel());
330             assertEquals("FILE", prodCT1.getLabel());
331             assertEquals("JSON", prodEP1.getLabel());
332             assertEquals("SUPER_DOOPER", consCT1.getLabel());
333             assertEquals("SUPER_TOK_DEL", consEP1.getLabel());
334
335             assertTrue(consCT1 instanceof SuperDooperCarrierTechnologyParameters);
336             assertTrue(consEP1 instanceof SuperTokenDelimitedEventProtocolParameters);
337
338             final SuperDooperCarrierTechnologyParameters superDooperParameters =
339                     (SuperDooperCarrierTechnologyParameters) consCT1;
340             assertEquals("localhost:9092", superDooperParameters.getBootstrapServers());
341             assertEquals("all", superDooperParameters.getAcks());
342             assertEquals(0, superDooperParameters.getRetries());
343             assertEquals(16384, superDooperParameters.getBatchSize());
344             assertEquals(1, superDooperParameters.getLingerTime());
345             assertEquals(33554432, superDooperParameters.getBufferMemory());
346             assertEquals("default-group-id", superDooperParameters.getGroupId());
347             assertTrue(superDooperParameters.isEnableAutoCommit());
348             assertEquals(1000, superDooperParameters.getAutoCommitTime());
349             assertEquals(30000, superDooperParameters.getSessionTimeout());
350             assertEquals("apex-out", superDooperParameters.getProducerTopic());
351             assertEquals(100, superDooperParameters.getConsumerPollTime());
352             assertEquals("org.apache.superDooper.common.serialization.StringSerializer",
353                     superDooperParameters.getKeySerializer());
354             assertEquals("org.apache.superDooper.common.serialization.StringSerializer",
355                     superDooperParameters.getValueSerializer());
356             assertEquals("org.apache.superDooper.common.serialization.StringDeserializer",
357                     superDooperParameters.getKeyDeserializer());
358             assertEquals("org.apache.superDooper.common.serialization.StringDeserializer",
359                     superDooperParameters.getValueDeserializer());
360
361             final String[] consumerTopics = {"apex-in"};
362             assertEquals(Arrays.asList(consumerTopics), superDooperParameters.getConsumerTopicList());
363         } catch (final ApexParameterException e) {
364             fail("This test should not throw an exception");
365         }
366     }
367 }