aboutsummaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
Diffstat (limited to 'services')
-rw-r--r--services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArguments.java180
-rw-r--r--services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexMain.java7
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/PeeredReferenceTest.java57
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventConsumerFactoryTest.java83
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProducerFactoryTest.java83
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProtocolFactoryTest.java70
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/Apex2ApexEventConverterTest.java180
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/ApexEventProtocolParametersTest.java50
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/enevent/ApexEvent2EnEventConverterTest.java100
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorCarrierTechnologyParametersTest.java43
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumerTest.java86
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducerTest.java161
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockReaderFactoryTest.java79
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockTest.java57
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArgumentsTest.java83
-rw-r--r--services/services-engine/src/test/java/org/onap/policy/apex/service/engine/main/ApexMainTest.java2
-rw-r--r--services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterCommandLineArguments.java255
-rw-r--r--services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterMain.java5
-rw-r--r--services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/TestApexStarterCommandLineArguments.java53
-rw-r--r--services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpStateChangeListener.java6
-rw-r--r--services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpUpdateListener.java4
-rw-r--r--services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/parameters/TestApexStarterParameterHandler.java20
22 files changed, 1245 insertions, 419 deletions
diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArguments.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArguments.java
index 31131b465..0d7560f89 100644
--- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArguments.java
+++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArguments.java
@@ -1,7 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2016-2018 Ericsson. All rights reserved.
- * Modification Copyright (C) 2020 Nordix Foundation.
+ * Modification Copyright (C) 2020-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.
@@ -22,21 +22,19 @@
package org.onap.policy.apex.service.engine.main;
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.onap.policy.apex.model.basicmodel.concepts.ApexException;
import org.onap.policy.apex.model.basicmodel.concepts.ApexRuntimeException;
-import org.onap.policy.common.utils.resources.ResourceUtils;
+import org.onap.policy.common.utils.cmd.CommandLineArgumentsHandler;
+import org.onap.policy.common.utils.cmd.CommandLineException;
+import org.onap.policy.common.utils.resources.MessageConstants;
import org.onap.policy.common.utils.validation.ParameterValidationUtils;
/**
@@ -45,30 +43,34 @@ import org.onap.policy.common.utils.validation.ParameterValidationUtils;
*
* @author Liam Fallon (liam.fallon@ericsson.com)
*/
-public class ApexCommandLineArguments {
+public class ApexCommandLineArguments extends CommandLineArgumentsHandler {
// A system property holding the root directory for relative paths in the
// configuration file
public static final String APEX_RELATIVE_FILE_ROOT = "APEX_RELATIVE_FILE_ROOT";
-
- // Recurring string constants
- private static final String FILE_PREAMBLE = " file \"";
private static final String RELATIVE_FILE_ROOT = "relative file root \"";
- private static final int HELP_LINE_LENGTH = 120;
-
- // Apache Commons CLI options
- private final Options options;
@Getter
@Setter
private String toscaPolicyFilePath = null;
+
+ @Getter
private String relativeFileRoot = null;
+ private CommandLine cmd = null;
+
/**
* Construct the options for the CLI editor.
*/
public ApexCommandLineArguments() {
+ super(ApexMain.class.getName(), MessageConstants.POLICY_APEX_PDP, apexCustomOptions());
+ }
+
+ /**
+ * Builds Apex custom options.
+ */
+ private static Options apexCustomOptions() {
//@formatter:off
- options = new Options();
+ Options options = new Options();
options.addOption(Option.builder("h")
.longOpt("help")
.desc("outputs the usage of this command")
@@ -76,25 +78,26 @@ public class ApexCommandLineArguments {
.type(Boolean.class)
.build());
options.addOption(Option.builder("v")
- .longOpt("version")
- .desc("outputs the version of Apex")
- .required(false)
- .type(Boolean.class)
- .build());
+ .longOpt("version")
+ .desc("outputs the version of Apex")
+ .required(false)
+ .type(Boolean.class)
+ .build());
options.addOption(Option.builder("rfr")
- .longOpt("relative-file-root")
- .desc("the root file path for relative file paths specified in the Apex configuration file, "
- + "defaults to the current directory from where Apex is executed")
- .hasArg()
- .argName(APEX_RELATIVE_FILE_ROOT)
- .required(false)
- .type(String.class)
- .build());
+ .longOpt("relative-file-root")
+ .desc("the root file path for relative file paths specified in the Apex configuration file, "
+ + "defaults to the current directory from where Apex is executed")
+ .hasArg()
+ .argName(APEX_RELATIVE_FILE_ROOT)
+ .required(false)
+ .type(String.class)
+ .build());
options.addOption(Option.builder("p").longOpt("tosca-policy-file")
.desc("the full path to the ToscaPolicy file to use.").hasArg().argName("TOSCA_POLICY_FILE")
.required(false)
.type(String.class).build());
//@formatter:on
+ return options;
}
/**
@@ -109,106 +112,72 @@ public class ApexCommandLineArguments {
// Parse the arguments
try {
parse(args);
- } catch (final ApexException e) {
+ } catch (final CommandLineException e) {
throw new ApexRuntimeException("parse error on Apex 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 ApexException on command argument errors
- */
- public String parse(final String[] args) throws ApexException {
+ @Override
+ public String parse(final String[] args) throws CommandLineException {
// Clear all our arguments
setToscaPolicyFilePath(null);
- CommandLine commandLine = null;
+ setRelativeFileRoot(null);
+
try {
- commandLine = new DefaultParser().parse(options, args);
+ cmd = new DefaultParser().parse(apexCustomOptions(), args);
} catch (final ParseException e) {
- throw new ApexException("invalid command line arguments specified : " + e.getMessage());
+ throw new CommandLineException("invalid command line arguments specified", e);
}
// Arguments left over after Commons CLI does its stuff
- final String[] remainingArgs = commandLine.getArgs();
+ final String[] remainingArgs = cmd.getArgs();
- if (remainingArgs.length > 0 && commandLine.hasOption('p') || remainingArgs.length > 1) {
- throw new ApexException("too many command line arguments specified : " + Arrays.toString(args));
+ if (remainingArgs.length > 0 && cmd.hasOption('p') || remainingArgs.length > 1) {
+ throw new CommandLineException("too many command line arguments specified: " + Arrays.toString(args));
}
if (remainingArgs.length == 1) {
toscaPolicyFilePath = remainingArgs[0];
}
- if (commandLine.hasOption('h')) {
- return help(ApexMain.class.getName());
+ if (cmd.hasOption('h')) {
+ return help();
}
- if (commandLine.hasOption('v')) {
+ if (cmd.hasOption('v')) {
return version();
}
- if (commandLine.hasOption("rfr")) {
- setRelativeFileRoot(commandLine.getOptionValue("rfr"));
- } else {
- setRelativeFileRoot(null);
+ if (cmd.hasOption("rfr")) {
+ setRelativeFileRoot(cmd.getOptionValue("rfr"));
}
- if (commandLine.hasOption('p')) {
- toscaPolicyFilePath = commandLine.getOptionValue('p');
+ if (cmd.hasOption('p')) {
+ setToscaPolicyFilePath(cmd.getOptionValue('p'));
}
return null;
}
+ @Override
+ public CommandLine getCommandLine() {
+ return this.cmd;
+ }
+
/**
* Validate the command line options.
*
* @throws ApexException on command argument validation errors
*/
- public void validate() throws ApexException {
- validateReadableFile("Tosca Policy", toscaPolicyFilePath);
+ public void validateInputFiles() throws ApexException {
+ try {
+ validateReadableFile("Tosca Policy", toscaPolicyFilePath);
+ } catch (CommandLineException e) {
+ throw new ApexException(e.getMessage());
+ }
validateRelativeFileRoot();
}
/**
- * Print version information for Apex.
- *
- * @return the version string
- */
- public String version() {
- return ResourceUtils.getResourceAsString("version.txt");
- }
-
- /**
- * Print help information for Apex.
- *
- * @param mainClassName the main class name
- * @return the help string
- */
- public String help(final String mainClassName) {
- final StringWriter stringWriter = new StringWriter();
- final PrintWriter stringPrintWriter = new PrintWriter(stringWriter);
-
- new HelpFormatter().printHelp(stringPrintWriter, HELP_LINE_LENGTH, mainClassName + " [options...]", "options",
- options, 0, 0, "");
-
- return stringWriter.toString();
- }
-
- /**
- * Gets the root file path for relative file paths in the configuration file.
- *
- * @return the root file path
- */
- public String getRelativeFileRoot() {
- return relativeFileRoot;
- }
-
-
- /**
* Sets the root file path for relative file paths in the configuration file.
*
* @param relativeFileRoot the configuration file path
@@ -231,37 +200,6 @@ public class ApexCommandLineArguments {
}
/**
- * Validate readable file.
- *
- * @param fileTag the file tag
- * @param fileName the file name
- * @throws ApexException the apex exception
- */
- private void validateReadableFile(final String fileTag, final String fileName) throws ApexException {
- if (fileName == null || fileName.length() == 0) {
- throw new ApexException(fileTag + " file was not specified as an argument");
- }
-
- // The file name can refer to a resource on the local file system or on the
- // class path
- final URL fileUrl = ResourceUtils.getUrl4Resource(fileName);
- if (fileUrl == null) {
- throw new ApexException(fileTag + FILE_PREAMBLE + fileName + "\" does not exist");
- }
-
- final File theFile = new File(fileUrl.getPath());
- if (!theFile.exists()) {
- throw new ApexException(fileTag + FILE_PREAMBLE + fileName + "\" does not exist");
- }
- if (!theFile.isFile()) {
- throw new ApexException(fileTag + FILE_PREAMBLE + fileName + "\" is not a normal file");
- }
- if (!theFile.canRead()) {
- throw new ApexException(fileTag + FILE_PREAMBLE + fileName + "\" is ureadable");
- }
- }
-
- /**
* Validate the relative file root.
*/
private void validateRelativeFileRoot() throws ApexException {
diff --git a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexMain.java b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexMain.java
index 3e9072dd4..9757c57e8 100644
--- a/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexMain.java
+++ b/services/services-engine/src/main/java/org/onap/policy/apex/service/engine/main/ApexMain.java
@@ -1,7 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2016-2018 Ericsson. All rights reserved.
- * Modification Copyright (C) 2019-2021 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2020-2021 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -38,6 +38,7 @@ import org.onap.policy.apex.service.parameters.ApexParameters;
import org.onap.policy.apex.service.parameters.engineservice.EngineServiceParameters;
import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
import org.onap.policy.common.parameters.ParameterService;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.slf4j.ext.XLogger;
import org.slf4j.ext.XLoggerFactory;
@@ -110,8 +111,8 @@ public class ApexMain {
}
// Validate that the arguments are sane
- arguments.validate();
- } catch (final ApexException e) {
+ arguments.validateInputFiles();
+ } catch (final ApexException | CommandLineException e) {
LOGGER.error("Arguments validation failed.", e);
throw new ApexException("Arguments validation failed.", e);
}
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/PeeredReferenceTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/PeeredReferenceTest.java
new file mode 100644
index 000000000..cadb5c8a1
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/PeeredReferenceTest.java
@@ -0,0 +1,57 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.ApexFileEventConsumer;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.producer.ApexFileEventProducer;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
+
+public class PeeredReferenceTest {
+
+ @Test
+ public void getPeeredConsumer() {
+ final ApexFileEventConsumer eventConsumer = new ApexFileEventConsumer();
+ final ApexFileEventProducer eventProducer = new ApexFileEventProducer();
+ final EventHandlerPeeredMode peeredMode = EventHandlerPeeredMode.REQUESTOR;
+ final PeeredReference peeredReference =
+ new PeeredReference(peeredMode, eventConsumer, eventProducer);
+
+ final ApexEventConsumer actual = peeredReference.getPeeredConsumer();
+ assertNotNull(actual);
+ assertEquals(peeredReference, actual.getPeeredReference(peeredMode));
+ }
+
+ @Test
+ public void getPeeredProducer() {
+ final ApexEventConsumer eventConsumer = new ApexFileEventConsumer();
+ final ApexEventProducer eventProducer = new ApexFileEventProducer();
+ final EventHandlerPeeredMode peeredMode = EventHandlerPeeredMode.SYNCHRONOUS;
+ final PeeredReference reference =
+ new PeeredReference(peeredMode, eventConsumer, eventProducer);
+
+ final ApexEventProducer actual = reference.getPeeredProducer();
+ assertNotNull(actual);
+ assertEquals(reference, actual.getPeeredReference(peeredMode));
+ }
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventConsumerFactoryTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventConsumerFactoryTest.java
new file mode 100644
index 000000000..976376e5a
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventConsumerFactoryTest.java
@@ -0,0 +1,83 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEventConsumer;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters;
+import org.onap.policy.apex.service.parameters.carriertechnology.RestPluginCarrierTechnologyParameters;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
+
+public class EventConsumerFactoryTest {
+ private EventConsumerFactory factory;
+
+ @Before
+ public void setUp() throws Exception {
+ factory = new EventConsumerFactory();
+ }
+
+ @Test
+ public void createConsumerNoTechnologyParameter() {
+ final String name = RandomStringUtils.randomAlphabetic(6);
+ final EventHandlerParameters parameters = new EventHandlerParameters();
+
+ assertThatThrownBy(() -> factory.createConsumer(name, parameters))
+ .isInstanceOf(NullPointerException.class);
+ }
+
+ @Test
+ public void createConsumerNoConsumerPlugin() {
+ final String name = RandomStringUtils.randomAlphabetic(6);
+ final EventHandlerParameters parameters = new EventHandlerParameters();
+ parameters.setCarrierTechnologyParameters(new RestPluginCarrierTechnologyParameters());
+
+ assertThatThrownBy(() -> factory.createConsumer(name, parameters))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void createConsumerWrongPluginClassName() {
+ final String name = RandomStringUtils.randomAlphabetic(6);
+ final EventHandlerParameters parameters = new EventHandlerParameters();
+ final RestPluginCarrierTechnologyParameters technologyParameters =
+ new RestPluginCarrierTechnologyParameters();
+ technologyParameters.setEventConsumerPluginClass("java.lang.Object");
+ parameters.setCarrierTechnologyParameters(technologyParameters);
+
+ assertThatThrownBy(() -> factory.createConsumer(name, parameters))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void createConsumer() throws ApexEventException {
+ final String name = RandomStringUtils.randomAlphabetic(6);
+ final EventHandlerParameters parameters = new EventHandlerParameters();
+ parameters.setCarrierTechnologyParameters(new SuperDooperCarrierTechnologyParameters());
+
+ final ApexEventConsumer actual = factory.createConsumer(name, parameters);
+ assertNotNull(actual);
+ }
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProducerFactoryTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProducerFactoryTest.java
new file mode 100644
index 000000000..7e3cb5478
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProducerFactoryTest.java
@@ -0,0 +1,83 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventProducer;
+import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperDooperCarrierTechnologyParameters;
+import org.onap.policy.apex.service.parameters.carriertechnology.RestPluginCarrierTechnologyParameters;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
+
+public class EventProducerFactoryTest {
+ private EventProducerFactory factory;
+
+ @Before
+ public void setUp() throws Exception {
+ factory = new EventProducerFactory();
+ }
+
+ @Test
+ public void createConsumerNoTechnologyParameter() {
+ final EventHandlerParameters parameters = new EventHandlerParameters();
+ final String name = RandomStringUtils.randomAlphabetic(4);
+
+ assertThatThrownBy(() -> factory.createProducer(name, parameters))
+ .isInstanceOf(NullPointerException.class);
+ }
+
+ @Test
+ public void createConsumerNoConsumerPlugin() {
+ final EventHandlerParameters parameters = new EventHandlerParameters();
+ final String name = RandomStringUtils.randomAlphabetic(4);
+ parameters.setCarrierTechnologyParameters(new RestPluginCarrierTechnologyParameters());
+
+ assertThatThrownBy(() -> factory.createProducer(name, parameters))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void createConsumerWrongProducerPluginName() {
+ final EventHandlerParameters parameters = new EventHandlerParameters();
+ final RestPluginCarrierTechnologyParameters technologyParameters =
+ new RestPluginCarrierTechnologyParameters();
+ final String name = RandomStringUtils.randomAlphabetic(4);
+ technologyParameters.setEventProducerPluginClass("java.lang.Object");
+ parameters.setCarrierTechnologyParameters(technologyParameters);
+
+ assertThatThrownBy(() -> factory.createProducer(name, parameters))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void createConsumer() throws ApexEventException {
+ final EventHandlerParameters parameters = new EventHandlerParameters();
+ parameters.setCarrierTechnologyParameters(new SuperDooperCarrierTechnologyParameters());
+ final String name = RandomStringUtils.randomAlphabetic(4);
+
+ final ApexEventProducer actual = factory.createProducer(name, parameters);
+ assertNotNull(actual);
+ }
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProtocolFactoryTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProtocolFactoryTest.java
new file mode 100644
index 000000000..8ed3a9fec
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/EventProtocolFactoryTest.java
@@ -0,0 +1,70 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEventProtocolConverter;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+import org.onap.policy.apex.service.engine.event.impl.apexprotocolplugin.ApexEventProtocolParameters;
+import org.onap.policy.apex.service.engine.event.impl.jsonprotocolplugin.JsonEventProtocolParameters;
+import org.onap.policy.apex.service.parameters.eventprotocol.EventProtocolParameters;
+
+public class EventProtocolFactoryTest {
+ private EventProtocolFactory factory;
+
+ @Before
+ public void setUp() throws Exception {
+ factory = new EventProtocolFactory();
+ }
+
+ @Test
+ public void createConsumerNoConsumerPlugin() {
+ final EventProtocolParameters parameters = new ApexEventProtocolParameters();
+ parameters.setEventProtocolPluginClass("");
+ final String name = RandomStringUtils.randomAlphabetic(9);
+
+ assertThatThrownBy(() -> factory.createConverter(name, parameters))
+ .isInstanceOf(ApexEventRuntimeException.class);
+ }
+
+ @Test
+ public void createConsumer2() {
+ final EventProtocolParameters parameters = new ApexEventProtocolParameters();
+ final String name = RandomStringUtils.randomAlphabetic(9);
+ parameters.setEventProtocolPluginClass("java.lang.Object");
+
+ assertThatThrownBy(() -> factory.createConverter(name, parameters))
+ .isInstanceOf(ApexEventRuntimeException.class);
+ }
+
+ @Test
+ public void createConsumer() {
+ final EventProtocolParameters parameters = new JsonEventProtocolParameters();
+ final String name = RandomStringUtils.randomAlphabetic(9);
+
+ final ApexEventProtocolConverter actual = factory.createConverter(name, parameters);
+ assertNotNull(actual);
+ }
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/Apex2ApexEventConverterTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/Apex2ApexEventConverterTest.java
new file mode 100644
index 000000000..04e87ee42
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/Apex2ApexEventConverterTest.java
@@ -0,0 +1,180 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl.apexprotocolplugin;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatNoException;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertSame;
+
+import java.util.List;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEvent;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventList;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+
+public class Apex2ApexEventConverterTest {
+ private Apex2ApexEventConverter converter;
+
+ @Before
+ public void setUp() throws Exception {
+ converter = new Apex2ApexEventConverter();
+ }
+
+ @Test
+ public void initWithNull() {
+ assertThatThrownBy(() -> converter.init(null))
+ .isInstanceOf(ApexEventRuntimeException.class);
+ }
+
+ @Test
+ public void init() {
+ assertThatNoException()
+ .isThrownBy(() -> converter.init(new ApexEventProtocolParameters()));
+ }
+
+ @Test
+ public void toApexEventWithNull() {
+ final String eventName = RandomStringUtils.randomAlphanumeric(5);
+ assertThatThrownBy(() -> converter.toApexEvent(eventName, null))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void toApexEventWithNonApexEvent() {
+ final String eventName = RandomStringUtils.randomAlphanumeric(5);
+ assertThatThrownBy(() -> converter.toApexEvent(eventName, new Object()))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void toApexEmptyEvent() throws ApexEventException {
+ final String eventName = RandomStringUtils.randomAlphanumeric(4);
+ final String name = RandomStringUtils.randomAlphanumeric(5);
+ final String version = RandomStringUtils.randomAlphanumeric(6);
+ final String nameSpace = "a" + RandomStringUtils.randomAlphanumeric(7);
+ final String source = RandomStringUtils.randomAlphanumeric(8);
+ final String target = RandomStringUtils.randomAlphanumeric(9);
+
+ final ApexEvent event = new ApexEvent(name, version, nameSpace, source, target);
+ final List<ApexEvent> result = converter.toApexEvent(eventName, event);
+ assertThat(result).isEmpty();
+ }
+
+ @Test
+ public void toApexEventWithApexAndOtherFields() throws ApexEventException {
+ final String eventName = RandomStringUtils.randomAlphanumeric(4);
+ final String name1 = RandomStringUtils.randomAlphanumeric(5);
+ final String version1 = RandomStringUtils.randomAlphanumeric(6);
+ final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
+ final String source1 = RandomStringUtils.randomAlphanumeric(8);
+ final String target1 = RandomStringUtils.randomAlphanumeric(9);
+
+ final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1);
+
+ final String key = RandomStringUtils.randomAlphabetic(3);
+ event.put(key, new Object());
+ final List<ApexEvent> result = converter.toApexEvent(eventName, event);
+ Object[] expected = {event};
+ assertArrayEquals(expected, result.toArray());
+ }
+
+ @Test
+ public void toApexEventWithApexAndList() throws ApexEventException {
+ final String eventName = RandomStringUtils.randomAlphanumeric(4);
+ final String name1 = RandomStringUtils.randomAlphanumeric(5);
+ final String version1 = RandomStringUtils.randomAlphanumeric(6);
+ final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
+ final String source1 = RandomStringUtils.randomAlphanumeric(8);
+ final String target1 = RandomStringUtils.randomAlphanumeric(9);
+
+ final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1);
+
+ final ApexEventList eventList = new ApexEventList();
+ eventList.add(event);
+
+ final String name2 = RandomStringUtils.randomAlphanumeric(15);
+ final String version2 = RandomStringUtils.randomAlphanumeric(16);
+ final String nameSpace2 = "b" + RandomStringUtils.randomAlphanumeric(17);
+ final String source2 = RandomStringUtils.randomAlphanumeric(18);
+ final String target2 = RandomStringUtils.randomAlphanumeric(19);
+
+ final ApexEvent parentEvent = new ApexEvent(name2, version2, nameSpace2, source2, target2);
+ final String key = RandomStringUtils.randomAlphabetic(3);
+ parentEvent.put(key, eventList);
+ final List<ApexEvent> result = converter.toApexEvent(eventName, parentEvent);
+ Object[] expected = {event};
+ assertArrayEquals(expected, result.toArray());
+ }
+
+ @Test
+ public void toApexEventWithApexAndListAndOtherFields() throws ApexEventException {
+ final String eventName = RandomStringUtils.randomAlphanumeric(4);
+ final String name1 = RandomStringUtils.randomAlphanumeric(5);
+ final String version1 = RandomStringUtils.randomAlphanumeric(6);
+ final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
+ final String source1 = RandomStringUtils.randomAlphanumeric(8);
+ final String target1 = RandomStringUtils.randomAlphanumeric(9);
+
+ final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1);
+
+ final ApexEventList eventList = new ApexEventList();
+ eventList.add(event);
+
+ final String name2 = RandomStringUtils.randomAlphanumeric(15);
+ final String version2 = RandomStringUtils.randomAlphanumeric(16);
+ final String nameSpace2 = "b" + RandomStringUtils.randomAlphanumeric(17);
+ final String source2 = RandomStringUtils.randomAlphanumeric(18);
+ final String target2 = RandomStringUtils.randomAlphanumeric(19);
+
+ final ApexEvent parentEvent = new ApexEvent(name2, version2, nameSpace2, source2, target2);
+ final String key1 = RandomStringUtils.randomAlphabetic(3);
+ final String key2 = RandomStringUtils.randomAlphabetic(2);
+ parentEvent.put(key1, eventList);
+ parentEvent.put(key2, new Object());
+ assertThatThrownBy(() -> converter.toApexEvent(eventName, parentEvent))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void fromApexEventNull() {
+ assertThatThrownBy(() -> converter.fromApexEvent(null))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void fromApexEvent() throws ApexEventException {
+ final String name1 = RandomStringUtils.randomAlphanumeric(5);
+ final String version1 = RandomStringUtils.randomAlphanumeric(6);
+ final String nameSpace1 = "a" + RandomStringUtils.randomAlphanumeric(7);
+ final String source1 = RandomStringUtils.randomAlphanumeric(8);
+ final String target1 = RandomStringUtils.randomAlphanumeric(9);
+
+ final ApexEvent event = new ApexEvent(name1, version1, nameSpace1, source1, target1);
+
+ final Object actual = converter.fromApexEvent(event);
+ assertSame(event, actual);
+ }
+
+}
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/ApexEventProtocolParametersTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/ApexEventProtocolParametersTest.java
new file mode 100644
index 000000000..8b39b0a74
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/apexprotocolplugin/ApexEventProtocolParametersTest.java
@@ -0,0 +1,50 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl.apexprotocolplugin;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Test;
+
+public class ApexEventProtocolParametersTest {
+
+ @Test
+ public void testNoArgConstructor() {
+ final ApexEventProtocolParameters apexEventProtocolParameters = new ApexEventProtocolParameters();
+ final String actual = apexEventProtocolParameters.getLabel();
+ final String pluginClass = apexEventProtocolParameters.getEventProtocolPluginClass();
+
+ assertEquals(ApexEventProtocolParameters.APEX_EVENT_PROTOCOL_LABEL, actual);
+ assertEquals(Apex2ApexEventConverter.class.getName(), pluginClass);
+ }
+
+ @Test
+ public void testConstructor() {
+ final String expected = RandomStringUtils.randomAlphabetic(6);
+ final ApexEventProtocolParameters apexEventProtocolParameters = new ApexEventProtocolParameters(expected);
+ final String actual = apexEventProtocolParameters.getLabel();
+ final String pluginClass = apexEventProtocolParameters.getEventProtocolPluginClass();
+
+ assertEquals(expected, actual);
+ assertEquals(Apex2ApexEventConverter.class.getName(), pluginClass);
+ }
+
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/enevent/ApexEvent2EnEventConverterTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/enevent/ApexEvent2EnEventConverterTest.java
new file mode 100644
index 000000000..562760f69
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/enevent/ApexEvent2EnEventConverterTest.java
@@ -0,0 +1,100 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl.enevent;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertArrayEquals;
+
+import java.util.List;
+import java.util.Random;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.core.engine.event.EnEvent;
+import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
+import org.onap.policy.apex.service.engine.event.ApexEvent;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+
+public class ApexEvent2EnEventConverterTest {
+ private ApexEvent2EnEventConverter converter;
+ private final Random random = new Random();
+
+ @Before
+ public void setUp() throws Exception {
+ converter = new ApexEvent2EnEventConverter(null);
+ }
+
+ @Test
+ public void toApexEventNull() {
+ final String eventName = RandomStringUtils.randomAlphabetic(3);
+ assertThatThrownBy(() -> converter.toApexEvent(eventName, null))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void toApexEventWrongClass() throws ApexException {
+ final String eventName = RandomStringUtils.randomAlphabetic(3);
+ final String name = RandomStringUtils.randomAlphanumeric(5);
+ final String version = RandomStringUtils.randomAlphanumeric(6);
+ final String nameSpace = "a" + RandomStringUtils.randomAlphanumeric(7);
+ final String source = RandomStringUtils.randomAlphanumeric(8);
+ final String target = RandomStringUtils.randomAlphanumeric(9);
+
+ final ApexEvent event = new ApexEvent(name, version, nameSpace, source, target);
+
+ assertThatThrownBy(() -> converter.toApexEvent(eventName, event))
+ .isInstanceOf(ApexEventRuntimeException.class);
+ }
+
+ @Test
+ public void toApex() throws ApexException {
+ // prepare String values for events
+ final String name = RandomStringUtils.randomAlphabetic(5);
+ final String version = RandomStringUtils.randomAlphabetic(6);
+ final String nameSpace = "b" + RandomStringUtils.randomAlphabetic(7);
+ final String source = RandomStringUtils.randomAlphabetic(8);
+ final String target = RandomStringUtils.randomAlphabetic(9);
+ final int executionId = random.nextInt(1000);
+ final String exceptionMessage = RandomStringUtils.randomAlphabetic(11);
+
+ // prepare events
+ final AxEvent axEvent = new AxEvent();
+ axEvent.getKey().setName(name);
+ axEvent.getKey().setVersion(version);
+ axEvent.setNameSpace(nameSpace);
+ axEvent.setSource(source);
+ axEvent.setTarget(target);
+ final EnEvent enEvent = new EnEvent(axEvent);
+ enEvent.setExecutionId(executionId);
+ enEvent.setExceptionMessage(exceptionMessage);
+
+ // prepare expected event
+ final ApexEvent apexEvent = new ApexEvent(name, version, nameSpace, source, target);
+ apexEvent.setExecutionId(executionId);
+ apexEvent.setExceptionMessage(exceptionMessage);
+ final Object[] expected = {apexEvent};
+
+ // Test
+ final List<ApexEvent> actual = converter.toApexEvent(RandomStringUtils.randomAlphabetic(3), enEvent);
+ assertArrayEquals(expected, actual.toArray());
+ }
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorCarrierTechnologyParametersTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorCarrierTechnologyParametersTest.java
new file mode 100644
index 000000000..c0da81625
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorCarrierTechnologyParametersTest.java
@@ -0,0 +1,43 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl.eventrequestor;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+import org.onap.policy.common.parameters.GroupValidationResult;
+
+public class EventRequestorCarrierTechnologyParametersTest {
+
+ @Test
+ public void getName() {
+ final EventRequestorCarrierTechnologyParameters parameters = new EventRequestorCarrierTechnologyParameters();
+ final String actual = parameters.getName();
+ assertEquals(EventRequestorCarrierTechnologyParameters.EVENT_REQUESTOR_CARRIER_TECHNOLOGY_LABEL, actual);
+ }
+
+ @Test
+ public void validate() {
+ final EventRequestorCarrierTechnologyParameters parameters = new EventRequestorCarrierTechnologyParameters();
+ final GroupValidationResult actual = parameters.validate();
+ assertNotNull(actual);
+ }
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumerTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumerTest.java
new file mode 100644
index 000000000..dd44da7dd
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorConsumerTest.java
@@ -0,0 +1,86 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl.eventrequestor;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.PeeredReference;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.ApexFileEventConsumer;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.producer.ApexFileEventProducer;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
+
+public class EventRequestorConsumerTest {
+ private EventRequestorConsumer consumer;
+
+ @Before
+ public void setUp() throws Exception {
+ consumer = new EventRequestorConsumer();
+ }
+
+ @Test
+ public void initNoCarrierTechnologyParameters() {
+ final String consumerName = RandomStringUtils.randomAlphabetic(6);
+ final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+
+ assertThatThrownBy(() -> consumer.init(consumerName, eventHandlerParameters, null))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void initNoPeered() {
+ final String consumerName = RandomStringUtils.randomAlphabetic(6);
+ final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+ eventHandlerParameters.setCarrierTechnologyParameters(new EventRequestorCarrierTechnologyParameters());
+
+ assertThatThrownBy(() -> consumer.init(consumerName, eventHandlerParameters, null))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void getName() throws ApexEventException {
+ final String consumerName = RandomStringUtils.randomAlphabetic(6);
+ final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+ eventHandlerParameters.setCarrierTechnologyParameters(new EventRequestorCarrierTechnologyParameters());
+ eventHandlerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
+
+ consumer.init(consumerName, eventHandlerParameters, null);
+ final String actual = consumer.getName();
+
+ assertEquals(consumerName, actual);
+ }
+
+ @Test
+ public void getSetPeeeredReference() {
+ final PeeredReference peeredReference =
+ new PeeredReference(EventHandlerPeeredMode.REQUESTOR, new ApexFileEventConsumer(),
+ new ApexFileEventProducer());
+ consumer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, peeredReference);
+
+ final PeeredReference actual = consumer.getPeeredReference(EventHandlerPeeredMode.REQUESTOR);
+
+ assertEquals(peeredReference, actual);
+ }
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducerTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducerTest.java
new file mode 100644
index 000000000..2f4764fb5
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/eventrequestor/EventRequestorProducerTest.java
@@ -0,0 +1,161 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl.eventrequestor;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+
+import java.util.Random;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.ApexEventProducer;
+import org.onap.policy.apex.service.engine.event.ApexEventRuntimeException;
+import org.onap.policy.apex.service.engine.event.PeeredReference;
+import org.onap.policy.apex.service.engine.event.SynchronousEventCache;
+import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.ApexFileEventConsumer;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerParameters;
+import org.onap.policy.apex.service.parameters.eventhandler.EventHandlerPeeredMode;
+
+public class EventRequestorProducerTest {
+ private final Random random = new Random();
+ private EventRequestorProducer producer;
+
+ @Mock
+ private ApexEventProducer apexProducer;
+ @Mock
+ private EventRequestorConsumer apexConsumer;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ producer = new EventRequestorProducer();
+ }
+
+ @Test
+ public void initWithEmptyParams() {
+ final String producerName = RandomStringUtils.random(4);
+ final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+
+ assertThatThrownBy(() -> producer.init(producerName, eventHandlerParameters))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void initNotPeered() {
+ final String producerName = RandomStringUtils.random(4);
+ final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+ eventHandlerParameters.setCarrierTechnologyParameters(new EventRequestorCarrierTechnologyParameters());
+
+ assertThatThrownBy(() -> producer.init(producerName, eventHandlerParameters))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+ @Test
+ public void getName() throws ApexEventException {
+ final String expected = RandomStringUtils.random(4);
+ final EventHandlerParameters eventHandlerParameters = new EventHandlerParameters();
+ eventHandlerParameters.setCarrierTechnologyParameters(new EventRequestorCarrierTechnologyParameters());
+ eventHandlerParameters.setPeeredMode(EventHandlerPeeredMode.REQUESTOR, true);
+
+ producer.init(expected, eventHandlerParameters);
+ final String actual = producer.getName();
+
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ public void getSetPeeredReference() {
+ final PeeredReference peeredReference = new PeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, apexConsumer,
+ apexProducer);
+ producer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, peeredReference);
+
+ final PeeredReference actual = this.producer.getPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS);
+ assertEquals(peeredReference, actual);
+ }
+
+ @Test
+ public void sendEventNoRequestor() {
+ final int id = random.nextInt(1000);
+
+ assertThatThrownBy(() -> producer.sendEvent(id, null, null, null))
+ .isInstanceOf(ApexEventRuntimeException.class);
+ }
+
+ @Test
+ public void sendEventNoEventRequestorConsumer() {
+ final int id = random.nextInt(1000);
+
+ final ApexFileEventConsumer fileEventConsumer = Mockito.mock(ApexFileEventConsumer.class);
+
+ final PeeredReference reference =
+ new PeeredReference(EventHandlerPeeredMode.REQUESTOR, fileEventConsumer, apexProducer);
+
+ producer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, reference);
+
+ assertThatThrownBy(() -> producer.sendEvent(id, null, null, null))
+ .isInstanceOf(ApexEventRuntimeException.class);
+ }
+
+ @Test
+ public void sendEvent() {
+ final int id = random.nextInt(1000);
+ // Prepare mocks
+ final PeeredReference peeredReference = Mockito.mock(PeeredReference.class);
+
+ Mockito.when(apexConsumer.getPeeredReference(Matchers.any())).thenReturn(peeredReference);
+ Mockito.when(peeredReference.getPeeredConsumer()).thenReturn(apexConsumer);
+
+ final PeeredReference reference =
+ new PeeredReference(EventHandlerPeeredMode.REQUESTOR, apexConsumer, apexProducer);
+ producer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, reference);
+
+ producer.sendEvent(id, null, null, null);
+ Mockito.verify(apexConsumer, Mockito.times(1)).processEvent(Matchers.any());
+ }
+
+ @Test
+ public void sendEventCached() {
+ final int id = random.nextInt(1000);
+
+ // Set event cache
+ final SynchronousEventCache eventCache = Mockito.mock(SynchronousEventCache.class);
+ producer.setPeeredReference(EventHandlerPeeredMode.SYNCHRONOUS, eventCache);
+
+ // Prepare other mocks
+ final PeeredReference peeredReference = Mockito.mock(PeeredReference.class);
+
+ Mockito.when(peeredReference.getPeeredConsumer()).thenReturn(apexConsumer);
+ Mockito.when(apexConsumer.getPeeredReference(Matchers.any())).thenReturn(peeredReference);
+
+ final PeeredReference reference =
+ new PeeredReference(EventHandlerPeeredMode.REQUESTOR, apexConsumer, apexProducer);
+ producer.setPeeredReference(EventHandlerPeeredMode.REQUESTOR, reference);
+
+ producer.sendEvent(id, null, null, null);
+ Mockito.verify(apexConsumer, Mockito.times(1)).processEvent(Matchers.any());
+ Mockito.verify(eventCache, Mockito.times(1)).removeCachedEventToApexIfExists(id);
+ }
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockReaderFactoryTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockReaderFactoryTest.java
new file mode 100644
index 000000000..4fa42a727
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockReaderFactoryTest.java
@@ -0,0 +1,79 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl.filecarrierplugin.consumer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.apex.service.engine.event.ApexEventException;
+import org.onap.policy.apex.service.engine.event.impl.apexprotocolplugin.ApexEventProtocolParameters;
+import org.onap.policy.apex.service.engine.event.impl.jsonprotocolplugin.JsonEventProtocolParameters;
+import org.onap.policy.apex.service.engine.parameters.dummyclasses.SuperTokenDelimitedEventProtocolParameters;
+import org.onap.policy.apex.service.parameters.eventprotocol.EventProtocolParameters;
+
+public class TextBlockReaderFactoryTest {
+ private TextBlockReaderFactory factory;
+
+ @Before
+ public void setUp() throws Exception {
+ factory = new TextBlockReaderFactory();
+ }
+
+ @Test
+ public void getTaggedReaderTextCharDelimitedParametersParams() throws ApexEventException {
+ final String text = RandomStringUtils.randomAlphanumeric(22);
+ final InputStream inputStream = prepareInputStream(text);
+ final EventProtocolParameters parameters = new JsonEventProtocolParameters();
+
+ final TextBlockReader actual = factory.getTaggedReader(inputStream, parameters);
+ assertThat(actual).isNotInstanceOf(HeaderDelimitedTextBlockReader.class);
+ }
+
+ @Test
+ public void getTaggedReaderTextTokenDelimitedParams() throws ApexEventException {
+ final String text = RandomStringUtils.randomAlphanumeric(22);
+ final InputStream inputStream = prepareInputStream(text);
+ new ApexEventProtocolParameters();
+ final EventProtocolParameters parameters = new SuperTokenDelimitedEventProtocolParameters();
+
+ final TextBlockReader actual = factory.getTaggedReader(inputStream, parameters);
+ assertThat(actual).isInstanceOf(HeaderDelimitedTextBlockReader.class);
+ }
+
+ @Test
+ public void getTaggedReaderNotSupportedParams() {
+ final String text = RandomStringUtils.randomAlphanumeric(22);
+ final InputStream inputStream = prepareInputStream(text);
+ final EventProtocolParameters parameters = new ApexEventProtocolParameters();
+ assertThatThrownBy(() -> factory.getTaggedReader(inputStream, parameters))
+ .isInstanceOf(ApexEventException.class);
+ }
+
+
+ private InputStream prepareInputStream(String text) {
+ return new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8));
+ }
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockTest.java
new file mode 100644
index 000000000..4390c3f3a
--- /dev/null
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/event/impl/filecarrierplugin/consumer/TextBlockTest.java
@@ -0,0 +1,57 @@
+/*
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.service.engine.event.impl.filecarrierplugin.consumer;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Random;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Test;
+
+public class TextBlockTest {
+ private final Random random = new Random();
+
+ @Test
+ public void isEndOfText() {
+ final boolean endOfText = random.nextBoolean();
+ final TextBlock textBlock = new TextBlock(endOfText, null);
+
+ assertEquals(endOfText, textBlock.isEndOfText());
+ }
+
+ @Test
+ public void getText() {
+ final boolean endOfText = random.nextBoolean();
+ final String text = RandomStringUtils.randomAlphanumeric(8);
+ final TextBlock textBlock = new TextBlock(endOfText, text);
+
+ assertEquals(text, textBlock.getText());
+ }
+
+ @Test
+ public void setText() {
+ final boolean endOfText = random.nextBoolean();
+ final String text = RandomStringUtils.randomAlphanumeric(8);
+ final TextBlock textBlock = new TextBlock(endOfText, null);
+
+ textBlock.setText(text);
+ assertEquals(text, textBlock.getText());
+ }
+} \ No newline at end of file
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArgumentsTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArgumentsTest.java
index 09663c0bf..b5b68c9fc 100644
--- a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArgumentsTest.java
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/main/ApexCommandLineArgumentsTest.java
@@ -1,7 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2016-2018 Ericsson. All rights reserved.
- * Modifications Copyright (C) 2020 Nordix Foundation
+ * Modifications Copyright (C) 2020-2021 Nordix Foundation.
* Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,12 +22,14 @@
package org.onap.policy.apex.service.engine.main;
+import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Test;
import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
+import org.onap.policy.common.utils.cmd.CommandLineException;
/**
* Test Apex Command Line Arguments.
@@ -41,14 +43,9 @@ public class ApexCommandLineArgumentsTest {
}
@Test
- public void testCommandLineArguments() throws ApexException {
+ public void testCommandLineArguments() throws ApexException, CommandLineException {
final ApexCommandLineArguments apexArguments = new ApexCommandLineArguments();
- final String[] args00 = {""};
- apexArguments.parse(args00);
- assertThatThrownBy(() -> apexArguments.validate())
- .hasMessage("Tosca Policy file was not specified as an argument");
-
final String[] args01 = {"-h"};
final String result = apexArguments.parse(args01);
assertTrue(result.startsWith("usage: org.onap.policy.apex.service.engine.main.ApexMain [options...]"));
@@ -65,70 +62,80 @@ public class ApexCommandLineArgumentsTest {
final String result04 = apexArguments.parse(args04);
assertTrue(result04.startsWith("usage: org.onap.policy.apex.service.engine.main.ApexMain [options...]"));
- final String[] args05 = {"-a"};
- assertThatThrownBy(() -> apexArguments.parse(args05))
- .hasMessage("invalid command line arguments specified : Unrecognized option: -a");
-
final String[] args06 = {"-p", "goodbye", "-h", "-v"};
final String result06 = apexArguments.parse(args06);
assertTrue(result06.startsWith("usage: org.onap.policy.apex.service.engine.main.ApexMain [options...]"));
+ }
+
+ @Test
+ public void testCommandLineArgumentsExceptions() throws ApexException, CommandLineException {
+ final ApexCommandLineArguments apexArguments = new ApexCommandLineArguments();
+
+ final String[] args00 = {""};
+ apexArguments.parse(args00);
+ assertThatThrownBy(() -> apexArguments.validateInputFiles())
+ .hasMessage("Tosca Policy file was not specified as an argument");
+
+ final String[] args05 = {"-a"};
+ assertThatThrownBy(() -> apexArguments.parse(args05)).hasMessage("invalid command line arguments specified")
+ .hasRootCauseMessage("Unrecognized option: -a");
final String[] args07 = {"-p", "goodbye", "-h", "aaa"};
assertThatThrownBy(() -> apexArguments.parse(args07))
- .hasMessage("too many command line arguments specified : [-p, goodbye, -h, aaa]");
+ .hasMessage("too many command line arguments specified: [-p, goodbye, -h, aaa]");
+ }
+
+ @Test
+ public void testCommandLineFileParameters() throws ApexException, CommandLineException {
+ final ApexCommandLineArguments apexArguments = new ApexCommandLineArguments();
+
+ final String[] args02 = {"-p", "src/test/resources/parameters/goodParams.json"};
+ apexArguments.parse(args02);
+ assertThatCode(() -> apexArguments.validateInputFiles()).doesNotThrowAnyException();
}
@Test
- public void testCommandLineFileParameters() throws ApexException {
+ public void testCommandLineFileParametersExceptions() throws ApexException, CommandLineException {
final ApexCommandLineArguments apexArguments = new ApexCommandLineArguments();
final String[] args00 = {"-c", "zooby"};
- assertThatThrownBy(() -> apexArguments.parse(args00))
- .hasMessage("invalid command line arguments specified : Unrecognized option: -c");
+ assertThatThrownBy(() -> apexArguments.parse(args00)).hasMessage("invalid command line arguments specified")
+ .hasRootCauseMessage("Unrecognized option: -c");
final String[] args01 = {"-p"};
- assertThatThrownBy(() -> apexArguments.parse(args01))
- .hasMessage("invalid command line arguments specified : Missing argument for option: p");
-
- final String[] args02 = {"-p", "src/test/resources/parameters/goodParams.json"};
- apexArguments.parse(args02);
- apexArguments.validate();
+ assertThatThrownBy(() -> apexArguments.parse(args01)).hasMessage("invalid command line arguments specified")
+ .hasRootCauseMessage("Missing argument for option: p");
final String[] args03 = {"-p", "src/test/resources/parameters/goodParams.json", "-m", "zooby"};
- assertThatThrownBy(() -> apexArguments.parse(args03))
- .hasMessage("invalid command line arguments specified : Unrecognized option: -m");
-
- final String[] args06 = {"-p", "src/test/resources/parameters/goodParams.json"};
- apexArguments.parse(args06);
- apexArguments.validate();
+ assertThatThrownBy(() -> apexArguments.parse(args03)).hasMessage("invalid command line arguments specified")
+ .hasRootCauseMessage("Unrecognized option: -m");
}
@Test
- public void testCommandLineRelativeRootParameters() throws ApexException {
+ public void testCommandLineRelativeRootParameters() throws ApexException, CommandLineException {
final ApexCommandLineArguments apexArguments = new ApexCommandLineArguments();
final String[] args00 = {"-p", "src/test/resources/parameters/goodParams.json", "-rfr", "zooby"};
apexArguments.parse(args00);
- assertThatThrownBy(() -> apexArguments.validate())
- .hasMessageContaining("zooby\" does not exist or is not a directory");
+ assertThatThrownBy(() -> apexArguments.validateInputFiles())
+ .hasMessageContaining("zooby\" does not exist or is not a directory");
final String[] args01 = {"-rfr"};
- assertThatThrownBy(() -> apexArguments.parse(args01))
- .hasMessage("invalid command line arguments specified : Missing argument for option: rfr");
+ assertThatThrownBy(() -> apexArguments.parse(args01)).hasMessage("invalid command line arguments specified")
+ .hasRootCauseMessage("Missing argument for option: rfr");
final String[] args02 = {"-p", "src/test/resources/parameters/goodParams.json", "-rfr", "pom.xml"};
apexArguments.parse(args02);
- assertThatThrownBy(() -> apexArguments.validate())
- .hasMessageContaining("pom.xml\" does not exist or is not a directory");
+ assertThatThrownBy(() -> apexArguments.validateInputFiles())
+ .hasMessageContaining("pom.xml\" does not exist or is not a directory");
final String[] args03 = {"-p", "src/test/resources/parameters/goodParams.json", "-rfr", "target"};
apexArguments.parse(args03);
- apexArguments.validate();
+ assertThatCode(() -> apexArguments.validateInputFiles()).doesNotThrowAnyException();
- final String[] args04 =
- {"-p", "src/test/resources/parameters/goodParamsRelative.json", "-rfr", "src/test/resources"};
+ final String[] args04 = {"-p", "parameters/goodParamsRelative.json", "-rfr", "src/test/resources"};
apexArguments.parse(args04);
- apexArguments.validate();
+ assertThatCode(() -> apexArguments.validateInputFiles()).doesNotThrowAnyException();
}
}
diff --git a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/main/ApexMainTest.java b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/main/ApexMainTest.java
index 5764a5275..b7532aba2 100644
--- a/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/main/ApexMainTest.java
+++ b/services/services-engine/src/test/java/org/onap/policy/apex/service/engine/main/ApexMainTest.java
@@ -89,7 +89,7 @@ public class ApexMainTest {
apexMain1 = new ApexMain(args);
await().atMost(200, TimeUnit.MILLISECONDS).until(() -> outContent.toString()
- .contains("invalid command line arguments specified : Unrecognized option: -whee"));
+ .contains("invalid command line arguments specified"));
assertNotNull(apexMain1);
}
diff --git a/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterCommandLineArguments.java b/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterCommandLineArguments.java
index cad2ffa72..dfc43e0ac 100644
--- a/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterCommandLineArguments.java
+++ b/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterCommandLineArguments.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,72 +21,24 @@
package org.onap.policy.apex.services.onappf;
-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.apex.services.onappf.exception.ApexStarterException;
import org.onap.policy.apex.services.onappf.exception.ApexStarterRunTimeException;
-import org.onap.policy.common.utils.resources.ResourceUtils;
+import org.onap.policy.common.utils.cmd.CommandLineArgumentsHandler;
+import org.onap.policy.common.utils.cmd.CommandLineException;
/**
* This class reads and handles command line parameters for the apex starter.
*
* @author Ajith Sreekumar (ajith.sreekumar@est.tech)
*/
-public class ApexStarterCommandLineArguments {
-
- 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 ApexStarterCommandLineArguments extends CommandLineArgumentsHandler {
+ private static final String APEX_COMPONENT = "policy apex starter";
/**
* Construct the options for the CLI editor.
*/
public ApexStarterCommandLineArguments() {
- //@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 apex starter")
- .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 apex starter 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 apex starter topic properties")
- .hasArg()
- .argName("PROP_FILE")
- .required(false)
- .type(String.class)
- .build());
- //@formatter:on
+ super(ApexStarterMain.class.getName(), APEX_COMPONENT, apexPropertyFileOpt());
}
/**
@@ -95,203 +47,24 @@ public class ApexStarterCommandLineArguments {
* @param args The command line arguments
*/
public ApexStarterCommandLineArguments(final String[] args) {
- // Set up the options with the default constructor
this();
- // Parse the arguments
try {
parse(args);
- } catch (final ApexStarterException e) {
+ } catch (final CommandLineException e) {
throw new ApexStarterRunTimeException("parse error on apex starter 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 ApexStarterException on command argument errors
- */
- public String parse(final String[] args) throws ApexStarterException {
- // Clear all our arguments
- setConfigurationFilePath(null);
- setPropertyFilePath(null);
-
- CommandLine commandLine = null;
- try {
- commandLine = new DefaultParser().parse(options, args);
- } catch (final ParseException e) {
- throw new ApexStarterException("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 ApexStarterException("too many command line arguments specified : " + Arrays.toString(args));
- }
-
- if (remainingArgs.length == 1) {
- configurationFilePath = remainingArgs[0];
- }
-
- if (commandLine.hasOption('h')) {
- return help(ApexStarterMain.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 ApexStarterException on command argument validation errors
- */
- public void validate() throws ApexStarterException {
- validateReadableFile("apex starter configuration", configurationFilePath);
- }
-
- /**
- * Print version information for apex starter.
- *
- * @return the version string
- */
- public String version() {
- return ResourceUtils.getResourceAsString("src/main/resources/version.txt");
- }
-
- /**
- * Print help information for apex starter.
- *
- * @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.
+ * Build the extra option property-file for ApexStarter.
*
- * @return true, if check set configuration file path
+ * @return the property-file option
*/
- 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 ApexStarterException on the file name passed as a parameter
- */
- private void validateReadableFile(final String fileTag, final String fileName) throws ApexStarterException {
- if (fileName == null || fileName.length() == 0) {
- throw new ApexStarterException(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 ApexStarterException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
- }
-
- final File theFile = new File(fileUrl.getPath());
- if (!theFile.exists()) {
- throw new ApexStarterException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" does not exist");
- }
- if (!theFile.isFile()) {
- throw new ApexStarterException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" is not a normal file");
- }
- if (!theFile.canRead()) {
- throw new ApexStarterException(fileTag + FILE_MESSAGE_PREAMBLE + fileName + "\" is ureadable");
- }
+ private static Option apexPropertyFileOpt() {
+ return Option.builder("p").longOpt("property-file")
+ .desc("the full path to the topic property file to use, "
+ + "the property file contains the policy apex starter properties")
+ .hasArg().argName("PROP_FILE").required(false).type(String.class).build();
}
-
}
diff --git a/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterMain.java b/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterMain.java
index 7daa22846..c9362bcdd 100644
--- a/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterMain.java
+++ b/services/services-onappf/src/main/java/org/onap/policy/apex/services/onappf/ApexStarterMain.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019-2020 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
@@ -28,6 +28,7 @@ import org.onap.policy.apex.services.onappf.exception.ApexStarterException;
import org.onap.policy.apex.services.onappf.exception.ApexStarterRunTimeException;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterGroup;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterHandler;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.common.utils.resources.MessageConstants;
import org.onap.policy.common.utils.services.Registry;
import org.slf4j.Logger;
@@ -77,7 +78,7 @@ public class ApexStarterMain {
// Start the activator
activator.initialize();
- } catch (final ApexStarterException e) {
+ } catch (final ApexStarterException | CommandLineException e) {
if (null != activator) {
Registry.unregister(ApexStarterConstants.REG_APEX_STARTER_ACTIVATOR);
}
diff --git a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/TestApexStarterCommandLineArguments.java b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/TestApexStarterCommandLineArguments.java
new file mode 100644
index 000000000..e564d38e4
--- /dev/null
+++ b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/TestApexStarterCommandLineArguments.java
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * 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.
+ * 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.services.onappf;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class TestApexStarterCommandLineArguments {
+
+ /**
+ * Test method for {@link org.onap.policy.apex.services.onappf.ApexStarterCommandLineArguments
+ * #getPropertyFilePath()}.
+ * Assert custom option was added to options object from super.
+ */
+ @Test
+ public void testCommandLineHasPropertyFileOption() {
+ String[] args = {"-p", "someFile.json"};
+ ApexStarterCommandLineArguments sut = new ApexStarterCommandLineArguments(args);
+ assertEquals("someFile.json", sut.getPropertyFilePath());
+ }
+
+ /**
+ * Test method for {@link org.onap.policy.apex.services.onappf.ApexStarterCommandLineArguments#version()}.
+ * Assert method consults version.txt from Apex module.
+ */
+ @Test
+ public void testVersion() {
+ String[] args = {"-v"};
+ ApexStarterCommandLineArguments sut = new ApexStarterCommandLineArguments(args);
+ assertThat(sut.version()).startsWith("ONAP Policy Framework Apex Starter Service");
+ }
+
+}
diff --git a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpStateChangeListener.java b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpStateChangeListener.java
index f04cf04f6..10f82633f 100644
--- a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpStateChangeListener.java
+++ b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpStateChangeListener.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019-2020 Nordix Foundation.
+ * Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
@@ -46,6 +46,7 @@ import org.onap.policy.apex.services.onappf.handler.ApexEngineHandler;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterGroup;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterHandler;
import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.services.Registry;
import org.onap.policy.models.pdp.concepts.PdpStateChange;
@@ -74,9 +75,10 @@ public class TestPdpStateChangeListener {
* @throws ApexStarterException if some error occurs while starting up the apex starter
* @throws FileNotFoundException if the file is missing
* @throws IOException if IO exception occurs
+ * @throws CommandLineException if any parsing of args has errors
*/
@Before
- public void setUp() throws ApexStarterException, FileNotFoundException, IOException {
+ public void setUp() throws ApexStarterException, FileNotFoundException, IOException, CommandLineException {
pdpUpdateMessageListener = new PdpUpdateListener();
pdpStateChangeListener = new PdpStateChangeListener();
Registry.newRegistry();
diff --git a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpUpdateListener.java b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpUpdateListener.java
index 636cdb0fc..ec3da9bc3 100644
--- a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpUpdateListener.java
+++ b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/comm/TestPdpUpdateListener.java
@@ -47,6 +47,7 @@ import org.onap.policy.apex.services.onappf.handler.PdpMessageHandler;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterGroup;
import org.onap.policy.apex.services.onappf.parameters.ApexStarterParameterHandler;
import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.services.Registry;
import org.onap.policy.models.pdp.concepts.PdpStateChange;
@@ -75,9 +76,10 @@ public class TestPdpUpdateListener {
* @throws ApexStarterException if some error occurs while starting up the apex starter
* @throws FileNotFoundException if the file is missing
* @throws IOException if IO exception occurs
+ * @throws CommandLineException if any parsing of args has errors
*/
@Before
- public void setUp() throws ApexStarterException, FileNotFoundException, IOException {
+ public void setUp() throws ApexStarterException, FileNotFoundException, IOException, CommandLineException {
Registry.newRegistry();
final String[] apexStarterConfigParameters = {"-c", "src/test/resources/ApexStarterConfigParametersNoop.json"};
final ApexStarterCommandLineArguments arguments = new ApexStarterCommandLineArguments();
diff --git a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/parameters/TestApexStarterParameterHandler.java b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/parameters/TestApexStarterParameterHandler.java
index d39cbecf0..dd424c15b 100644
--- a/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/parameters/TestApexStarterParameterHandler.java
+++ b/services/services-onappf/src/test/java/org/onap/policy/apex/services/onappf/parameters/TestApexStarterParameterHandler.java
@@ -1,7 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * Modifications Copyright (C) 2020 Nordix Foundation
+ * Copyright (C) 2019-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.
@@ -29,6 +28,7 @@ import java.io.FileNotFoundException;
import org.junit.Test;
import org.onap.policy.apex.services.onappf.ApexStarterCommandLineArguments;
import org.onap.policy.apex.services.onappf.exception.ApexStarterException;
+import org.onap.policy.common.utils.cmd.CommandLineException;
import org.onap.policy.common.utils.coder.CoderException;
/**
@@ -39,7 +39,7 @@ import org.onap.policy.common.utils.coder.CoderException;
public class TestApexStarterParameterHandler {
@Test
- public void testParameterHandlerNoParameterFile() throws ApexStarterException {
+ public void testParameterHandlerNoParameterFile() throws ApexStarterException, CommandLineException {
final String[] emptyArgumentString = { "-c", "src/test/resources/NoParametersFile.json" };
final ApexStarterCommandLineArguments emptyArguments = new ApexStarterCommandLineArguments();
@@ -51,7 +51,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testParameterHandlerEmptyParameters() throws ApexStarterException {
+ public void testParameterHandlerEmptyParameters() throws ApexStarterException, CommandLineException {
final String[] noArgumentString = { "-c", "src/test/resources/NoParameters.json" };
final ApexStarterCommandLineArguments noArguments = new ApexStarterCommandLineArguments();
@@ -62,7 +62,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testParameterHandlerInvalidParameters() throws ApexStarterException {
+ public void testParameterHandlerInvalidParameters() throws ApexStarterException, CommandLineException {
final String[] invalidArgumentString = { "-c", "src/test/resources/InvalidParameters.json" };
final ApexStarterCommandLineArguments invalidArguments = new ApexStarterCommandLineArguments();
@@ -74,7 +74,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testParameterHandlerNoParameters() throws ApexStarterException {
+ public void testParameterHandlerNoParameters() throws ApexStarterException, CommandLineException {
final String[] noArgumentString = { "-c", "src/test/resources/EmptyConfigParameters.json" };
final ApexStarterCommandLineArguments noArguments = new ApexStarterCommandLineArguments();
@@ -85,7 +85,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testApexStarterParameterGroup() throws ApexStarterException {
+ public void testApexStarterParameterGroup() throws ApexStarterException, CommandLineException {
final String[] apexStarterConfigParameters = { "-c", "src/test/resources/ApexStarterConfigParameters.json" };
final ApexStarterCommandLineArguments arguments = new ApexStarterCommandLineArguments();
@@ -97,7 +97,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testApexStarterParameterGroup_InvalidName() throws ApexStarterException {
+ public void testApexStarterParameterGroup_InvalidName() throws ApexStarterException, CommandLineException {
final String[] apexStarterConfigParameters =
{ "-c", "src/test/resources/ApexStarterConfigParameters_InvalidName.json" };
@@ -110,7 +110,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testApexStarterVersion() throws ApexStarterException {
+ public void testApexStarterVersion() throws ApexStarterException, CommandLineException {
final String[] apexStarterConfigParameters = { "-v" };
final ApexStarterCommandLineArguments arguments = new ApexStarterCommandLineArguments();
final String version = arguments.parse(apexStarterConfigParameters);
@@ -118,7 +118,7 @@ public class TestApexStarterParameterHandler {
}
@Test
- public void testApexStarterHelp() throws ApexStarterException {
+ public void testApexStarterHelp() throws ApexStarterException, CommandLineException {
final String[] apexStarterConfigParameters = { "-h" };
final ApexStarterCommandLineArguments arguments = new ApexStarterCommandLineArguments();
final String help = arguments.parse(apexStarterConfigParameters);