16a892f93c4290cadf651620c63759ef0f4de277
[policy/apex-pdp.git] / services / services-engine / src / test / java / org / onap / policy / apex / service / engine / parameters / ExecutorParameterTests.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2020 Nordix Foundation.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.apex.service.engine.parameters;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
26 import static org.junit.Assert.fail;
27
28 import org.junit.After;
29 import org.junit.Test;
30 import org.onap.policy.apex.service.engine.main.ApexCommandLineArguments;
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 ExecutorParameterTests {
41     @After
42     public void resetRelativeFileRoot() {
43         System.clearProperty("APEX_RELATIVE_FILE_ROOT");
44     }
45
46     @Test
47     public void testNoParamsTest() {
48         final String[] args = {"-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,
54                     parameters.getEngineServiceParameters().getEngineParameters().getExecutorParameterMap().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 testBadParamsTest() {
62         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadParams.json"};
63         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
64
65         try {
66             new ApexParameterHandler().getParameters(arguments);
67             fail("This test should throw an exception");
68         } catch (final ParameterException e) {
69             assertEquals("error reading parameters from "
70                     + "\"src/test/resources/parameters/serviceExecutorBadParams.json\"\n"
71                     + "(ParameterRuntimeException):value of \"executorParameters:ZOOBY\" entry is not "
72                     + "a parameter JSON object", e.getMessage());
73         }
74     }
75
76     @Test
77     public void testNoExecutorParamsTest() {
78         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorNoExecutorParams.json"};
79         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
80
81         try {
82             new ApexParameterHandler().getParameters(arguments);
83             fail("This test should throw an exception");
84         } catch (final ParameterException e) {
85             assertEquals("error reading parameters from "
86                     + "\"src/test/resources/parameters/serviceExecutorNoExecutorParams.json\"\n"
87                     + "(ParameterRuntimeException):no \"executorParameters\" entry found in parameters,"
88                     + " at least one executor parameter entry must be specified", e.getMessage());
89         }
90     }
91
92     @Test
93     public void testEmptyParamsTest() {
94         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorEmptyParams.json"};
95         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
96
97         try {
98             new ApexParameterHandler().getParameters(arguments);
99             fail("This test should throw an exception");
100         } catch (final ParameterException e) {
101             assertEquals("error reading parameters from "
102                     + "\"src/test/resources/parameters/serviceExecutorEmptyParams.json\"\n"
103                     + "(ParameterRuntimeException):could not find field \"parameterClassName\" "
104                     + "in \"executorParameters:ZOOBY\" entry", e.getMessage());
105         }
106     }
107
108     @Test
109     public void testBadPluginParamNameTest() {
110         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginNameParams.json"};
111         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
112
113         try {
114             new ApexParameterHandler().getParameters(arguments);
115             fail("This test should throw an exception");
116         } catch (final ParameterException e) {
117             assertEquals("error reading parameters from "
118                     + "\"src/test/resources/parameters/serviceExecutorBadPluginNameParams.json\"\n"
119                     + "(ParameterRuntimeException):could not find field \"parameterClassName\" "
120                     + "in \"executorParameters:ZOOBY\" entry", e.getMessage());
121         }
122     }
123
124     @Test
125     public void testBadPluginParamObjectTest() {
126         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueObjectParams.json"};
127         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
128
129         try {
130             new ApexParameterHandler().getParameters(arguments);
131             fail("This test should throw an exception");
132         } catch (final ParameterException e) {
133             assertEquals("error reading parameters from "
134                     + "\"src/test/resources/parameters/serviceExecutorBadPluginValueObjectParams.json\"\n"
135                     + "(ParameterRuntimeException):value for field \"parameterClassName\" "
136                     + "of \"executorParameters:LOOBY\" entry is not a plain string", e.getMessage());
137         }
138     }
139
140     @Test
141     public void testBadPluginParamBlankTest() {
142         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueBlankParams.json"};
143         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
144
145         try {
146             new ApexParameterHandler().getParameters(arguments);
147             fail("This test should throw an exception");
148         } catch (final ParameterException e) {
149             assertEquals("error reading parameters from "
150                     + "\"src/test/resources/parameters/serviceExecutorBadPluginValueBlankParams.json\"\n"
151                     + "(ParameterRuntimeException):value for field \"parameterClassName\" "
152                     + "in \"executorParameters:LOOBY\" entry is not specified or is blank", e.getMessage());
153         }
154     }
155
156     @Test
157     public void testBadPluginParamValueTest() {
158         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueParams.json"};
159         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
160
161         try {
162             new ApexParameterHandler().getParameters(arguments);
163             fail("This test should throw an exception");
164         } catch (final ParameterException e) {
165             assertEquals("error reading parameters from"
166                     + " \"src/test/resources/parameters/serviceExecutorBadPluginValueParams.json\"\n"
167                     + "(ParameterRuntimeException):failed to deserialize the parameters "
168                     + "for \"executorParameters:LOOBY\" to parameter class \"helloworld\"\n"
169                     + "java.lang.ClassNotFoundException: helloworld", e.getMessage());
170         }
171     }
172
173     @Test
174     public void testGoodParametersTest() {
175         final String[] args = {"-c", "src/test/resources/parameters/goodParams.json"};
176         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
177
178         try {
179             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
180
181             assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
182             assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
183             assertEquals(45, parameters.getEngineServiceParameters().getId());
184             assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
185             assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
186         } catch (final ParameterException e) {
187             fail("This test should not throw any exception: " + e.getMessage());
188         }
189     }
190
191     @Test
192     public void testRelativeParametersTest() {
193         // @formatter:off
194         final String[] args = {
195             "-rfr",
196             "src/test/resources",
197             "-c",
198             "src/test/resources/parameters/goodParamsRelative.json"
199         };
200         // @formatter:on
201         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
202
203         try {
204             final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
205
206             assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
207             assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
208             assertEquals(45, parameters.getEngineServiceParameters().getId());
209             assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
210             assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
211             assertTrue(parameters.getEngineServiceParameters().getPolicyModelFileName()
212                     .endsWith("policymodels/SmallModel.json"));
213         } catch (final ParameterException e) {
214             fail("This test should not throw any exception: " + e.getMessage());
215         }
216     }
217 }