792897f2371691a4ca3c70f3955681e239695af1
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2019 Nordix Foundation.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.apex.service.engine.parameters;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
26 import static org.junit.Assert.fail;
27
28 import org.junit.Test;
29 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.FileCarrierTechnologyParameters;
30 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
31 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
32 import org.onap.policy.apex.service.parameters.ApexParameters;
33 import org.onap.policy.common.parameters.ParameterException;
34
35 /**
36  * Test for an empty parameter file.
37  *
38  * @author Liam Fallon (liam.fallon@ericsson.com)
39  */
40 public class ProducerConsumerTests {
41     @Test
42     public void goodParametersTest() {
43         final String[] args =
44             { "-c", "src/test/resources/parameters/goodParams.json" };
45         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
46
47         try {
48             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
49
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());
55             assertEquals("FILE", parameters.getEventOutputParameters().get("FirstProducer")
56                             .getCarrierTechnologyParameters().getLabel());
57             assertEquals("JSON", parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters()
58                             .getLabel());
59             assertEquals("FILE", parameters.getEventOutputParameters().get("MyOtherProducer")
60                             .getCarrierTechnologyParameters().getLabel());
61             assertEquals("JSON", parameters.getEventOutputParameters().get("MyOtherProducer")
62                             .getEventProtocolParameters().getLabel());
63             assertEquals("FILE", parameters.getEventInputParameters().get("TheFileConsumer1")
64                             .getCarrierTechnologyParameters().getLabel());
65             assertEquals("JSON", parameters.getEventInputParameters().get("TheFileConsumer1")
66                             .getEventProtocolParameters().getLabel());
67             assertEquals("SUPER_DOOPER", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
68                             .getCarrierTechnologyParameters().getLabel());
69             assertEquals("SUPER_TOK_DEL", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
70                             .getEventProtocolParameters().getLabel());
71         } catch (final ParameterException e) {
72             fail("This test should not throw an exception");
73         }
74     }
75
76     @Test
77     public void noCarrierTechnology() {
78         final String[] args =
79             { "-c", "src/test/resources/parameters/prodConsNoCT.json" };
80         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
81
82         try {
83             new ApexParameterHandler().getParameters(arguments);
84             fail("This test should throw an exception");
85         } catch (final ParameterException e) {
86             assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoCT.json\"\n"
87                             + "parameter group \"APEX_PARAMETERS\" type "
88                             + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
89                             + "parameter group has status INVALID\n"
90                             + "  parameter group map \"eventInputParameters\" INVALID, "
91                             + "parameter group map has status INVALID\n" + "    parameter group \"aConsumer\" type "
92                             + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID,"
93                             + " parameter group has status INVALID\n" + "      parameter group \"UNDEFINED\" INVALID, "
94                             + "event handler carrierTechnologyParameters not specified or blank\n", e.getMessage());
95         }
96     }
97
98     @Test
99     public void noEventProcol() {
100         final String[] args =
101             { "-c", "src/test/resources/parameters/prodConsNoEP.json" };
102         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
103
104         try {
105             new ApexParameterHandler().getParameters(arguments);
106             fail("This test should throw an exception");
107         } catch (final ParameterException e) {
108             assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoEP.json\"\n"
109                             + "parameter group \"APEX_PARAMETERS\" type "
110                             + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
111                             + "parameter group has status INVALID\n"
112                             + "  parameter group map \"eventOutputParameters\" INVALID, "
113                             + "parameter group map has status INVALID\n" + "    parameter group \"aProducer\" type "
114                             + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
115                             + ", parameter group has status INVALID\n" + "      parameter group \"UNDEFINED\" INVALID, "
116                             + "event handler eventProtocolParameters not specified or blank\n"
117                             + "  parameter group map \"eventInputParameters\" INVALID, "
118                             + "parameter group map has status INVALID\n" + "    parameter group \"aConsumer\" type "
119                             + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
120                             + ", parameter group has status INVALID\n" + "      parameter group \"FILE\" type "
121                             + "\"org.onap.policy.apex.service.engine.event.impl."
122                             + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
123                             + "parameter group has status INVALID\n"
124                             + "        field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
125                             + "\"null\" invalid, must be specified as a non-empty string\n", e.getMessage());
126         }
127     }
128
129     @Test
130     public void noCarrierTechnologyParClass() {
131         final String[] args =
132             { "-c", "src/test/resources/parameters/prodConsNoCTParClass.json" };
133         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
134
135         try {
136             new ApexParameterHandler().getParameters(arguments);
137             fail("This test should throw an exception");
138         } catch (final ParameterException e) {
139             assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsNoCTParClass.json\"\n"
140                             + "(ParameterRuntimeException):carrier technology \"SUPER_DOOPER\" "
141                             + "parameter \"parameterClassName\" value \"null\" invalid in JSON file", e.getMessage());
142         }
143     }
144
145     @Test
146     public void mismatchCarrierTechnologyParClass() {
147         final String[] args =
148             { "-c", "src/test/resources/parameters/prodConsMismatchCTParClass.json" };
149         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
150
151         try {
152             new ApexParameterHandler().getParameters(arguments);
153             fail("This test should throw an exception");
154         } catch (final ParameterException e) {
155             assertEquals("error reading parameters from "
156                             + "\"src/test/resources/parameters/prodConsMismatchCTParClass.json\"\n"
157                             + "(ParameterRuntimeException):carrier technology \"SUPER_LOOPER\" "
158                             + "does not match plugin \"SUPER_DOOPER\" in \"" + "org.onap.policy.apex.service.engine."
159                             + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters"
160                             + "\", specify correct carrier technology parameter plugin "
161                             + "in parameter \"parameterClassName\"", e.getMessage());
162         }
163     }
164
165     @Test
166     public void wrongTypeCarrierTechnologyParClass() {
167         final String[] args =
168             { "-c", "src/test/resources/parameters/prodConsWrongTypeCTParClass.json" };
169         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
170
171         try {
172             new ApexParameterHandler().getParameters(arguments);
173             fail("This test should throw an exception");
174         } catch (final ParameterException e) {
175             assertEquals("error reading parameters from "
176                             + "\"src/test/resources/parameters/prodConsWrongTypeCTParClass.json\"\n"
177                             + "(ParameterRuntimeException):could not create default parameters for carrier technology "
178                             + "\"SUPER_DOOPER\"\n" + "org.onap.policy.apex.service.engine.parameters.dummyclasses."
179                             + "SuperTokenDelimitedEventProtocolParameters cannot be cast to "
180                             + "org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters",
181                             e.getMessage());
182         }
183     }
184
185     @Test
186     public void okFileNameCarrierTechnology() {
187         final String[] args =
188             { "-c", "src/test/resources/parameters/prodConsOKFileName.json" };
189         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
190
191         try {
192             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
193             final FileCarrierTechnologyParameters fileParams = (FileCarrierTechnologyParameters) parameters
194                             .getEventOutputParameters().get("aProducer").getCarrierTechnologyParameters();
195             assertTrue(fileParams.getFileName().endsWith("target/aaa.json"));
196             assertEquals(false, fileParams.isStandardError());
197             assertEquals(false, fileParams.isStandardIo());
198             assertEquals(false, fileParams.isStreamingMode());
199         } catch (final ParameterException e) {
200             fail("This test should not throw an exception");
201         }
202     }
203
204     @Test
205     public void badFileNameCarrierTechnology() {
206         final String[] args =
207             { "-c", "src/test/resources/parameters/prodConsBadFileName.json" };
208         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
209
210         try {
211             new ApexParameterHandler().getParameters(arguments);
212             fail("This test should throw an exception");
213         } catch (final ParameterException e) {
214             assertEquals("validation error(s) on parameters from "
215                             + "\"src/test/resources/parameters/prodConsBadFileName.json\"\n"
216                             + "parameter group \"APEX_PARAMETERS\" type "
217                             + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
218                             + "parameter group has status INVALID\n"
219                             + "  parameter group map \"eventOutputParameters\" INVALID, "
220                             + "parameter group map has status INVALID\n" + "    parameter group \"aProducer\" type "
221                             + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" "
222                             + "INVALID, parameter group has status INVALID\n" + "      parameter group \"FILE\" type "
223                             + "\"org.onap.policy.apex.service.engine.event.impl."
224                             + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
225                             + "parameter group has status INVALID\n" + "        field \"fileName\" type "
226                             + "\"java.lang.String\" value \"null\" INVALID, "
227                             + "\"null\" invalid, must be specified as a non-empty string\n", e.getMessage());
228         }
229     }
230
231     @Test
232     public void badEventProtocolParClass() {
233         final String[] args =
234             { "-c", "src/test/resources/parameters/prodConsBadEPParClass.json" };
235         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
236
237         try {
238             new ApexParameterHandler().getParameters(arguments);
239             fail("This test should throw an exception");
240         } catch (final ParameterException e) {
241             assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsBadEPParClass.json\"\n"
242                             + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" "
243                             + "does not match plugin \"JSON\" in \"org.onap.policy.apex.service.engine.event.impl"
244                             + ".jsonprotocolplugin.JsonEventProtocolParameters"
245                             + "\", specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
246                             e.getMessage());
247         }
248     }
249
250     @Test
251     public void noEventProtocolParClass() {
252         final String[] args =
253             { "-c", "src/test/resources/parameters/prodConsNoEPParClass.json" };
254         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
255
256         try {
257             new ApexParameterHandler().getParameters(arguments);
258             fail("This test should throw an exception");
259         } catch (final ParameterException e) {
260             assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsNoEPParClass.json\"\n"
261                             + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" parameter "
262                             + "\"parameterClassName\" value \"null\" invalid in JSON file", e.getMessage());
263         }
264     }
265
266     @Test
267     public void mismatchEventProtocolParClass() {
268         final String[] args =
269             { "-c", "src/test/resources/parameters/prodConsMismatchEPParClass.json" };
270         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
271
272         try {
273             new ApexParameterHandler().getParameters(arguments);
274             fail("This test should throw an exception");
275         } catch (final ParameterException e) {
276             assertEquals("error reading parameters from "
277                             + "\"src/test/resources/parameters/prodConsMismatchEPParClass.json\"\n"
278                             + "(ParameterRuntimeException):event protocol \"SUPER_TOK_BEL\" "
279                             + "does not match plugin \"SUPER_TOK_DEL\" in "
280                             + "\"org.onap.policy.apex.service.engine.parameters.dummyclasses."
281                             + "SuperTokenDelimitedEventProtocolParameters\", "
282                             + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
283                             e.getMessage());
284         }
285     }
286
287     @Test
288     public void wrongTypeEventProtocolParClass() {
289         final String[] args =
290             { "-c", "src/test/resources/parameters/prodConsWrongTypeEPParClass.json" };
291         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
292
293         try {
294             new ApexParameterHandler().getParameters(arguments);
295             fail("This test should throw an exception");
296         } catch (final ParameterException e) {
297             assertEquals("error reading parameters from "
298                             + "\"src/test/resources/parameters/prodConsWrongTypeEPParClass.json\"\n"
299                             + "(ParameterRuntimeException):could not create default parameters for event protocol "
300                             + "\"SUPER_TOK_DEL\"\n" + "org.onap.policy.apex.service.engine."
301                             + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters "
302                             + "cannot be cast to org.onap.policy.apex.service."
303                             + "parameters.eventprotocol.EventProtocolParameters", e.getMessage());
304         }
305     }
306 }