aboutsummaryrefslogtreecommitdiffstats
path: root/sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl
diff options
context:
space:
mode:
Diffstat (limited to 'sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl')
-rw-r--r--sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/ArgHvVesConfigurationTest.kt73
-rw-r--r--sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/ConfigurationValidatorTest.kt138
-rw-r--r--sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/FileConfigurationReaderTest.kt153
3 files changed, 364 insertions, 0 deletions
diff --git a/sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/ArgHvVesConfigurationTest.kt b/sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/ArgHvVesConfigurationTest.kt
new file mode 100644
index 00000000..dbe757c4
--- /dev/null
+++ b/sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/ArgHvVesConfigurationTest.kt
@@ -0,0 +1,73 @@
+/*
+ * ============LICENSE_START=======================================================
+ * dcaegen2-collectors-veshv
+ * ================================================================================
+ * Copyright (C) 2018-2019 NOKIA
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.collectors.veshv.config.impl
+
+import org.assertj.core.api.Assertions.assertThat
+import org.jetbrains.spek.api.Spek
+import org.jetbrains.spek.api.dsl.describe
+import org.jetbrains.spek.api.dsl.given
+import org.jetbrains.spek.api.dsl.it
+import org.jetbrains.spek.api.dsl.on
+import org.onap.dcae.collectors.veshv.commandline.WrongArgumentError
+import org.onap.dcae.collectors.veshv.tests.utils.absoluteResourcePath
+import org.onap.dcae.collectors.veshv.tests.utils.parseExpectingFailure
+import org.onap.dcae.collectors.veshv.tests.utils.parseExpectingSuccess
+import java.io.File
+
+/**
+ * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
+ * @since May 2018
+ */
+object ArgVesHvConfigurationTest : Spek({
+ lateinit var cut: ArgHvVesConfiguration
+ val configFilePath = javaClass.absoluteResourcePath("sampleConfig.json")
+
+ beforeEachTest {
+ cut = ArgHvVesConfiguration()
+ }
+
+ describe("parsing arguments") {
+ given("all parameters are present in the long form") {
+ lateinit var result: File
+
+ beforeEachTest {
+ result = cut.parseExpectingSuccess(
+ "--configuration-file", configFilePath
+ )
+ }
+
+ it("should read proper configuration file") {
+ assertThat(result.exists()).isTrue()
+ }
+ }
+
+ describe("required parameter is absent") {
+ on("missing configuration file path") {
+ it("should throw exception") {
+ assertThat(
+ cut.parseExpectingFailure(
+ "--non-existing-option", ""
+ )
+ ).isInstanceOf(WrongArgumentError::class.java)
+ }
+ }
+ }
+ }
+}) \ No newline at end of file
diff --git a/sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/ConfigurationValidatorTest.kt b/sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/ConfigurationValidatorTest.kt
new file mode 100644
index 00000000..12396d23
--- /dev/null
+++ b/sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/ConfigurationValidatorTest.kt
@@ -0,0 +1,138 @@
+/*
+ * ============LICENSE_START=======================================================
+ * dcaegen2-collectors-veshv
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.collectors.veshv.config.impl
+
+import arrow.core.None
+import arrow.core.Some
+import com.nhaarman.mockitokotlin2.mock
+import org.assertj.core.api.Assertions.assertThat
+import org.assertj.core.api.Assertions.fail
+import org.jetbrains.spek.api.Spek
+import org.jetbrains.spek.api.dsl.describe
+import org.jetbrains.spek.api.dsl.it
+import org.onap.dcae.collectors.veshv.config.api.model.routing
+import org.onap.dcae.collectors.veshv.config.impl.ConfigurationValidator.Companion.DEFAULT_LOG_LEVEL
+import org.onap.dcae.collectors.veshv.utils.logging.LogLevel
+import org.onap.dcaegen2.services.sdk.security.ssl.SecurityKeys
+import java.time.Duration
+
+internal object ConfigurationValidatorTest : Spek({
+ describe("ConfigurationValidator") {
+ val cut = ConfigurationValidator()
+
+ describe("validating partial configuration with missing fields") {
+ val config = PartialConfiguration(
+ Some(PartialServerConfig(listenPort = Some(1)))
+ )
+
+ it("should return ValidationError") {
+ val result = cut.validate(config)
+ assertThat(result.isLeft()).isTrue()
+ }
+ }
+
+ describe("validating configuration with empty log level") {
+ val config = PartialConfiguration(
+ Some(PartialServerConfig(
+ Some(1),
+ Some(2),
+ Some(3)
+ )),
+ Some(PartialCbsConfig(
+ Some(5),
+ Some(3)
+ )),
+ Some(PartialSecurityConfig(
+ Some(mock())
+ )),
+ Some(PartialCollectorConfig(
+ Some(true),
+ Some(4),
+ Some(emptyList()),
+ Some(routing { }.build())
+ )),
+ None
+ )
+
+ it("should use default log level") {
+ val result = cut.validate(config)
+ result.fold(
+ {
+ fail("Configuration should have been created successfully")
+ },
+ {
+ assertThat(it.logLevel).isEqualTo(DEFAULT_LOG_LEVEL)
+ }
+ )
+ }
+ }
+
+ describe("validating complete configuration") {
+ val idleTimeoutSec = 10
+ val firstReqDelaySec = 10
+ val securityKeys = Some(mock<SecurityKeys>())
+ val routing = routing { }.build()
+
+ val config = PartialConfiguration(
+ Some(PartialServerConfig(
+ Some(1),
+ Some(idleTimeoutSec),
+ Some(2)
+ )),
+ Some(PartialCbsConfig(
+ Some(firstReqDelaySec),
+ Some(3)
+ )),
+ Some(PartialSecurityConfig(
+ securityKeys
+ )),
+ Some(PartialCollectorConfig(
+ Some(true),
+ Some(4),
+ Some(emptyList()),
+ Some(routing)
+ )),
+ Some(LogLevel.INFO)
+ )
+
+ it("should create valid configuration") {
+ val result = cut.validate(config)
+ result.fold(
+ {
+ fail("Configuration should have been created successfully")
+ },
+ {
+ assertThat(it.server.idleTimeout)
+ .isEqualTo(Duration.ofSeconds(idleTimeoutSec.toLong()))
+
+ assertThat(it.security.keys)
+ .isEqualTo(securityKeys)
+
+ assertThat(it.cbs.firstRequestDelay)
+ .isEqualTo(Duration.ofSeconds(firstReqDelaySec.toLong()))
+
+ assertThat(it.collector.routing)
+ .isEqualTo(routing)
+ }
+ )
+ }
+ }
+ }
+})
diff --git a/sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/FileConfigurationReaderTest.kt b/sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/FileConfigurationReaderTest.kt
new file mode 100644
index 00000000..ab99f13c
--- /dev/null
+++ b/sources/hv-collector-configuration/src/test/kotlin/org/onap/dcae/collectors/veshv/config/impl/FileConfigurationReaderTest.kt
@@ -0,0 +1,153 @@
+/*
+ * ============LICENSE_START=======================================================
+ * dcaegen2-collectors-veshv
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.collectors.veshv.config.impl
+
+import arrow.core.Some
+import org.assertj.core.api.Assertions.assertThat
+import org.jetbrains.spek.api.Spek
+import org.jetbrains.spek.api.dsl.describe
+import org.jetbrains.spek.api.dsl.it
+import org.onap.dcae.collectors.veshv.config.api.model.Routing
+import org.onap.dcae.collectors.veshv.tests.utils.resourceAsStream
+import org.onap.dcae.collectors.veshv.utils.logging.LogLevel
+import java.io.StringReader
+import java.net.InetSocketAddress
+
+/**
+ * @author Pawel Biniek <pawel.biniek@nokia.com>
+ * @since February 2019
+ */
+internal object FileConfigurationReaderTest : Spek({
+ describe("A configuration loader utility") {
+ val cut = FileConfigurationReader()
+
+ describe("partial configuration loading") {
+ it("parses enumerations") {
+ val input = """{"logLevel":"ERROR"}"""
+
+ val config = cut.loadConfig(StringReader(input))
+ assertThat(config.logLevel).isEqualTo(Some(LogLevel.ERROR))
+ }
+
+ it("parses simple structure") {
+ val input = """{
+ "server" : {
+ "healthCheckApiPort" : 12002,
+ "listenPort" : 12003
+ }
+ }
+ """.trimIndent()
+ val config = cut.loadConfig(StringReader(input))
+ assertThat(config.server.nonEmpty()).isTrue()
+ assertThat(config.server.orNull()?.listenPort).isEqualTo(Some(12003))
+ }
+
+ it("parses ip address") {
+ val input = """{ "collector" : {
+ "kafkaServers": [
+ "192.168.255.1:5005",
+ "192.168.255.26:5006"
+ ]
+ }
+ }"""
+
+ val config = cut.loadConfig(StringReader(input))
+ assertThat(config.collector.nonEmpty()).isTrue()
+ val collector = config.collector.orNull() as PartialCollectorConfig
+ assertThat(collector.kafkaServers.nonEmpty()).isTrue()
+ val addresses = collector.kafkaServers.orNull() as List<InetSocketAddress>
+ assertThat(addresses)
+ .isEqualTo(listOf(
+ InetSocketAddress("192.168.255.1", 5005),
+ InetSocketAddress("192.168.255.26", 5006)
+ ))
+ }
+
+ it("parses routing array with RoutingAdapter") {
+ val input = """{
+ "collector" : {
+ "routing" : [
+ {
+ "fromDomain": "perf3gpp",
+ "toTopic": "HV_VES_PERF3GPP"
+ }
+ ]
+ }
+ }""".trimIndent()
+ val config = cut.loadConfig(StringReader(input))
+ assertThat(config.collector.nonEmpty()).isTrue()
+ val collector = config.collector.orNull() as PartialCollectorConfig
+ assertThat(collector.routing.nonEmpty()).isTrue()
+ val routing = collector.routing.orNull() as Routing
+ routing.run {
+ assertThat(routes.size).isEqualTo(1)
+ assertThat(routes[0].domain).isEqualTo("perf3gpp")
+ assertThat(routes[0].targetTopic).isEqualTo("HV_VES_PERF3GPP")
+ }
+ }
+
+ it("parses invalid log level string to empty option") {
+ val input = """{
+ "logLevel": something
+ }""".trimMargin()
+ val config = cut.loadConfig(input.reader())
+
+ assertThat(config.logLevel.isEmpty())
+ }
+ }
+
+ describe("complete file loading") {
+ it("loads actual file") {
+ val config = cut.loadConfig(
+ javaClass.resourceAsStream("/sampleConfig.json"))
+
+ assertThat(config).isNotNull
+ assertThat(config.logLevel).isEqualTo(Some(LogLevel.ERROR))
+
+ assertThat(config.security.nonEmpty()).isTrue()
+ val security = config.security.orNull() as PartialSecurityConfig
+ assertThat(security.keys.nonEmpty()).isTrue()
+
+ assertThat(config.cbs.nonEmpty()).isTrue()
+ val cbs = config.cbs.orNull() as PartialCbsConfig
+ assertThat(cbs.firstRequestDelaySec).isEqualTo(Some(7))
+ assertThat(cbs.requestIntervalSec).isEqualTo(Some(900))
+
+ assertThat(config.collector.nonEmpty()).isTrue()
+ val collector = config.collector.orNull() as PartialCollectorConfig
+ collector.run {
+ assertThat(dummyMode).isEqualTo(Some(false))
+ assertThat(maxRequestSizeBytes).isEqualTo(Some(512000))
+ assertThat(kafkaServers.nonEmpty()).isTrue()
+ assertThat(routing.nonEmpty()).isTrue()
+ }
+
+ assertThat(config.server.nonEmpty()).isTrue()
+ val server = config.server.orNull() as PartialServerConfig
+ server.run {
+ assertThat(idleTimeoutSec).isEqualTo(Some(1200))
+ assertThat(listenPort).isEqualTo(Some(6000))
+ assertThat(maxPayloadSizeBytes).isEqualTo(Some(512000))
+ }
+ }
+ }
+ }
+})
+