diff options
author | Jakub Dudycz <jakub.dudycz@nokia.com> | 2018-07-24 11:48:12 +0200 |
---|---|---|
committer | Piotr Jaszczyk <piotr.jaszczyk@nokia.com> | 2018-08-03 09:41:09 +0200 |
commit | fc6ab3e5fee2bc3e607848caa665b166d6f38dd6 (patch) | |
tree | c54a032ef0093f7024cff963addca163b0dcf98e /hv-collector-dcae-app-simulator | |
parent | 53dbf8e66ad83c2d5f06279a0d7446e5e8be68e8 (diff) |
Rework argument configuration
- Unify names of argument configuration classes in
DCAE APP simulator, XNF simualtor and VES HV Collector
- Make some of the arguments required
- Adjust docker-compose and Dockerfiles
- Adjust test cases and error handling
Closes ONAP-683
Change-Id: I4a9d43791cced9dcb52eb83e2f7956462e8712d9
Signed-off-by: Jakub Dudycz <jakub.dudycz@nokia.com>
Issue-ID: DCAEGEN2-601
Diffstat (limited to 'hv-collector-dcae-app-simulator')
-rw-r--r-- | hv-collector-dcae-app-simulator/Dockerfile | 3 | ||||
-rw-r--r-- | hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgDcaeAppSimConfiguration.kt (renamed from hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgBasedDcaeAppSimConfiguration.kt) | 46 | ||||
-rw-r--r-- | hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/main.kt | 4 | ||||
-rw-r--r-- | hv-collector-dcae-app-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgDcaeAppSimulatorConfigurationTest.kt (renamed from hv-collector-dcae-app-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgBasedDcaeAppSimConfigurationTest.kt) | 51 |
4 files changed, 56 insertions, 48 deletions
diff --git a/hv-collector-dcae-app-simulator/Dockerfile b/hv-collector-dcae-app-simulator/Dockerfile index 68b562d6..39bd878d 100644 --- a/hv-collector-dcae-app-simulator/Dockerfile +++ b/hv-collector-dcae-app-simulator/Dockerfile @@ -5,11 +5,8 @@ LABEL license.name="The Apache Software License, Version 2.0" LABEL license.url="http://www.apache.org/licenses/LICENSE-2.0" LABEL maintainer="Nokia Wroclaw ONAP Team" -EXPOSE 5000 - WORKDIR /opt/ves-hv-dcae-app-simulator ENTRYPOINT ["java", "-cp", "*:", "org.onap.dcae.collectors.veshv.simulators.dcaeapp.MainKt"] -CMD ["--kafka-bootstrap-servers", "kafka:9092", "--kafka-topics", "ves_hvRanMeas", "--listen-port", "5000"] COPY target/libs/external/* ./ COPY target/libs/internal/* ./ COPY target/hv-collector-dcae-app-simulator-*.jar ./ diff --git a/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgBasedDcaeAppSimConfiguration.kt b/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgDcaeAppSimConfiguration.kt index 27edde9c..264033e3 100644 --- a/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgBasedDcaeAppSimConfiguration.kt +++ b/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgDcaeAppSimConfiguration.kt @@ -19,36 +19,42 @@ */ package org.onap.dcae.collectors.veshv.simulators.dcaeapp.config +import arrow.core.ForOption +import arrow.core.Option +import arrow.core.fix +import arrow.instances.extensions +import arrow.typeclasses.binding import org.apache.commons.cli.CommandLine import org.apache.commons.cli.DefaultParser -import org.onap.dcae.collectors.veshv.simulators.dcaeapp.config.DefaultValues.API_PORT import org.onap.dcae.collectors.veshv.utils.commandline.ArgBasedConfiguration import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption -import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.KAFKA_SERVERS -import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.KAFKA_TOPICS -import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.LISTEN_PORT +import org.onap.dcae.collectors.veshv.utils.commandline.CommandLineOption.* -internal object DefaultValues { - const val API_PORT = 8080 - const val KAFKA_SERVERS = "kafka:9092" - const val KAFKA_TOPICS = "ves_hvRanMeas" -} - -class ArgBasedDcaeAppSimConfiguration : ArgBasedConfiguration<DcaeAppSimConfiguration>(DefaultParser()) { +class ArgDcaeAppSimConfiguration : ArgBasedConfiguration<DcaeAppSimConfiguration>(DefaultParser()) { override val cmdLineOptionsList: List<CommandLineOption> = listOf( LISTEN_PORT, KAFKA_SERVERS, KAFKA_TOPICS ) - override fun getConfiguration(cmdLine: CommandLine): DcaeAppSimConfiguration { - val port = cmdLine.intValue(LISTEN_PORT, API_PORT) - val kafkaBootstrapServers = cmdLine.stringValue(KAFKA_SERVERS, DefaultValues.KAFKA_SERVERS) - val kafkaTopics = cmdLine.stringValue(KAFKA_TOPICS, DefaultValues.KAFKA_TOPICS).split(",").toSet() - return DcaeAppSimConfiguration( - port, - kafkaBootstrapServers, - kafkaTopics) - } + override fun getConfiguration(cmdLine: CommandLine): Option<DcaeAppSimConfiguration> = + ForOption extensions { + binding { + val listenPort = cmdLine + .intValue(LISTEN_PORT) + .bind() + val kafkaBootstrapServers = cmdLine + .stringValue(KAFKA_SERVERS) + .bind() + val kafkaTopics = cmdLine + .stringValue(KAFKA_TOPICS) + .map { it.split(",").toSet() } + .bind() + DcaeAppSimConfiguration( + listenPort, + kafkaBootstrapServers, + kafkaTopics) + }.fix() + } } diff --git a/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/main.kt b/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/main.kt index fb28bc25..9f84fc4d 100644 --- a/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/main.kt +++ b/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/main.kt @@ -20,7 +20,7 @@ package org.onap.dcae.collectors.veshv.simulators.dcaeapp import arrow.effects.IO -import org.onap.dcae.collectors.veshv.simulators.dcaeapp.config.ArgBasedDcaeAppSimConfiguration +import org.onap.dcae.collectors.veshv.simulators.dcaeapp.config.ArgDcaeAppSimConfiguration import org.onap.dcae.collectors.veshv.simulators.dcaeapp.config.DcaeAppSimConfiguration import org.onap.dcae.collectors.veshv.simulators.dcaeapp.kafka.ConsumerFactory import org.onap.dcae.collectors.veshv.simulators.dcaeapp.remote.ApiServer @@ -35,7 +35,7 @@ private val logger = Logger(PACKAGE_NAME) const val PROGRAM_NAME = "java $PACKAGE_NAME.MainKt" fun main(args: Array<String>) = - ArgBasedDcaeAppSimConfiguration().parse(args) + ArgDcaeAppSimConfiguration().parse(args) .mapLeft(handleWrongArgumentErrorCurried(PROGRAM_NAME)) .map(::startApp) .unsafeRunEitherSync( diff --git a/hv-collector-dcae-app-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgBasedDcaeAppSimConfigurationTest.kt b/hv-collector-dcae-app-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgDcaeAppSimulatorConfigurationTest.kt index 4084ee8d..5ca64e3e 100644 --- a/hv-collector-dcae-app-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgBasedDcaeAppSimConfigurationTest.kt +++ b/hv-collector-dcae-app-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/config/ArgDcaeAppSimulatorConfigurationTest.kt @@ -28,14 +28,15 @@ import org.jetbrains.spek.api.dsl.it import org.onap.dcae.collectors.veshv.utils.commandline.WrongArgumentError -internal class ArgBasedDcaeAppSimConfigurationTest : Spek({ +internal class ArgDcaeAppSimulatorConfigurationTest : Spek({ - lateinit var cut: ArgBasedDcaeAppSimConfiguration + lateinit var cut: ArgDcaeAppSimConfiguration + val listenPort = "1234" val kafkaBootstrapServers = "localhosting:123,localhostinger:12345" val kafkaTopics = "top1,top2" beforeEachTest { - cut = ArgBasedDcaeAppSimConfiguration() + cut = ArgDcaeAppSimConfiguration() } fun parseExpectingSuccess(vararg cmdLine: String): DcaeAppSimConfiguration = @@ -56,14 +57,15 @@ internal class ArgBasedDcaeAppSimConfigurationTest : Spek({ given("all parameters are present in the long form") { beforeEachTest { - result = parseExpectingSuccess("--listen-port", "6969", + result = parseExpectingSuccess( + "--listen-port", listenPort, "--kafka-bootstrap-servers", kafkaBootstrapServers, "--kafka-topics", kafkaTopics ) } it("should set proper port") { - assertThat(result.apiPort).isEqualTo(6969) + assertThat(result.apiPort).isEqualTo(listenPort.toInt()) } @@ -81,13 +83,14 @@ internal class ArgBasedDcaeAppSimConfigurationTest : Spek({ given("some parameters are present in the short form") { beforeEachTest { - result = parseExpectingSuccess("-p", "666", + result = parseExpectingSuccess( + "-p", listenPort, "--kafka-bootstrap-servers", kafkaBootstrapServers, "-f", kafkaTopics) } it("should set proper port") { - assertThat(result.apiPort).isEqualTo(666) + assertThat(result.apiPort).isEqualTo(listenPort.toInt()) } it("should set proper kafka bootstrap servers") { @@ -101,29 +104,31 @@ internal class ArgBasedDcaeAppSimConfigurationTest : Spek({ } } - given("all optional parameters are absent") { - - beforeEachTest { - result = parseExpectingSuccess("-s", kafkaBootstrapServers, "-f", kafkaTopics) - } - - it("should set default port") { - assertThat(result.apiPort).isEqualTo(DefaultValues.API_PORT) - } - } - describe("required parameter is absent") { given("kafka topics are missing") { it("should throw exception") { - assertThat(parseExpectingFailure("-s", kafkaBootstrapServers)) - .isInstanceOf(WrongArgumentError::class.java) + assertThat(parseExpectingFailure( + "-p", listenPort, + "-s", kafkaBootstrapServers + )).isInstanceOf(WrongArgumentError::class.java) + } + } + + given("kafka bootstrap servers is missing") { + it("should throw exception") { + assertThat(parseExpectingFailure( + "-p", listenPort, + "-f", kafkaTopics + )).isInstanceOf(WrongArgumentError::class.java) } } - given("kafka bootstrap servers are missing") { + given("listen port is missing") { it("should throw exception") { - assertThat(parseExpectingFailure("-f", kafkaTopics)) - .isInstanceOf(WrongArgumentError::class.java) + assertThat(parseExpectingFailure( + "-p", kafkaTopics, + "-s", kafkaBootstrapServers + )).isInstanceOf(WrongArgumentError::class.java) } } } |