8bcc1bd375bd5aa112b5f8ee40b1f65fd5b28c84
[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 = { "-c", "src/test/resources/parameters/goodParams.json" };
42         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
43
44         try {
45             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
46
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()
55                             .getLabel());
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");
70         }
71     }
72
73     @Test
74     public void noCarrierTechnology() {
75         final String[] args = { "-c", "src/test/resources/parameters/prodConsNoCT.json" };
76         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
77
78         try {
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());
91         }
92     }
93
94     @Test
95     public void noEventProcol() {
96         final String[] args = { "-c", "src/test/resources/parameters/prodConsNoEP.json" };
97         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
98
99         try {
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());
122         }
123     }
124
125     @Test
126     public void noCarrierTechnologyParClass() {
127         final String[] args = { "-c", "src/test/resources/parameters/prodConsNoCTParClass.json" };
128         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
129
130         try {
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());
137         }
138     }
139
140     @Test
141     public void mismatchCarrierTechnologyParClass() {
142         final String[] args = { "-c", "src/test/resources/parameters/prodConsMismatchCTParClass.json" };
143         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
144
145         try {
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\"",
155                             e.getMessage());
156         }
157     }
158
159     @Test
160     public void wrongTypeCarrierTechnologyParClass() {
161         final String[] args = { "-c", "src/test/resources/parameters/prodConsWrongTypeCTParClass.json" };
162         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
163
164         try {
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",
174                             e.getMessage());
175         }
176     }
177
178     @Test
179     public void okFileNameCarrierTechnology() {
180         final String[] args = { "-c", "src/test/resources/parameters/prodConsOKFileName.json" };
181         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
182
183         try {
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");
193         }
194     }
195
196     @Test
197     public void badFileNameCarrierTechnology() {
198         final String[] args = { "-c", "src/test/resources/parameters/prodConsBadFileName.json" };
199         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
200
201         try {
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());
218         }
219     }
220
221     @Test
222     public void badEventProtocolParClass() {
223         final String[] args = { "-c", "src/test/resources/parameters/prodConsBadEPParClass.json" };
224         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
225
226         try {
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\"",
234                             e.getMessage());
235         }
236     }
237
238     @Test
239     public void noEventProtocolParClass() {
240         final String[] args = { "-c", "src/test/resources/parameters/prodConsNoEPParClass.json" };
241         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
242
243         try {
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());
250         }
251     }
252
253     @Test
254     public void mismatchEventProtocolParClass() {
255         final String[] args = { "-c", "src/test/resources/parameters/prodConsMismatchEPParClass.json" };
256         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
257
258         try {
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\"",
268                             e.getMessage());
269         }
270     }
271
272     @Test
273     public void wrongTypeEventProtocolParClass() {
274         final String[] args = { "-c", "src/test/resources/parameters/prodConsWrongTypeEPParClass.json" };
275         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
276
277         try {
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());
288         }
289     }
290 }