Replace try/catch with assertj
[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.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertTrue;
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() throws ParameterException {
48         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorNoParams.json"};
49         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
50
51         final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
52         assertEquals(0,
53                parameters.getEngineServiceParameters().getEngineParameters().getExecutorParameterMap().size());
54
55     }
56
57     @Test
58     public void testBadParamsTest() {
59         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadParams.json"};
60         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
61
62         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
63             .hasMessage("error reading parameters from "
64                     + "\"src/test/resources/parameters/serviceExecutorBadParams.json\"\n"
65                     + "(ParameterRuntimeException):value of \"executorParameters:ZOOBY\" entry is not "
66                     + "a parameter JSON object");
67     }
68
69     @Test
70     public void testNoExecutorParamsTest() {
71         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorNoExecutorParams.json"};
72         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
73
74         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
75             .hasMessage("error reading parameters from "
76                 + "\"src/test/resources/parameters/serviceExecutorNoExecutorParams.json\"\n"
77                 + "(ParameterRuntimeException):no \"executorParameters\" entry found in parameters,"
78                 + " at least one executor parameter entry must be specified");
79     }
80
81     @Test
82     public void testEmptyParamsTest() {
83         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorEmptyParams.json"};
84         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
85
86         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
87             .hasMessage("error reading parameters from "
88                 + "\"src/test/resources/parameters/serviceExecutorEmptyParams.json\"\n"
89                 + "(ParameterRuntimeException):could not find field \"parameterClassName\" "
90                 + "in \"executorParameters:ZOOBY\" entry");
91     }
92
93     @Test
94     public void testBadPluginParamNameTest() {
95         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginNameParams.json"};
96         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
97
98         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
99             .hasMessage("error reading parameters from "
100                 + "\"src/test/resources/parameters/serviceExecutorBadPluginNameParams.json\"\n"
101                 + "(ParameterRuntimeException):could not find field \"parameterClassName\" "
102                 + "in \"executorParameters:ZOOBY\" entry");
103     }
104
105     @Test
106     public void testBadPluginParamObjectTest() {
107         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueObjectParams.json"};
108         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
109
110         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
111             .hasMessage("error reading parameters from "
112                 + "\"src/test/resources/parameters/serviceExecutorBadPluginValueObjectParams.json\"\n"
113                 + "(ParameterRuntimeException):value for field \"parameterClassName\" "
114                 + "of \"executorParameters:LOOBY\" entry is not a plain string");
115     }
116
117     @Test
118     public void testBadPluginParamBlankTest() {
119         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueBlankParams.json"};
120         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
121
122         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
123             .hasMessage("error reading parameters from "
124                 + "\"src/test/resources/parameters/serviceExecutorBadPluginValueBlankParams.json\"\n"
125                 + "(ParameterRuntimeException):value for field \"parameterClassName\" "
126                 + "in \"executorParameters:LOOBY\" entry is not specified or is blank");
127     }
128
129     @Test
130     public void testBadPluginParamValueTest() {
131         final String[] args = {"-c", "src/test/resources/parameters/serviceExecutorBadPluginValueParams.json"};
132         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
133
134         assertThatThrownBy(() -> new ApexParameterHandler().getParameters(arguments))
135             .hasMessage("error reading parameters from"
136                 + " \"src/test/resources/parameters/serviceExecutorBadPluginValueParams.json\"\n"
137                 + "(ParameterRuntimeException):failed to deserialize the parameters "
138                 + "for \"executorParameters:LOOBY\" to parameter class \"helloworld\"\n"
139                 + "java.lang.ClassNotFoundException: helloworld");
140     }
141
142     @Test
143     public void testGoodParametersTest() throws ParameterException {
144         final String[] args = {"-c", "src/test/resources/parameters/goodParams.json"};
145         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
146
147         final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
148
149         assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
150         assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
151         assertEquals(45, parameters.getEngineServiceParameters().getId());
152         assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
153         assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
154
155     }
156
157     @Test
158     public void testRelativeParametersTest() throws ParameterException {
159         // @formatter:off
160         final String[] args = {
161             "-rfr",
162             "src/test/resources",
163             "-c",
164             "src/test/resources/parameters/goodParamsRelative.json"
165         };
166         // @formatter:on
167         final ApexCommandLineArguments arguments = new ApexCommandLineArguments(args);
168
169         final ApexParameters parameters = new ApexParameterHandler().getParameters(arguments);
170
171         assertEquals("MyApexEngine", parameters.getEngineServiceParameters().getName());
172         assertEquals("0.0.1", parameters.getEngineServiceParameters().getVersion());
173         assertEquals(45, parameters.getEngineServiceParameters().getId());
174         assertEquals(19, parameters.getEngineServiceParameters().getInstanceCount());
175         assertEquals(65522, parameters.getEngineServiceParameters().getDeploymentPort());
176         assertTrue(parameters.getEngineServiceParameters().getPolicyModelFileName()
177                 .endsWith("policymodels/SmallModel.json"));
178     }
179 }