bfda220a5bfe7df71ef632da2f5bb3b76c36226f
[policy/apex-pdp.git] /
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.main.ApexCommandLineArguments;
28 import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperDistributorParameters;
29 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
30 import org.onap.policy.apex.service.parameters.ApexParameters;
31 import org.onap.policy.common.parameters.ParameterException;
32
33 /**
34  * Test for an empty parameter file.
35  * 
36  * @author Liam Fallon (liam.fallon@ericsson.com)
37  */
38 public class ContextParameterTests {
39
40     @Test
41     public void noParamsTest() {
42         final String[] args =
43             { "-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 badParamsTest() {
58         final String[] args =
59             { "-c", "src/test/resources/parameters/serviceContextBadParams.json" };
60         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
61
62         try {
63             new ApexParameterHandler().getParameters(arguments);
64             fail("This test should throw an exception");
65         } catch (final ParameterException e) {
66             assertEquals("error reading parameters from \"src/test/resources/parameters/serviceContextBadParams.json\""
67                             + "\n(ParameterRuntimeException):failed to deserialize the parameters for "
68                             + "\"contextParameters\" to parameter class \"hello\"\njava.lang.ClassNotFoundException: hello",
69                             e.getMessage());
70         }
71     }
72
73     @Test
74     public void badPluginParamNameTest() {
75         final String[] args =
76             { "-c", "src/test/resources/parameters/serviceContextBadPluginNameParams.json" };
77         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
78
79         try {
80             new ApexParameterHandler().getParameters(arguments);
81             fail("This test should throw an exception");
82         } catch (final ParameterException e) {
83             assertEquals("error reading parameters from "
84                             + "\"src/test/resources/parameters/serviceContextBadPluginNameParams.json\"\n"
85                             + "(ParameterRuntimeException):could not find field \"parameterClassName\" in "
86                             + "\"contextParameters\" entry", e.getMessage());
87         }
88     }
89
90     @Test
91     public void badClassParamTest() {
92         final String[] args =
93             { "-c", "src/test/resources/parameters/serviceContextBadClassParams.json" };
94         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
95
96         try {
97             new ApexParameterHandler().getParameters(arguments);
98             fail("This test should throw an exception");
99         } catch (final ParameterException e) {
100             assertEquals("error reading parameters from \"src/test/resources/parameters/serviceContextBadClassParams.json\""
101                             + "\n(ParameterRuntimeException):failed to deserialize 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 badPluginClassTest() {
110         final String[] args =
111             { "-c", "src/test/resources/parameters/serviceContextBadPluginClassParams.json" };
112         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
113
114         try {
115             new ApexParameterHandler().getParameters(arguments);
116             fail("This test should throw an exception");
117         } catch (final ParameterException e) {
118             assertEquals("error reading parameters from "
119                             + "\"src/test/resources/parameters/serviceContextBadPluginClassParams.json\""
120                             + "\n(ClassCastException):org.onap.policy.apex.service.engine.parameters.dummyclasses."
121                             + "SuperDooperExecutorParameters"
122                             + " cannot be cast to org.onap.policy.apex.context.parameters.ContextParameters",
123                             e.getMessage());
124         }
125     }
126
127     @Test
128     public void okFlushParamTest() {
129         final String[] args =
130             { "-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",
136                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
137                                             .getClass().getCanonicalName());
138             assertEquals(123456, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
139                             .getPersistorParameters().getFlushPeriod());
140         } catch (final ParameterException e) {
141             fail("This test should not throw any exception: " + e.getMessage());
142         }
143     }
144
145     @Test
146     public void okDefaultParamTest() {
147         final String[] args =
148             { "-c", "src/test/resources/parameters/serviceContextOKDefaultParams.json" };
149         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
150
151         try {
152             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
153             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters",
154                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
155                                             .getClass().getCanonicalName());
156             assertEquals(300000, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
157                             .getPersistorParameters().getFlushPeriod());
158         } catch (final ParameterException e) {
159             fail("This test should not throw any exception: " + e.getMessage());
160         }
161     }
162
163     @Test
164     public void okDistParamTest() {
165         final String[] args =
166             { "-c", "src/test/resources/parameters/serviceContextOKDistParams.json" };
167         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
168
169         try {
170             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
171             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters",
172                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
173                                             .getClass().getCanonicalName());
174             assertEquals("org.onap.policy.apex.context.parameters.DistributorParameters",
175                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
176                                             .getDistributorParameters().getClass().getCanonicalName());
177         } catch (final ParameterException e) {
178             fail("This test should not throw any exception: " + e.getMessage());
179         }
180     }
181
182     @Test
183     public void okFullDefaultParamTest() {
184         final String[] args =
185             { "-c", "src/test/resources/parameters/goodParams.json" };
186         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
187
188         try {
189             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
190             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters",
191                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
192                                             .getClass().getCanonicalName());
193             assertEquals("org.onap.policy.apex.context.parameters.DistributorParameters",
194                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
195                                             .getDistributorParameters().getClass().getCanonicalName());
196             assertEquals("org.onap.policy.apex.context.parameters.LockManagerParameters",
197                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
198                                             .getLockManagerParameters().getClass().getCanonicalName());
199             assertEquals("org.onap.policy.apex.context.parameters.PersistorParameters",
200                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
201                                             .getPersistorParameters().getClass().getCanonicalName());
202             assertEquals(300000, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
203                             .getPersistorParameters().getFlushPeriod());
204         } catch (final ParameterException e) {
205             fail("This test should not throw any exception: " + e.getMessage());
206         }
207     }
208
209     @Test
210     public void okFullParamTest() {
211         final String[] args =
212             { "-c", "src/test/resources/parameters/serviceContextOKFullParams.json" };
213         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
214
215         try {
216             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
217             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters",
218                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
219                                             .getClass().getCanonicalName());
220             assertEquals("org.onap.policy.apex.context.parameters.LockManagerParameters",
221                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
222                                             .getLockManagerParameters().getClass().getCanonicalName());
223             assertEquals("org.onap.policy.apex.context.parameters.PersistorParameters",
224                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
225                                             .getPersistorParameters().getClass().getCanonicalName());
226             assertEquals(123456, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
227                             .getPersistorParameters().getFlushPeriod());
228
229             final SuperDooperDistributorParameters infinispanParameters = (SuperDooperDistributorParameters) parameters
230                             .getEngineServiceParameters().getEngineParameters().getContextParameters()
231                             .getDistributorParameters();
232             assertEquals("org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperDistributorParameters",
233                             infinispanParameters.getClass().getCanonicalName());
234             assertEquals("my/lovely/configFile.xml", infinispanParameters.getConfigFile());
235             assertEquals("holy/stone.xml", infinispanParameters.getJgroupsFile());
236             assertEquals(false, infinispanParameters.isPreferIPv4Stack());
237             assertEquals("fatherted", infinispanParameters.getJgroupsBindAddress());
238
239         } catch (final ParameterException e) {
240             fail("This test should not throw any exception: " + e.getMessage());
241         }
242     }
243
244     @Test
245     public void badClassDistParamTest() {
246         final String[] args =
247             { "-c", "src/test/resources/parameters/serviceContextBadClassDistParams.json" };
248         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
249
250         try {
251             new ApexParameterHandler().getParameters(arguments);
252             fail("This test should throw an exception");
253         } catch (final ParameterException e) {
254             assertEquals("error reading parameters from "
255                             + "\"src/test/resources/parameters/serviceContextBadClassDistParams.json\"\n"
256                             + "(ClassCastException):org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to"
257                             + " org.onap.policy.apex.context.parameters.DistributorParameters", e.getMessage());
258         }
259     }
260
261     @Test
262     public void badClassLockParamTest() {
263         final String[] args =
264             { "-c", "src/test/resources/parameters/serviceContextBadClassLockParams.json" };
265         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
266
267         try {
268             new ApexParameterHandler().getParameters(arguments);
269             fail("This test should throw an exception");
270         } catch (final ParameterException e) {
271             assertEquals("error reading parameters from "
272                             + "\"src/test/resources/parameters/serviceContextBadClassLockParams.json\"\n"
273                             + "(ClassCastException):org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to"
274                             + " org.onap.policy.apex.context.parameters.LockManagerParameters", e.getMessage());
275         }
276     }
277
278     @Test
279     public void badClassPersistParamTest() {
280         final String[] args =
281             { "-c", "src/test/resources/parameters/serviceContextBadClassPersistParams.json" };
282         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
283
284         try {
285             new ApexParameterHandler().getParameters(arguments);
286             fail("This test should throw an exception");
287         } catch (final ParameterException e) {
288             assertEquals("error reading parameters from "
289                             + "\"src/test/resources/parameters/serviceContextBadClassPersistParams.json\"\n"
290                             + "(ClassCastException):org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to"
291                             + " org.onap.policy.apex.context.parameters.PersistorParameters", e.getMessage());
292         }
293     }
294 }