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