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) {
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());
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) {
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\"",
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) {
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());
103 public void syncBadSyncInvalidTimeout() throws ApexParameterException {
104 final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsInvalidTimeout.json"};
105 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
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());
130 public void syncBadSyncBadTimeout() throws ApexParameterException {
131 final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsBadTimeout.json"};
132 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
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());
146 public void syncBadSyncUnpairedTimeout() throws ApexParameterException {
147 final String[] args = {"-c", "src/test/resources/parameters/syncBadParamsUnpairedTimeout.json"};
148 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
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());
165 public void syncGoodSyncGoodTimeoutProducer() throws ApexParameterException {
166 final String[] args = {"-c", "src/test/resources/parameters/syncGoodParamsProducerTimeout.json"};
167 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
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");
185 public void syncGoodSyncGoodTimeoutConsumer() throws ApexParameterException {
186 final String[] args = {"-c", "src/test/resources/parameters/syncGoodParamsConsumerTimeout.json"};
187 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
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");
205 public void syncGoodSyncGoodTimeoutBoth() throws ApexParameterException {
206 final String[] args = {"-c", "src/test/resources/parameters/syncGoodParamsBothTimeout.json"};
207 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
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");
225 public void syncUnusedConsumerPeers() throws ApexParameterException {
226 final String[] args = {"-c", "src/test/resources/parameters/syncUnusedConsumerPeers.json"};
227 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
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());
243 public void syncMismatchedPeers() throws ApexParameterException {
244 final String[] args = {"-c", "src/test/resources/parameters/syncMismatchedPeers.json"};
245 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
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());
261 public void syncUnusedProducerPeers() throws ApexParameterException {
262 final String[] args = {"-c", "src/test/resources/parameters/syncUnusedProducerPeers.json"};
263 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
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());
278 public void syncMismatchedTimeout() throws ApexParameterException {
279 final String[] args = {"-c", "src/test/resources/parameters/syncUnusedProducerPeers.json"};
280 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
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());
296 public void syncGoodParametersTest() {
297 final String[] args = {"-c", "src/test/resources/parameters/SyncGoodParams.json"};
298 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
301 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
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());
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();
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());
335 assertTrue(consCT1 instanceof SuperDooperCarrierTechnologyParameters);
336 assertTrue(consEP1 instanceof SuperTokenDelimitedEventProtocolParameters);
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());
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");