374a2df14a96e695d4d17d6059b75060d1bed832
[policy/apex-pdp.git] /
1 /*-
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
8  * 
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  * 
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.
16  * 
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.service.engine.parameters;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.fail;
25
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;
32
33 /**
34  * Test for an empty parameter file.
35  * 
36  * @author Liam Fallon (liam.fallon@ericsson.com)
37  */
38 public class ProducerConsumerTests {
39     @Test
40     public void goodParametersTest() {
41         final String[] args =
42             { "-c", "src/test/resources/parameters/goodParams.json" };
43         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
44
45         try {
46             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
47
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()
56                             .getLabel());
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");
71         }
72     }
73
74     @Test
75     public void noCarrierTechnology() {
76         final String[] args =
77             { "-c", "src/test/resources/parameters/prodConsNoCT.json" };
78         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
79
80         try {
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());
93         }
94     }
95
96     @Test
97     public void noEventProcol() {
98         final String[] args =
99             { "-c", "src/test/resources/parameters/prodConsNoEP.json" };
100         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
101
102         try {
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());
125         }
126     }
127
128     @Test
129     public void noCarrierTechnologyParClass() {
130         final String[] args =
131             { "-c", "src/test/resources/parameters/prodConsNoCTParClass.json" };
132         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
133
134         try {
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());
141         }
142     }
143
144     @Test
145     public void mismatchCarrierTechnologyParClass() {
146         final String[] args =
147             { "-c", "src/test/resources/parameters/prodConsMismatchCTParClass.json" };
148         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
149
150         try {
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());
161         }
162     }
163
164     @Test
165     public void wrongTypeCarrierTechnologyParClass() {
166         final String[] args =
167             { "-c", "src/test/resources/parameters/prodConsWrongTypeCTParClass.json" };
168         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
169
170         try {
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",
180                             e.getMessage());
181         }
182     }
183
184     @Test
185     public void okFileNameCarrierTechnology() {
186         final String[] args =
187             { "-c", "src/test/resources/parameters/prodConsOKFileName.json" };
188         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
189
190         try {
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");
200         }
201     }
202
203     @Test
204     public void badFileNameCarrierTechnology() {
205         final String[] args =
206             { "-c", "src/test/resources/parameters/prodConsBadFileName.json" };
207         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
208
209         try {
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                             + "fileName not specified or is blank or null, "
227                             + "it must be specified as a valid file location\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 }