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.assertTrue;
29 import org.junit.Test;
30 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.FileCarrierTechnologyParameters;
31 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
32 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
33 import org.onap.policy.apex.service.parameters.ApexParameters;
34 import org.onap.policy.common.parameters.ParameterException;
37 * Test for an empty parameter file.
39 * @author Liam Fallon (liam.fallon@ericsson.com)
41 public class ProducerConsumerTests {
43 public void testGoodParametersTest() throws ParameterException {
44 final String[] args = {"-p", "src/test/resources/parameters/goodParams.json"};
45 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
47 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
49 assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
50 assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
51 assertEquals(45, parameters.getEngineServiceParameters().getId());
52 assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
53 assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
55 parameters.getEventOutputParameters().get("FirstProducer").getCarrierTechnologyParameters().getLabel());
57 parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters().getLabel());
59 parameters.getEventOutputParameters().get("MyOtherProducer").getCarrierTechnologyParameters().getLabel());
61 parameters.getEventOutputParameters().get("MyOtherProducer").getEventProtocolParameters().getLabel());
63 parameters.getEventInputParameters().get("TheFileConsumer1").getCarrierTechnologyParameters().getLabel());
65 parameters.getEventInputParameters().get("TheFileConsumer1").getEventProtocolParameters().getLabel());
66 assertEquals("SUPER_DOOPER", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
67 .getCarrierTechnologyParameters().getLabel());
68 assertEquals("SUPER_TOK_DEL",
69 parameters.getEventInputParameters().get("MySuperDooperConsumer1").getEventProtocolParameters().getLabel());
73 public void testNoCarrierTechnology() {
74 final String[] args = {"-p", "src/test/resources/parameters/prodConsNoCT.json"};
75 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
77 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
78 .hasMessage("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoCT.json\"\n"
79 + "parameter group \"APEX_PARAMETERS\" type "
80 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
81 + "parameter group has status INVALID\n" + " parameter group map \"eventInputParameters\" INVALID, "
82 + "parameter group map has status INVALID\n" + " parameter group \"aConsumer\" type "
83 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID,"
84 + " parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
85 + "event handler carrierTechnologyParameters not specified or blank\n");
89 public void testNoEventProcol() {
90 final String[] args = {"-p", "src/test/resources/parameters/prodConsNoEP.json"};
91 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
93 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
94 .hasMessage("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoEP.json\"\n"
95 + "parameter group \"APEX_PARAMETERS\" type "
96 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
97 + "parameter group has status INVALID\n" + " parameter group map \"eventOutputParameters\" INVALID, "
98 + "parameter group map has status INVALID\n" + " parameter group \"aProducer\" type "
99 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
100 + ", parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
101 + "event handler eventProtocolParameters not specified or blank\n"
102 + " parameter group map \"eventInputParameters\" INVALID, "
103 + "parameter group map has status INVALID\n" + " parameter group \"aConsumer\" type "
104 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
105 + ", parameter group has status INVALID\n" + " parameter group \"FILE\" type "
106 + "\"org.onap.policy.apex.service.engine.event.impl."
107 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
108 + "parameter group has status INVALID\n"
109 + " field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
110 + "\"null\" invalid, must be specified as a non-empty string\n");
114 public void testNoCarrierTechnologyParClass() {
115 final String[] args = {"-p", "src/test/resources/parameters/prodConsNoCTParClass.json"};
116 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
118 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
119 .hasMessage("error reading parameters from \"src/test/resources/parameters/prodConsNoCTParClass.json\"\n"
120 + "(ParameterRuntimeException):carrier technology \"SUPER_DOOPER\" "
121 + "parameter \"parameterClassName\" value \"null\" invalid in JSON file");
125 public void testMismatchCarrierTechnologyParClass() {
126 final String[] args = {"-p", "src/test/resources/parameters/prodConsMismatchCTParClass.json"};
127 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
129 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
130 "error reading parameters from " + "\"src/test/resources/parameters/prodConsMismatchCTParClass.json\"\n"
131 + "(ParameterRuntimeException):carrier technology \"SUPER_LOOPER\" "
132 + "does not match plugin \"SUPER_DOOPER\" in \"" + "org.onap.policy.apex.service.engine."
133 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters"
134 + "\", specify correct carrier technology parameter plugin " + "in parameter \"parameterClassName\"");
138 public void testWrongTypeCarrierTechnologyParClass() {
139 final String[] args = {"-p", "src/test/resources/parameters/prodConsWrongTypeCTParClass.json"};
140 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
142 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
143 "error reading parameters from " + "\"src/test/resources/parameters/prodConsWrongTypeCTParClass.json\"\n"
144 + "(ParameterRuntimeException):could not create default parameters for carrier technology "
145 + "\"SUPER_DOOPER\"\n" + "class org.onap.policy.apex.service.engine.parameters.dummyclasses."
146 + "SuperTokenDelimitedEventProtocolParameters cannot be cast to class "
147 + "org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters (org.onap."
148 + "policy.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters "
149 + "and org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters are in"
150 + " unnamed module of loader 'app')");
154 public void testOkFileNameCarrierTechnology() throws ParameterException {
155 final String[] args = {"-p", "src/test/resources/parameters/prodConsOKFileName.json"};
156 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
158 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
159 final FileCarrierTechnologyParameters fileParams = (FileCarrierTechnologyParameters) parameters
160 .getEventOutputParameters().get("aProducer").getCarrierTechnologyParameters();
161 assertTrue(fileParams.getFileName().endsWith("target/aaa.json"));
162 assertEquals(false, fileParams.isStandardError());
163 assertEquals(false, fileParams.isStandardIo());
164 assertEquals(false, fileParams.isStreamingMode());
169 public void testBadFileNameCarrierTechnology() {
170 final String[] args = {"-p", "src/test/resources/parameters/prodConsBadFileName.json"};
171 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
173 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
174 "validation error(s) on parameters from " + "\"src/test/resources/parameters/prodConsBadFileName.json\"\n"
175 + "parameter group \"APEX_PARAMETERS\" type "
176 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
177 + "parameter group has status INVALID\n" + " parameter group map \"eventOutputParameters\" INVALID, "
178 + "parameter group map has status INVALID\n" + " parameter group \"aProducer\" type "
179 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" "
180 + "INVALID, parameter group has status INVALID\n" + " parameter group \"FILE\" type "
181 + "\"org.onap.policy.apex.service.engine.event.impl."
182 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
183 + "parameter group has status INVALID\n" + " field \"fileName\" type "
184 + "\"java.lang.String\" value \"null\" INVALID, "
185 + "\"null\" invalid, must be specified as a non-empty string\n");
189 public void testBadEventProtocolParClass() {
190 final String[] args = {"-p", "src/test/resources/parameters/prodConsBadEPParClass.json"};
191 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
193 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
194 .hasMessage("error reading parameters from \"src/test/resources/parameters/prodConsBadEPParClass.json\"\n"
195 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" "
196 + "does not match plugin \"JSON\" in \"org.onap.policy.apex.service.engine.event.impl"
197 + ".jsonprotocolplugin.JsonEventProtocolParameters"
198 + "\", specify correct event protocol parameter plugin in parameter \"parameterClassName\"");
202 public void testNoEventProtocolParClass() {
203 final String[] args = {"-p", "src/test/resources/parameters/prodConsNoEPParClass.json"};
204 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
206 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
207 .hasMessage("error reading parameters from \"src/test/resources/parameters/prodConsNoEPParClass.json\"\n"
208 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" parameter "
209 + "\"parameterClassName\" value \"null\" invalid in JSON file");
213 public void testMismatchEventProtocolParClass() {
214 final String[] args = {"-p", "src/test/resources/parameters/prodConsMismatchEPParClass.json"};
215 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
217 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
218 "error reading parameters from " + "\"src/test/resources/parameters/prodConsMismatchEPParClass.json\"\n"
219 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_BEL\" "
220 + "does not match plugin \"SUPER_TOK_DEL\" in "
221 + "\"org.onap.policy.apex.service.engine.parameters.dummyclasses."
222 + "SuperTokenDelimitedEventProtocolParameters\", "
223 + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"");
227 public void testWrongTypeEventProtocolParClass() {
228 final String[] args = {"-p", "src/test/resources/parameters/prodConsWrongTypeEPParClass.json"};
229 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
231 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
232 "error reading parameters from " + "\"src/test/resources/parameters/prodConsWrongTypeEPParClass.json\"\n"
233 + "(ParameterRuntimeException):could not create default parameters for event protocol "
234 + "\"SUPER_TOK_DEL\"\n" + "class org.onap.policy.apex.service.engine."
235 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters "
236 + "cannot be cast to class org.onap.policy.apex.service."
237 + "parameters.eventprotocol.EventProtocolParameters (org.onap.policy.apex.service.engine.parameters"
238 + ".dummyclasses.SuperDooperCarrierTechnologyParameters and org.onap.policy.apex.service.parameters"
239 + ".eventprotocol.EventProtocolParameters are in unnamed module of loader 'app')");