dad989913b2e8567b55ec1f30016771f64b289c0
[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.ApexParameterException;
30 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
31 import org.onap.policy.apex.service.parameters.ApexParameters;
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",
55                     parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters().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 ApexParameterException 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 ApexParameterException e) {
82             assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoCT.json\"\n"
83                     + "Apex parameters invalid\n" + " event input (aConsumer) parameters invalid\n"
84                     + "  event handler carrierTechnologyParameters not specified or blank", e.getMessage());
85         }
86     }
87
88     @Test
89     public void noEventProcol() {
90         final String[] args = {"-c", "src/test/resources/parameters/prodConsNoEP.json"};
91         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
92
93         try {
94             new ApexParameterHandler().getParameters(arguments);
95             fail("This test should throw an exception");
96         } catch (final ApexParameterException e) {
97             assertEquals("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoEP.json\"\n"
98                     + "Apex parameters invalid\n" + " event input (aConsumer) parameters invalid\n"
99                     + "  fileName not specified or is blank or null, it must be specified as a valid file location\n"
100                     + " event output (aProducer) parameters invalid\n"
101                     + "  event handler eventProtocolParameters not specified or blank", e.getMessage());
102         }
103     }
104
105     @Test
106     public void noCarrierTechnologyParClass() {
107         final String[] args = {"-c", "src/test/resources/parameters/prodConsNoCTParClass.json"};
108         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
109
110         try {
111             new ApexParameterHandler().getParameters(arguments);
112             fail("This test should throw an exception");
113         } catch (final ApexParameterException e) {
114             assertEquals(
115                     "error reading parameters from \"src/test/resources/parameters/prodConsNoCTParClass.json\"\n"
116                             + "(ApexParameterRuntimeException):carrier technology \"SUPER_DOOPER\" does not match plugin \"FILE\" in "
117                             + "\"com.ericsson.apex.service.engine.event.impl.filecarrierplugin.FILECarrierTechnologyParameters\", "
118                             + "specify correct carrier technology parameter plugin in parameter \"parameterClassName\"",
119                     e.getMessage());
120         }
121     }
122
123     @Test
124     public void mismatchCarrierTechnologyParClass() {
125         final String[] args = {"-c", "src/test/resources/parameters/prodConsMismatchCTParClass.json"};
126         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
127
128         try {
129             new ApexParameterHandler().getParameters(arguments);
130             fail("This test should throw an exception");
131         } catch (final ApexParameterException e) {
132             assertEquals(
133                     "error reading parameters from \"src/test/resources/parameters/prodConsMismatchCTParClass.json\"\n"
134                             + "(ApexParameterRuntimeException):carrier technology \"SUPER_LOOPER\" does not match plugin \"SUPER_DOOPER\" in "
135                             + "\"com.ericsson.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters\", "
136                             + "specify correct carrier technology parameter plugin in parameter \"parameterClassName\"",
137                     e.getMessage());
138         }
139     }
140
141     @Test
142     public void wrongTypeCarrierTechnologyParClass() {
143         final String[] args = {"-c", "src/test/resources/parameters/prodConsWrongTypeCTParClass.json"};
144         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
145
146         try {
147             new ApexParameterHandler().getParameters(arguments);
148             fail("This test should throw an exception");
149         } catch (final ApexParameterException e) {
150             assertEquals(
151                     "error reading parameters from \"src/test/resources/parameters/prodConsWrongTypeCTParClass.json\"\n"
152                             + "(ApexParameterRuntimeException):could not create default parameters for carrier technology \"SUPER_DOOPER\"\n"
153                             + "com.ericsson.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters "
154                             + "cannot be cast to com.ericsson.apex.service.parameters.carriertechnology.CarrierTechnologyParameters",
155                     e.getMessage());
156         }
157     }
158
159     @Test
160     public void okFileNameCarrierTechnology() {
161         final String[] args = {"-c", "src/test/resources/parameters/prodConsOKFileName.json"};
162         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
163
164         try {
165             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
166             final FILECarrierTechnologyParameters fileParams = (FILECarrierTechnologyParameters) parameters
167                     .getEventOutputParameters().get("aProducer").getCarrierTechnologyParameters();
168             assertEquals("/tmp/aaa.json", fileParams.getFileName());
169             assertEquals(false, fileParams.isStandardError());
170             assertEquals(false, fileParams.isStandardIO());
171             assertEquals(false, fileParams.isStreamingMode());
172         } catch (final ApexParameterException e) {
173             fail("This test should not throw an exception");
174         }
175     }
176
177     @Test
178     public void badFileNameCarrierTechnology() {
179         final String[] args = {"-c", "src/test/resources/parameters/prodConsBadFileName.json"};
180         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
181
182         try {
183             new ApexParameterHandler().getParameters(arguments);
184             fail("This test should throw an exception");
185         } catch (final ApexParameterException e) {
186             assertEquals(
187                     "validation error(s) on parameters from \"src/test/resources/parameters/prodConsBadFileName.json\"\n"
188                             + "Apex parameters invalid\n" + " event output (aProducer) parameters invalid\n"
189                             + "  fileName not specified or is blank or null, it must be specified as a valid file location",
190                     e.getMessage());
191         }
192     }
193
194
195     @Test
196     public void badEventProtocolParClass() {
197         final String[] args = {"-c", "src/test/resources/parameters/prodConsBadEPParClass.json"};
198         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
199
200         try {
201             new ApexParameterHandler().getParameters(arguments);
202             fail("This test should throw an exception");
203         } catch (final ApexParameterException e) {
204             assertEquals(
205                     "error reading parameters from \"src/test/resources/parameters/prodConsBadEPParClass.json\"\n"
206                             + "(ApexParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" does not match plugin \"JSON\" in "
207                             + "\"com.ericsson.apex.service.engine.event.impl.jsonprotocolplugin.JSONEventProtocolParameters\", "
208                             + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
209                     e.getMessage());
210         }
211     }
212
213     @Test
214     public void noEventProtocolParClass() {
215         final String[] args = {"-c", "src/test/resources/parameters/prodConsNoEPParClass.json"};
216         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
217
218         try {
219             new ApexParameterHandler().getParameters(arguments);
220             fail("This test should throw an exception");
221         } catch (final ApexParameterException e) {
222             assertEquals(
223                     "error reading parameters from \"src/test/resources/parameters/prodConsNoEPParClass.json\"\n"
224                             + "(ApexParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" does not match plugin \"JSON\" in "
225                             + "\"com.ericsson.apex.service.engine.event.impl.jsonprotocolplugin.JSONEventProtocolParameters\", "
226                             + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
227                     e.getMessage());
228         }
229     }
230
231     @Test
232     public void mismatchEventProtocolParClass() {
233         final String[] args = {"-c", "src/test/resources/parameters/prodConsMismatchEPParClass.json"};
234         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
235
236         try {
237             new ApexParameterHandler().getParameters(arguments);
238             fail("This test should throw an exception");
239         } catch (final ApexParameterException e) {
240             assertEquals(
241                     "error reading parameters from \"src/test/resources/parameters/prodConsMismatchEPParClass.json\"\n"
242                             + "(ApexParameterRuntimeException):event protocol \"SUPER_TOK_BEL\" does not match plugin \"SUPER_TOK_DEL\" in "
243                             + "\"com.ericsson.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters\", "
244                             + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
245                     e.getMessage());
246         }
247     }
248
249     @Test
250     public void wrongTypeEventProtocolParClass() {
251         final String[] args = {"-c", "src/test/resources/parameters/prodConsWrongTypeEPParClass.json"};
252         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
253
254         try {
255             new ApexParameterHandler().getParameters(arguments);
256             fail("This test should throw an exception");
257         } catch (final ApexParameterException e) {
258             assertEquals(
259                     "error reading parameters from \"src/test/resources/parameters/prodConsWrongTypeEPParClass.json\"\n"
260                             + "(ApexParameterRuntimeException):could not create default parameters for event protocol \"SUPER_TOK_DEL\"\n"
261                             + "com.ericsson.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters "
262                             + "cannot be cast to com.ericsson.apex.service.parameters.eventprotocol.EventProtocolParameters",
263                     e.getMessage());
264         }
265     }
266 }