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.fail;
26 import org.junit.Test;
27 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.FILECarrierTechnologyParameters;
28 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
29 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
30 import org.onap.policy.apex.service.parameters.ApexParameters;
31 import org.onap.policy.common.parameters.ParameterException;
34 * Test for an empty parameter file.
36 * @author Liam Fallon (liam.fallon@ericsson.com)
38 public class ProducerConsumerTests {
40 public void goodParametersTest() {
42 { "-c", "src/test/resources/parameters/goodParams.json" };
43 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
46 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
48 assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
49 assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
50 assertEquals(45, parameters.getEngineServiceParameters().getId());
51 assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
52 assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
53 assertEquals("FILE", parameters.getEventOutputParameters().get("FirstProducer")
54 .getCarrierTechnologyParameters().getLabel());
55 assertEquals("JSON", parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters()
57 assertEquals("FILE", parameters.getEventOutputParameters().get("MyOtherProducer")
58 .getCarrierTechnologyParameters().getLabel());
59 assertEquals("JSON", parameters.getEventOutputParameters().get("MyOtherProducer")
60 .getEventProtocolParameters().getLabel());
61 assertEquals("FILE", parameters.getEventInputParameters().get("TheFileConsumer1")
62 .getCarrierTechnologyParameters().getLabel());
63 assertEquals("JSON", parameters.getEventInputParameters().get("TheFileConsumer1")
64 .getEventProtocolParameters().getLabel());
65 assertEquals("SUPER_DOOPER", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
66 .getCarrierTechnologyParameters().getLabel());
67 assertEquals("SUPER_TOK_DEL", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
68 .getEventProtocolParameters().getLabel());
69 } catch (final ParameterException e) {
70 fail("This test should not throw an exception");
75 public void noCarrierTechnology() {
77 { "-c", "src/test/resources/parameters/prodConsNoCT.json" };
78 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
81 new ApexParameterHandler().getParameters(arguments);
82 fail("This test should throw an exception");
83 } catch (final ParameterException e) {
84 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoCT.json\"\n"
85 + "parameter group \"APEX_PARAMETERS\" type "
86 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
87 + "parameter group has status INVALID\n"
88 + " parameter group map \"eventInputParameters\" INVALID, "
89 + "parameter group has status INVALID\n" + " parameter group \"aConsumer\" type "
90 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID,"
91 + " parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
92 + "event handler carrierTechnologyParameters not specified or blank\n", e.getMessage());
97 public void noEventProcol() {
99 { "-c", "src/test/resources/parameters/prodConsNoEP.json" };
100 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
103 new ApexParameterHandler().getParameters(arguments);
104 fail("This test should throw an exception");
105 } catch (final ParameterException e) {
106 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoEP.json\"\n"
107 + "parameter group \"APEX_PARAMETERS\" type "
108 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
109 + "parameter group has status INVALID\n"
110 + " parameter group map \"eventOutputParameters\" INVALID, "
111 + "parameter group has status INVALID\n" + " parameter group \"aProducer\" type "
112 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
113 + ", parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
114 + "event handler eventProtocolParameters not specified or blank\n"
115 + " parameter group map \"eventInputParameters\" INVALID, "
116 + "parameter group has status INVALID\n" + " parameter group \"aConsumer\" type "
117 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
118 + ", parameter group has status INVALID\n" + " parameter group \"FILE\" type "
119 + "\"org.onap.policy.apex.service.engine.event.impl."
120 + "filecarrierplugin.FILECarrierTechnologyParameters\" INVALID, "
121 + "parameter group has status INVALID\n"
122 + " field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
123 + "fileName not specified or is blank or null, "
124 + "it must be specified as a valid file location\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 in parameter \"parameterClassName\"",
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 assertEquals("/tmp/aaa.json", fileParams.getFileName());
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 \"src/test/resources/parameters/prodConsBadFileName.json\"\n"
214 + "parameter group \"APEX_PARAMETERS\" type "
215 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
216 + "parameter group has status INVALID\n"
217 + " parameter group map \"eventOutputParameters\" INVALID, parameter group has status INVALID\n"
218 + " parameter group \"aProducer\" type "
219 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID, "
220 + "parameter group has status INVALID\n" + " parameter group \"FILE\" type "
221 + "\"org.onap.policy.apex.service.engine.event.impl."
222 + "filecarrierplugin.FILECarrierTechnologyParameters\" INVALID, "
223 + "parameter group has status INVALID\n" + " field \"fileName\" type "
224 + "\"java.lang.String\" value \"null\" INVALID, fileName not specified or is blank or null, "
225 + "it must be specified as a valid file location\n", e.getMessage());
230 public void badEventProtocolParClass() {
231 final String[] args =
232 { "-c", "src/test/resources/parameters/prodConsBadEPParClass.json" };
233 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
236 new ApexParameterHandler().getParameters(arguments);
237 fail("This test should throw an exception");
238 } catch (final ParameterException e) {
239 assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsBadEPParClass.json\"\n"
240 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" does not match plugin \"JSON\" in "
241 + "\"org.onap.policy.apex.service.engine.event.impl.jsonprotocolplugin.JSONEventProtocolParameters"
242 + "\", specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
248 public void noEventProtocolParClass() {
249 final String[] args =
250 { "-c", "src/test/resources/parameters/prodConsNoEPParClass.json" };
251 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
254 new ApexParameterHandler().getParameters(arguments);
255 fail("This test should throw an exception");
256 } catch (final ParameterException e) {
257 assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsNoEPParClass.json\"\n"
258 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" parameter "
259 + "\"parameterClassName\" value \"null\" invalid in JSON file", e.getMessage());
264 public void mismatchEventProtocolParClass() {
265 final String[] args =
266 { "-c", "src/test/resources/parameters/prodConsMismatchEPParClass.json" };
267 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
270 new ApexParameterHandler().getParameters(arguments);
271 fail("This test should throw an exception");
272 } catch (final ParameterException e) {
273 assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsMismatchEPParClass.json\"\n"
274 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_BEL\" "
275 + "does not match plugin \"SUPER_TOK_DEL\" in "
276 + "\"org.onap.policy.apex.service.engine.parameters.dummyclasses."
277 + "SuperTokenDelimitedEventProtocolParameters\", "
278 + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
284 public void wrongTypeEventProtocolParClass() {
285 final String[] args =
286 { "-c", "src/test/resources/parameters/prodConsWrongTypeEPParClass.json" };
287 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
290 new ApexParameterHandler().getParameters(arguments);
291 fail("This test should throw an exception");
292 } catch (final ParameterException e) {
293 assertEquals("error reading parameters from "
294 + "\"src/test/resources/parameters/prodConsWrongTypeEPParClass.json\"\n"
295 + "(ParameterRuntimeException):could not create default parameters for event protocol "
296 + "\"SUPER_TOK_DEL\"\n" + "org.onap.policy.apex.service.engine."
297 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters "
298 + "cannot be cast to org.onap.policy.apex.service."
299 + "parameters.eventprotocol.EventProtocolParameters", e.getMessage());