f6d39f029b1c0e8ac19ef642d6d6ea859d41c2b6
[policy/apex-pdp.git] / services / services-engine / src / test / java / org / onap / policy / apex / service / engine / parameters / ContextParameterTests.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2020 Nordix Foundation.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.apex.service.engine.parameters;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.fail;
26
27 import org.junit.Test;
28 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
29 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperDistributorParameters;
30 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
31 import org.onap.policy.apex.service.parameters.ApexParameters;
32 import org.onap.policy.common.parameters.ParameterException;
33
34 /**
35  * Test for an empty parameter file.
36  *
37  * @author Liam Fallon (liam.fallon@ericsson.com)
38  */
39 public class ContextParameterTests {
40
41     @Test
42     public void testNoParamsTest() {
43         final String[] args = {"-c", "src/test/resources/parameters/serviceContextNoParams.json"};
44         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
45
46         try {
47             new ApexParameterHandler().getParameters(arguments);
48             fail("This test should throw an exception");
49         } catch (final ParameterException e) {
50             assertEquals("error reading parameters from \"src/test/resources/parameters/serviceContextNoParams.json\"\n"
51                     + "(ParameterRuntimeException):could not find field \"parameterClassName\" in "
52                     + "\"contextParameters\" entry", e.getMessage());
53         }
54     }
55
56     @Test
57     public void testBadParamsTest() {
58         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadParams.json"};
59         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
60
61         try {
62             new ApexParameterHandler().getParameters(arguments);
63             fail("This test should throw an exception");
64         } catch (final ParameterException e) {
65             assertEquals("error reading parameters from \"src/test/resources/parameters/serviceContextBadParams.json\""
66                     + "\n(ParameterRuntimeException):failed to deserialize the parameters for "
67                     + "\"contextParameters\" to parameter class "
68                     + "\"hello\"\njava.lang.ClassNotFoundException: hello", e.getMessage());
69         }
70     }
71
72     @Test
73     public void testBadPluginParamNameTest() {
74         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadPluginNameParams.json"};
75         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
76
77         try {
78             new ApexParameterHandler().getParameters(arguments);
79             fail("This test should throw an exception");
80         } catch (final ParameterException e) {
81             assertEquals("error reading parameters from "
82                     + "\"src/test/resources/parameters/serviceContextBadPluginNameParams.json\"\n"
83                     + "(ParameterRuntimeException):could not find field \"parameterClassName\" in "
84                     + "\"contextParameters\" entry", e.getMessage());
85         }
86     }
87
88     @Test
89     public void testBadClassParamTest() {
90         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassParams.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 ParameterException e) {
97             assertEquals(
98                     "error reading parameters from "
99                             + "\"src/test/resources/parameters/serviceContextBadClassParams.json\""
100                             + "\n(ParameterRuntimeException):failed to deserialize "
101                             + "the parameters for \"contextParameters\""
102                             + " to parameter class \"java.lang.Integer\"\ncom.google.gson.JsonSyntaxException: "
103                             + "java.lang.IllegalStateException: Expected NUMBER but was BEGIN_OBJECT at path $",
104                     e.getMessage());
105         }
106     }
107
108     @Test
109     public void testBadPluginClassTest() {
110         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadPluginClassParams.json"};
111         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
112
113         try {
114             new ApexParameterHandler().getParameters(arguments);
115             fail("This test should throw an exception");
116         } catch (final ParameterException e) {
117             assertEquals("error reading parameters from "
118                     + "\"src/test/resources/parameters/serviceContextBadPluginClassParams.json\""
119                     + "\n(ClassCastException):class org.onap.policy.apex.service.engine.parameters."
120                     + "dummyclasses.SuperDooperExecutorParameters"
121                     + " cannot be cast to class org.onap.policy.apex.context.parameters.ContextParameters "
122                     + "(org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperExecutorParameters and "
123                     + "org.onap.policy.apex.context.parameters.ContextParameters are "
124                     + "in unnamed module of loader 'app')", e.getMessage());
125         }
126     }
127
128     @Test
129     public void testOkFlushParamTest() {
130         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKFlushParams.json"};
131         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
132
133         try {
134             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
135             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
136                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getClass().getName());
137             assertEquals(123456, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
138                     .getPersistorParameters().getFlushPeriod());
139         } catch (final ParameterException e) {
140             fail("This test should not throw any exception: " + e.getMessage());
141         }
142     }
143
144     @Test
145     public void testOkDefaultParamTest() {
146         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKDefaultParams.json"};
147         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
148
149         try {
150             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
151             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
152                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getClass().getName());
153             assertEquals(300000, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
154                     .getPersistorParameters().getFlushPeriod());
155         } catch (final ParameterException e) {
156             fail("This test should not throw any exception: " + e.getMessage());
157         }
158     }
159
160     @Test
161     public void testOkDistParamTest() {
162         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKDistParams.json"};
163         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
164
165         try {
166             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
167             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
168                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getClass().getName());
169             assertEquals("org.onap.policy.apex.context.parameters.DistributorParameters",
170                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
171                             .getDistributorParameters().getClass().getName());
172         } catch (final ParameterException e) {
173             fail("This test should not throw any exception: " + e.getMessage());
174         }
175     }
176
177     @Test
178     public void testOkFullDefaultParamTest() {
179         final String[] args = {"-c", "src/test/resources/parameters/goodParams.json"};
180         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
181
182         try {
183             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
184             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
185                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getClass().getName());
186             assertEquals("org.onap.policy.apex.context.parameters.DistributorParameters",
187                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
188                             .getDistributorParameters().getClass().getName());
189             assertEquals("org.onap.policy.apex.context.parameters.LockManagerParameters",
190                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
191                             .getLockManagerParameters().getClass().getName());
192             assertEquals("org.onap.policy.apex.context.parameters.PersistorParameters",
193                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
194                             .getPersistorParameters().getClass().getName());
195             assertEquals(300000, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
196                     .getPersistorParameters().getFlushPeriod());
197         } catch (final ParameterException e) {
198             fail("This test should not throw any exception: " + e.getMessage());
199         }
200     }
201
202     @Test
203     public void testOkFullParamTest() {
204         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKFullParams.json"};
205         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
206
207         try {
208             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
209             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
210                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getClass().getName());
211             assertEquals("org.onap.policy.apex.context.parameters.LockManagerParameters",
212                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
213                             .getLockManagerParameters().getClass().getName());
214             assertEquals("org.onap.policy.apex.context.parameters.PersistorParameters",
215                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
216                             .getPersistorParameters().getClass().getName());
217             assertEquals(123456, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
218                     .getPersistorParameters().getFlushPeriod());
219
220             final SuperDooperDistributorParameters infinispanParameters =
221                     (SuperDooperDistributorParameters) parameters.getEngineServiceParameters().getEngineParameters()
222                             .getContextParameters().getDistributorParameters();
223             assertEquals("org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperDistributorParameters",
224                     infinispanParameters.getClass().getName());
225             assertEquals("my/lovely/configFile.xml", infinispanParameters.getConfigFile());
226             assertEquals("holy/stone.xml", infinispanParameters.getJgroupsFile());
227             assertEquals(false, infinispanParameters.isPreferIPv4Stack());
228             assertEquals("fatherted", infinispanParameters.getJgroupsBindAddress());
229
230         } catch (final ParameterException e) {
231             fail("This test should not throw any exception: " + e.getMessage());
232         }
233     }
234
235     @Test
236     public void testBadClassDistParamTest() {
237         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassDistParams.json"};
238         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
239
240         try {
241             new ApexParameterHandler().getParameters(arguments);
242             fail("This test should throw an exception");
243         } catch (final ParameterException e) {
244             assertEquals("error reading parameters from "
245                     + "\"src/test/resources/parameters/serviceContextBadClassDistParams.json\"\n"
246                     + "(ClassCastException):class "
247                     + "org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to class"
248                     + " org.onap.policy.apex.context.parameters.DistributorParameters (org.onap.policy.apex.context."
249                     + "parameters.ContextParameters and org.onap.policy.apex.context.parameters.DistributorParameters "
250                     + "are in unnamed module of loader 'app')", e.getMessage());
251         }
252     }
253
254     @Test
255     public void testBadClassLockParamTest() {
256         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassLockParams.json"};
257         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
258
259         try {
260             new ApexParameterHandler().getParameters(arguments);
261             fail("This test should throw an exception");
262         } catch (final ParameterException e) {
263             assertEquals("error reading parameters from "
264                     + "\"src/test/resources/parameters/serviceContextBadClassLockParams.json\"\n"
265                     + "(ClassCastException):class "
266                     + "org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to class "
267                     + "org.onap.policy.apex.context.parameters.LockManagerParameters (org.onap.policy.apex.context."
268                     + "parameters.ContextParameters and org.onap.policy.apex.context.parameters.LockManagerParameters "
269                     + "are in unnamed module of loader 'app')", e.getMessage());
270         }
271     }
272
273     @Test
274     public void testBadClassPersistParamTest() {
275         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassPersistParams.json"};
276         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
277
278         try {
279             new ApexParameterHandler().getParameters(arguments);
280             fail("This test should throw an exception");
281         } catch (final ParameterException e) {
282             assertEquals("error reading parameters from "
283                     + "\"src/test/resources/parameters/serviceContextBadClassPersistParams.json\"\n"
284                     + "(ClassCastException):class "
285                     + "org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to class "
286                     + "org.onap.policy.apex.context.parameters.PersistorParameters (org.onap.policy.apex.context."
287                     + "parameters.ContextParameters and org.onap.policy.apex.context.parameters.PersistorParameters "
288                     + "are in unnamed module of loader 'app')", e.getMessage());
289         }
290     }
291 }