2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2016-2018 Ericsson. All rights reserved.
4 * Modifications Copyright (C) 2019-2020 Nordix Foundation.
5 * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
6 * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
20 * SPDX-License-Identifier: Apache-2.0
21 * ============LICENSE_END=========================================================
24 package org.onap.policy.apex.service.engine.parameters;
26 import static org.assertj.core.api.Assertions.assertThatThrownBy;
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertTrue;
30 import java.util.Arrays;
31 import org.junit.Test;
32 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
33 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters;
34 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters;
35 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
36 import org.onap.policy.apex.service.parameters.ApexParameters;
37 import org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters;
38 import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
39 import org.onap.policy.apex.service.parameters.eventprotocol.EventProtocolParameters;
40 import org.onap.policy.common.parameters.ParameterException;
43 * Test for an empty parameter file.
45 * @author Liam Fallon (liam.fallon@ericsson.com)
47 public class SyncParameterTests {
49 public void testSyncBadNoSyncWithPeer() throws ParameterException {
50 final String[] args = {"-p", "src/test/resources/parameters/syncBadParamsNoSyncWithPeer.json"};
51 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
53 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
54 .hasMessageContaining("src/test/resources/parameters/syncBadParamsNoSyncWithPeer.json")
55 .hasMessageContaining("ApexParameters")
56 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer0\" INVALID")
57 .hasMessageContaining("peer is illegal");
61 public void testSyncBadNotSyncWithPeer() throws ParameterException {
62 final String[] args = {"-p", "src/test/resources/parameters/syncBadParamsNotSyncWithPeer.json"};
63 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
65 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
66 .hasMessageContaining("src/test/resources/parameters/syncBadParamsNotSyncWithPeer.json")
67 .hasMessageContaining("ApexParameters")
68 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer0\" INVALID")
69 .hasMessageContaining("peer is illegal");
73 public void testSyncBadSyncBadPeers() throws ParameterException {
74 final String[] args = {"-p", "src/test/resources/parameters/syncBadParamsBadPeers.json"};
75 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
77 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
78 .hasMessageContaining("src/test/resources/parameters/syncBadParamsBadPeers.json")
79 .hasMessageContaining("ApexParameters")
80 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer0\" INVALID")
81 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer1\" INVALID")
82 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer0\" INVALID")
83 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer1\" INVALID")
84 .hasMessageContaining("does not exist or is not defined");
88 public void testSyncBadSyncInvalidTimeout() throws ParameterException {
89 final String[] args = {"-p", "src/test/resources/parameters/syncBadParamsInvalidTimeout.json"};
90 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
92 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
93 .hasMessageContaining("src/test/resources/parameters/syncBadParamsInvalidTimeout.json")
94 .hasMessageContaining("ApexParameters")
95 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer0\" INVALID")
96 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer1\" INVALID")
97 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer0\" INVALID")
98 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer1\" INVALID")
99 .hasMessageContaining("timeout value \"-10\" is illegal")
100 .hasMessageContaining("timeout value \"-3\" is illegal")
101 .hasMessageContaining("timeout value \"-1\" is illegal")
102 .hasMessageContaining("timeout value \"-99999999\" is illegal");
106 public void testSyncBadSyncBadTimeout() throws ParameterException {
107 final String[] args = {"-p", "src/test/resources/parameters/syncBadParamsBadTimeout.json"};
108 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
110 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
111 .hasMessageContaining("src/test/resources/parameters/syncBadParamsBadTimeout.json")
112 .hasMessageContaining("ApexParameters")
113 .hasMessageContaining("\"eventOutputParameters\" value \"MyOtherProducer\" INVALID, "
114 + "specified peered mode \"SYNCHRONOUS\" timeout is illegal");
118 public void testSyncBadSyncUnpairedTimeout() throws ParameterException {
119 final String[] args = {"-p", "src/test/resources/parameters/syncBadParamsUnpairedTimeout.json"};
120 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
122 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
123 .hasMessageContaining("src/test/resources/parameters/syncBadParamsUnpairedTimeout.json")
124 .hasMessageContaining("ApexParameters")
125 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer0\" INVALID, peer \"SyncConsumer0\"")
126 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer1\" INVALID, peer \"SyncConsumer1\"")
127 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer0\" INVALID, peer \"SyncProducer0\"")
128 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer1\" INVALID, peer \"SyncProducer1\"")
129 .hasMessageContaining("timeout 10 does not equal peer timeout 1")
130 .hasMessageContaining("timeout 3 does not equal peer timeout 99999999")
131 .hasMessageContaining("timeout 1 does not equal peer timeout 10")
132 .hasMessageContaining("timeout 99999999 does not equal peer timeout 3");
136 public void testSyncGoodSyncGoodTimeoutProducer() throws ParameterException {
137 verifySyncGoodSyncGoodTimeout("src/test/resources/parameters/syncGoodParamsProducerTimeout.json");
141 public void testSyncGoodSyncGoodTimeoutConsumer() throws ParameterException {
142 verifySyncGoodSyncGoodTimeout("src/test/resources/parameters/syncGoodParamsConsumerTimeout.json");
146 public void testSyncGoodSyncGoodTimeoutBoth() throws ParameterException {
147 verifySyncGoodSyncGoodTimeout("src/test/resources/parameters/syncGoodParamsBothTimeout.json");
150 private void verifySyncGoodSyncGoodTimeout(String fileName) throws ParameterException {
151 final String[] args = {"-p", fileName};
152 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
154 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
155 assertEquals(fileName, 12345, parameters.getEventInputParameters().get("SyncConsumer0")
156 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
157 assertEquals(fileName, 1, parameters.getEventInputParameters().get("SyncConsumer1")
158 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
159 assertEquals(fileName, 12345, parameters.getEventOutputParameters().get("SyncProducer0")
160 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
161 assertEquals(fileName, 1, parameters.getEventOutputParameters().get("SyncProducer1")
162 .getPeerTimeout(EventHandlerPeeredMode.SYNCHRONOUS));
166 public void testSyncUnusedConsumerPeers() throws ParameterException {
167 final String[] args = {"-p", "src/test/resources/parameters/syncUnusedConsumerPeers.json"};
168 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
170 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
171 .hasMessageContaining("src/test/resources/parameters/syncUnusedConsumerPeers.json")
172 .hasMessageContaining("ApexParameters")
173 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer1\" INVALID, peer \"SyncConsumer0\"")
174 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer1\" INVALID, peer \"SyncProducer1\"")
175 .hasMessageContaining("value \"SyncProducer0\" on peer does not equal event handler")
176 .hasMessageContaining("value \"SyncConsumer0\" on peer does not equal event handler");
180 public void testSyncMismatchedPeers() throws ParameterException {
181 final String[] args = {"-p", "src/test/resources/parameters/syncMismatchedPeers.json"};
182 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
184 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
185 .hasMessageContaining("src/test/resources/parameters/syncMismatchedPeers.json")
186 .hasMessageContaining("ApexParameters")
187 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer0\" INVALID, peer \"SyncConsumer1\"")
188 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer1\" INVALID, peer \"SyncConsumer0\"")
189 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer0\" INVALID, peer \"SyncProducer0\"")
190 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer1\" INVALID, peer \"SyncProducer1\"")
191 .hasMessageContaining("value \"SyncProducer1\" on peer does not equal event handler")
192 .hasMessageContaining("value \"SyncProducer0\" on peer does not equal event handler")
193 .hasMessageContaining("value \"SyncConsumer1\" on peer does not equal event handler")
194 .hasMessageContaining("value \"SyncConsumer0\" on peer does not equal event handler");
198 public void testSyncUnusedProducerPeers() throws ParameterException {
199 final String[] args = {"-p", "src/test/resources/parameters/syncUnusedProducerPeers.json"};
200 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
202 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
203 .hasMessageContaining("src/test/resources/parameters/syncUnusedProducerPeers.json")
204 .hasMessageContaining("ApexParameters")
205 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer0\" INVALID, peer \"SyncConsumer0\"")
206 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer0\" INVALID, peer \"SyncProducer1\"")
207 .hasMessageContaining("value \"SyncProducer1\" on peer does not equal event handler")
208 .hasMessageContaining("value \"SyncConsumer1\" on peer does not equal event handler");
212 public void testSyncMismatchedTimeout() throws ParameterException {
213 final String[] args = {"-p", "src/test/resources/parameters/syncMismatchedTimeout.json"};
214 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
216 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
217 .hasMessageContaining("src/test/resources/parameters/syncMismatchedTimeout.json")
218 .hasMessageContaining("ApexParameters")
219 .hasMessageContaining("\"eventOutputParameters\" value \"SyncProducer1\" INVALID, peer \"SyncConsumer1\"")
220 .hasMessageContaining("\"eventInputParameters\" value \"SyncConsumer1\" INVALID, peer \"SyncProducer1\"")
221 .hasMessageContaining("timeout 123 does not equal peer timeout 456")
222 .hasMessageContaining("timeout 456 does not equal peer timeout 123");
226 public void testSyncGoodParametersTest() throws ParameterException {
227 final String[] args = {"-p", "src/test/resources/parameters/syncGoodParams.json"};
228 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
230 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
232 assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
233 assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
234 assertEquals(45, parameters.getEngineServiceParameters().getId());
235 assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
236 assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
238 final CarrierTechnologyParameters prodCT0 =
239 parameters.getEventOutputParameters().get("SyncProducer0").getCarrierTechnologyParameters();
240 final EventProtocolParameters prodEP0 =
241 parameters.getEventOutputParameters().get("SyncProducer0").getEventProtocolParameters();
242 final CarrierTechnologyParameters consCT0 =
243 parameters.getEventInputParameters().get("SyncConsumer0").getCarrierTechnologyParameters();
244 final EventProtocolParameters consEP0 =
245 parameters.getEventInputParameters().get("SyncConsumer0").getEventProtocolParameters();
246 final CarrierTechnologyParameters prodCT1 =
247 parameters.getEventOutputParameters().get("SyncProducer1").getCarrierTechnologyParameters();
248 final EventProtocolParameters prodEP1 =
249 parameters.getEventOutputParameters().get("SyncProducer1").getEventProtocolParameters();
250 final CarrierTechnologyParameters consCT1 =
251 parameters.getEventInputParameters().get("SyncConsumer1").getCarrierTechnologyParameters();
252 final EventProtocolParameters consEP1 =
253 parameters.getEventInputParameters().get("SyncConsumer1").getEventProtocolParameters();
255 assertEquals("FILE", prodCT0.getLabel());
256 assertEquals("JSON", prodEP0.getLabel());
257 assertEquals("FILE", consCT0.getLabel());
258 assertEquals("JSON", consEP0.getLabel());
259 assertEquals("FILE", prodCT1.getLabel());
260 assertEquals("JSON", prodEP1.getLabel());
261 assertEquals("SUPER_DOOPER", consCT1.getLabel());
262 assertEquals("SUPER_TOK_DEL", consEP1.getLabel());
264 assertTrue(consCT1 instanceof SuperDooperCarrierTechnologyParameters);
265 assertTrue(consEP1 instanceof SuperTokenDelimitedEventProtocolParameters);
267 final SuperDooperCarrierTechnologyParameters superDooperParameters =
268 (SuperDooperCarrierTechnologyParameters) consCT1;
269 assertEquals("localhost:9092", superDooperParameters.getBootstrapServers());
270 assertEquals("all", superDooperParameters.getAcks());
271 assertEquals(0, superDooperParameters.getRetries());
272 assertEquals(16384, superDooperParameters.getBatchSize());
273 assertEquals(1, superDooperParameters.getLingerTime());
274 assertEquals(33554432, superDooperParameters.getBufferMemory());
275 assertEquals("default-group-id", superDooperParameters.getGroupId());
276 assertTrue(superDooperParameters.isEnableAutoCommit());
277 assertEquals(1000, superDooperParameters.getAutoCommitTime());
278 assertEquals(30000, superDooperParameters.getSessionTimeout());
279 assertEquals("apex-out", superDooperParameters.getProducerTopic());
280 assertEquals(100, superDooperParameters.getConsumerPollTime());
281 assertEquals("org.apache.superDooper.common.serialization.StringSerializer",
282 superDooperParameters.getKeySerializer());
283 assertEquals("org.apache.superDooper.common.serialization.StringSerializer",
284 superDooperParameters.getValueSerializer());
285 assertEquals("org.apache.superDooper.common.serialization.StringDeserializer",
286 superDooperParameters.getKeyDeserializer());
287 assertEquals("org.apache.superDooper.common.serialization.StringDeserializer",
288 superDooperParameters.getValueDeserializer());
290 final String[] consumerTopics = {"apex-in"};
291 assertEquals(Arrays.asList(consumerTopics), superDooperParameters.getConsumerTopicList());