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.assertFalse;
25 import static org.junit.Assert.assertTrue;
26 import static org.junit.Assert.fail;
28 import java.util.Arrays;
30 import org.junit.Test;
31 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.ApexFileEventConsumer;
32 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.producer.ApexFileEventProducer;
33 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
34 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters;
35 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperEventProducer;
36 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperEventSubscriber;
37 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
38 import org.onap.policy.apex.service.parameters.ApexParameters;
39 import org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters;
40 import org.onap.policy.apex.service.parameters.eventprotocol.EventProtocolParameters;
41 import org.onap.policy.common.parameters.ParameterException;
44 * Test for an empty parameter file.
46 * @author Liam Fallon (liam.fallon@ericsson.com)
48 public class ParameterTests {
50 public void invalidParametersNoFileTest() throws ParameterException {
52 { "-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 invalidParametersEmptyTest() {
67 { "-c", "src/test/resources/parameters/empty.json" };
68 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
71 new ApexParameterHandler().getParameters(arguments);
72 fail("This test should throw an exception");
73 } catch (final ParameterException e) {
74 assertTrue(e.getMessage().startsWith(
75 "validation error(s) on parameters from \"src/test/resources/parameters/empty.json\""));
80 public void invalidParametersNoParamsTest() {
82 { "-c", "src/test/resources/parameters/noParams.json" };
83 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
86 new ApexParameterHandler().getParameters(arguments);
87 fail("This test should throw an exception");
88 } catch (final ParameterException e) {
89 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/noParams.json\"\n"
90 + "parameter group \"APEX_PARAMETERS\" type "
91 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
92 + "parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
93 + "engine service parameters are not specified\n"
94 + " parameter group map \"eventOutputParameters\" INVALID, "
95 + "at least one event output must be specified\n"
96 + " parameter group map \"eventInputParameters\" INVALID, "
97 + "at least one event input must be specified\n", e.getMessage());
102 public void invalidParametersBlankParamsTest() {
103 final String[] args =
104 { "-c", "src/test/resources/parameters/blankParams.json" };
105 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
108 new ApexParameterHandler().getParameters(arguments);
109 fail("This test should throw an exception");
110 } catch (final ParameterException e) {
112 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/blankParams.json\"\n"
113 + "parameter group \"APEX_PARAMETERS\" type "
114 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
115 + "parameter group has status INVALID\n"
116 + " parameter group \"ENGINE_SERVICE_PARAMETERS\" type "
117 + "\"org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters\" "
118 + "INVALID, parameter group has status INVALID\n"
119 + " field \"id\" type \"int\" value \"-1\" INVALID, "
120 + "id not specified or specified value [-1] invalid, must be specified as id >= 0\n"
121 + " parameter group map \"eventOutputParameters\" INVALID, "
122 + "at least one event output must be specified\n"
123 + " parameter group map \"eventInputParameters\" INVALID, "
124 + "at least one event input must be specified\n", e.getMessage());
129 public void invalidParametersTest() {
130 final String[] args =
131 { "-c", "src/test/resources/parameters/badParams.json" };
132 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
135 new ApexParameterHandler().getParameters(arguments);
136 fail("This test should throw an exception");
137 } catch (final ParameterException e) {
138 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/badParams.json\"\n"
139 + "parameter group \"APEX_PARAMETERS\" type "
140 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
141 + "parameter group has status INVALID\n" + " parameter group \"hello there\" type "
142 + "\"org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters\" "
143 + "INVALID, parameter group has status INVALID\n"
144 + " field \"name\" type \"java.lang.String\" value \"hello there\" INVALID, "
145 + "name is invalid, it must match regular expression[A-Za-z0-9\\-_\\.]+\n"
146 + " field \"id\" type \"int\" value \"-45\" INVALID, id not specified or "
147 + "specified value [-45] invalid, must be specified as id >= 0\n"
148 + " field \"instanceCount\" type \"int\" value \"-345\" INVALID, "
149 + "instanceCount [-345] invalid, must be specified as instanceCount >= 1\n"
150 + " field \"deploymentPort\" type \"int\" value \"65536\" INVALID, "
151 + "deploymentPort [65536] invalid, must be specified as 1024 <= port <= 65535\n"
152 + " field \"policyModelFileName\" type \"java.lang.String\" "
153 + "value \"/some/file/name.xml\" INVALID, not found\n"
154 + " parameter group map \"eventOutputParameters\" INVALID, "
155 + "parameter group has status INVALID\n" + " parameter group \"FirstProducer\" type "
156 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
157 + ", parameter group has status INVALID\n" + " parameter group \"FILE\" type "
158 + "\"org.onap.policy.apex.service.engine.event.impl."
159 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
160 + "parameter group has status INVALID\n"
161 + " field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
162 + "\"null\" invalid, must be specified as a non-empty string\n"
163 + " parameter group map \"eventInputParameters\" INVALID, "
164 + "parameter group has status INVALID\n" + " parameter group \"TheFileConsumer1\" type "
165 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
166 + ", parameter group has status INVALID\n" + " parameter group \"FILE\" type "
167 + "\"org.onap.policy.apex.service.engine.event.impl."
168 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
169 + "parameter group has status INVALID\n"
170 + " field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
171 + "\"null\" invalid, must be specified as a non-empty string\n", e.getMessage());
176 public void modelNotFileTest() {
177 final String[] args =
178 { "-c", "src/test/resources/parameters/badParamsModelNotFile.json" };
179 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
182 new ApexParameterHandler().getParameters(arguments);
183 fail("This test should throw an exception");
184 } catch (final ParameterException e) {
185 assertEquals("validation error(s) on parameters from "
186 + "\"src/test/resources/parameters/badParamsModelNotFile.json\"\n"
187 + "parameter group \"APEX_PARAMETERS\" type "
188 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
189 + "parameter group has status INVALID\n" + " parameter group \"MyApexEngine\" type "
190 + "\"org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters\" "
191 + "INVALID, parameter group has status INVALID\n" + " field \"policyModelFileName\" "
192 + "type \"java.lang.String\" value \"src/test\" INVALID, is not a plain file\n",
198 public void goodParametersTest() {
199 final String[] args =
200 { "-c", "src/test/resources/parameters/goodParams.json" };
201 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
204 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
206 assertEquals(2, parameters.getEventInputParameters().size());
207 assertEquals(2, parameters.getEventOutputParameters().size());
209 assertTrue(parameters.getEventOutputParameters().containsKey("FirstProducer"));
210 assertTrue(parameters.getEventOutputParameters().containsKey("MyOtherProducer"));
211 assertEquals("FILE", parameters.getEventOutputParameters().get("FirstProducer")
212 .getCarrierTechnologyParameters().getLabel());
213 assertEquals("FILE", parameters.getEventOutputParameters().get("MyOtherProducer")
214 .getCarrierTechnologyParameters().getLabel());
215 assertEquals(ApexFileEventProducer.class.getCanonicalName(), parameters.getEventOutputParameters()
216 .get("MyOtherProducer").getCarrierTechnologyParameters().getEventProducerPluginClass());
217 assertEquals(ApexFileEventConsumer.class.getCanonicalName(), parameters.getEventOutputParameters()
218 .get("MyOtherProducer").getCarrierTechnologyParameters().getEventConsumerPluginClass());
219 assertEquals("JSON", parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters()
221 assertEquals("JSON", parameters.getEventOutputParameters().get("MyOtherProducer")
222 .getEventProtocolParameters().getLabel());
224 assertTrue(parameters.getEventInputParameters().containsKey("TheFileConsumer1"));
225 assertTrue(parameters.getEventInputParameters().containsKey("MySuperDooperConsumer1"));
226 assertEquals("FILE", parameters.getEventInputParameters().get("TheFileConsumer1")
227 .getCarrierTechnologyParameters().getLabel());
228 assertEquals("SUPER_DOOPER", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
229 .getCarrierTechnologyParameters().getLabel());
230 assertEquals("JSON", parameters.getEventInputParameters().get("TheFileConsumer1")
231 .getEventProtocolParameters().getLabel());
232 assertEquals("SUPER_TOK_DEL", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
233 .getEventProtocolParameters().getLabel());
234 assertEquals(ApexFileEventProducer.class.getCanonicalName(), parameters.getEventInputParameters()
235 .get("TheFileConsumer1").getCarrierTechnologyParameters().getEventProducerPluginClass());
236 assertEquals(ApexFileEventConsumer.class.getCanonicalName(), parameters.getEventInputParameters()
237 .get("TheFileConsumer1").getCarrierTechnologyParameters().getEventConsumerPluginClass());
238 assertEquals(SuperDooperEventProducer.class.getCanonicalName(),
239 parameters.getEventInputParameters().get("MySuperDooperConsumer1")
240 .getCarrierTechnologyParameters().getEventProducerPluginClass());
241 assertEquals(SuperDooperEventSubscriber.class.getCanonicalName(),
242 parameters.getEventInputParameters().get("MySuperDooperConsumer1")
243 .getCarrierTechnologyParameters().getEventConsumerPluginClass());
244 } catch (final ParameterException e) {
245 fail("This test should not throw an exception");
250 public void superDooperParametersTest() {
251 final String[] args =
252 { "-c", "src/test/resources/parameters/superDooperParams.json" };
253 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
256 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
258 assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
259 assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
260 assertEquals(45, parameters.getEngineServiceParameters().getId());
261 assertEquals(345, parameters.getEngineServiceParameters().getInstanceCount());
262 assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
264 final CarrierTechnologyParameters prodCarrierTech = parameters.getEventOutputParameters()
265 .get("FirstProducer").getCarrierTechnologyParameters();
266 final EventProtocolParameters prodEventProt = parameters.getEventOutputParameters().get("FirstProducer")
267 .getEventProtocolParameters();
268 final CarrierTechnologyParameters consCarrierTech = parameters.getEventInputParameters()
269 .get("MySuperDooperConsumer1").getCarrierTechnologyParameters();
270 final EventProtocolParameters consEventProt = parameters.getEventInputParameters()
271 .get("MySuperDooperConsumer1").getEventProtocolParameters();
273 assertEquals("SUPER_DOOPER", prodCarrierTech.getLabel());
274 assertEquals("SUPER_TOK_DEL", prodEventProt.getLabel());
275 assertEquals("SUPER_DOOPER", consCarrierTech.getLabel());
276 assertEquals("JSON", consEventProt.getLabel());
278 assertTrue(prodCarrierTech instanceof SuperDooperCarrierTechnologyParameters);
280 final SuperDooperCarrierTechnologyParameters superDooperParameters
281 = (SuperDooperCarrierTechnologyParameters) prodCarrierTech;
282 assertEquals("somehost:12345", superDooperParameters.getBootstrapServers());
283 assertEquals("0", superDooperParameters.getAcks());
284 assertEquals(25, superDooperParameters.getRetries());
285 assertEquals(98765, superDooperParameters.getBatchSize());
286 assertEquals(21, superDooperParameters.getLingerTime());
287 assertEquals(50505050, superDooperParameters.getBufferMemory());
288 assertEquals("first-group-id", superDooperParameters.getGroupId());
289 assertFalse(superDooperParameters.isEnableAutoCommit());
290 assertEquals(441, superDooperParameters.getAutoCommitTime());
291 assertEquals(987, superDooperParameters.getSessionTimeout());
292 assertEquals("producer-out", superDooperParameters.getProducerTopic());
293 assertEquals(101, superDooperParameters.getConsumerPollTime());
294 assertEquals("some.key.serailizer", superDooperParameters.getKeySerializer());
295 assertEquals("some.value.serailizer", superDooperParameters.getValueSerializer());
296 assertEquals("some.key.deserailizer", superDooperParameters.getKeyDeserializer());
297 assertEquals("some.value.deserailizer", superDooperParameters.getValueDeserializer());
299 final String[] consumerTopics =
300 { "consumer-out-0", "consumer-out-1", "consumer-out-2" };
301 assertEquals(Arrays.asList(consumerTopics), superDooperParameters.getConsumerTopicList());
302 } catch (final ParameterException e) {
303 fail("This test should not throw an exception");