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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.apex.service.engine.parameters;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
25 import static org.junit.Assert.fail;
27 import java.util.Arrays;
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;
41 * Test for an empty parameter file
43 * @author Liam Fallon (liam.fallon@ericsson.com)
45 public class SyncParameterTests {
47 public void syncBadNoSyncWithPeer() throws ApexParameterException {
48 final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsNoSyncWithPeer.json"};
49 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
52 new ApexParameterHandler().getParameters(arguments);
53 fail("This test should throw an exception");
54 } catch (final ApexParameterException e) {
56 "validation error(s) on parameters from \"src/test/resources/parameters/syncBadParamsNoSyncWithPeer.json\"\n"
57 + "Apex parameters invalid\n"
58 + " parameter \\\"synchronousPeer\\\" is illegal on non synchronous event output \"SyncProducer0\"",
64 public void syncBadNotSyncWithPeer() throws ApexParameterException {
65 final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsNotSyncWithPeer.json"};
66 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
69 new ApexParameterHandler().getParameters(arguments);
70 fail("This test should throw an exception");
71 } catch (final ApexParameterException e) {
73 "validation error(s) on parameters from \"src/test/resources/parameters/syncBadParamsNotSyncWithPeer.json\"\n"
74 + "Apex parameters invalid\n"
75 + " parameter \\\"synchronousPeer\\\" is illegal on non synchronous event output \"SyncProducer0\"",
81 public void syncBadSyncBadPeers() throws ApexParameterException {
82 final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsBadPeers.json"};
83 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
86 new ApexParameterHandler().getParameters(arguments);
87 fail("This test should throw an exception");
88 } catch (final ApexParameterException e) {
90 "validation error(s) on parameters from \"src/test/resources/parameters/syncBadParamsBadPeers.json\"\n"
91 + "Apex parameters invalid\n"
92 + " specified \"synchronousPeer\" parameter value \"SyncConsumer1\" on event input \"SyncConsumer0\" does not exist or is an invalid peer for this event handler\n"
93 + " specified \"synchronousPeer\" parameter value \"SyncConsumer0\" on event input \"SyncConsumer1\" does not exist or is an invalid peer for this event handler\n"
94 + " specified \"synchronousPeer\" parameter value \"SyncProducer1\" on event output \"SyncProducer0\" does not exist or is an invalid peer for this event handler\n"
95 + " specified \"synchronousPeer\" parameter value \"SyncProducer0\" on event output \"SyncProducer1\" does not exist or is an invalid peer for this event handler",
101 public void syncBadSyncInvalidTimeout() throws ApexParameterException {
102 final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsInvalidTimeout.json"};
103 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
106 new ApexParameterHandler().getParameters(arguments);
107 fail("This test should throw an exception");
108 } catch (final ApexParameterException e) {
110 "validation error(s) on parameters from \"src/test/resources/parameters/syncBadParamsInvalidTimeout.json\"\n"
111 + "Apex parameters invalid\n"
112 + " parameter \\\"synchronousTimeout\\\" value \"-1\" is illegal on synchronous event input \"SyncConsumer0\", specify a non-negative timeout value in milliseconds\n"
113 + " parameter \\\"synchronousTimeout\\\" value \"-99999999\" is illegal on synchronous event input \"SyncConsumer1\", specify a non-negative timeout value in milliseconds\n"
114 + " parameter \\\"synchronousTimeout\\\" value \"-10\" is illegal on synchronous event output \"SyncProducer0\", specify a non-negative timeout value in milliseconds\n"
115 + " parameter \\\"synchronousTimeout\\\" value \"-3\" is illegal on synchronous event output \"SyncProducer1\", specify a non-negative timeout value in milliseconds\n"
116 + " synchronous timeout of event input \"SyncConsumer0\" and event output \"SyncProducer0\" [-1/-10] do not match\n"
117 + " synchronous timeout of event input \"SyncConsumer1\" and event output \"SyncProducer1\" [-99999999/-3] do not match",
123 public void syncBadSyncBadTimeout() throws ApexParameterException {
124 final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsBadTimeout.json"};
125 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
128 new ApexParameterHandler().getParameters(arguments);
129 fail("This test should throw an exception");
130 } catch (final ApexParameterException e) {
132 "validation error(s) on parameters from \"src/test/resources/parameters/syncBadParamsBadTimeout.json\"\n"
133 + "Apex parameters invalid\n"
134 + " parameter \\\"synchronousTimeout\\\" is illegal on non synchronous event output \"MyOtherProducer\"",
140 public void syncBadSyncUnpairedTimeout() throws ApexParameterException {
141 final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsUnpairedTimeout.json"};
142 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
145 new ApexParameterHandler().getParameters(arguments);
146 fail("This test should throw an exception");
147 } catch (final ApexParameterException e) {
149 "validation error(s) on parameters from \"src/test/resources/parameters/syncBadParamsUnpairedTimeout.json\"\n"
150 + "Apex parameters invalid\n"
151 + " synchronous timeout of event input \"SyncConsumer0\" and event output \"SyncProducer0\" [1/10] do not match\n"
152 + " synchronous timeout of event input \"SyncConsumer1\" and event output \"SyncProducer1\" [99999999/3] do not match",
158 public void syncGoodSyncGoodTimeoutProducer() throws ApexParameterException {
159 final String[] args = {"-c", "src/test/resources/parameters/syncGoodParamsProducerTimeout.json"};
160 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
163 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
164 assertEquals(12345, parameters.getEventInputParameters().get("SyncConsumer0")
165 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
166 assertEquals(1, parameters.getEventInputParameters().get("SyncConsumer1")
167 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
168 assertEquals(12345, parameters.getEventOutputParameters().get("SyncProducer0")
169 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
170 assertEquals(1, parameters.getEventOutputParameters().get("SyncProducer1")
171 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
172 } catch (final Exception e) {
173 fail("This test should not throw an exception");
178 public void syncGoodSyncGoodTimeoutConsumer() throws ApexParameterException {
179 final String[] args = {"-c", "src/test/resources/parameters/syncGoodParamsConsumerTimeout.json"};
180 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
183 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
184 assertEquals(12345, parameters.getEventInputParameters().get("SyncConsumer0")
185 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
186 assertEquals(1, parameters.getEventInputParameters().get("SyncConsumer1")
187 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
188 assertEquals(12345, parameters.getEventOutputParameters().get("SyncProducer0")
189 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
190 assertEquals(1, parameters.getEventOutputParameters().get("SyncProducer1")
191 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
192 } catch (final Exception e) {
193 fail("This test should not throw an exception");
198 public void syncGoodSyncGoodTimeoutBoth() throws ApexParameterException {
199 final String[] args = {"-c", "src/test/resources/parameters/syncGoodParamsBothTimeout.json"};
200 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
203 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
204 assertEquals(12345, parameters.getEventInputParameters().get("SyncConsumer0")
205 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
206 assertEquals(1, parameters.getEventInputParameters().get("SyncConsumer1")
207 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
208 assertEquals(12345, parameters.getEventOutputParameters().get("SyncProducer0")
209 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
210 assertEquals(1, parameters.getEventOutputParameters().get("SyncProducer1")
211 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
212 } catch (final Exception e) {
213 fail("This test should not throw an exception");
218 public void syncUnusedConsumerPeers() throws ApexParameterException {
219 final String[] args = {"-c", "src/test/resources/parameters/syncUnusedConsumerPeers.json"};
220 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
223 new ApexParameterHandler().getParameters(arguments);
224 fail("This test should throw an exception");
225 } catch (final ApexParameterException e) {
227 "validation error(s) on parameters from \"src/test/resources/parameters/syncUnusedConsumerPeers.json\"\n"
228 + "Apex parameters invalid\n"
229 + " value of parameter \"synchronousPeer\" on event output \"SyncProducer1\" must be unique, it s used on another event output\n"
231 + " synchronous peers of event input \"SyncConsumer1\" and event output \"SyncProducer1/SyncConsumer0\" do not match",
237 public void syncMismatchedPeers() throws ApexParameterException {
238 final String[] args = {"-c", "src/test/resources/parameters/syncMismatchedPeers.json"};
239 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
242 new ApexParameterHandler().getParameters(arguments);
243 fail("This test should throw an exception");
244 } catch (final ApexParameterException e) {
246 "validation error(s) on parameters from \"src/test/resources/parameters/syncMismatchedPeers.json\"\n"
247 + "Apex parameters invalid\n"
248 + " synchronous peers of event input \"SyncConsumer0\" and event output \"SyncProducer0/SyncConsumer1\" do not match\n"
249 + " synchronous peers of event input \"SyncConsumer1\" and event output \"SyncProducer1/SyncConsumer0\" do not match",
255 public void syncUnusedProducerPeers() throws ApexParameterException {
256 final String[] args = {"-c", "src/test/resources/parameters/syncUnusedProducerPeers.json"};
257 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
260 new ApexParameterHandler().getParameters(arguments);
261 fail("This test should throw an exception");
262 } catch (final ApexParameterException e) {
264 "validation error(s) on parameters from \"src/test/resources/parameters/syncUnusedProducerPeers.json\"\n"
265 + "Apex parameters invalid\n"
266 + " value of parameter \"synchronousPeer\" on event input \"SyncConsumer1\" must be unique, it s used on another event input\n"
267 + " synchronous peers of event input \"SyncConsumer0\" and event output \"SyncProducer1/SyncConsumer1\" do not match",
273 public void syncMismatchedTimeout() throws ApexParameterException {
274 final String[] args = {"-c", "src/test/resources/parameters/syncUnusedProducerPeers.json"};
275 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
278 new ApexParameterHandler().getParameters(arguments);
279 fail("This test should throw an exception");
280 } catch (final ApexParameterException e) {
282 "validation error(s) on parameters from \"src/test/resources/parameters/syncUnusedProducerPeers.json\"\n"
283 + "Apex parameters invalid\n"
284 + " value of parameter \"synchronousPeer\" on event input \"SyncConsumer1\" must be unique, it s used on another event input\n"
285 + " synchronous peers of event input \"SyncConsumer0\" and event output \"SyncProducer1/SyncConsumer1\" do not match",
291 public void syncGoodParametersTest() {
292 final String[] args = {"-c", "src/test/resources/parameters/SyncGoodParams.json"};
293 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
296 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
298 assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
299 assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
300 assertEquals(45, parameters.getEngineServiceParameters().getId());
301 assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
302 assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
304 final CarrierTechnologyParameters prodCT0 =
305 parameters.getEventOutputParameters().get("SyncProducer0").getCarrierTechnologyParameters();
306 final EventProtocolParameters prodEP0 =
307 parameters.getEventOutputParameters().get("SyncProducer0").getEventProtocolParameters();
308 final CarrierTechnologyParameters consCT0 =
309 parameters.getEventInputParameters().get("SyncConsumer0").getCarrierTechnologyParameters();
310 final EventProtocolParameters consEP0 =
311 parameters.getEventInputParameters().get("SyncConsumer0").getEventProtocolParameters();
312 final CarrierTechnologyParameters prodCT1 =
313 parameters.getEventOutputParameters().get("SyncProducer1").getCarrierTechnologyParameters();
314 final EventProtocolParameters prodEP1 =
315 parameters.getEventOutputParameters().get("SyncProducer1").getEventProtocolParameters();
316 final CarrierTechnologyParameters consCT1 =
317 parameters.getEventInputParameters().get("SyncConsumer1").getCarrierTechnologyParameters();
318 final EventProtocolParameters consEP1 =
319 parameters.getEventInputParameters().get("SyncConsumer1").getEventProtocolParameters();
321 assertEquals("FILE", prodCT0.getLabel());
322 assertEquals("JSON", prodEP0.getLabel());
323 assertEquals("FILE", consCT0.getLabel());
324 assertEquals("JSON", consEP0.getLabel());
325 assertEquals("FILE", prodCT1.getLabel());
326 assertEquals("JSON", prodEP1.getLabel());
327 assertEquals("SUPER_DOOPER", consCT1.getLabel());
328 assertEquals("SUPER_TOK_DEL", consEP1.getLabel());
330 assertTrue(consCT1 instanceof SuperDooperCarrierTechnologyParameters);
331 assertTrue(consEP1 instanceof SuperTokenDelimitedEventProtocolParameters);
333 final SuperDooperCarrierTechnologyParameters superDooperParameters =
334 (SuperDooperCarrierTechnologyParameters) consCT1;
335 assertEquals("localhost:9092", superDooperParameters.getBootstrapServers());
336 assertEquals("all", superDooperParameters.getAcks());
337 assertEquals(0, superDooperParameters.getRetries());
338 assertEquals(16384, superDooperParameters.getBatchSize());
339 assertEquals(1, superDooperParameters.getLingerTime());
340 assertEquals(33554432, superDooperParameters.getBufferMemory());
341 assertEquals("default-group-id", superDooperParameters.getGroupId());
342 assertTrue(superDooperParameters.isEnableAutoCommit());
343 assertEquals(1000, superDooperParameters.getAutoCommitTime());
344 assertEquals(30000, superDooperParameters.getSessionTimeout());
345 assertEquals("apex-out", superDooperParameters.getProducerTopic());
346 assertEquals(100, superDooperParameters.getConsumerPollTime());
347 assertEquals("org.apache.superDooper.common.serialization.StringSerializer",
348 superDooperParameters.getKeySerializer());
349 assertEquals("org.apache.superDooper.common.serialization.StringSerializer",
350 superDooperParameters.getValueSerializer());
351 assertEquals("org.apache.superDooper.common.serialization.StringDeserializer",
352 superDooperParameters.getKeyDeserializer());
353 assertEquals("org.apache.superDooper.common.serialization.StringDeserializer",
354 superDooperParameters.getValueDeserializer());
356 final String[] consumerTopics = {"apex-in"};
357 assertEquals(Arrays.asList(consumerTopics), superDooperParameters.getConsumerTopicList());
358 } catch (final ApexParameterException e) {
359 fail("This test should not throw an exception");