Refactor CommandLineArguments classes 15/120615/2
authoradheli.tavares <adheli.tavares@est.tech>
Thu, 15 Apr 2021 09:35:00 +0000 (10:35 +0100)
committeradheli.tavares <adheli.tavares@est.tech>
Mon, 19 Apr 2021 08:41:25 +0000 (09:41 +0100)
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>
models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/DmaapSimCommandLineArguments.java
models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/startstop/Main.java
models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/parameters/DmaapSimParameterHandlerTest.java
models-sim/models-sim-dmaap/src/test/java/org/onap/policy/sim/dmaap/startstop/MainTest.java
models-sim/policy-models-sim-pdp/src/main/java/org/onap/policy/models/sim/pdp/PdpSimulatorCommandLineArguments.java
models-sim/policy-models-sim-pdp/src/main/java/org/onap/policy/models/sim/pdp/PdpSimulatorMain.java
models-sim/policy-models-sim-pdp/src/test/java/org/onap/policy/models/sim/pdp/parameters/TestPdpSimulatorParameterHandler.java

index 724c3dc..8968a2a 100644 (file)
@@ -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");
 
 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");
-        }
-    }
 }
index a7214a0..2c6c540 100644 (file)
@@ -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;
         }
index 8f053d2..ca67123 100644 (file)
@@ -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");
     }
-
 }
index cceeaf5..1d6c68a 100644 (file)
@@ -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");
+    }
 }
index 327f762..662d7aa 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2021 Nordix Foundation.
  *  Modifications Copyright (C) 2019, 2020 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
 
 package org.onap.policy.models.sim.pdp;
 
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.Arrays;
-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.onap.policy.common.utils.resources.ResourceUtils;
-import org.onap.policy.models.sim.pdp.exception.PdpSimulatorException;
+import org.onap.policy.common.utils.cmd.CommandLineArgumentsHandler;
+import org.onap.policy.common.utils.cmd.CommandLineException;
 import org.onap.policy.models.sim.pdp.exception.PdpSimulatorRunTimeException;
 
 /**
@@ -41,52 +31,14 @@ import org.onap.policy.models.sim.pdp.exception.PdpSimulatorRunTimeException;
  *
  * @author Ajith Sreekumar (ajith.sreekumar@est.tech)
  */
-public class PdpSimulatorCommandLineArguments {
-
-    private static final String FILE_MESSAGE_PREAMBLE = " file \"";
-    private static final int HELP_LINE_LENGTH = 120;
-
-    private final Options options;
-    private String configurationFilePath = null;
-    private String propertyFilePath = null;
+public class PdpSimulatorCommandLineArguments extends CommandLineArgumentsHandler {
+    private static final String PDP_SIM = "pdp simulator";
 
     /**
      * Construct the options for the CLI editor.
      */
     public PdpSimulatorCommandLineArguments() {
-        //@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 pdp 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 pdp simulator parameters")
-                .hasArg()
-                .argName("CONFIG_FILE")
-                .required(false)
-                .type(String.class)
-                .build());
-        options.addOption(Option.builder("p")
-                .longOpt("property-file")
-                .desc("the full path to the topic property file to use, "
-                        + "the property file contains the pdp simulator topic properties")
-                .hasArg()
-                .argName("PROP_FILE")
-                .required(false)
-                .type(String.class)
-                .build());
-        //@formatter:on
+        super(PdpSimulatorMain.class.getName(), PDP_SIM, pdpSimPropertyFileOption());
     }
 
     /**
@@ -95,203 +47,23 @@ public class PdpSimulatorCommandLineArguments {
      * @param args The command line arguments
      */
     public PdpSimulatorCommandLineArguments(final String[] args) {
-        // Set up the options with the default constructor
         this();
 
-        // Parse the arguments
         try {
             parse(args);
-        } catch (final PdpSimulatorException e) {
+        } catch (final CommandLineException e) {
             throw new PdpSimulatorRunTimeException("parse error on pdp 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 PdpSimulatorException on command argument errors
+     * Build the property-file option for PDP Sim.
+     * @return property-file option
      */
-    public String parse(final String[] args) throws PdpSimulatorException {
-        // Clear all our arguments
-        setConfigurationFilePath(null);
-        setPropertyFilePath(null);
-
-        CommandLine commandLine = null;
-        try {
-            commandLine = new DefaultParser().parse(options, args);
-        } catch (final ParseException e) {
-            throw new PdpSimulatorException("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 PdpSimulatorException("too many command line arguments specified : " + Arrays.toString(args));
-        }
-
-        if (remainingArgs.length == 1) {
-            configurationFilePath = remainingArgs[0];
-        }
-
-        if (commandLine.hasOption('h')) {
-            return help(PdpSimulatorMain.class.getName());
-        }
-
-        if (commandLine.hasOption('v')) {
-            return version();
-        }
-
-        if (commandLine.hasOption('c')) {
-            setConfigurationFilePath(commandLine.getOptionValue('c'));
-        }
-
-        if (commandLine.hasOption('p')) {
-            setPropertyFilePath(commandLine.getOptionValue('p'));
-        }
-
-        return null;
-    }
-
-    /**
-     * Validate the command line options.
-     *
-     * @throws PdpSimulatorException on command argument validation errors
-     */
-    public void validate() throws PdpSimulatorException {
-        validateReadableFile("pdp simulator configuration", configurationFilePath);
-    }
-
-    /**
-     * Print version information for pdp simulator.
-     *
-     * @return the version string
-     */
-    public String version() {
-        return ResourceUtils.getResourceAsString("src/main/resources/version.txt");
-    }
-
-    /**
-     * Print help information for pdp 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 configuration file path.
-     *
-     * @return the configuration file path
-     */
-    public String getConfigurationFilePath() {
-        return configurationFilePath;
-    }
-
-    /**
-     * Gets the full expanded configuration file path.
-     *
-     * @return the configuration file path
-     */
-    public String getFullConfigurationFilePath() {
-        return ResourceUtils.getFilePath4Resource(getConfigurationFilePath());
-    }
-
-    /**
-     * Sets the configuration file path.
-     *
-     * @param configurationFilePath the configuration file path
-     */
-    public void setConfigurationFilePath(final String configurationFilePath) {
-        this.configurationFilePath = configurationFilePath;
-
-    }
-
-    /**
-     * Check set configuration file path.
-     *
-     * @return true, if check set configuration file path
-     */
-    public boolean checkSetConfigurationFilePath() {
-        return configurationFilePath != null && configurationFilePath.length() > 0;
-    }
-
-    /**
-     * Gets the property file path.
-     *
-     * @return the property file path
-     */
-    public String getPropertyFilePath() {
-        return propertyFilePath;
-    }
-
-    /**
-     * Gets the full expanded property file path.
-     *
-     * @return the property file path
-     */
-    public String getFullPropertyFilePath() {
-        return ResourceUtils.getFilePath4Resource(getPropertyFilePath());
-    }
-
-    /**
-     * Sets the property file path.
-     *
-     * @param propertyFilePath the property file path
-     */
-    public void setPropertyFilePath(final String propertyFilePath) {
-        this.propertyFilePath = propertyFilePath;
-
-    }
-
-    /**
-     * Check set property file path.
-     *
-     * @return true, if check set property file path
-     */
-    public boolean checkSetPropertyFilePath() {
-        return propertyFilePath != null && propertyFilePath.length() > 0;
-    }
-
-    /**
-     * Validate readable file.
-     *
-     * @param fileTag the file tag
-     * @param fileName the file name
-     * @throws PdpSimulatorException on the file name passed as a parameter
-     */
-    private void validateReadableFile(final String fileTag, final String fileName) throws PdpSimulatorException {
-        if (fileName == null || fileName.length() == 0) {
-            throw new PdpSimulatorException(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 PdpSimulatorException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
-        }
-
-        final File theFile = new File(fileUrl.getPath());
-        if (!theFile.exists()) {
-            throw new PdpSimulatorException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
-        }
-        if (!theFile.isFile()) {
-            throw new PdpSimulatorException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" is not a normal file");
-        }
-        if (!theFile.canRead()) {
-            throw new PdpSimulatorException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" is ureadable");
-        }
+    private static Option pdpSimPropertyFileOption() {
+        return Option.builder("p").longOpt("property-file")
+                .desc("the full path to the topic property file to use, "
+                        + "the property file contains the pdp simulator topic properties")
+                .hasArg().argName("PROP_FILE").required(false).type(String.class).build();
     }
-
 }
index 0507869..0d92aee 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2021 Nordix Foundation.
  *  Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
 package org.onap.policy.models.sim.pdp;
 
 import java.util.Arrays;
+import org.onap.policy.common.utils.cmd.CommandLineException;
 import org.onap.policy.common.utils.services.Registry;
 import org.onap.policy.models.sim.pdp.exception.PdpSimulatorException;
+import org.onap.policy.models.sim.pdp.exception.PdpSimulatorRunTimeException;
 import org.onap.policy.models.sim.pdp.parameters.PdpSimulatorParameterGroup;
 import org.onap.policy.models.sim.pdp.parameters.PdpSimulatorParameterHandler;
 import org.slf4j.Logger;
@@ -64,7 +66,7 @@ public class PdpSimulatorMain {
             }
             // Validate that the arguments are sane
             arguments.validate();
-        } catch (final PdpSimulatorException e) {
+        } catch (final PdpSimulatorRunTimeException | CommandLineException e) {
             LOGGER.error(PDP_SIMULATOR_FAIL_MSG, e);
             return;
         }
index e7d41a5..3ac99f4 100644 (file)
@@ -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");
@@ -28,6 +28,7 @@ import static org.junit.Assert.fail;
 
 import java.io.FileNotFoundException;
 import org.junit.Test;
+import org.onap.policy.common.utils.cmd.CommandLineException;
 import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.models.sim.pdp.PdpSimulatorCommandLineArguments;
 import org.onap.policy.models.sim.pdp.exception.PdpSimulatorException;
@@ -40,7 +41,7 @@ import org.onap.policy.models.sim.pdp.exception.PdpSimulatorException;
 public class TestPdpSimulatorParameterHandler {
 
     @Test
-    public void testParameterHandlerNoParameterFile() throws PdpSimulatorException {
+    public void testParameterHandlerNoParameterFile() throws PdpSimulatorException, CommandLineException {
         final String[] emptyArgumentString = { "-c", "src/test/resources/NoParametersFile.json" };
 
         final PdpSimulatorCommandLineArguments emptyArguments = new PdpSimulatorCommandLineArguments();
@@ -56,7 +57,7 @@ public class TestPdpSimulatorParameterHandler {
     }
 
     @Test
-    public void testParameterHandlerEmptyParameters() throws PdpSimulatorException {
+    public void testParameterHandlerEmptyParameters() throws PdpSimulatorException, CommandLineException {
         final String[] noArgumentString = { "-c", "src/test/resources/NoParameters.json" };
 
         final PdpSimulatorCommandLineArguments noArguments = new PdpSimulatorCommandLineArguments();
@@ -67,7 +68,7 @@ public class TestPdpSimulatorParameterHandler {
     }
 
     @Test
-    public void testParameterHandlerInvalidParameters() throws PdpSimulatorException {
+    public void testParameterHandlerInvalidParameters() throws PdpSimulatorException, CommandLineException {
         final String[] invalidArgumentString = { "-c", "src/test/resources/InvalidParameters.json" };
 
         final PdpSimulatorCommandLineArguments invalidArguments = new PdpSimulatorCommandLineArguments();
@@ -79,7 +80,7 @@ public class TestPdpSimulatorParameterHandler {
     }
 
     @Test
-    public void testParameterHandlerNoParameters() throws PdpSimulatorException {
+    public void testParameterHandlerNoParameters() throws PdpSimulatorException, CommandLineException {
         final String[] noArgumentString = { "-c", "src/test/resources/EmptyConfigParameters.json" };
 
         final PdpSimulatorCommandLineArguments noArguments = new PdpSimulatorCommandLineArguments();
@@ -90,7 +91,7 @@ public class TestPdpSimulatorParameterHandler {
     }
 
     @Test
-    public void testPdpSimulatorParameterGroup() throws PdpSimulatorException {
+    public void testPdpSimulatorParameterGroup() throws PdpSimulatorException, CommandLineException {
         final String[] pdpSimulatorConfigParameters = { "-c", "src/test/resources/PdpSimulatorConfigParameters.json" };
 
         final PdpSimulatorCommandLineArguments arguments = new PdpSimulatorCommandLineArguments();
@@ -102,7 +103,7 @@ public class TestPdpSimulatorParameterHandler {
     }
 
     @Test
-    public void testPdpSimulatorParameterGroup_InvalidName() throws PdpSimulatorException {
+    public void testPdpSimulatorParameterGroup_InvalidName() throws PdpSimulatorException, CommandLineException {
         final String[] pdpSimulatorConfigParameters = {"-c",
             "src/test/resources/PdpSimulatorConfigParameters_InvalidName.json"};
 
@@ -114,7 +115,7 @@ public class TestPdpSimulatorParameterHandler {
     }
 
     @Test
-    public void testPdpSimulatorVersion() throws PdpSimulatorException {
+    public void testPdpSimulatorVersion() throws PdpSimulatorException, CommandLineException {
         final String[] pdpSimulatorConfigParameters = { "-v" };
         final PdpSimulatorCommandLineArguments arguments = new PdpSimulatorCommandLineArguments();
         final String version = arguments.parse(pdpSimulatorConfigParameters);
@@ -122,7 +123,7 @@ public class TestPdpSimulatorParameterHandler {
     }
 
     @Test
-    public void testPdpSimulatorHelp() throws PdpSimulatorException {
+    public void testPdpSimulatorHelp() throws PdpSimulatorException, CommandLineException {
         final String[] pdpSimulatorConfigParameters = { "-h" };
         final PdpSimulatorCommandLineArguments arguments = new PdpSimulatorCommandLineArguments();
         final String help = arguments.parse(pdpSimulatorConfigParameters);
@@ -137,4 +138,12 @@ public class TestPdpSimulatorParameterHandler {
         assertThatThrownBy(() -> arguments.parse(pdpSimulatorConfigParameters))
                         .hasMessageStartingWith("invalid command line arguments specified");
     }
+
+    @Test
+    public void testPdpSimulatorProperty() throws PdpSimulatorException, CommandLineException {
+        final String[] pdpSimulatorConfigParameters = { "-p", "dummyProperties.json" };
+        final PdpSimulatorCommandLineArguments arguments = new PdpSimulatorCommandLineArguments();
+        arguments.parse(pdpSimulatorConfigParameters);
+        assertTrue(arguments.checkSetPropertyFilePath());
+    }
 }