1714f43b477788b8881ca79aaee340bcd0a6d733
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2020, 2024 Nordix Foundation
5  *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  * SPDX-License-Identifier: Apache-2.0
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator;
24
25 import static org.assertj.core.api.Assertions.assertThatThrownBy;
26 import static org.junit.jupiter.api.Assertions.assertEquals;
27 import static org.junit.jupiter.api.Assertions.assertNotNull;
28 import static org.junit.jupiter.api.Assertions.assertNull;
29
30 import org.apache.commons.cli.ParseException;
31 import org.junit.jupiter.api.Test;
32
33 /**
34  * Test event generator parameters.
35  */
36 class EventGeneratorParametersHandlerTest {
37
38     @Test
39     void testEventGeneratorParameterHandler() throws ParseException {
40         EventGeneratorParameterHandler handler = new EventGeneratorParameterHandler();
41         assertNotNull(handler);
42
43         assertValidInputs(handler);
44
45         assertThatThrownBy(() -> {
46             String[] arguments = new String[] {"-c", "src/test/resources/parameters/unit/Default.json", "-bc", "-1"};
47             handler.parse(arguments);
48         }).hasMessageContaining("specified parameters are not valid", "EventGeneratorParameters",
49             "\"batchCount\" value \"-1\" INVALID, is below the minimum");
50
51         assertThatThrownBy(() -> {
52             String[] arguments = new String[] {"-c", "src/test/resources/parameters/unit/Default.json", "-bs", "0"};
53             handler.parse(arguments);
54         }).hasMessageContaining("specified parameters are not valid", "EventGeneratorParameters",
55             "\"batchSize\" value \"0\" INVALID, is below the minimum");
56
57
58         String[] args = new String[] {"-c", "src/test/resources/parameters/unit/Default.json", "-bd", "1000"};
59         EventGeneratorParameters parameters = handler.parse(args);
60         assertEquals(1000, parameters.getDelayBetweenBatches());
61
62         assertThatThrownBy(() -> {
63             String[] arguments = new String[] {"-c", "src/test/resources/parameters/unit/Default.json", "-bd", "-1"};
64             handler.parse(arguments);
65         }).hasMessageContaining("specified parameters are not valid", "EventGeneratorParameters",
66             "\"batchSize\" value \"1\" INVALID, is below the minimum");
67
68         args = new String[] {"-c", "src/test/resources/parameters/unit/Default.json", "-o", "Zooby"};
69         parameters = handler.parse(args);
70         assertEquals("Zooby", parameters.getOutFile());
71
72         assertThatThrownBy(() -> {
73             String[] arguments = new String[] {"-z"};
74             handler.parse(arguments);
75         }).hasMessage("Unrecognized option: -z");
76
77         assertThatThrownBy(() -> {
78             String[] arguments = new String[] {"-H"};
79             handler.parse(arguments);
80         }).hasMessage("Missing argument for option: H");
81
82         assertThatThrownBy(() -> {
83             String[] arguments = new String[] {"-p"};
84             handler.parse(arguments);
85         }).hasMessage("Missing argument for option: p");
86
87         assertThatThrownBy(() -> {
88             String[] arguments = new String[] {"-p", "12345", "-z"};
89             handler.parse(arguments);
90         }).hasMessage("Unrecognized option: -z");
91
92         assertThatThrownBy(() -> {
93             String[] arguments = new String[] {"-p", "12345", "somethingElse"};
94             handler.parse(arguments);
95         }).hasMessage("too many command line arguments specified : [somethingElse]");
96
97         assertThatThrownBy(() -> {
98             String[] arguments = new String[] {"-c"};
99             handler.parse(arguments);
100         }).hasMessage("Missing argument for option: c");
101
102         args = new String[] {"-H", "MyHost", "-c", "src/test/resources/parameters/unit/Valid.json"};
103         parameters = handler.parse(args);
104         assertEquals("MyHost", parameters.getHost());
105
106         assertThatThrownBy(() -> {
107             String[] arguments = new String[] {"-c", "src/test/resources/parameters/unit/NonExistant.json"};
108             handler.parse(arguments);
109         }).hasMessageStartingWith("Could not read parameters from configuration file ");
110
111         assertThatThrownBy(() -> {
112             String[] arguments = new String[] {"-c", "src/test/resources/parameters/unit/BadHost.json"};
113             handler.parse(arguments);
114         }).hasMessage("Error parsing JSON parameters from configuration file "
115             + "\"src/test/resources/parameters/unit/BadHost.json\": "
116             + "com.google.gson.stream.MalformedJsonException: "
117             + "Unexpected value at line 3 column 14 path $.host");
118
119         assertThatThrownBy(() -> {
120             String[] arguments = new String[] {"-c", "src/test/resources/parameters/unit/BadPort.json"};
121             handler.parse(arguments);
122         }).hasMessage("Error parsing JSON parameters from configuration file "
123             + "\"src/test/resources/parameters/unit/BadPort.json\": "
124             + "java.lang.IllegalStateException: Expected an int "
125             + "but was BOOLEAN at line 4 column 18 path $.port");
126
127         assertThatThrownBy(() -> {
128             String[] arguments = new String[] {"-c", "src/test/resources/parameters/unit/Empty.json"};
129             handler.parse(arguments);
130         }).hasMessage("No parameters found in configuration file "
131             + "\"src/test/resources/parameters/unit/Empty.json\"");
132
133         assertThatThrownBy(() -> {
134             String[] arguments = new String[] {"-c", "src/test/resources/parameters/unit/NullHost.json"};
135             handler.parse(arguments);
136         }).hasMessageContaining("specified parameters are not valid", "EventGeneratorParameters",
137             "\"host\" value \"null\" INVALID, is null");
138
139         assertThatThrownBy(() -> {
140             String[] arguments = new String[] {"-p", "1023"};
141             handler.parse(arguments);
142         }).hasMessageContaining("specified parameters are not valid", "EventGeneratorParameters",
143             "\"port\" value \"1023\" INVALID, is below the minimum");
144     }
145
146     private static void assertValidInputs(EventGeneratorParameterHandler handler) throws ParseException {
147         String[] args = {"-h"};
148         EventGeneratorParameters parameters = handler.parse(args);
149         assertNull(parameters);
150         assertEquals("usage: EventGenerator [options...]",
151             handler.getHelp(EventGenerator.class.getSimpleName()).substring(0, 34));
152
153         args = new String[] {};
154         parameters = handler.parse(args);
155         assertEquals("localhost", parameters.getHost());
156         assertEquals(32801, parameters.getPort());
157
158         args = new String[] {"-H", "MyHost"};
159         parameters = handler.parse(args);
160         assertEquals("MyHost", parameters.getHost());
161
162         args = new String[] {"-p", "12345"};
163         parameters = handler.parse(args);
164         assertEquals(12345, parameters.getPort());
165
166
167         args = new String[] {"-H", "MyHost", "-p", "12345"};
168         parameters = handler.parse(args);
169         assertEquals("MyHost", parameters.getHost());
170         assertEquals(12345, parameters.getPort());
171
172         args = new String[] {"-c", "src/test/resources/parameters/unit/Valid.json"};
173         parameters = handler.parse(args);
174         assertEquals("ValidPars", parameters.getName());
175         assertEquals("FileHost", parameters.getHost());
176         assertEquals(54321, parameters.getPort());
177
178         args = new String[] {"-c", "src/test/resources/parameters/unit/Default.json"};
179         parameters = handler.parse(args);
180         assertEquals("localhost", parameters.getHost());
181         assertEquals(32801, parameters.getPort());
182
183         args = new String[] {"-c", "src/test/resources/parameters/unit/Default.json", "-bc", "100"};
184         parameters = handler.parse(args);
185         assertEquals(100, parameters.getBatchCount());
186
187         args = new String[] {"-c", "src/test/resources/parameters/unit/Default.json", "-bs", "12345"};
188         parameters = handler.parse(args);
189         assertEquals(12345, parameters.getBatchSize());
190     }
191 }