56e716dd67c3cc14ea8dfd39987c97c021b99b7f
[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 "
69                             + "\"hello\"\njava.lang.ClassNotFoundException: hello", 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 "
101                             + "\"src/test/resources/parameters/serviceContextBadClassParams.json\""
102                             + "\n(ParameterRuntimeException):failed to deserialize "
103                             + "the parameters for \"contextParameters\""
104                             + " to parameter class \"java.lang.Integer\"\ncom.google.gson.JsonSyntaxException: "
105                             + "java.lang.IllegalStateException: Expected NUMBER but was BEGIN_OBJECT at path $",
106                             e.getMessage());
107         }
108     }
109
110     @Test
111     public void badPluginClassTest() {
112         final String[] args =
113             { "-c", "src/test/resources/parameters/serviceContextBadPluginClassParams.json" };
114         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
115
116         try {
117             new ApexParameterHandler().getParameters(arguments);
118             fail("This test should throw an exception");
119         } catch (final ParameterException e) {
120             assertEquals("error reading parameters from "
121                             + "\"src/test/resources/parameters/serviceContextBadPluginClassParams.json\""
122                             + "\n(ClassCastException):org.onap.policy.apex.service.engine.parameters.dummyclasses."
123                             + "SuperDooperExecutorParameters"
124                             + " cannot be cast to org.onap.policy.apex.context.parameters.ContextParameters",
125                             e.getMessage());
126         }
127     }
128
129     @Test
130     public void okFlushParamTest() {
131         final String[] args =
132             { "-c", "src/test/resources/parameters/serviceContextOKFlushParams.json" };
133         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
134
135         try {
136             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
137             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters",
138                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
139                                             .getClass().getCanonicalName());
140             assertEquals(123456, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
141                             .getPersistorParameters().getFlushPeriod());
142         } catch (final ParameterException e) {
143             fail("This test should not throw any exception: " + e.getMessage());
144         }
145     }
146
147     @Test
148     public void okDefaultParamTest() {
149         final String[] args =
150             { "-c", "src/test/resources/parameters/serviceContextOKDefaultParams.json" };
151         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
152
153         try {
154             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
155             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters",
156                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
157                                             .getClass().getCanonicalName());
158             assertEquals(300000, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
159                             .getPersistorParameters().getFlushPeriod());
160         } catch (final ParameterException e) {
161             fail("This test should not throw any exception: " + e.getMessage());
162         }
163     }
164
165     @Test
166     public void okDistParamTest() {
167         final String[] args =
168             { "-c", "src/test/resources/parameters/serviceContextOKDistParams.json" };
169         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
170
171         try {
172             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
173             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters",
174                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
175                                             .getClass().getCanonicalName());
176             assertEquals("org.onap.policy.apex.context.parameters.DistributorParameters",
177                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
178                                             .getDistributorParameters().getClass().getCanonicalName());
179         } catch (final ParameterException e) {
180             fail("This test should not throw any exception: " + e.getMessage());
181         }
182     }
183
184     @Test
185     public void okFullDefaultParamTest() {
186         final String[] args =
187             { "-c", "src/test/resources/parameters/goodParams.json" };
188         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
189
190         try {
191             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
192             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters",
193                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
194                                             .getClass().getCanonicalName());
195             assertEquals("org.onap.policy.apex.context.parameters.DistributorParameters",
196                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
197                                             .getDistributorParameters().getClass().getCanonicalName());
198             assertEquals("org.onap.policy.apex.context.parameters.LockManagerParameters",
199                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
200                                             .getLockManagerParameters().getClass().getCanonicalName());
201             assertEquals("org.onap.policy.apex.context.parameters.PersistorParameters",
202                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
203                                             .getPersistorParameters().getClass().getCanonicalName());
204             assertEquals(300000, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
205                             .getPersistorParameters().getFlushPeriod());
206         } catch (final ParameterException e) {
207             fail("This test should not throw any exception: " + e.getMessage());
208         }
209     }
210
211     @Test
212     public void okFullParamTest() {
213         final String[] args =
214             { "-c", "src/test/resources/parameters/serviceContextOKFullParams.json" };
215         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
216
217         try {
218             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
219             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters",
220                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
221                                             .getClass().getCanonicalName());
222             assertEquals("org.onap.policy.apex.context.parameters.LockManagerParameters",
223                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
224                                             .getLockManagerParameters().getClass().getCanonicalName());
225             assertEquals("org.onap.policy.apex.context.parameters.PersistorParameters",
226                             parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
227                                             .getPersistorParameters().getClass().getCanonicalName());
228             assertEquals(123456, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
229                             .getPersistorParameters().getFlushPeriod());
230
231             final SuperDooperDistributorParameters infinispanParameters = (SuperDooperDistributorParameters) parameters
232                             .getEngineServiceParameters().getEngineParameters().getContextParameters()
233                             .getDistributorParameters();
234             assertEquals("org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperDistributorParameters",
235                             infinispanParameters.getClass().getCanonicalName());
236             assertEquals("my/lovely/configFile.xml", infinispanParameters.getConfigFile());
237             assertEquals("holy/stone.xml", infinispanParameters.getJgroupsFile());
238             assertEquals(false, infinispanParameters.isPreferIPv4Stack());
239             assertEquals("fatherted", infinispanParameters.getJgroupsBindAddress());
240
241         } catch (final ParameterException e) {
242             fail("This test should not throw any exception: " + e.getMessage());
243         }
244     }
245
246     @Test
247     public void badClassDistParamTest() {
248         final String[] args =
249             { "-c", "src/test/resources/parameters/serviceContextBadClassDistParams.json" };
250         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
251
252         try {
253             new ApexParameterHandler().getParameters(arguments);
254             fail("This test should throw an exception");
255         } catch (final ParameterException e) {
256             assertEquals("error reading parameters from "
257                             + "\"src/test/resources/parameters/serviceContextBadClassDistParams.json\"\n"
258                             + "(ClassCastException):"
259                             + "org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to"
260                             + " org.onap.policy.apex.context.parameters.DistributorParameters", e.getMessage());
261         }
262     }
263
264     @Test
265     public void badClassLockParamTest() {
266         final String[] args =
267             { "-c", "src/test/resources/parameters/serviceContextBadClassLockParams.json" };
268         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
269
270         try {
271             new ApexParameterHandler().getParameters(arguments);
272             fail("This test should throw an exception");
273         } catch (final ParameterException e) {
274             assertEquals("error reading parameters from "
275                             + "\"src/test/resources/parameters/serviceContextBadClassLockParams.json\"\n"
276                             + "(ClassCastException):"
277                             + "org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to"
278                             + " org.onap.policy.apex.context.parameters.LockManagerParameters", e.getMessage());
279         }
280     }
281
282     @Test
283     public void badClassPersistParamTest() {
284         final String[] args =
285             { "-c", "src/test/resources/parameters/serviceContextBadClassPersistParams.json" };
286         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
287
288         try {
289             new ApexParameterHandler().getParameters(arguments);
290             fail("This test should throw an exception");
291         } catch (final ParameterException e) {
292             assertEquals("error reading parameters from "
293                             + "\"src/test/resources/parameters/serviceContextBadClassPersistParams.json\"\n"
294                             + "(ClassCastException):"
295                             + "org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to"
296                             + " org.onap.policy.apex.context.parameters.PersistorParameters", e.getMessage());
297         }
298     }
299 }