diff options
Diffstat (limited to 'services')
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); |