Checkstyle the services-engine package
[policy/apex-pdp.git] / services / services-engine / src / test / java / org / onap / policy / apex / service / engine / parameters / ProducerConsumerTests.java
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("error reading parameters from \"src/test/resources/parameters/prodConsNoCTParClass.json\"\n"
115                     + "(ApexParameterRuntimeException):carrier technology \"SUPER_DOOPER\" "
116                     + "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("error reading parameters from "
133                     + "\"src/test/resources/parameters/prodConsMismatchCTParClass.json\"\n"
134                     + "(ApexParameterRuntimeException):carrier technology \"SUPER_LOOPER\" "
135                     + "does not match plugin \"SUPER_DOOPER\" in \""
136                     + "com.ericsson.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters"
137                     + "\", specify correct carrier technology parameter plugin in parameter \"parameterClassName\"",
138                     e.getMessage());
139         }
140     }
141
142     @Test
143     public void wrongTypeCarrierTechnologyParClass() {
144         final String[] args = {"-c", "src/test/resources/parameters/prodConsWrongTypeCTParClass.json"};
145         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
146
147         try {
148             new ApexParameterHandler().getParameters(arguments);
149             fail("This test should throw an exception");
150         } catch (final ApexParameterException e) {
151             assertEquals("error reading parameters from "
152                     + "\"src/test/resources/parameters/prodConsWrongTypeCTParClass.json\"\n"
153                     + "(ApexParameterRuntimeException):could not create default parameters for carrier technology "
154                     + "\"SUPER_DOOPER\"\ncom.ericsson.apex.service.engine.parameters.dummyclasses."
155                     + "SuperTokenDelimitedEventProtocolParameters cannot be cast to "
156                     + "com.ericsson.apex.service.parameters.carriertechnology.CarrierTechnologyParameters",
157                     e.getMessage());
158         }
159     }
160
161     @Test
162     public void okFileNameCarrierTechnology() {
163         final String[] args = {"-c", "src/test/resources/parameters/prodConsOKFileName.json"};
164         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
165
166         try {
167             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
168             final FILECarrierTechnologyParameters fileParams = (FILECarrierTechnologyParameters) parameters
169                     .getEventOutputParameters().get("aProducer").getCarrierTechnologyParameters();
170             assertEquals("/tmp/aaa.json", fileParams.getFileName());
171             assertEquals(false, fileParams.isStandardError());
172             assertEquals(false, fileParams.isStandardIO());
173             assertEquals(false, fileParams.isStreamingMode());
174         } catch (final ApexParameterException e) {
175             fail("This test should not throw an exception");
176         }
177     }
178
179     @Test
180     public void badFileNameCarrierTechnology() {
181         final String[] args = {"-c", "src/test/resources/parameters/prodConsBadFileName.json"};
182         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
183
184         try {
185             new ApexParameterHandler().getParameters(arguments);
186             fail("This test should throw an exception");
187         } catch (final ApexParameterException e) {
188             assertEquals(
189                     "validation error(s) on parameters from \"src/test/resources/parameters/prodConsBadFileName.json\""
190                     + "\nApex parameters invalid\n" + " event output (aProducer) parameters invalid"
191                     + "\n fileName not specified or is blank or null, it must be specified as a valid file location",
192                     e.getMessage());
193         }
194     }
195
196
197     @Test
198     public void badEventProtocolParClass() {
199         final String[] args = {"-c", "src/test/resources/parameters/prodConsBadEPParClass.json"};
200         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
201
202         try {
203             new ApexParameterHandler().getParameters(arguments);
204             fail("This test should throw an exception");
205         } catch (final ApexParameterException e) {
206             assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsBadEPParClass.json\"\n"
207                     + "(ApexParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" does not match plugin \"JSON\" "
208                     + "in \"com.ericsson.apex.service.engine.event.impl.jsonprotocolplugin.JSONEventProtocolParameters"
209                     + "\", specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
210                     e.getMessage());
211         }
212     }
213
214     @Test
215     public void noEventProtocolParClass() {
216         final String[] args = {"-c", "src/test/resources/parameters/prodConsNoEPParClass.json"};
217         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
218
219         try {
220             new ApexParameterHandler().getParameters(arguments);
221             fail("This test should throw an exception");
222         } catch (final ApexParameterException e) {
223             assertEquals("error reading parameters from \"src/test/resources/parameters/prodConsNoEPParClass.json\"\n"
224                     + "(ApexParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" does not match plugin \"JSON\" "
225                     + "in \"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\" "
243                             + "does not match plugin \"SUPER_TOK_DEL\" in "
244                             + "\"com.ericsson.apex.service.engine.parameters.dummyclasses."
245                             + "SuperTokenDelimitedEventProtocolParameters\", "
246                             + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"",
247                     e.getMessage());
248         }
249     }
250
251     @Test
252     public void wrongTypeEventProtocolParClass() {
253         final String[] args = {"-c", "src/test/resources/parameters/prodConsWrongTypeEPParClass.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 ApexParameterException e) {
260             assertEquals("error reading parameters from "
261                     + "\"src/test/resources/parameters/prodConsWrongTypeEPParClass.json\"\n"
262                     + "(ApexParameterRuntimeException):could not create default parameters for event protocol "
263                     + "\"SUPER_TOK_DEL\"\n"
264                     + "com.ericsson.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters "
265                     + "cannot be cast to com.ericsson.apex.service.parameters.eventprotocol.EventProtocolParameters",
266                     e.getMessage());
267         }
268     }
269 }