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 * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
20 * SPDX-License-Identifier: Apache-2.0
21 * ============LICENSE_END=========================================================
24 package org.onap.policy.apex.service.engine.parameters;
26 import static org.assertj.core.api.Assertions.assertThatThrownBy;
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertTrue;
30 import org.junit.Test;
31 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.FileCarrierTechnologyParameters;
32 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
33 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
34 import org.onap.policy.apex.service.parameters.ApexParameters;
35 import org.onap.policy.common.parameters.ParameterException;
38 * Test for an empty parameter file.
40 * @author Liam Fallon (liam.fallon@ericsson.com)
42 public class ProducerConsumerTests {
44 public void testGoodParametersTest() throws ParameterException {
45 final String[] args = {"-p", "src/test/resources/parameters/goodParams.json"};
46 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
48 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
50 assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
51 assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
52 assertEquals(45, parameters.getEngineServiceParameters().getId());
53 assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
54 assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
56 parameters.getEventOutputParameters().get("FirstProducer").getCarrierTechnologyParameters().getLabel());
58 parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters().getLabel());
60 parameters.getEventOutputParameters().get("MyOtherProducer").getCarrierTechnologyParameters().getLabel());
62 parameters.getEventOutputParameters().get("MyOtherProducer").getEventProtocolParameters().getLabel());
64 parameters.getEventInputParameters().get("TheFileConsumer1").getCarrierTechnologyParameters().getLabel());
66 parameters.getEventInputParameters().get("TheFileConsumer1").getEventProtocolParameters().getLabel());
67 assertEquals("SUPER_DOOPER", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
68 .getCarrierTechnologyParameters().getLabel());
69 assertEquals("SUPER_TOK_DEL",
70 parameters.getEventInputParameters().get("MySuperDooperConsumer1").getEventProtocolParameters().getLabel());
74 public void testNoCarrierTechnology() {
75 final String[] args = {"-p", "src/test/resources/parameters/prodConsNoCT.json"};
76 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
78 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
79 .hasMessageContaining("src/test/resources/parameters/prodConsNoCT.json")
80 .hasMessageContaining("ApexParameters")
81 .hasMessageContaining("eventInputParameters", "aConsumer", "EventHandlerParameters",
82 "carrierTechnologyParameters")
83 .hasMessageContaining("is null");
87 public void testNoEventProcol() {
88 final String[] args = {"-p", "src/test/resources/parameters/prodConsNoEP.json"};
89 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
91 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
92 .hasMessageContaining("src/test/resources/parameters/prodConsNoEP.json")
93 .hasMessageContaining("ApexParameters")
94 .hasMessageContaining("eventOutputParameters", "aProducer", "EventHandlerParameters",
95 "eventProtocolParameters")
96 .hasMessageContaining("eventInputParameters", "aConsumer", "EventHandlerParameters",
97 "FileCarrierTechnologyParameters", "fileName")
98 .hasMessageContaining("is null")
99 .hasMessageContaining("is blank");
103 public void testNoCarrierTechnologyParClass() {
104 final String[] args = {"-p", "src/test/resources/parameters/prodConsNoCTParClass.json"};
105 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
107 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
108 .hasMessage("error reading parameters from \"src/test/resources/parameters/prodConsNoCTParClass.json\"\n"
109 + "(ParameterRuntimeException):carrier technology \"SUPER_DOOPER\" "
110 + "parameter \"parameterClassName\" value \"null\" invalid in JSON file");
114 public void testMismatchCarrierTechnologyParClass() {
115 final String[] args = {"-p", "src/test/resources/parameters/prodConsMismatchCTParClass.json"};
116 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
118 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
119 "error reading parameters from " + "\"src/test/resources/parameters/prodConsMismatchCTParClass.json\"\n"
120 + "(ParameterRuntimeException):carrier technology \"SUPER_LOOPER\" "
121 + "does not match plugin \"SUPER_DOOPER\" in \"" + "org.onap.policy.apex.service.engine."
122 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters"
123 + "\", specify correct carrier technology parameter plugin " + "in parameter \"parameterClassName\"");
127 public void testWrongTypeCarrierTechnologyParClass() {
128 final String[] args = {"-p", "src/test/resources/parameters/prodConsWrongTypeCTParClass.json"};
129 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
131 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
132 "error reading parameters from " + "\"src/test/resources/parameters/prodConsWrongTypeCTParClass.json\"\n"
133 + "(ParameterRuntimeException):could not create default parameters for carrier technology "
134 + "\"SUPER_DOOPER\"\n" + "class org.onap.policy.apex.service.engine.parameters.dummyclasses."
135 + "SuperTokenDelimitedEventProtocolParameters cannot be cast to class "
136 + "org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters (org.onap."
137 + "policy.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters "
138 + "and org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters are in"
139 + " unnamed module of loader 'app')");
143 public void testOkFileNameCarrierTechnology() throws ParameterException {
144 final String[] args = {"-p", "src/test/resources/parameters/prodConsOKFileName.json"};
145 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
147 final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
148 final FileCarrierTechnologyParameters fileParams = (FileCarrierTechnologyParameters) parameters
149 .getEventOutputParameters().get("aProducer").getCarrierTechnologyParameters();
150 assertTrue(fileParams.getFileName().endsWith("target/aaa.json"));
151 assertEquals(false, fileParams.isStandardError());
152 assertEquals(false, fileParams.isStandardIo());
153 assertEquals(false, fileParams.isStreamingMode());
158 public void testBadFileNameCarrierTechnology() {
159 final String[] args = {"-p", "src/test/resources/parameters/prodConsBadFileName.json"};
160 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
162 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
163 .hasMessageContaining("src/test/resources/parameters/prodConsBadFileName.json")
164 .hasMessageContaining("ApexParameters")
165 .hasMessageContaining("eventOutputParameters", "aProducer", "EventHandlerParameters",
166 "FileCarrierTechnologyParameters", "fileName")
167 .hasMessageContaining("is blank");
171 public void testBadEventProtocolParClass() {
172 final String[] args = {"-p", "src/test/resources/parameters/prodConsBadEPParClass.json"};
173 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
175 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
176 .hasMessage("error reading parameters from \"src/test/resources/parameters/prodConsBadEPParClass.json\"\n"
177 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" "
178 + "does not match plugin \"JSON\" in \"org.onap.policy.apex.service.engine.event.impl"
179 + ".jsonprotocolplugin.JsonEventProtocolParameters"
180 + "\", specify correct event protocol parameter plugin in parameter \"parameterClassName\"");
184 public void testNoEventProtocolParClass() {
185 final String[] args = {"-p", "src/test/resources/parameters/prodConsNoEPParClass.json"};
186 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
188 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
189 .hasMessage("error reading parameters from \"src/test/resources/parameters/prodConsNoEPParClass.json\"\n"
190 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" parameter "
191 + "\"parameterClassName\" value \"null\" invalid in JSON file");
195 public void testMismatchEventProtocolParClass() {
196 final String[] args = {"-p", "src/test/resources/parameters/prodConsMismatchEPParClass.json"};
197 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
199 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
200 "error reading parameters from " + "\"src/test/resources/parameters/prodConsMismatchEPParClass.json\"\n"
201 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_BEL\" "
202 + "does not match plugin \"SUPER_TOK_DEL\" in "
203 + "\"org.onap.policy.apex.service.engine.parameters.dummyclasses."
204 + "SuperTokenDelimitedEventProtocolParameters\", "
205 + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"");
209 public void testWrongTypeEventProtocolParClass() {
210 final String[] args = {"-p", "src/test/resources/parameters/prodConsWrongTypeEPParClass.json"};
211 final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
213 assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
214 "error reading parameters from " + "\"src/test/resources/parameters/prodConsWrongTypeEPParClass.json\"\n"
215 + "(ParameterRuntimeException):could not create default parameters for event protocol "
216 + "\"SUPER_TOK_DEL\"\n" + "class org.onap.policy.apex.service.engine."
217 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters "
218 + "cannot be cast to class org.onap.policy.apex.service."
219 + "parameters.eventprotocol.EventProtocolParameters (org.onap.policy.apex.service.engine.parameters"
220 + ".dummyclasses.SuperDooperCarrierTechnologyParameters and org.onap.policy.apex.service.parameters"
221 + ".eventprotocol.EventProtocolParameters are in unnamed module of loader 'app')");