b14cc22be248a1a64fd024d17c2ed0a73680280b
[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.parameters.ApexParameterException;
29 import org.onap.policy.apex.service.parameters.ApexParameterHandler;
30 import org.onap.policy.apex.service.parameters.ApexParameters;
31
32 /**
33  * Test for an empty parameter file
34  * 
35  * @author Liam Fallon (liam.fallon@ericsson.com)
36  */
37 public class ExecutorParameterTests {
38
39     @Test
40     public void noParamsTest() {
41         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorNoParams.json"};
42         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
43
44         try {
45             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
46             assertEquals(0,
47                     parameters.getEngineServiceParameters().getEngineParameters().getExecutorParameterMap().size());
48         } catch (final ApexParameterException e) {
49             fail("This test should not throw any exception: " + e.getMessage());
50         }
51     }
52
53     @Test
54     public void badParamsTest() {
55         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadParams.json"};
56         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
57
58         try {
59             new ApexParameterHandler().getParameters(arguments);
60             fail("This test should throw an exception");
61         } catch (final ApexParameterException e) {
62             assertEquals(
63                     "error reading parameters from \"src/test/resources/parameters/serviceExecutorBadParams.json\"\n"
64                             + "(ApexParameterRuntimeException):value of \"executorParameters:ZOOBY\" entry is not a parameter JSON object",
65                     e.getMessage());
66         }
67     }
68
69     @Test
70     public void noExecutorParamsTest() {
71         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorNoExecutorParams.json"};
72         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
73
74         try {
75             new ApexParameterHandler().getParameters(arguments);
76             fail("This test should throw an exception");
77         } catch (final ApexParameterException e) {
78             assertEquals(
79                     "error reading parameters from \"src/test/resources/parameters/serviceExecutorNoExecutorParams.json\"\n"
80                             + "(ApexParameterRuntimeException):no \"executorParameters\" entry found in parameters, at least one executor parameter entry must be specified",
81                     e.getMessage());
82         }
83     }
84
85     @Test
86     public void emptyParamsTest() {
87         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorEmptyParams.json"};
88         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
89
90         try {
91             new ApexParameterHandler().getParameters(arguments);
92             fail("This test should throw an exception");
93         } catch (final ApexParameterException e) {
94             assertEquals(
95                     "error reading parameters from \"src/test/resources/parameters/serviceExecutorEmptyParams.json\"\n"
96                             + "(ApexParameterRuntimeException):could not find field \"parameterClassName\" in \"executorParameters:ZOOBY\" entry",
97                     e.getMessage());
98         }
99     }
100
101     @Test
102     public void badPluginParamNameTest() {
103         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginNameParams.json"};
104         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
105
106         try {
107             new ApexParameterHandler().getParameters(arguments);
108             fail("This test should throw an exception");
109         } catch (final ApexParameterException e) {
110             assertEquals(
111                     "error reading parameters from \"src/test/resources/parameters/serviceExecutorBadPluginNameParams.json\"\n"
112                             + "(ApexParameterRuntimeException):could not find field \"parameterClassName\" in \"executorParameters:ZOOBY\" entry",
113                     e.getMessage());
114         }
115     }
116
117     @Test
118     public void badPluginParamObjectTest() {
119         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueObjectParams.json"};
120         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
121
122         try {
123             new ApexParameterHandler().getParameters(arguments);
124             fail("This test should throw an exception");
125         } catch (final ApexParameterException e) {
126             assertEquals(
127                     "error reading parameters from \"src/test/resources/parameters/serviceExecutorBadPluginValueObjectParams.json\"\n"
128                             + "(ApexParameterRuntimeException):value for field \"parameterClassName\" in \"executorParameters:LOOBY\" entry is not a plain string",
129                     e.getMessage());
130         }
131     }
132
133     @Test
134     public void badPluginParamBlankTest() {
135         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueBlankParams.json"};
136         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
137
138         try {
139             new ApexParameterHandler().getParameters(arguments);
140             fail("This test should throw an exception");
141         } catch (final ApexParameterException e) {
142             assertEquals(
143                     "error reading parameters from \"src/test/resources/parameters/serviceExecutorBadPluginValueBlankParams.json\"\n"
144                             + "(ApexParameterRuntimeException):value for field \"parameterClassName\" in \"executorParameters:LOOBY\" entry is not specified or is blank",
145                     e.getMessage());
146         }
147     }
148
149
150     @Test
151     public void badPluginParamValueTest() {
152         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueParams.json"};
153         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
154
155         try {
156             new ApexParameterHandler().getParameters(arguments);
157             fail("This test should throw an exception");
158         } catch (final ApexParameterException e) {
159             assertEquals(
160                     "error reading parameters from \"src/test/resources/parameters/serviceExecutorBadPluginValueParams.json\"\n"
161                             + "(ApexParameterRuntimeException):failed to deserialize the parameters for \"executorParameters:LOOBY\" to parameter class \"helloworld\"\n"
162                             + "java.lang.ClassNotFoundException: helloworld",
163                     e.getMessage());
164         }
165     }
166
167     @Test
168     public void goodParametersTest() {
169         final String[] args = {"-c", "src/test/resources/parameters/goodParams.json"};
170         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
171
172         try {
173             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
174
175             assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
176             assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
177             assertEquals(45, parameters.getEngineServiceParameters().getId());
178             assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
179             assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
180         } catch (final ApexParameterException e) {
181             fail("This test should not throw any exception: " + e.getMessage());
182         }
183     }
184 }