/*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. * Modifications Copyright (C) 2020 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ package org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import org.apache.commons.cli.ParseException; import org.junit.Test; /** * Test event generator parameters. */ public class EventGeneratorParametersHandlerTest { @Test public void testEventGeneratorParameterhandler() throws ParseException { EventGeneratorParameterHandler handler = new EventGeneratorParameterHandler(); assertNotNull(handler); String[] args = { "-h" }; EventGeneratorParameters parameters = handler.parse(args); assertNull(parameters); assertEquals("usage: EventGenerator [options...]", handler.getHelp(EventGenerator.class.getSimpleName()).substring(0, 34)); args = new String[] {}; parameters = handler.parse(args); assertEquals("localhost", parameters.getHost()); assertEquals(32801, parameters.getPort()); args = new String[] { "-H", "MyHost" }; parameters = handler.parse(args); assertEquals("MyHost", parameters.getHost()); args = new String[] { "-p", "12345" }; parameters = handler.parse(args); assertEquals(12345, parameters.getPort()); args = new String[] { "-H", "MyHost", "-p", "12345" }; parameters = handler.parse(args); assertEquals("MyHost", parameters.getHost()); assertEquals(12345, parameters.getPort()); args = new String[] { "-c", "src/test/resources/parameters/unit/Valid.json" }; parameters = handler.parse(args); assertEquals("ValidPars", parameters.getName()); assertEquals("FileHost", parameters.getHost()); assertEquals(54321, parameters.getPort()); args = new String[] { "-c", "src/test/resources/parameters/unit/Default.json" }; parameters = handler.parse(args); assertEquals("localhost", parameters.getHost()); assertEquals(32801, parameters.getPort()); args = new String[] { "-c", "src/test/resources/parameters/unit/Default.json", "-bc", "100" }; parameters = handler.parse(args); assertEquals(100, parameters.getBatchCount()); assertThatThrownBy(() -> { String[] arguments = new String[] { "-c", "src/test/resources/parameters/unit/Default.json", "-bc", "-1" }; handler.parse(arguments); }).hasMessage("specified parameters are not valid: parameter group \"EventGeneratorParameters\" " + "type \"org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator." + "EventGeneratorParameters\" INVALID, parameter group has status INVALID\n" + " field \"batchCount\" type \"int\" value \"-1\" INVALID, " + "batchCount must be an integer with a value of zero or more, " + "zero means generate batches forever\n"); args = new String[] { "-c", "src/test/resources/parameters/unit/Default.json", "-bs", "12345" }; parameters = handler.parse(args); assertEquals(12345, parameters.getBatchSize()); assertThatThrownBy(() -> { String[] arguments = new String[] { "-c", "src/test/resources/parameters/unit/Default.json", "-bs", "0" }; handler.parse(arguments); }).hasMessage("specified parameters are not valid: parameter group \"EventGeneratorParameters\" " + "type \"org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator." + "EventGeneratorParameters\" INVALID, parameter group has status INVALID\n" + " field \"batchSize\" type \"int\" value \"0\" INVALID, " + "batchSize must be an integer greater than zero\n"); args = new String[] { "-c", "src/test/resources/parameters/unit/Default.json", "-bd", "1000" }; parameters = handler.parse(args); assertEquals(1000, parameters.getDelayBetweenBatches()); assertThatThrownBy(() -> { String[] arguments = new String[] { "-c", "src/test/resources/parameters/unit/Default.json", "-bd", "-1" }; handler.parse(arguments); }).hasMessage("specified parameters are not valid: parameter group \"EventGeneratorParameters\" " + "type \"org.onap.policy.apex.testsuites.performance.benchmark.eventgenerator." + "EventGeneratorParameters\" INVALID, parameter group has status INVALID\n" + " field \"batchSize\" type \"int\" value \"1\" INVALID, " + "batchSize must be an integer with a value of zero or more\n"); args = new String[] { "-c", "src/test/resources/parameters/unit/Default.json", "-o", "Zooby" }; parameters = handler.parse(args); assertEquals("Zooby", parameters.getOutFile()); assertThatThrownBy(() -> { String[] arguments = new String[] { "-z" }; handler.parse(arguments); }).hasMessage("Unrecognized option: -z"); assertThatThrownBy(() -> { String[] arguments = new String[] { "-H" }; handler.parse(arguments); }).hasMessage("Missing argument for option: H"); assertThatThrownBy(() -> { String[] arguments = new String[] { "-p" }; handler.parse(arguments); }).hasMessage("Missing argument for option: p"); assertThatThrownBy(() -> { String[] arguments = new String[] { "-p", "12345", "-z" }; handler.parse(arguments); }).hasMessage("Unrecognized option: -z"); assertThatThrownBy(() -> { String[] arguments = new String[] { "-p", "12345", "somethingElse" }; handler.parse(arguments); }).hasMessage("too many command line arguments specified : [somethingElse]"); assertThatThrownBy(() -> { String[] arguments = new String[] { "-c" }; handler.parse(arguments); }).hasMessage("Missing argument for option: c"); args = new String[] { "-H", "MyHost", "-c", "src/test/resources/parameters/unit/Valid.json" }; parameters = handler.parse(args); assertEquals("MyHost", parameters.getHost()); assertThatThrownBy(() -> { String[] arguments = new String[] { "-c", "src/test/resources/parameters/unit/NonExistant.json" }; handler.parse(arguments); }).hasMessageStartingWith("Could not read parameters from configuration file "); assertThatThrownBy(() -> { String[] arguments = new String[] { "-c", "src/test/resources/parameters/unit/BadHost.json" }; handler.parse(arguments); }).hasMessage("Error parsing JSON parameters from configuration file " + "\"src/test/resources/parameters/unit/BadHost.json\": " + "com.google.gson.stream.MalformedJsonException: " + "Unexpected value at line 3 column 14 path $.host"); assertThatThrownBy(() -> { String[] arguments = new String[] { "-c", "src/test/resources/parameters/unit/BadPort.json" }; handler.parse(arguments); }).hasMessage("Error parsing JSON parameters from configuration file " + "\"src/test/resources/parameters/unit/BadPort.json\": " + "java.lang.IllegalStateException: Expected an int " + "but was BOOLEAN at line 4 column 18 path $.port"); assertThatThrownBy(() -> { String[] arguments = new String[] { "-c", "src/test/resources/parameters/unit/Empty.json" }; handler.parse(arguments); }).hasMessage("No parameters found in configuration file " + "\"src/test/resources/parameters/unit/Empty.json\""); assertThatThrownBy(() -> { String[] arguments = new String[] { "-c", "src/test/resources/parameters/unit/NullHost.json" }; handler.parse(arguments); }).hasMessage("specified parameters are not valid: parameter group \"ValidPars\" " + "type \"org.onap.policy.apex.testsuites.performance." + "benchmark.eventgenerator.EventGeneratorParameters\" INVALID, " + "parameter group has status INVALID\n" + " field \"host\" type \"java.lang.String\" " + "value \"null\" INVALID, host must be a non-blank string\n"); assertThatThrownBy(() -> { String[] arguments = new String[] { "-p", "1023" }; handler.parse(arguments); }).hasMessage("specified parameters are not valid: parameter group \"" + "EventGeneratorParameters\" type \"org.onap.policy.apex.testsuites.performance.benchmark." + "eventgenerator.EventGeneratorParameters\" INVALID, parameter group has status INVALID\n" + " field \"port\" type \"int\" value \"1023\" INVALID, " + "port must be an integer between 1024 and 65535 inclusive\n" + ""); } }