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 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 * SPDX-License-Identifier: Apache-2.0
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.apex.service.engine.parameters;
25 import static org.assertj.core.api.Assertions.assertThatThrownBy;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertFalse;
28 import static org.junit.Assert.assertTrue;
30 import java.nio.file.NoSuchFileException;
31 import java.util.Arrays;
32 import org.junit.Test;
33 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.ApexFileEventConsumer;
34 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.producer.ApexFileEventProducer;
35 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
36 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters;
37 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperEventProducer;
38 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperEventSubscriber;
39 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
40 import org.onap.policy.apex.service.parameters.ApexParameters;
41 import org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters;
42 import org.onap.policy.apex.service.parameters.eventprotocol.EventProtocolParameters;
43 import org.onap.policy.common.parameters.ParameterException;
46 * Test for an empty parameter file.
48 * @author Liam Fallon (liam.fallon@ericsson.com)
50 public class ParameterTests {
52 public void testInvalidParametersNoFileTest() throws ParameterException {
53 final String[] args = {"-p", "src/test/resources/parameters/invalidNoFile.json"};
54 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
56 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
57 .hasRootCauseInstanceOf(NoSuchFileException.class);
61 public void testInvalidParametersEmptyTest() {
62 final String[] args = {"-p", "src/test/resources/parameters/empty.json"};
63 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
65 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
66 .hasMessageStartingWith("error reading parameters from \"src/test/resources/parameters/empty.json");
70 public void testInvalidParametersNoParamsTest() {
71 final String[] args = {"-p", "src/test/resources/parameters/noParams.json"};
72 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
74 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
75 .hasMessage("validation error(s) on parameters from \"src/test/resources/parameters/noParams.json\"\n"
76 + "parameter group \"APEX_PARAMETERS\" type "
77 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
78 + "parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
79 + "engine service parameters are not specified\n"
80 + " parameter group map \"eventOutputParameters\" INVALID, "
81 + "at least one event output must be specified\n"
82 + " parameter group map \"eventInputParameters\" INVALID, "
83 + "at least one event input must be specified\n");
87 public void testInvalidParametersBlankParamsTest() {
88 final String[] args = {"-p", "src/test/resources/parameters/blankParams.json"};
89 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
91 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
92 .hasMessage("validation error(s) on parameters from \"src/test/resources/parameters/blankParams.json\"\n"
93 + "parameter group \"APEX_PARAMETERS\" type "
94 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
95 + "parameter group has status INVALID\n" + " parameter group \"ENGINE_SERVICE_PARAMETERS\" type "
96 + "\"org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters\" "
97 + "INVALID, parameter group has status INVALID\n"
98 + " field \"id\" type \"int\" value \"-1\" INVALID, "
99 + "id not specified or specified value [-1] invalid, must be specified as id >= 0\n"
100 + " field \"policyModel\" type \"java.lang.String\" value \"null\" INVALID, must be specified\n"
101 + " parameter group map \"eventOutputParameters\" INVALID, "
102 + "at least one event output must be specified\n"
103 + " parameter group map \"eventInputParameters\" INVALID, "
104 + "at least one event input must be specified\n");
108 public void testInvalidParametersTest() {
109 final String[] args = {"-p", "src/test/resources/parameters/badParams.json"};
110 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
112 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
113 .hasMessage("validation error(s) on parameters from \"src/test/resources/parameters/badParams.json\"\n"
114 + "parameter group \"APEX_PARAMETERS\" type "
115 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
116 + "parameter group has status INVALID\n" + " parameter group \"hello there\" type "
117 + "\"org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters\" "
118 + "INVALID, parameter group has status INVALID\n"
119 + " field \"name\" type \"java.lang.String\" value \"hello there\" INVALID, "
120 + "name is invalid, it must match regular expression[A-Za-z0-9\\-_\\.]+\n"
121 + " field \"id\" type \"int\" value \"-45\" INVALID, id not specified or "
122 + "specified value [-45] invalid, must be specified as id >= 0\n"
123 + " field \"instanceCount\" type \"int\" value \"-345\" INVALID, "
124 + "instanceCount [-345] invalid, must be specified as instanceCount >= 1\n"
125 + " field \"deploymentPort\" type \"int\" value \"65536\" INVALID, "
126 + "deploymentPort [65536] invalid, must be specified as 1024 <= port <= 65535\n"
127 + " parameter group map \"eventOutputParameters\" INVALID, "
128 + "parameter group map has status INVALID\n" + " parameter group \"FirstProducer\" type "
129 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
130 + ", parameter group has status INVALID\n" + " parameter group \"FILE\" type "
131 + "\"org.onap.policy.apex.service.engine.event.impl."
132 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
133 + "parameter group has status INVALID\n"
134 + " field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
135 + "\"null\" invalid, must be specified as a non-empty string\n"
136 + " parameter group map \"eventInputParameters\" INVALID, "
137 + "parameter group map has status INVALID\n" + " parameter group \"TheFileConsumer1\" type "
138 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
139 + ", parameter group has status INVALID\n" + " parameter group \"FILE\" type "
140 + "\"org.onap.policy.apex.service.engine.event.impl."
141 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
142 + "parameter group has status INVALID\n"
143 + " field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
144 + "\"null\" invalid, must be specified as a non-empty string\n");
148 public void testGoodParametersTest() throws ParameterException {
149 final String[] args = {"-p", "src/test/resources/parameters/goodParams.json"};
150 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
152 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
154 assertEquals(2, parameters.getEventInputParameters().size());
155 assertEquals(2, parameters.getEventOutputParameters().size());
156 assertTrue(parameters.getEventOutputParameters().containsKey("FirstProducer"));
157 assertTrue(parameters.getEventOutputParameters().containsKey("MyOtherProducer"));
158 assertEquals("FILE", parameters.getEventOutputParameters().get("FirstProducer")
159 .getCarrierTechnologyParameters().getLabel());
160 assertEquals("FILE", parameters.getEventOutputParameters().get("MyOtherProducer")
161 .getCarrierTechnologyParameters().getLabel());
162 assertEquals(ApexFileEventProducer.class.getName(), parameters.getEventOutputParameters()
163 .get("MyOtherProducer").getCarrierTechnologyParameters().getEventProducerPluginClass());
164 assertEquals(ApexFileEventConsumer.class.getName(), parameters.getEventOutputParameters()
165 .get("MyOtherProducer").getCarrierTechnologyParameters().getEventConsumerPluginClass());
167 parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters().getLabel());
168 assertEquals("JSON", parameters.getEventOutputParameters().get("MyOtherProducer")
169 .getEventProtocolParameters().getLabel());
171 assertTrue(parameters.getEventInputParameters().containsKey("TheFileConsumer1"));
172 assertTrue(parameters.getEventInputParameters().containsKey("MySuperDooperConsumer1"));
173 assertEquals("FILE", parameters.getEventInputParameters().get("TheFileConsumer1")
174 .getCarrierTechnologyParameters().getLabel());
175 assertEquals("SUPER_DOOPER", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
176 .getCarrierTechnologyParameters().getLabel());
177 assertEquals("JSON", parameters.getEventInputParameters().get("TheFileConsumer1")
178 .getEventProtocolParameters().getLabel());
179 assertEquals("SUPER_TOK_DEL", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
180 .getEventProtocolParameters().getLabel());
181 assertEquals(ApexFileEventProducer.class.getName(), parameters.getEventInputParameters()
182 .get("TheFileConsumer1").getCarrierTechnologyParameters().getEventProducerPluginClass());
183 assertEquals(ApexFileEventConsumer.class.getName(), parameters.getEventInputParameters()
184 .get("TheFileConsumer1").getCarrierTechnologyParameters().getEventConsumerPluginClass());
185 assertEquals(SuperDooperEventProducer.class.getName(), parameters.getEventInputParameters()
186 .get("MySuperDooperConsumer1").getCarrierTechnologyParameters().getEventProducerPluginClass());
187 assertEquals(SuperDooperEventSubscriber.class.getName(), parameters.getEventInputParameters()
188 .get("MySuperDooperConsumer1").getCarrierTechnologyParameters().getEventConsumerPluginClass());
192 public void testSuperDooperParametersTest() throws ParameterException {
193 final String[] args = {"-p", "src/test/resources/parameters/superDooperParams.json"};
194 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
196 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
198 assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
199 assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
200 assertEquals(45, parameters.getEngineServiceParameters().getId());
201 assertEquals(345, parameters.getEngineServiceParameters().getInstanceCount());
202 assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
204 final CarrierTechnologyParameters prodCarrierTech =
205 parameters.getEventOutputParameters().get("FirstProducer").getCarrierTechnologyParameters();
206 final EventProtocolParameters prodEventProt =
207 parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters();
208 final CarrierTechnologyParameters consCarrierTech =
209 parameters.getEventInputParameters().get("MySuperDooperConsumer1").getCarrierTechnologyParameters();
210 final EventProtocolParameters consEventProt =
211 parameters.getEventInputParameters().get("MySuperDooperConsumer1").getEventProtocolParameters();
213 assertEquals("SUPER_DOOPER", prodCarrierTech.getLabel());
214 assertEquals("SUPER_TOK_DEL", prodEventProt.getLabel());
215 assertEquals("SUPER_DOOPER", consCarrierTech.getLabel());
216 assertEquals("JSON", consEventProt.getLabel());
218 assertTrue(prodCarrierTech instanceof SuperDooperCarrierTechnologyParameters);
220 final SuperDooperCarrierTechnologyParameters superDooperParameters =
221 (SuperDooperCarrierTechnologyParameters) prodCarrierTech;
222 assertEquals("somehost:12345", superDooperParameters.getBootstrapServers());
223 assertEquals("0", superDooperParameters.getAcks());
224 assertEquals(25, superDooperParameters.getRetries());
225 assertEquals(98765, superDooperParameters.getBatchSize());
226 assertEquals(21, superDooperParameters.getLingerTime());
227 assertEquals(50505050, superDooperParameters.getBufferMemory());
228 assertEquals("first-group-id", superDooperParameters.getGroupId());
229 assertFalse(superDooperParameters.isEnableAutoCommit());
230 assertEquals(441, superDooperParameters.getAutoCommitTime());
231 assertEquals(987, superDooperParameters.getSessionTimeout());
232 assertEquals("producer-out", superDooperParameters.getProducerTopic());
233 assertEquals(101, superDooperParameters.getConsumerPollTime());
234 assertEquals("some.key.serailizer", superDooperParameters.getKeySerializer());
235 assertEquals("some.value.serailizer", superDooperParameters.getValueSerializer());
236 assertEquals("some.key.deserailizer", superDooperParameters.getKeyDeserializer());
237 assertEquals("some.value.deserailizer", superDooperParameters.getValueDeserializer());
239 final String[] consumerTopics = {"consumer-out-0", "consumer-out-1", "consumer-out-2"};
240 assertEquals(Arrays.asList(consumerTopics), superDooperParameters.getConsumerTopicList());