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() {
41 final String[] args = { "-c", "src/test/resources/parameters/goodParams.json" };
42 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
45 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
47 assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
48 assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
49 assertEquals(45, parameters.getEngineServiceParameters().getId());
50 assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
51 assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
52 assertEquals("FILE", parameters.getEventOutputParameters().get("FirstProducer")
53 .getCarrierTechnologyParameters().getLabel());
54 assertEquals("JSON", parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters()
56 assertEquals("FILE", parameters.getEventOutputParameters().get("MyOtherProducer")
57 .getCarrierTechnologyParameters().getLabel());
58 assertEquals("JSON", parameters.getEventOutputParameters().get("MyOtherProducer")
59 .getEventProtocolParameters().getLabel());
60 assertEquals("FILE", parameters.getEventInputParameters().get("TheFileConsumer1")
61 .getCarrierTechnologyParameters().getLabel());
62 assertEquals("JSON", parameters.getEventInputParameters().get("TheFileConsumer1")
63 .getEventProtocolParameters().getLabel());
64 assertEquals("SUPER_DOOPER", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
65 .getCarrierTechnologyParameters().getLabel());
66 assertEquals("SUPER_TOK_DEL", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
67 .getEventProtocolParameters().getLabel());
68 } catch (final ParameterException e) {
69 fail("This test should not throw an exception");
74 public void noCarrierTechnology() {
75 final String[] args = { "-c", "src/test/resources/parameters/prodConsNoCT.json" };
76 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
79 new ApexParameterHandler().getParameters(arguments);
80 fail("This test should throw an exception");
81 } catch (final ParameterException e) {
82 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoCT.json\"\n"
83 + "parameter group \"APEX_PARAMETERS\" type "
84 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
85 + "parameter group has status INVALID\n"
86 + " parameter group map \"eventInputParameters\" INVALID, "
87 + "parameter group has status INVALID\n" + " parameter group \"aConsumer\" type "
88 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID,"
89 + " parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
90 + "event handler carrierTechnologyParameters not specified or blank\n", e.getMessage());
95 public void noEventProcol() {
96 final String[] args = { "-c", "src/test/resources/parameters/prodConsNoEP.json" };
97 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
100 new ApexParameterHandler().getParameters(arguments);
101 fail("This test should throw an exception");
102 } catch (final ParameterException e) {
103 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoEP.json\"\n"
104 + "parameter group \"APEX_PARAMETERS\" type "
105 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
106 + "parameter group has status INVALID\n"
107 + " parameter group map \"eventOutputParameters\" INVALID, "
108 + "parameter group has status INVALID\n" + " parameter group \"aProducer\" type "
109 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
110 + ", parameter group has status INVALID\n" + " parameter group \"UNDEFINED\" INVALID, "
111 + "event handler eventProtocolParameters not specified or blank\n"
112 + " parameter group map \"eventInputParameters\" INVALID, "
113 + "parameter group has status INVALID\n" + " parameter group \"aConsumer\" type "
114 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
115 + ", parameter group has status INVALID\n" + " parameter group \"FILE\" type "
116 + "\"org.onap.policy.apex.service.engine.event.impl."
117 + "filecarrierplugin.FILECarrierTechnologyParameters\" INVALID, "
118 + "parameter group has status INVALID\n"
119 + " field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
120 + "fileName not specified or is blank or null, "
121 + "it must be specified as a valid file location\n", e.getMessage());
126 public void noCarrierTechnologyParClass() {
127 final String[] args = { "-c", "src/test/resources/parameters/prodConsNoCTParClass.json" };
128 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
131 new ApexParameterHandler().getParameters(arguments);
132 fail("This test should throw an exception");
133 } catch (final ParameterException e) {
134 assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsNoCTParClass.json\"\n"
135 + "(ParameterRuntimeException):carrier technology \"SUPER_DOOPER\" "
136 + "parameter \"parameterClassName\" value \"null\" invalid in JSON file", e.getMessage());
141 public void mismatchCarrierTechnologyParClass() {
142 final String[] args = { "-c", "src/test/resources/parameters/prodConsMismatchCTParClass.json" };
143 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
146 new ApexParameterHandler().getParameters(arguments);
147 fail("This test should throw an exception");
148 } catch (final ParameterException e) {
149 assertEquals("error reading parameters from "
150 + "\"src/test/resources/parameters/prodConsMismatchCTParClass.json\"\n"
151 + "(ParameterRuntimeException):carrier technology \"SUPER_LOOPER\" "
152 + "does not match plugin \"SUPER_DOOPER\" in \"" + "org.onap.policy.apex.service.engine."
153 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters"
154 + "\", specify correct carrier technology parameter plugin in parameter \"parameterClassName\"",
160 public void wrongTypeCarrierTechnologyParClass() {
161 final String[] args = { "-c", "src/test/resources/parameters/prodConsWrongTypeCTParClass.json" };
162 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
165 new ApexParameterHandler().getParameters(arguments);
166 fail("This test should throw an exception");
167 } catch (final ParameterException e) {
168 assertEquals("error reading parameters from "
169 + "\"src/test/resources/parameters/prodConsWrongTypeCTParClass.json\"\n"
170 + "(ParameterRuntimeException):could not create default parameters for carrier technology "
171 + "\"SUPER_DOOPER\"\n" + "org.onap.policy.apex.service.engine.parameters.dummyclasses."
172 + "SuperTokenDelimitedEventProtocolParameters cannot be cast to "
173 + "org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters",
179 public void okFileNameCarrierTechnology() {
180 final String[] args = { "-c", "src/test/resources/parameters/prodConsOKFileName.json" };
181 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
184 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
185 final FILECarrierTechnologyParameters fileParams = (FILECarrierTechnologyParameters) parameters
186 .getEventOutputParameters().get("aProducer").getCarrierTechnologyParameters();
187 assertEquals("/tmp/aaa.json", fileParams.getFileName());
188 assertEquals(false, fileParams.isStandardError());
189 assertEquals(false, fileParams.isStandardIO());
190 assertEquals(false, fileParams.isStreamingMode());
191 } catch (final ParameterException e) {
192 fail("This test should not throw an exception");
197 public void badFileNameCarrierTechnology() {
198 final String[] args = { "-c", "src/test/resources/parameters/prodConsBadFileName.json" };
199 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
202 new ApexParameterHandler().getParameters(arguments);
203 fail("This test should throw an exception");
204 } catch (final ParameterException e) {
205 assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsBadFileName.json\"\n"
206 + "parameter group \"APEX_PARAMETERS\" type "
207 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
208 + "parameter group has status INVALID\n"
209 + " parameter group map \"eventOutputParameters\" INVALID, parameter group has status INVALID\n"
210 + " parameter group \"aProducer\" type "
211 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID, "
212 + "parameter group has status INVALID\n" + " parameter group \"FILE\" type "
213 + "\"org.onap.policy.apex.service.engine.event.impl."
214 + "filecarrierplugin.FILECarrierTechnologyParameters\" INVALID, "
215 + "parameter group has status INVALID\n" + " field \"fileName\" type "
216 + "\"java.lang.String\" value \"null\" INVALID, fileName not specified or is blank or null, "
217 + "it must be specified as a valid file location\n", e.getMessage());
222 public void badEventProtocolParClass() {
223 final String[] args = { "-c", "src/test/resources/parameters/prodConsBadEPParClass.json" };
224 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
227 new ApexParameterHandler().getParameters(arguments);
228 fail("This test should throw an exception");
229 } catch (final ParameterException e) {
230 assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsBadEPParClass.json\"\n"
231 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" does not match plugin \"JSON\" in "
232 + "\"org.onap.policy.apex.service.engine.event.impl.jsonprotocolplugin.JSONEventProtocolParameters"
233 + "\", specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
239 public void noEventProtocolParClass() {
240 final String[] args = { "-c", "src/test/resources/parameters/prodConsNoEPParClass.json" };
241 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
244 new ApexParameterHandler().getParameters(arguments);
245 fail("This test should throw an exception");
246 } catch (final ParameterException e) {
247 assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsNoEPParClass.json\"\n"
248 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" parameter "
249 + "\"parameterClassName\" value \"null\" invalid in JSON file", e.getMessage());
254 public void mismatchEventProtocolParClass() {
255 final String[] args = { "-c", "src/test/resources/parameters/prodConsMismatchEPParClass.json" };
256 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
259 new ApexParameterHandler().getParameters(arguments);
260 fail("This test should throw an exception");
261 } catch (final ParameterException e) {
262 assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsMismatchEPParClass.json\"\n"
263 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_BEL\" "
264 + "does not match plugin \"SUPER_TOK_DEL\" in "
265 + "\"org.onap.policy.apex.service.engine.parameters.dummyclasses."
266 + "SuperTokenDelimitedEventProtocolParameters\", "
267 + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
273 public void wrongTypeEventProtocolParClass() {
274 final String[] args = { "-c", "src/test/resources/parameters/prodConsWrongTypeEPParClass.json" };
275 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
278 new ApexParameterHandler().getParameters(arguments);
279 fail("This test should throw an exception");
280 } catch (final ParameterException e) {
281 assertEquals("error reading parameters from "
282 + "\"src/test/resources/parameters/prodConsWrongTypeEPParClass.json\"\n"
283 + "(ParameterRuntimeException):could not create default parameters for event protocol "
284 + "\"SUPER_TOK_DEL\"\n" + "org.onap.policy.apex.service.engine."
285 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters "
286 + "cannot be cast to org.onap.policy.apex.service."
287 + "parameters.eventprotocol.EventProtocolParameters", e.getMessage());