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