APEX standalone support for ToscaPolicy format
[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  *  Modifications Copyright (C) 2019-2020 Nordix Foundation.
5  *  Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  * SPDX-License-Identifier: Apache-2.0
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.policy.apex.service.engine.parameters;
24
25 import static org.assertj.core.api.Assertions.assertThatThrownBy;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertTrue;
28
29 import org.junit.Test;
30 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.FileCarrierTechnologyParameters;
31 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
32 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
33 import org.onap.policy.apex.service.parameters.ApexParameters;
34 import org.onap.policy.common.parameters.ParameterException;
35
36 /**
37  * Test for an empty parameter file.
38  *
39  * @author Liam Fallon (liam.fallon@ericsson.com)
40  */
41 public class ProducerConsumerTests {
42     @Test
43     public void testGoodParametersTest() throws ParameterException {
44         final String[] args = {"-p", "src/test/resources/parameters/goodParams.json"};
45         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
46
47         final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
48
49         assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
50         assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
51         assertEquals(45, parameters.getEngineServiceParameters().getId());
52         assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
53         assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
54         assertEquals("FILE",
55             parameters.getEventOutputParameters().get("FirstProducer").getCarrierTechnologyParameters().getLabel());
56         assertEquals("JSON",
57             parameters.getEventOutputParameters().get("FirstProducer").getEventProtocolParameters().getLabel());
58         assertEquals("FILE",
59             parameters.getEventOutputParameters().get("MyOtherProducer").getCarrierTechnologyParameters().getLabel());
60         assertEquals("JSON",
61             parameters.getEventOutputParameters().get("MyOtherProducer").getEventProtocolParameters().getLabel());
62         assertEquals("FILE",
63             parameters.getEventInputParameters().get("TheFileConsumer1").getCarrierTechnologyParameters().getLabel());
64         assertEquals("JSON",
65             parameters.getEventInputParameters().get("TheFileConsumer1").getEventProtocolParameters().getLabel());
66         assertEquals("SUPER_DOOPER", parameters.getEventInputParameters().get("MySuperDooperConsumer1")
67             .getCarrierTechnologyParameters().getLabel());
68         assertEquals("SUPER_TOK_DEL",
69             parameters.getEventInputParameters().get("MySuperDooperConsumer1").getEventProtocolParameters().getLabel());
70     }
71
72     @Test
73     public void testNoCarrierTechnology() {
74         final String[] args = {"-p", "src/test/resources/parameters/prodConsNoCT.json"};
75         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
76
77         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
78             .hasMessage("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoCT.json\"\n"
79                 + "parameter group \"APEX_PARAMETERS\" type "
80                 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
81                 + "parameter group has status INVALID\n" + "  parameter group map \"eventInputParameters\" INVALID, "
82                 + "parameter group map has status INVALID\n" + "    parameter group \"aConsumer\" type "
83                 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID,"
84                 + " parameter group has status INVALID\n" + "      parameter group \"UNDEFINED\" INVALID, "
85                 + "event handler carrierTechnologyParameters not specified or blank\n");
86     }
87
88     @Test
89     public void testNoEventProcol() {
90         final String[] args = {"-p", "src/test/resources/parameters/prodConsNoEP.json"};
91         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
92
93         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
94             .hasMessage("validation error(s) on parameters from \"src/test/resources/parameters/prodConsNoEP.json\"\n"
95                 + "parameter group \"APEX_PARAMETERS\" type "
96                 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
97                 + "parameter group has status INVALID\n" + "  parameter group map \"eventOutputParameters\" INVALID, "
98                 + "parameter group map has status INVALID\n" + "    parameter group \"aProducer\" type "
99                 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
100                 + ", parameter group has status INVALID\n" + "      parameter group \"UNDEFINED\" INVALID, "
101                 + "event handler eventProtocolParameters not specified or blank\n"
102                 + "  parameter group map \"eventInputParameters\" INVALID, "
103                 + "parameter group map has status INVALID\n" + "    parameter group \"aConsumer\" type "
104                 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" INVALID"
105                 + ", parameter group has status INVALID\n" + "      parameter group \"FILE\" type "
106                 + "\"org.onap.policy.apex.service.engine.event.impl."
107                 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
108                 + "parameter group has status INVALID\n"
109                 + "        field \"fileName\" type \"java.lang.String\" value \"null\" INVALID, "
110                 + "\"null\" invalid, must be specified as a non-empty string\n");
111     }
112
113     @Test
114     public void testNoCarrierTechnologyParClass() {
115         final String[] args = {"-p", "src/test/resources/parameters/prodConsNoCTParClass.json"};
116         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
117
118         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
119             .hasMessage("error reading parameters from \"src/test/resources/parameters/prodConsNoCTParClass.json\"\n"
120                 + "(ParameterRuntimeException):carrier technology \"SUPER_DOOPER\" "
121                 + "parameter \"parameterClassName\" value \"null\" invalid in JSON file");
122     }
123
124     @Test
125     public void testMismatchCarrierTechnologyParClass() {
126         final String[] args = {"-p", "src/test/resources/parameters/prodConsMismatchCTParClass.json"};
127         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
128
129         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
130             "error reading parameters from " + "\"src/test/resources/parameters/prodConsMismatchCTParClass.json\"\n"
131                 + "(ParameterRuntimeException):carrier technology \"SUPER_LOOPER\" "
132                 + "does not match plugin \"SUPER_DOOPER\" in \"" + "org.onap.policy.apex.service.engine."
133                 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters"
134                 + "\", specify correct carrier technology parameter plugin " + "in parameter \"parameterClassName\"");
135     }
136
137     @Test
138     public void testWrongTypeCarrierTechnologyParClass() {
139         final String[] args = {"-p", "src/test/resources/parameters/prodConsWrongTypeCTParClass.json"};
140         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
141
142         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
143             "error reading parameters from " + "\"src/test/resources/parameters/prodConsWrongTypeCTParClass.json\"\n"
144                 + "(ParameterRuntimeException):could not create default parameters for carrier technology "
145                 + "\"SUPER_DOOPER\"\n" + "class org.onap.policy.apex.service.engine.parameters.dummyclasses."
146                 + "SuperTokenDelimitedEventProtocolParameters cannot be cast to class "
147                 + "org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters (org.onap."
148                 + "policy.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters "
149                 + "and org.onap.policy.apex.service.parameters.carriertechnology.CarrierTechnologyParameters are in"
150                 + " unnamed module of loader 'app')");
151     }
152
153     @Test
154     public void testOkFileNameCarrierTechnology() throws ParameterException {
155         final String[] args = {"-p", "src/test/resources/parameters/prodConsOKFileName.json"};
156         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
157
158         final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
159         final FileCarrierTechnologyParameters fileParams = (FileCarrierTechnologyParameters) parameters
160             .getEventOutputParameters().get("aProducer").getCarrierTechnologyParameters();
161         assertTrue(fileParams.getFileName().endsWith("target/aaa.json"));
162         assertEquals(false, fileParams.isStandardError());
163         assertEquals(false, fileParams.isStandardIo());
164         assertEquals(false, fileParams.isStreamingMode());
165
166     }
167
168     @Test
169     public void testBadFileNameCarrierTechnology() {
170         final String[] args = {"-p", "src/test/resources/parameters/prodConsBadFileName.json"};
171         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
172
173         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
174             "validation error(s) on parameters from " + "\"src/test/resources/parameters/prodConsBadFileName.json\"\n"
175                 + "parameter group \"APEX_PARAMETERS\" type "
176                 + "\"org.onap.policy.apex.service.parameters.ApexParameters\" INVALID, "
177                 + "parameter group has status INVALID\n" + "  parameter group map \"eventOutputParameters\" INVALID, "
178                 + "parameter group map has status INVALID\n" + "    parameter group \"aProducer\" type "
179                 + "\"org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters\" "
180                 + "INVALID, parameter group has status INVALID\n" + "      parameter group \"FILE\" type "
181                 + "\"org.onap.policy.apex.service.engine.event.impl."
182                 + "filecarrierplugin.FileCarrierTechnologyParameters\" INVALID, "
183                 + "parameter group has status INVALID\n" + "        field \"fileName\" type "
184                 + "\"java.lang.String\" value \"null\" INVALID, "
185                 + "\"null\" invalid, must be specified as a non-empty string\n");
186     }
187
188     @Test
189     public void testBadEventProtocolParClass() {
190         final String[] args = {"-p", "src/test/resources/parameters/prodConsBadEPParClass.json"};
191         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
192
193         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
194             .hasMessage("error reading parameters from \"src/test/resources/parameters/prodConsBadEPParClass.json\"\n"
195                 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" "
196                 + "does not match plugin \"JSON\" in \"org.onap.policy.apex.service.engine.event.impl"
197                 + ".jsonprotocolplugin.JsonEventProtocolParameters"
198                 + "\", specify correct event protocol parameter plugin in parameter \"parameterClassName\"");
199     }
200
201     @Test
202     public void testNoEventProtocolParClass() {
203         final String[] args = {"-p", "src/test/resources/parameters/prodConsNoEPParClass.json"};
204         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
205
206         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
207             .hasMessage("error reading parameters from \"src/test/resources/parameters/prodConsNoEPParClass.json\"\n"
208                 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_DEL\" parameter "
209                 + "\"parameterClassName\" value \"null\" invalid in JSON file");
210     }
211
212     @Test
213     public void testMismatchEventProtocolParClass() {
214         final String[] args = {"-p", "src/test/resources/parameters/prodConsMismatchEPParClass.json"};
215         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
216
217         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
218             "error reading parameters from " + "\"src/test/resources/parameters/prodConsMismatchEPParClass.json\"\n"
219                 + "(ParameterRuntimeException):event protocol \"SUPER_TOK_BEL\" "
220                 + "does not match plugin \"SUPER_TOK_DEL\" in "
221                 + "\"org.onap.policy.apex.service.engine.parameters.dummyclasses."
222                 + "SuperTokenDelimitedEventProtocolParameters\", "
223                 + "specify correct event protocol parameter plugin in parameter \"parameterClassName\"");
224     }
225
226     @Test
227     public void testWrongTypeEventProtocolParClass() {
228         final String[] args = {"-p", "src/test/resources/parameters/prodConsWrongTypeEPParClass.json"};
229         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
230
231         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments)).hasMessage(
232             "error reading parameters from " + "\"src/test/resources/parameters/prodConsWrongTypeEPParClass.json\"\n"
233                 + "(ParameterRuntimeException):could not create default parameters for event protocol "
234                 + "\"SUPER_TOK_DEL\"\n" + "class org.onap.policy.apex.service.engine."
235                 + "parameters.dummyclasses.SuperDooperCarrierTechnologyParameters "
236                 + "cannot be cast to class org.onap.policy.apex.service."
237                 + "parameters.eventprotocol.EventProtocolParameters (org.onap.policy.apex.service.engine.parameters"
238                 + ".dummyclasses.SuperDooperCarrierTechnologyParameters and org.onap.policy.apex.service.parameters"
239                 + ".eventprotocol.EventProtocolParameters are in unnamed module of loader 'app')");
240     }
241 }