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.assertTrue;
25 import static org.junit.Assert.fail;
27 import org.junit.Test;
28 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.FileCarrierTechnologyParameters;
29 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
30 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
31 import org.onap.policy.apex.service.parameters.ApexParameters;
32 import org.onap.policy.common.parameters.ParameterException;
35 * Test for an empty parameter file.
37 * @author Liam Fallon (liam.fallon@ericsson.com)
39 public class ProducerConsumerTests {
41 public void goodParametersTest() {
43 { "-c", "src/test/resources/parameters/goodParams.json" };
44 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());
54 assertEquals("FILE", parameters.getEventOutputParameters().get("FirstProducer")
55 .getCarrierTechnologyParameters().getLabel());
56 assertEquals("JSON", parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters()
58 assertEquals("FILE", parameters.getEventOutputParameters().get("MyOtherProducer")
59 .getCarrierTechnologyParameters().getLabel());
60 assertEquals("JSON", parameters.getEventOutputParameters().get("MyOtherProducer")
61 .getEventProtocolParameters().getLabel());
62 assertEquals("FILE", parameters.getEventInputParameters().get("TheFileConsumer1")
63 .getCarrierTechnologyParameters().getLabel());
64 assertEquals("JSON", parameters.getEventInputParameters().get("TheFileConsumer1")
65 .getEventProtocolParameters().getLabel());
66 assertEquals("SUPER_DOOPER", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
67 .getCarrierTechnologyParameters().getLabel());
68 assertEquals("SUPER_TOK_DEL", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
69 .getEventProtocolParameters().getLabel());
70 } catch (final ParameterException e) {
71 fail("This test should not throw an exception");
76 public void noCarrierTechnology() {
78 { "-c", "src/test/resources/parameters/prodConsNoCT.json" };
79 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
82 new ApexParameterHandler().getParameters(arguments);
83 fail("This test should throw an exception");
84 } catch (final ParameterException e) {
85 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoCT.json\"\n"
86 + "parameter group \"APEX_PARAMETERS\" type "
87 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
88 + "parameter group has status INVALID\n"
89 + " parameter group map \"eventInputParameters\" INVALID, "
90 + "parameter group has status INVALID\n" + " parameter group \"aConsumer\" type "
91 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID,"
92 + " parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
93 + "event handler carrierTechnologyParameters not specified or blank\n", e.getMessage());
98 public void noEventProcol() {
100 { "-c", "src/test/resources/parameters/prodConsNoEP.json" };
101 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
104 new ApexParameterHandler().getParameters(arguments);
105 fail("This test should throw an exception");
106 } catch (final ParameterException e) {
107 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoEP.json\"\n"
108 + "parameter group \"APEX_PARAMETERS\" type "
109 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
110 + "parameter group has status INVALID\n"
111 + " parameter group map \"eventOutputParameters\" INVALID, "
112 + "parameter group has status INVALID\n" + " parameter group \"aProducer\" type "
113 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
114 + ", parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
115 + "event handler eventProtocolParameters not specified or blank\n"
116 + " parameter group map \"eventInputParameters\" INVALID, "
117 + "parameter group has status INVALID\n" + " parameter group \"aConsumer\" type "
118 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
119 + ", parameter group has status INVALID\n" + " parameter group \"FILE\" type "
120 + "\"org.onap.policy.apex.service.engine.event.impl."
121 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
122 + "parameter group has status INVALID\n"
123 + " field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
124 + "\"null\" invalid, must be specified as a non-empty string\n", e.getMessage());
129 public void noCarrierTechnologyParClass() {
130 final String[] args =
131 { "-c", "src/test/resources/parameters/prodConsNoCTParClass.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("error reading parameters from \"src/test/resources/parameters/prodConsNoCTParClass.json\"\n"
139 + "(ParameterRuntimeException):carrier technology \"SUPER_DOOPER\" "
140 + "parameter \"parameterClassName\" value \"null\" invalid in JSON file", e.getMessage());
145 public void mismatchCarrierTechnologyParClass() {
146 final String[] args =
147 { "-c", "src/test/resources/parameters/prodConsMismatchCTParClass.json" };
148 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
151 new ApexParameterHandler().getParameters(arguments);
152 fail("This test should throw an exception");
153 } catch (final ParameterException e) {
154 assertEquals("error reading parameters from "
155 + "\"src/test/resources/parameters/prodConsMismatchCTParClass.json\"\n"
156 + "(ParameterRuntimeException):carrier technology \"SUPER_LOOPER\" "
157 + "does not match plugin \"SUPER_DOOPER\" in \"" + "org.onap.policy.apex.service.engine."
158 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters"
159 + "\", specify correct carrier technology parameter plugin "
160 + "in parameter \"parameterClassName\"", e.getMessage());
165 public void wrongTypeCarrierTechnologyParClass() {
166 final String[] args =
167 { "-c", "src/test/resources/parameters/prodConsWrongTypeCTParClass.json" };
168 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
171 new ApexParameterHandler().getParameters(arguments);
172 fail("This test should throw an exception");
173 } catch (final ParameterException e) {
174 assertEquals("error reading parameters from "
175 + "\"src/test/resources/parameters/prodConsWrongTypeCTParClass.json\"\n"
176 + "(ParameterRuntimeException):could not create default parameters for carrier technology "
177 + "\"SUPER_DOOPER\"\n" + "org.onap.policy.apex.service.engine.parameters.dummyclasses."
178 + "SuperTokenDelimitedEventProtocolParameters cannot be cast to "
179 + "org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters",
185 public void okFileNameCarrierTechnology() {
186 final String[] args =
187 { "-c", "src/test/resources/parameters/prodConsOKFileName.json" };
188 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
191 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
192 final FileCarrierTechnologyParameters fileParams = (FileCarrierTechnologyParameters) parameters
193 .getEventOutputParameters().get("aProducer").getCarrierTechnologyParameters();
194 assertTrue(fileParams.getFileName().endsWith("target/aaa.json"));
195 assertEquals(false, fileParams.isStandardError());
196 assertEquals(false, fileParams.isStandardIo());
197 assertEquals(false, fileParams.isStreamingMode());
198 } catch (final ParameterException e) {
199 fail("This test should not throw an exception");
204 public void badFileNameCarrierTechnology() {
205 final String[] args =
206 { "-c", "src/test/resources/parameters/prodConsBadFileName.json" };
207 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
210 new ApexParameterHandler().getParameters(arguments);
211 fail("This test should throw an exception");
212 } catch (final ParameterException e) {
213 assertEquals("validation error(s) on parameters from "
214 + "\"src/test/resources/parameters/prodConsBadFileName.json\"\n"
215 + "parameter group \"APEX_PARAMETERS\" type "
216 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
217 + "parameter group has status INVALID\n"
218 + " parameter group map \"eventOutputParameters\" INVALID, "
219 + "parameter group has status INVALID\n" + " parameter group \"aProducer\" type "
220 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" "
221 + "INVALID, parameter group has status INVALID\n" + " parameter group \"FILE\" type "
222 + "\"org.onap.policy.apex.service.engine.event.impl."
223 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
224 + "parameter group has status INVALID\n" + " field \"fileName\" type "
225 + "\"java.lang.String\" value \"null\" INVALID, "
226 + "\"null\" invalid, must be specified as a non-empty string\n", e.getMessage());
231 public void badEventProtocolParClass() {
232 final String[] args =
233 { "-c", "src/test/resources/parameters/prodConsBadEPParClass.json" };
234 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
237 new ApexParameterHandler().getParameters(arguments);
238 fail("This test should throw an exception");
239 } catch (final ParameterException e) {
240 assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsBadEPParClass.json\"\n"
241 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" "
242 + "does not match plugin \"JSON\" in \"org.onap.policy.apex.service.engine.event.impl"
243 + ".jsonprotocolplugin.JsonEventProtocolParameters"
244 + "\", specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
250 public void noEventProtocolParClass() {
251 final String[] args =
252 { "-c", "src/test/resources/parameters/prodConsNoEPParClass.json" };
253 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
256 new ApexParameterHandler().getParameters(arguments);
257 fail("This test should throw an exception");
258 } catch (final ParameterException e) {
259 assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsNoEPParClass.json\"\n"
260 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" parameter "
261 + "\"parameterClassName\" value \"null\" invalid in JSON file", e.getMessage());
266 public void mismatchEventProtocolParClass() {
267 final String[] args =
268 { "-c", "src/test/resources/parameters/prodConsMismatchEPParClass.json" };
269 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
272 new ApexParameterHandler().getParameters(arguments);
273 fail("This test should throw an exception");
274 } catch (final ParameterException e) {
275 assertEquals("error reading parameters from "
276 + "\"src/test/resources/parameters/prodConsMismatchEPParClass.json\"\n"
277 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_BEL\" "
278 + "does not match plugin \"SUPER_TOK_DEL\" in "
279 + "\"org.onap.policy.apex.service.engine.parameters.dummyclasses."
280 + "SuperTokenDelimitedEventProtocolParameters\", "
281 + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
287 public void wrongTypeEventProtocolParClass() {
288 final String[] args =
289 { "-c", "src/test/resources/parameters/prodConsWrongTypeEPParClass.json" };
290 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
293 new ApexParameterHandler().getParameters(arguments);
294 fail("This test should throw an exception");
295 } catch (final ParameterException e) {
296 assertEquals("error reading parameters from "
297 + "\"src/test/resources/parameters/prodConsWrongTypeEPParClass.json\"\n"
298 + "(ParameterRuntimeException):could not create default parameters for event protocol "
299 + "\"SUPER_TOK_DEL\"\n" + "org.onap.policy.apex.service.engine."
300 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters "
301 + "cannot be cast to org.onap.policy.apex.service."
302 + "parameters.eventprotocol.EventProtocolParameters", e.getMessage());