2af051ea70706be698c2030b9cfb4bbeebd3970d
[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.assertTrue;
25 import static org.junit.Assert.fail;
26
27 import org.junit.After;
28 import org.junit.Test;
29 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
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 ExecutorParameterTests {
40     @After
41     public void resetRelativeFileRoot() {
42         System.clearProperty("APEX_RELATIVE_FILE_ROOT");
43     }
44
45     @Test
46     public void noParamsTest() {
47         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorNoParams.json"};
48         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
49
50         try {
51             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
52             assertEquals(0,
53                     parameters.getEngineServiceParameters().getEngineParameters().getExecutorParameterMap().size());
54         } catch (final ParameterException e) {
55             fail("This test should not throw any exception: " + e.getMessage());
56         }
57     }
58
59     @Test
60     public void badParamsTest() {
61         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadParams.json"};
62         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
63
64         try {
65             new ApexParameterHandler().getParameters(arguments);
66             fail("This test should throw an exception");
67         } catch (final ParameterException e) {
68             assertEquals("error reading parameters from "
69                     + "\"src/test/resources/parameters/serviceExecutorBadParams.json\"\n"
70                     + "(ParameterRuntimeException):value of \"executorParameters:ZOOBY\" entry is not "
71                     + "a parameter JSON object", e.getMessage());
72         }
73     }
74
75     @Test
76     public void noExecutorParamsTest() {
77         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorNoExecutorParams.json"};
78         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
79
80         try {
81             new ApexParameterHandler().getParameters(arguments);
82             fail("This test should throw an exception");
83         } catch (final ParameterException e) {
84             assertEquals("error reading parameters from "
85                     + "\"src/test/resources/parameters/serviceExecutorNoExecutorParams.json\"\n"
86                     + "(ParameterRuntimeException):no \"executorParameters\" entry found in parameters,"
87                     + " at least one executor parameter entry must be specified", e.getMessage());
88         }
89     }
90
91     @Test
92     public void emptyParamsTest() {
93         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorEmptyParams.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/serviceExecutorEmptyParams.json\"\n"
102                     + "(ParameterRuntimeException):could not find field \"parameterClassName\" "
103                     + "in \"executorParameters:ZOOBY\" entry", e.getMessage());
104         }
105     }
106
107     @Test
108     public void badPluginParamNameTest() {
109         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginNameParams.json"};
110         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
111
112         try {
113             new ApexParameterHandler().getParameters(arguments);
114             fail("This test should throw an exception");
115         } catch (final ParameterException e) {
116             assertEquals("error reading parameters from "
117                     + "\"src/test/resources/parameters/serviceExecutorBadPluginNameParams.json\"\n"
118                     + "(ParameterRuntimeException):could not find field \"parameterClassName\" "
119                     + "in \"executorParameters:ZOOBY\" entry", e.getMessage());
120         }
121     }
122
123     @Test
124     public void badPluginParamObjectTest() {
125         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueObjectParams.json"};
126         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
127
128         try {
129             new ApexParameterHandler().getParameters(arguments);
130             fail("This test should throw an exception");
131         } catch (final ParameterException e) {
132             assertEquals("error reading parameters from "
133                     + "\"src/test/resources/parameters/serviceExecutorBadPluginValueObjectParams.json\"\n"
134                     + "(ParameterRuntimeException):value for field \"parameterClassName\" "
135                     + "of \"executorParameters:LOOBY\" entry is not a plain string", e.getMessage());
136         }
137     }
138
139     @Test
140     public void badPluginParamBlankTest() {
141         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueBlankParams.json"};
142         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
143
144         try {
145             new ApexParameterHandler().getParameters(arguments);
146             fail("This test should throw an exception");
147         } catch (final ParameterException e) {
148             assertEquals("error reading parameters from "
149                     + "\"src/test/resources/parameters/serviceExecutorBadPluginValueBlankParams.json\"\n"
150                     + "(ParameterRuntimeException):value for field \"parameterClassName\" "
151                     + "in \"executorParameters:LOOBY\" entry is not specified or is blank", e.getMessage());
152         }
153     }
154
155     @Test
156     public void badPluginParamValueTest() {
157         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueParams.json"};
158         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
159
160         try {
161             new ApexParameterHandler().getParameters(arguments);
162             fail("This test should throw an exception");
163         } catch (final ParameterException e) {
164             assertEquals("error reading parameters from"
165                     + " \"src/test/resources/parameters/serviceExecutorBadPluginValueParams.json\"\n"
166                     + "(ParameterRuntimeException):failed to deserialize the parameters "
167                     + "for \"executorParameters:LOOBY\" to parameter class \"helloworld\"\n"
168                     + "java.lang.ClassNotFoundException: helloworld", e.getMessage());
169         }
170     }
171
172     @Test
173     public void goodParametersTest() {
174         final String[] args = {"-c", "src/test/resources/parameters/goodParams.json"};
175         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
176
177         try {
178             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
179
180             assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
181             assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
182             assertEquals(45, parameters.getEngineServiceParameters().getId());
183             assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
184             assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
185         } catch (final ParameterException e) {
186             fail("This test should not throw any exception: " + e.getMessage());
187         }
188     }
189
190     @Test
191     public void relativeParametersTest() {
192         // @formatter:off
193         final String[] args = {
194             "-rfr",
195             "src/test/resources",
196             "-c",
197             "src/test/resources/parameters/goodParamsRelative.json"
198         };
199         // @formatter:on
200         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
201
202         try {
203             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
204
205             assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
206             assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
207             assertEquals(45, parameters.getEngineServiceParameters().getId());
208             assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
209             assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
210             assertTrue(parameters.getEngineServiceParameters().getPolicyModelFileName()
211                     .endsWith("policymodels/SmallModel.json"));
212         } catch (final ParameterException e) {
213             fail("This test should not throw any exception: " + e.getMessage());
214         }
215     }
216 }