aboutsummaryrefslogtreecommitdiffstats
path: root/models-sim/models-sim-dmaap
diff options
context:
space:
mode:
authoradheli.tavares <adheli.tavares@est.tech>2021-04-15 10:35:00 +0100
committeradheli.tavares <adheli.tavares@est.tech>2021-04-19 09:41:25 +0100
commita250c0c7a4a680c15cc4cb158f8f3cff53619f1b (patch)
tree675a8b10876f0d19abad12d86e1c67688682bf3a /models-sim/models-sim-dmaap
parent0b7b94b17340406b34817d6088daa97d965d5c2c (diff)
Refactor CommandLineArguments classes
All CMD Args simulator classes to extend from CMD class on Common. Fix all unit tests accordingly. Issue-ID: POLICY-3129 Change-Id: If69e432679772df15b06ce7e316c7c876b69773d Signed-off-by: adheli.tavares <adheli.tavares@est.tech>
Diffstat (limited to 'models-sim/models-sim-dmaap')
-rw-r--r--models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/DmaapSimCommandLineArguments.java182
-rw-r--r--models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/Main.java6
-rw-r--r--models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/parameters/DmaapSimParameterHandlerTest.java5
-rw-r--r--models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/startstop/MainTest.java12
4 files changed, 25 insertions, 180 deletions
diff --git a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/DmaapSimCommandLineArguments.java b/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/DmaapSimCommandLineArguments.java
index 724c3dc35..8968a2a8e 100644
--- a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/DmaapSimCommandLineArguments.java
+++ b/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/DmaapSimCommandLineArguments.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,66 +21,21 @@
package org.onap.policy.models.sim.dmaap.startstop;
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.Arrays;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.DefaultParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.commons.lang3.StringUtils;
-import org.onap.policy.common.utils.resources.ResourceUtils;
-import org.onap.policy.models.sim.dmaap.DmaapSimException;
+import org.onap.policy.common.utils.cmd.CommandLineArgumentsHandler;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.models.sim.dmaap.DmaapSimRuntimeException;
-
/**
* This class reads and handles command line parameters for the DMaaP simulator service.
*/
-public class DmaapSimCommandLineArguments {
- private static final String FILE_MESSAGE_PREAMBLE = " file \"";
- private static final int HELP_LINE_LENGTH = 120;
-
- private final Options options;
-
- @Getter
- @Setter
- private String configurationFilePath = null;
+public class DmaapSimCommandLineArguments extends CommandLineArgumentsHandler {
+ private static final String DMAAP_SIM = "DMaaP simulator";
/**
* Construct the options for the CLI editor.
*/
public DmaapSimCommandLineArguments() {
- //@formatter:off
- options = new Options();
- options.addOption(Option.builder("h")
- .longOpt("help")
- .desc("outputs the usage of this command")
- .required(false)
- .type(Boolean.class)
- .build());
- options.addOption(Option.builder("v")
- .longOpt("version")
- .desc("outputs the version of DMaaP simulator")
- .required(false)
- .type(Boolean.class)
- .build());
- options.addOption(Option.builder("c")
- .longOpt("config-file")
- .desc("the full path to the configuration file to use, "
- + "the configuration file must be a Json file containing the DMaaP simulator parameters")
- .hasArg()
- .argName("CONFIG_FILE")
- .required(false)
- .type(String.class)
- .build());
- //@formatter:on
+ super(Main.class.getName(), DMAAP_SIM);
}
/**
@@ -89,135 +44,12 @@ public class DmaapSimCommandLineArguments {
* @param args The command line arguments
*/
public DmaapSimCommandLineArguments(final String[] args) {
- // Set up the options with the default constructor
this();
- // Parse the arguments
try {
parse(args);
- } catch (final DmaapSimException e) {
+ } catch (final CommandLineException e) {
throw new DmaapSimRuntimeException("parse error on DMaaP simulator parameters", e);
}
}
-
- /**
- * Parse the command line options.
- *
- * @param args The command line arguments
- * @return a string with a message for help and version, or null if there is no message
- * @throws DmaapSimException on command argument errors
- */
- public String parse(final String[] args) throws DmaapSimException {
- // Clear all our arguments
- setConfigurationFilePath(null);
-
- CommandLine commandLine = null;
- try {
- commandLine = new DefaultParser().parse(options, args);
- } catch (final ParseException e) {
- throw new DmaapSimException("invalid command line arguments specified : " + e.getMessage());
- }
-
- // Arguments left over after Commons CLI does its stuff
- final String[] remainingArgs = commandLine.getArgs();
-
- if (remainingArgs.length > 0 && commandLine.hasOption('c') || remainingArgs.length > 0) {
- throw new DmaapSimException("too many command line arguments specified : " + Arrays.toString(args));
- }
-
- if (remainingArgs.length == 1) {
- configurationFilePath = remainingArgs[0];
- }
-
- if (commandLine.hasOption('h')) {
- return help(Main.class.getName());
- }
-
- if (commandLine.hasOption('v')) {
- return version();
- }
-
- if (commandLine.hasOption('c')) {
- setConfigurationFilePath(commandLine.getOptionValue('c'));
- }
-
- return null;
- }
-
- /**
- * Validate the command line options.
- *
- * @throws DmaapSimException on command argument validation errors
- */
- public void validate() throws DmaapSimException {
- validateFileExists("DMaaP simulator configuration", configurationFilePath);
- }
-
- /**
- * Print version information for DMaaP simulator.
- *
- * @return the version string
- */
- public String version() {
- return ResourceUtils.getResourceAsString("version.txt");
- }
-
- /**
- * Print help information for DMaaP simulator.
- *
- * @param mainClassName the main class name
- * @return the help string
- */
- public String help(final String mainClassName) {
- final HelpFormatter helpFormatter = new HelpFormatter();
- final StringWriter stringWriter = new StringWriter();
- final PrintWriter printWriter = new PrintWriter(stringWriter);
-
- helpFormatter.printHelp(printWriter, HELP_LINE_LENGTH, mainClassName + " [options...]", "options", options, 0,
- 0, "");
-
- return stringWriter.toString();
- }
-
- /**
- * Gets the full expanded configuration file path.
- *
- * @return the configuration file path
- */
- public String getFullConfigurationFilePath() {
- return ResourceUtils.getFilePath4Resource(getConfigurationFilePath());
- }
-
- /**
- * Check set configuration file path.
- *
- * @return true, if check set configuration file path
- */
- public boolean checkSetConfigurationFilePath() {
- return configurationFilePath != null && configurationFilePath.length() > 0;
- }
-
- /**
- * Validate file exists.
- *
- * @param fileTag the file tag
- * @param fileName the file name
- * @throws DmaapSimException on the file name passed as a parameter
- */
- private void validateFileExists(final String fileTag, final String fileName) throws DmaapSimException {
- if (StringUtils.isBlank(fileName)) {
- throw new DmaapSimException(fileTag + " file was not specified as an argument");
- }
-
- // The file name refers to a resource on the local file system
- final URL fileUrl = ResourceUtils.getUrl4Resource(fileName);
- if (fileUrl == null) {
- throw new DmaapSimException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
- }
-
- final File theFile = new File(fileUrl.getPath());
- if (!theFile.exists()) {
- throw new DmaapSimException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
- }
- }
}
diff --git a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/Main.java b/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/Main.java
index a7214a073..2c6c54063 100644
--- a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/Main.java
+++ b/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/Main.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +22,9 @@
package org.onap.policy.models.sim.dmaap.startstop;
import java.util.Arrays;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.models.sim.dmaap.DmaapSimException;
+import org.onap.policy.models.sim.dmaap.DmaapSimRuntimeException;
import org.onap.policy.models.sim.dmaap.parameters.DmaapSimParameterGroup;
import org.onap.policy.models.sim.dmaap.parameters.DmaapSimParameterHandler;
import org.slf4j.Logger;
@@ -58,7 +60,7 @@ public class Main {
}
// Validate that the arguments are sane
arguments.validate();
- } catch (final DmaapSimException e) {
+ } catch (final DmaapSimRuntimeException | CommandLineException e) {
LOGGER.error("start of DMaaP simulator service failed", e);
return;
}
diff --git a/models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/parameters/DmaapSimParameterHandlerTest.java b/models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/parameters/DmaapSimParameterHandlerTest.java
index 8f053d219..ca6712388 100644
--- a/models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/parameters/DmaapSimParameterHandlerTest.java
+++ b/models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/parameters/DmaapSimParameterHandlerTest.java
@@ -1,6 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2021 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,6 +25,7 @@ import static org.junit.Assert.assertNotNull;
import org.junit.Before;
import org.junit.Test;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.models.sim.dmaap.DmaapSimException;
import org.onap.policy.models.sim.dmaap.parameters.DmaapSimParameterGroup;
import org.onap.policy.models.sim.dmaap.parameters.DmaapSimParameterHandler;
@@ -41,7 +43,7 @@ public class DmaapSimParameterHandlerTest {
}
@Test
- public void testGetParameters() throws DmaapSimException {
+ public void testGetParameters() throws DmaapSimException, CommandLineException {
final DmaapSimCommandLineArguments args = new DmaapSimCommandLineArguments();
args.parse(new String[] {"-c", RESOURCE_DIR + "NormalParameters.json"});
@@ -66,5 +68,4 @@ public class DmaapSimParameterHandlerTest {
assertThatThrownBy(() -> handler.getParameters(args)).isInstanceOf(DmaapSimException.class)
.hasMessageContaining("validation error");
}
-
}
diff --git a/models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/startstop/MainTest.java b/models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/startstop/MainTest.java
index cceeaf5af..1d6c68a49 100644
--- a/models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/startstop/MainTest.java
+++ b/models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/startstop/MainTest.java
@@ -1,6 +1,7 @@
/*
* ============LICENSE_START=======================================================
- * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property.
+ * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property.
+ * Modifications Copyright (C) 2021 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +21,7 @@
package org.onap.policy.sim.dmaap.startstop;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@@ -30,6 +32,7 @@ import org.junit.Before;
import org.junit.Test;
import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
import org.onap.policy.models.sim.dmaap.rest.CommonRestServer;
+import org.onap.policy.models.sim.dmaap.startstop.DmaapSimCommandLineArguments;
import org.onap.policy.models.sim.dmaap.startstop.Main;
import org.onap.policy.sim.dmaap.parameters.CommonTestData;
@@ -102,4 +105,11 @@ public class MainTest extends CommonRestServer {
main = new Main(NormalParameters);
assertNull(main.getParameters());
}
+
+ @Test
+ public void testDmaapSimVersion() {
+ String[] testArgs = {"-v"};
+ DmaapSimCommandLineArguments sutArgs = new DmaapSimCommandLineArguments(testArgs);
+ assertThat(sutArgs.version()).startsWith("ONAP DMaaP simulator Service");
+ }
}