de78bb0fe4966d81b27a8317fc93aafaa985682b
[policy/apex-pdp.git] /
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 (org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperExecutorParameters and org.onap.policy.apex.context.parameters.ContextParameters are in unnamed module of loader 'app')",
122                     e.getMessage());
123         }
124     }
125
126     @Test
127     public void testOkFlushParamTest() {
128         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKFlushParams.json"};
129         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
130
131         try {
132             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
133             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
134                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getClass().getName());
135             assertEquals(123456, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
136                     .getPersistorParameters().getFlushPeriod());
137         } catch (final ParameterException e) {
138             fail("This test should not throw any exception: " + e.getMessage());
139         }
140     }
141
142     @Test
143     public void testOkDefaultParamTest() {
144         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKDefaultParams.json"};
145         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
146
147         try {
148             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
149             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
150                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getClass().getName());
151             assertEquals(300000, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
152                     .getPersistorParameters().getFlushPeriod());
153         } catch (final ParameterException e) {
154             fail("This test should not throw any exception: " + e.getMessage());
155         }
156     }
157
158     @Test
159     public void testOkDistParamTest() {
160         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKDistParams.json"};
161         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
162
163         try {
164             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
165             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
166                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getClass().getName());
167             assertEquals("org.onap.policy.apex.context.parameters.DistributorParameters",
168                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
169                             .getDistributorParameters().getClass().getName());
170         } catch (final ParameterException e) {
171             fail("This test should not throw any exception: " + e.getMessage());
172         }
173     }
174
175     @Test
176     public void testOkFullDefaultParamTest() {
177         final String[] args = {"-c", "src/test/resources/parameters/goodParams.json"};
178         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
179
180         try {
181             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
182             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
183                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getClass().getName());
184             assertEquals("org.onap.policy.apex.context.parameters.DistributorParameters",
185                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
186                             .getDistributorParameters().getClass().getName());
187             assertEquals("org.onap.policy.apex.context.parameters.LockManagerParameters",
188                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
189                             .getLockManagerParameters().getClass().getName());
190             assertEquals("org.onap.policy.apex.context.parameters.PersistorParameters",
191                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
192                             .getPersistorParameters().getClass().getName());
193             assertEquals(300000, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
194                     .getPersistorParameters().getFlushPeriod());
195         } catch (final ParameterException e) {
196             fail("This test should not throw any exception: " + e.getMessage());
197         }
198     }
199
200     @Test
201     public void testOkFullParamTest() {
202         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKFullParams.json"};
203         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
204
205         try {
206             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
207             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
208                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getClass().getName());
209             assertEquals("org.onap.policy.apex.context.parameters.LockManagerParameters",
210                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
211                             .getLockManagerParameters().getClass().getName());
212             assertEquals("org.onap.policy.apex.context.parameters.PersistorParameters",
213                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
214                             .getPersistorParameters().getClass().getName());
215             assertEquals(123456, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
216                     .getPersistorParameters().getFlushPeriod());
217
218             final SuperDooperDistributorParameters infinispanParameters =
219                     (SuperDooperDistributorParameters) parameters.getEngineServiceParameters().getEngineParameters()
220                             .getContextParameters().getDistributorParameters();
221             assertEquals("org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperDistributorParameters",
222                     infinispanParameters.getClass().getName());
223             assertEquals("my/lovely/configFile.xml", infinispanParameters.getConfigFile());
224             assertEquals("holy/stone.xml", infinispanParameters.getJgroupsFile());
225             assertEquals(false, infinispanParameters.isPreferIPv4Stack());
226             assertEquals("fatherted", infinispanParameters.getJgroupsBindAddress());
227
228         } catch (final ParameterException e) {
229             fail("This test should not throw any exception: " + e.getMessage());
230         }
231     }
232
233     @Test
234     public void testBadClassDistParamTest() {
235         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassDistParams.json"};
236         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
237
238         try {
239             new ApexParameterHandler().getParameters(arguments);
240             fail("This test should throw an exception");
241         } catch (final ParameterException e) {
242             assertEquals("error reading parameters from "
243                     + "\"src/test/resources/parameters/serviceContextBadClassDistParams.json\"\n"
244                     + "(ClassCastException):class "
245                     + "org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to class"
246                     + " org.onap.policy.apex.context.parameters.DistributorParameters (org.onap.policy.apex.context."
247                     + "parameters.ContextParameters and org.onap.policy.apex.context.parameters.DistributorParameters "
248                     + "are in unnamed module of loader 'app')", e.getMessage());
249         }
250     }
251
252     @Test
253     public void testBadClassLockParamTest() {
254         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassLockParams.json"};
255         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
256
257         try {
258             new ApexParameterHandler().getParameters(arguments);
259             fail("This test should throw an exception");
260         } catch (final ParameterException e) {
261             assertEquals("error reading parameters from "
262                     + "\"src/test/resources/parameters/serviceContextBadClassLockParams.json\"\n"
263                     + "(ClassCastException):class "
264                     + "org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to class "
265                     + "org.onap.policy.apex.context.parameters.LockManagerParameters (org.onap.policy.apex.context."
266                     + "parameters.ContextParameters and org.onap.policy.apex.context.parameters.LockManagerParameters "
267                     + "are in unnamed module of loader 'app')", e.getMessage());
268         }
269     }
270
271     @Test
272     public void testBadClassPersistParamTest() {
273         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassPersistParams.json"};
274         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
275
276         try {
277             new ApexParameterHandler().getParameters(arguments);
278             fail("This test should throw an exception");
279         } catch (final ParameterException e) {
280             assertEquals("error reading parameters from "
281                     + "\"src/test/resources/parameters/serviceContextBadClassPersistParams.json\"\n"
282                     + "(ClassCastException):class "
283                     + "org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to class "
284                     + "org.onap.policy.apex.context.parameters.PersistorParameters (org.onap.policy.apex.context."
285                     + "parameters.ContextParameters and org.onap.policy.apex.context.parameters.PersistorParameters "
286                     + "are in unnamed module of loader 'app')", e.getMessage());
287         }
288     }
289 }