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