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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 * SPDX-License-Identifier: Apache-2.0
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator;
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;
30 import org.apache.commons.cli.ParseException;
31 import org.junit.jupiter.api.Test;
34 * Test event generator parameters.
36 class EventGeneratorParametersHandlerTest {
39 void testEventGeneratorParameterHandler() throws ParseException {
40 EventGeneratorParameterHandler handler = new EventGeneratorParameterHandler();
41 assertNotNull(handler);
43 assertValidInputs(handler);
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");
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");
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());
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");
68 args = new String[] {"-c", "src/test/resources/parameters/unit/Default.json", "-o", "Zooby"};
69 parameters = handler.parse(args);
70 assertEquals("Zooby", parameters.getOutFile());
72 assertThatThrownBy(() -> {
73 String[] arguments = new String[] {"-z"};
74 handler.parse(arguments);
75 }).hasMessage("Unrecognized option: -z");
77 assertThatThrownBy(() -> {
78 String[] arguments = new String[] {"-H"};
79 handler.parse(arguments);
80 }).hasMessage("Missing argument for option: H");
82 assertThatThrownBy(() -> {
83 String[] arguments = new String[] {"-p"};
84 handler.parse(arguments);
85 }).hasMessage("Missing argument for option: p");
87 assertThatThrownBy(() -> {
88 String[] arguments = new String[] {"-p", "12345", "-z"};
89 handler.parse(arguments);
90 }).hasMessage("Unrecognized option: -z");
92 assertThatThrownBy(() -> {
93 String[] arguments = new String[] {"-p", "12345", "somethingElse"};
94 handler.parse(arguments);
95 }).hasMessage("too many command line arguments specified : [somethingElse]");
97 assertThatThrownBy(() -> {
98 String[] arguments = new String[] {"-c"};
99 handler.parse(arguments);
100 }).hasMessage("Missing argument for option: c");
102 args = new String[] {"-H", "MyHost", "-c", "src/test/resources/parameters/unit/Valid.json"};
103 parameters = handler.parse(args);
104 assertEquals("MyHost", parameters.getHost());
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 ");
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");
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");
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\"");
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");
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");
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));
153 args = new String[] {};
154 parameters = handler.parse(args);
155 assertEquals("localhost", parameters.getHost());
156 assertEquals(32801, parameters.getPort());
158 args = new String[] {"-H", "MyHost"};
159 parameters = handler.parse(args);
160 assertEquals("MyHost", parameters.getHost());
162 args = new String[] {"-p", "12345"};
163 parameters = handler.parse(args);
164 assertEquals(12345, parameters.getPort());
167 args = new String[] {"-H", "MyHost", "-p", "12345"};
168 parameters = handler.parse(args);
169 assertEquals("MyHost", parameters.getHost());
170 assertEquals(12345, parameters.getPort());
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());
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());
183 args = new String[] {"-c", "src/test/resources/parameters/unit/Default.json", "-bc", "100"};
184 parameters = handler.parse(args);
185 assertEquals(100, parameters.getBatchCount());
187 args = new String[] {"-c", "src/test/resources/parameters/unit/Default.json", "-bs", "12345"};
188 parameters = handler.parse(args);
189 assertEquals(12345, parameters.getBatchSize());