2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2016-2018 Ericsson. All rights reserved.
4 * Modifications Copyright (C) 2019-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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.apex.service.engine.parameters;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertTrue;
27 import static org.junit.Assert.fail;
29 import java.util.Arrays;
31 import org.junit.Test;
32 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.ApexFileEventConsumer;
33 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.producer.ApexFileEventProducer;
34 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
35 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters;
36 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperEventProducer;
37 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperEventSubscriber;
38 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
39 import org.onap.policy.apex.service.parameters.ApexParameters;
40 import org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters;
41 import org.onap.policy.apex.service.parameters.eventprotocol.EventProtocolParameters;
42 import org.onap.policy.common.parameters.ParameterException;
45 * Test for an empty parameter file.
47 * @author Liam Fallon (liam.fallon@ericsson.com)
49 public class ParameterTests {
51 public void testInvalidParametersNoFileTest() throws ParameterException {
52 final String[] args = {"-c", "src/test/resources/parameters/invalidNoFile.json"};
53 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
56 new ApexParameterHandler().getParameters(arguments);
57 fail("This test should throw an exception");
58 } catch (final ParameterException e) {
59 assertTrue(e.getMessage().startsWith("error reading parameters from \"src"));
60 assertTrue(e.getMessage().contains("FileNotFoundException"));
65 public void testInvalidParametersEmptyTest() {
66 final String[] args = {"-c", "src/test/resources/parameters/empty.json"};
67 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
70 new ApexParameterHandler().getParameters(arguments);
71 fail("This test should throw an exception");
72 } catch (final ParameterException e) {
73 assertTrue(e.getMessage()
74 .startsWith("validation error(s) on parameters from \"src/test/resources/parameters/empty.json\""));
79 public void testInvalidParametersNoParamsTest() {
80 final String[] args = {"-c", "src/test/resources/parameters/noParams.json"};
81 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
84 new ApexParameterHandler().getParameters(arguments);
85 fail("This test should throw an exception");
86 } catch (final ParameterException e) {
87 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/noParams.json\"\n"
88 + "parameter group \"APEX_PARAMETERS\" type "
89 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
90 + "parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
91 + "engine service parameters are not specified\n"
92 + " parameter group map \"eventOutputParameters\" INVALID, "
93 + "at least one event output must be specified\n"
94 + " parameter group map \"eventInputParameters\" INVALID, "
95 + "at least one event input must be specified\n", e.getMessage());
100 public void testInvalidParametersBlankParamsTest() {
101 final String[] args = {"-c", "src/test/resources/parameters/blankParams.json"};
102 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
105 new ApexParameterHandler().getParameters(arguments);
106 fail("This test should throw an exception");
107 } catch (final ParameterException e) {
109 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/blankParams.json\"\n"
110 + "parameter group \"APEX_PARAMETERS\" type "
111 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
112 + "parameter group has status INVALID\n" + " parameter group \"ENGINE_SERVICE_PARAMETERS\" type "
113 + "\"org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters\" "
114 + "INVALID, parameter group has status INVALID\n"
115 + " field \"id\" type \"int\" value \"-1\" INVALID, "
116 + "id not specified or specified value [-1] invalid, must be specified as id >= 0\n"
117 + " parameter group map \"eventOutputParameters\" INVALID, "
118 + "at least one event output must be specified\n"
119 + " parameter group map \"eventInputParameters\" INVALID, "
120 + "at least one event input must be specified\n", e.getMessage());
125 public void testInvalidParametersTest() {
126 final String[] args = {"-c", "src/test/resources/parameters/badParams.json"};
127 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
130 new ApexParameterHandler().getParameters(arguments);
131 fail("This test should throw an exception");
132 } catch (final ParameterException e) {
133 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/badParams.json\"\n"
134 + "parameter group \"APEX_PARAMETERS\" type "
135 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
136 + "parameter group has status INVALID\n" + " parameter group \"hello there\" type "
137 + "\"org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters\" "
138 + "INVALID, parameter group has status INVALID\n"
139 + " field \"name\" type \"java.lang.String\" value \"hello there\" INVALID, "
140 + "name is invalid, it must match regular expression[A-Za-z0-9\\-_\\.]+\n"
141 + " field \"id\" type \"int\" value \"-45\" INVALID, id not specified or "
142 + "specified value [-45] invalid, must be specified as id >= 0\n"
143 + " field \"instanceCount\" type \"int\" value \"-345\" INVALID, "
144 + "instanceCount [-345] invalid, must be specified as instanceCount >= 1\n"
145 + " field \"deploymentPort\" type \"int\" value \"65536\" INVALID, "
146 + "deploymentPort [65536] invalid, must be specified as 1024 <= port <= 65535\n"
147 + " field \"policyModelFileName\" type \"java.lang.String\" "
148 + "value \"/some/file/name.xml\" INVALID, not found\n"
149 + " parameter group map \"eventOutputParameters\" INVALID, "
150 + "parameter group map has status INVALID\n" + " parameter group \"FirstProducer\" type "
151 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
152 + ", parameter group has status INVALID\n" + " parameter group \"FILE\" type "
153 + "\"org.onap.policy.apex.service.engine.event.impl."
154 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
155 + "parameter group has status INVALID\n"
156 + " field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
157 + "\"null\" invalid, must be specified as a non-empty string\n"
158 + " parameter group map \"eventInputParameters\" INVALID, "
159 + "parameter group map has status INVALID\n" + " parameter group \"TheFileConsumer1\" type "
160 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
161 + ", parameter group has status INVALID\n" + " parameter group \"FILE\" type "
162 + "\"org.onap.policy.apex.service.engine.event.impl."
163 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
164 + "parameter group has status INVALID\n"
165 + " field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
166 + "\"null\" invalid, must be specified as a non-empty string\n", e.getMessage());
171 public void testModelNotFileTest() {
172 final String[] args = {"-c", "src/test/resources/parameters/badParamsModelNotFile.json"};
173 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
176 new ApexParameterHandler().getParameters(arguments);
177 fail("This test should throw an exception");
178 } catch (final ParameterException e) {
180 "validation error(s) on parameters from "
181 + "\"src/test/resources/parameters/badParamsModelNotFile.json\"\n"
182 + "parameter group \"APEX_PARAMETERS\" type "
183 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
184 + "parameter group has status INVALID\n" + " parameter group \"MyApexEngine\" type "
185 + "\"org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters\" "
186 + "INVALID, parameter group has status INVALID\n" + " field \"policyModelFileName\" "
187 + "type \"java.lang.String\" value \"src/test\" INVALID, is not a plain file\n",
193 public void testGoodParametersTest() {
194 final String[] args = {"-c", "src/test/resources/parameters/goodParams.json"};
195 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
198 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
200 assertEquals(2, parameters.getEventInputParameters().size());
201 assertEquals(2, parameters.getEventOutputParameters().size());
203 assertTrue(parameters.getEventOutputParameters().containsKey("FirstProducer"));
204 assertTrue(parameters.getEventOutputParameters().containsKey("MyOtherProducer"));
205 assertEquals("FILE", parameters.getEventOutputParameters().get("FirstProducer")
206 .getCarrierTechnologyParameters().getLabel());
207 assertEquals("FILE", parameters.getEventOutputParameters().get("MyOtherProducer")
208 .getCarrierTechnologyParameters().getLabel());
209 assertEquals(ApexFileEventProducer.class.getName(), parameters.getEventOutputParameters()
210 .get("MyOtherProducer").getCarrierTechnologyParameters().getEventProducerPluginClass());
211 assertEquals(ApexFileEventConsumer.class.getName(), parameters.getEventOutputParameters()
212 .get("MyOtherProducer").getCarrierTechnologyParameters().getEventConsumerPluginClass());
214 parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters().getLabel());
215 assertEquals("JSON", parameters.getEventOutputParameters().get("MyOtherProducer")
216 .getEventProtocolParameters().getLabel());
218 assertTrue(parameters.getEventInputParameters().containsKey("TheFileConsumer1"));
219 assertTrue(parameters.getEventInputParameters().containsKey("MySuperDooperConsumer1"));
220 assertEquals("FILE", parameters.getEventInputParameters().get("TheFileConsumer1")
221 .getCarrierTechnologyParameters().getLabel());
222 assertEquals("SUPER_DOOPER", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
223 .getCarrierTechnologyParameters().getLabel());
224 assertEquals("JSON", parameters.getEventInputParameters().get("TheFileConsumer1")
225 .getEventProtocolParameters().getLabel());
226 assertEquals("SUPER_TOK_DEL", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
227 .getEventProtocolParameters().getLabel());
228 assertEquals(ApexFileEventProducer.class.getName(), parameters.getEventInputParameters()
229 .get("TheFileConsumer1").getCarrierTechnologyParameters().getEventProducerPluginClass());
230 assertEquals(ApexFileEventConsumer.class.getName(), parameters.getEventInputParameters()
231 .get("TheFileConsumer1").getCarrierTechnologyParameters().getEventConsumerPluginClass());
232 assertEquals(SuperDooperEventProducer.class.getName(), parameters.getEventInputParameters()
233 .get("MySuperDooperConsumer1").getCarrierTechnologyParameters().getEventProducerPluginClass());
234 assertEquals(SuperDooperEventSubscriber.class.getName(), parameters.getEventInputParameters()
235 .get("MySuperDooperConsumer1").getCarrierTechnologyParameters().getEventConsumerPluginClass());
236 } catch (final ParameterException e) {
237 fail("This test should not throw an exception");
242 public void testSuperDooperParametersTest() {
243 final String[] args = {"-c", "src/test/resources/parameters/superDooperParams.json"};
244 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
247 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
249 assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
250 assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
251 assertEquals(45, parameters.getEngineServiceParameters().getId());
252 assertEquals(345, parameters.getEngineServiceParameters().getInstanceCount());
253 assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
255 final CarrierTechnologyParameters prodCarrierTech =
256 parameters.getEventOutputParameters().get("FirstProducer").getCarrierTechnologyParameters();
257 final EventProtocolParameters prodEventProt =
258 parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters();
259 final CarrierTechnologyParameters consCarrierTech =
260 parameters.getEventInputParameters().get("MySuperDooperConsumer1").getCarrierTechnologyParameters();
261 final EventProtocolParameters consEventProt =
262 parameters.getEventInputParameters().get("MySuperDooperConsumer1").getEventProtocolParameters();
264 assertEquals("SUPER_DOOPER", prodCarrierTech.getLabel());
265 assertEquals("SUPER_TOK_DEL", prodEventProt.getLabel());
266 assertEquals("SUPER_DOOPER", consCarrierTech.getLabel());
267 assertEquals("JSON", consEventProt.getLabel());
269 assertTrue(prodCarrierTech instanceof SuperDooperCarrierTechnologyParameters);
271 final SuperDooperCarrierTechnologyParameters superDooperParameters =
272 (SuperDooperCarrierTechnologyParameters) prodCarrierTech;
273 assertEquals("somehost:12345", superDooperParameters.getBootstrapServers());
274 assertEquals("0", superDooperParameters.getAcks());
275 assertEquals(25, superDooperParameters.getRetries());
276 assertEquals(98765, superDooperParameters.getBatchSize());
277 assertEquals(21, superDooperParameters.getLingerTime());
278 assertEquals(50505050, superDooperParameters.getBufferMemory());
279 assertEquals("first-group-id", superDooperParameters.getGroupId());
280 assertFalse(superDooperParameters.isEnableAutoCommit());
281 assertEquals(441, superDooperParameters.getAutoCommitTime());
282 assertEquals(987, superDooperParameters.getSessionTimeout());
283 assertEquals("producer-out", superDooperParameters.getProducerTopic());
284 assertEquals(101, superDooperParameters.getConsumerPollTime());
285 assertEquals("some.key.serailizer", superDooperParameters.getKeySerializer());
286 assertEquals("some.value.serailizer", superDooperParameters.getValueSerializer());
287 assertEquals("some.key.deserailizer", superDooperParameters.getKeyDeserializer());
288 assertEquals("some.value.deserailizer", superDooperParameters.getValueDeserializer());
290 final String[] consumerTopics = {"consumer-out-0", "consumer-out-1", "consumer-out-2"};
291 assertEquals(Arrays.asList(consumerTopics), superDooperParameters.getConsumerTopicList());
292 } catch (final ParameterException e) {
293 fail("This test should not throw an exception");