33bcd0d5f8d9174cd66644164822969ed2d37cfc
[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.ApexParameterException;
30 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
31 import org.onap.policy.apex.service.parameters.ApexParameters;
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 = {"-c", "src/test/resources/parameters/serviceContextNoParams.json"};
43         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
44
45         try {
46             new ApexParameterHandler().getParameters(arguments);
47             fail("This test should throw an exception");
48         } catch (final ApexParameterException e) {
49             assertEquals(
50                     "error reading parameters from \"src/test/resources/parameters/serviceContextNoParams.json\"\n"
51                             + "(ApexParameterRuntimeException):could not find field \"parameterClassName\" in \"contextParameters\" entry",
52                     e.getMessage());
53         }
54     }
55
56     @Test
57     public void badParamsTest() {
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 ApexParameterException e) {
65             assertEquals(
66                     "error reading parameters from \"src/test/resources/parameters/serviceContextBadParams.json\"\n"
67                             + "(ApexParameterRuntimeException):failed to deserialize the parameters for \"contextParameters\" to parameter class \"hello\"\n"
68                             + "java.lang.ClassNotFoundException: hello",
69                     e.getMessage());
70         }
71     }
72
73     @Test
74     public void badPluginParamNameTest() {
75         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadPluginNameParams.json"};
76         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
77
78         try {
79             new ApexParameterHandler().getParameters(arguments);
80             fail("This test should throw an exception");
81         } catch (final ApexParameterException e) {
82             assertEquals(
83                     "error reading parameters from \"src/test/resources/parameters/serviceContextBadPluginNameParams.json\"\n"
84                             + "(ApexParameterRuntimeException):could not find field \"parameterClassName\" in \"contextParameters\" entry",
85                     e.getMessage());
86         }
87     }
88
89     @Test
90     public void badClassParamTest() {
91         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassParams.json"};
92         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
93
94         try {
95             new ApexParameterHandler().getParameters(arguments);
96             fail("This test should throw an exception");
97         } catch (final ApexParameterException e) {
98             assertEquals(
99                     "error reading parameters from \"src/test/resources/parameters/serviceContextBadClassParams.json\"\n"
100                             + "(ApexParameterRuntimeException):failed to deserialize the parameters for \"contextParameters\" to parameter class \"java.lang.Integer\"\n"
101                             + "com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected NUMBER but was BEGIN_OBJECT at path $",
102                     e.getMessage());
103         }
104     }
105
106     @Test
107     public void badPluginClassTest() {
108         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadPluginClassParams.json"};
109         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
110
111         try {
112             new ApexParameterHandler().getParameters(arguments);
113             fail("This test should throw an exception");
114         } catch (final ApexParameterException e) {
115             assertEquals(
116                     "error reading parameters from \"src/test/resources/parameters/serviceContextBadPluginClassParams.json\"\n"
117                             + "(ClassCastException):org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperExecutorParameters cannot be cast to org.onap.policy.apex.context.parameters.ContextParameters",
118                     e.getMessage());
119         }
120     }
121
122     @Test
123     public void okFlushParamTest() {
124         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKFlushParams.json"};
125         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
126
127         try {
128             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
129             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
130                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getParameterClassName());
131             assertEquals(123456, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
132                     .getPersistorParameters().getFlushPeriod());
133         } catch (final ApexParameterException e) {
134             fail("This test should not throw any exception: " + e.getMessage());
135         }
136     }
137
138     @Test
139     public void okDefaultParamTest() {
140         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKDefaultParams.json"};
141         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
142
143         try {
144             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
145             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
146                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getParameterClassName());
147             assertEquals(300000, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
148                     .getPersistorParameters().getFlushPeriod());
149         } catch (final ApexParameterException e) {
150             fail("This test should not throw any exception: " + e.getMessage());
151         }
152     }
153
154     @Test
155     public void okDistParamTest() {
156         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKDistParams.json"};
157         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
158
159         try {
160             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
161             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
162                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getParameterClassName());
163             assertEquals("org.onap.policy.apex.context.parameters.DistributorParameters",
164                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
165                             .getDistributorParameters().getParameterClassName());
166         } catch (final ApexParameterException e) {
167             fail("This test should not throw any exception: " + e.getMessage());
168         }
169     }
170
171     @Test
172     public void okFullDefaultParamTest() {
173         final String[] args = {"-c", "src/test/resources/parameters/goodParams.json"};
174         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
175
176         try {
177             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
178             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
179                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getParameterClassName());
180             assertEquals("org.onap.policy.apex.context.parameters.DistributorParameters",
181                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
182                             .getDistributorParameters().getParameterClassName());
183             assertEquals("org.onap.policy.apex.context.parameters.LockManagerParameters",
184                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
185                             .getLockManagerParameters().getParameterClassName());
186             assertEquals("org.onap.policy.apex.context.parameters.PersistorParameters",
187                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
188                             .getPersistorParameters().getParameterClassName());
189             assertEquals(300000, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
190                     .getPersistorParameters().getFlushPeriod());
191         } catch (final ApexParameterException e) {
192             fail("This test should not throw any exception: " + e.getMessage());
193         }
194     }
195
196     @Test
197     public void okFullParamTest() {
198         final String[] args = {"-c", "src/test/resources/parameters/serviceContextOKFullParams.json"};
199         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
200
201         try {
202             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
203             assertEquals("org.onap.policy.apex.context.parameters.ContextParameters", parameters
204                     .getEngineServiceParameters().getEngineParameters().getContextParameters().getParameterClassName());
205             assertEquals("org.onap.policy.apex.context.parameters.LockManagerParameters",
206                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
207                             .getLockManagerParameters().getParameterClassName());
208             assertEquals("org.onap.policy.apex.context.parameters.PersistorParameters",
209                     parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
210                             .getPersistorParameters().getParameterClassName());
211             assertEquals(123456, parameters.getEngineServiceParameters().getEngineParameters().getContextParameters()
212                     .getPersistorParameters().getFlushPeriod());
213
214             final SuperDooperDistributorParameters infinispanParameters =
215                     (SuperDooperDistributorParameters) parameters.getEngineServiceParameters().getEngineParameters()
216                             .getContextParameters().getDistributorParameters();
217             assertEquals("org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperDistributorParameters",
218                     infinispanParameters.getParameterClassName());
219             assertEquals("my/lovely/configFile.xml", infinispanParameters.getConfigFile());
220             assertEquals("holy/stone.xml", infinispanParameters.getJgroupsFile());
221             assertEquals(false, infinispanParameters.preferIPv4Stack());
222             assertEquals("fatherted", infinispanParameters.getjGroupsBindAddress());
223
224         } catch (final ApexParameterException e) {
225             fail("This test should not throw any exception: " + e.getMessage());
226         }
227     }
228
229     @Test
230     public void badClassDistParamTest() {
231         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassDistParams.json"};
232         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
233
234         try {
235             new ApexParameterHandler().getParameters(arguments);
236             fail("This test should throw an exception");
237         } catch (final ApexParameterException e) {
238             assertEquals(
239                     "error reading parameters from \"src/test/resources/parameters/serviceContextBadClassDistParams.json\"\n"
240                             + "(ClassCastException):org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to org.onap.policy.apex.context.parameters.DistributorParameters",
241                     e.getMessage());
242         }
243     }
244
245     @Test
246     public void badClassLockParamTest() {
247         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassLockParams.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 ApexParameterException e) {
254             assertEquals(
255                     "error reading parameters from \"src/test/resources/parameters/serviceContextBadClassLockParams.json\"\n"
256                             + "(ClassCastException):org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to org.onap.policy.apex.context.parameters.LockManagerParameters",
257                     e.getMessage());
258         }
259     }
260
261     @Test
262     public void badClassPersistParamTest() {
263         final String[] args = {"-c", "src/test/resources/parameters/serviceContextBadClassPersistParams.json"};
264         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
265
266         try {
267             new ApexParameterHandler().getParameters(arguments);
268             fail("This test should throw an exception");
269         } catch (final ApexParameterException e) {
270             assertEquals(
271                     "error reading parameters from \"src/test/resources/parameters/serviceContextBadClassPersistParams.json\"\n"
272                             + "(ClassCastException):org.onap.policy.apex.context.parameters.ContextParameters cannot be cast to org.onap.policy.apex.context.parameters.PersistorParameters",
273                     e.getMessage());
274         }
275     }
276 }