From 0f7bc6b6ec219b6e22a4b5b5a4ee1efd4e54efba Mon Sep 17 00:00:00 2001 From: kjaniak Date: Thu, 29 Nov 2018 13:44:50 +0100 Subject: Enhance of logging in test part Change-Id: Ibdec0ac5cead7e46ada4c32983b9ccf962df703b Issue-ID: DCAEGEN2-1004 Signed-off-by: kjaniak --- sources/hv-collector-core/pom.xml | 5 ---- sources/hv-collector-ct/pom.xml | 22 ++++++-------- .../simulators/dcaeapp/impl/DcaeAppSimulator.kt | 9 +++--- .../dcaeapp/impl/MessageStreamValidation.kt | 20 +++++++++++-- .../dcaeapp/impl/adapters/DcaeAppApiServer.kt | 30 +++++++++++++++---- .../src/main/resources/logback.xml | 2 +- sources/hv-collector-ssl/pom.xml | 9 +++--- sources/hv-collector-test-utils/pom.xml | 5 ++++ .../src/main/resources/logback-test.xml | 35 ++++++++++++++++++++++ sources/hv-collector-utils/pom.xml | 10 +++---- .../dcae/collectors/veshv/utils/http/ratpack.kt | 2 +- .../src/test/resources/logback-test.xml | 35 ++++++++++++++++++++++ sources/hv-collector-ves-message-generator/pom.xml | 10 +++---- .../generator/impl/MessageParametersParserImpl.kt | 7 +++++ .../simulators/xnf/impl/adapters/XnfApiServer.kt | 10 ++++++- 15 files changed, 164 insertions(+), 47 deletions(-) create mode 100644 sources/hv-collector-test-utils/src/main/resources/logback-test.xml create mode 100644 sources/hv-collector-utils/src/test/resources/logback-test.xml diff --git a/sources/hv-collector-core/pom.xml b/sources/hv-collector-core/pom.xml index 7f7922e1..ae781742 100644 --- a/sources/hv-collector-core/pom.xml +++ b/sources/hv-collector-core/pom.xml @@ -127,11 +127,6 @@ javax.json runtime - - ch.qos.logback - logback-classic - test - diff --git a/sources/hv-collector-ct/pom.xml b/sources/hv-collector-ct/pom.xml index 61ac426b..47b707a6 100644 --- a/sources/hv-collector-ct/pom.xml +++ b/sources/hv-collector-ct/pom.xml @@ -74,21 +74,10 @@ hv-collector-test-utils ${project.parent.version} - - io.arrow-kt arrow-syntax - - org.slf4j - slf4j-api - - - ch.qos.logback - logback-classic - - org.assertj assertj-core @@ -109,7 +98,14 @@ io.projectreactor reactor-test + + org.slf4j + slf4j-api + + + ch.qos.logback + logback-classic + test + - - \ No newline at end of file diff --git a/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/DcaeAppSimulator.kt b/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/DcaeAppSimulator.kt index 490cde4a..417183fb 100644 --- a/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/DcaeAppSimulator.kt +++ b/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/DcaeAppSimulator.kt @@ -40,10 +40,11 @@ class DcaeAppSimulator(private val consumerFactory: ConsumerFactory, fun listenToTopics(topicsString: String) = listenToTopics(extractTopics(topicsString)) fun listenToTopics(topics: Set): IO = IO.monadError().bindingCatch { - if (topics.any { it.isBlank() }) - throw IllegalArgumentException("Topic list cannot contain empty elements") - if (topics.isEmpty()) - throw IllegalArgumentException("Topic list cannot be empty") + if (topics.isEmpty() || topics.any { it.isBlank() }) { + val message = "Topic list cannot be empty or contain empty elements, topics: $topics" + logger.info { message } + throw IllegalArgumentException(message) + } logger.info("Received new configuration. Creating consumer for topics: $topics") consumerState.set(consumerFactory.createConsumerForTopics(topics).bind()) diff --git a/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/MessageStreamValidation.kt b/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/MessageStreamValidation.kt index e423191d..20c0f592 100644 --- a/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/MessageStreamValidation.kt +++ b/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/MessageStreamValidation.kt @@ -19,13 +19,16 @@ */ package org.onap.dcae.collectors.veshv.simulators.dcaeapp.impl +import arrow.core.getOrElse import arrow.effects.IO import arrow.effects.fix import arrow.effects.instances.io.monadError.monadError +import arrow.instances.option.foldable.fold import arrow.typeclasses.bindingCatch import org.onap.dcae.collectors.veshv.domain.ByteData import org.onap.dcae.collectors.veshv.domain.WireFrameMessage import org.onap.dcae.collectors.veshv.utils.arrow.asIo +import org.onap.dcae.collectors.veshv.utils.logging.Logger import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageGenerator import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageParameters import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageParametersParser @@ -41,6 +44,7 @@ class MessageStreamValidation( fun validate(jsonDescription: InputStream, consumedMessages: List): IO = IO.monadError().bindingCatch { val messageParams = parseMessageParams(jsonDescription) + logger.debug { "Parsed message parameters: $messageParams" } val expectedEvents = generateEvents(messageParams).bind() val actualEvents = decodeConsumedEvents(consumedMessages) if (shouldValidatePayloads(messageParams)) { @@ -55,10 +59,17 @@ class MessageStreamValidation( val messageParams = messageParametersParser.parse(expectations) return messageParams.fold( - { throw IllegalArgumentException("Parsing error: " + it.message) }, { - if (it.isEmpty()) - throw IllegalArgumentException("Message param list cannot be empty") + logger.warn { "Error while parsing message parameters: ${it::class.qualifiedName} : ${it.message}" } + logger.debug { "Detailed stack trace: ${it}" } + throw IllegalArgumentException("Parsing error: " + it.message) + }, + { + if (it.isEmpty()) { + val message = "Message param list cannot be empty" + logger.warn(message) + throw IllegalArgumentException(message) + } it } ) @@ -85,4 +96,7 @@ class MessageStreamValidation( private fun decodeConsumedEvents(consumedMessages: List) = consumedMessages.map(VesEventOuterClass.VesEvent::parseFrom) + companion object { + private val logger = Logger(MessageStreamValidation::class) + } } diff --git a/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/adapters/DcaeAppApiServer.kt b/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/adapters/DcaeAppApiServer.kt index 1eca9317..a6ee1122 100644 --- a/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/adapters/DcaeAppApiServer.kt +++ b/sources/hv-collector-dcae-app-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/dcaeapp/impl/adapters/DcaeAppApiServer.kt @@ -26,6 +26,7 @@ import org.onap.dcae.collectors.veshv.utils.http.HttpStatus import org.onap.dcae.collectors.veshv.utils.http.Responses import org.onap.dcae.collectors.veshv.utils.http.sendAndHandleErrors import org.onap.dcae.collectors.veshv.utils.http.sendOrError +import org.onap.dcae.collectors.veshv.utils.logging.Logger import ratpack.handling.Chain import ratpack.server.RatpackServer import ratpack.server.ServerConfig @@ -38,14 +39,14 @@ class DcaeAppApiServer(private val simulator: DcaeAppSimulator) { private val responseValid by lazy { Responses.statusResponse( name = "valid", - message = "validation succeeded" + message = VALID_RESPONSE_MESSAGE ) } private val responseInvalid by lazy { Responses.statusResponse( name = "invalid", - message = "validation failed", + message = INVALID_RESPONSE_MESSAGE, httpStatus = HttpStatus.BAD_REQUEST ) } @@ -70,12 +71,18 @@ class DcaeAppApiServer(private val simulator: DcaeAppSimulator) { } .delete("messages") { ctx -> ctx.response.contentType(CONTENT_TEXT) + logger.info("Resetting simulator state") ctx.response.sendOrError(simulator.resetState()) } .get("messages/all/count") { ctx -> + logger.info("Processing request for count of received messages") simulator.state().fold( - { ctx.response.status(HttpConstants.STATUS_NOT_FOUND) }, { + ctx.response.status(HttpConstants.STATUS_NOT_FOUND) + logger.warn("Error - number of messages could not be specified") + }, + { + logger.info { "Returned number of received messages: ${it.messagesCount}" } ctx.response .contentType(CONTENT_TEXT) .send(it.messagesCount.toString()) @@ -83,19 +90,32 @@ class DcaeAppApiServer(private val simulator: DcaeAppSimulator) { } .post("messages/all/validate") { ctx -> ctx.request.body.then { body -> + logger.info("Processing request for message validation") val response = simulator.validate(body.inputStream) .map { isValid -> - if (isValid) responseValid else responseInvalid + if (isValid) { + logger.info { "Comparison result: $VALID_RESPONSE_MESSAGE" } + responseValid + } else { + logger.info { "Comparison result: $INVALID_RESPONSE_MESSAGE" } + responseInvalid + } } ctx.response.sendAndHandleErrors(response) } } .get("healthcheck") { ctx -> - ctx.response.status(HttpConstants.STATUS_OK).send() + val status = HttpConstants.STATUS_OK + logger.info { "Healthcheck OK, returning status: $status" } + ctx.response.status(status).send() } } companion object { private const val CONTENT_TEXT = "text/plain" + private const val VALID_RESPONSE_MESSAGE = "validation passed" + private const val INVALID_RESPONSE_MESSAGE = "consumed messages don't match data from validation request" + private val logger = Logger(DcaeAppApiServer::class) } } + diff --git a/sources/hv-collector-dcae-app-simulator/src/main/resources/logback.xml b/sources/hv-collector-dcae-app-simulator/src/main/resources/logback.xml index 09ac3573..4d12b113 100644 --- a/sources/hv-collector-dcae-app-simulator/src/main/resources/logback.xml +++ b/sources/hv-collector-dcae-app-simulator/src/main/resources/logback.xml @@ -26,7 +26,7 @@ - + diff --git a/sources/hv-collector-ssl/pom.xml b/sources/hv-collector-ssl/pom.xml index 6001ba94..98c07f42 100644 --- a/sources/hv-collector-ssl/pom.xml +++ b/sources/hv-collector-ssl/pom.xml @@ -92,10 +92,6 @@ org.slf4j slf4j-api - - ch.qos.logback - logback-classic - org.assertj assertj-core @@ -112,6 +108,11 @@ org.jetbrains.spek spek-junit-platform-engine + + ch.qos.logback + logback-classic + test + diff --git a/sources/hv-collector-test-utils/pom.xml b/sources/hv-collector-test-utils/pom.xml index aebdd654..3c340828 100644 --- a/sources/hv-collector-test-utils/pom.xml +++ b/sources/hv-collector-test-utils/pom.xml @@ -81,5 +81,10 @@ mockito-kotlin compile + + ch.qos.logback + logback-classic + compile + \ No newline at end of file diff --git a/sources/hv-collector-test-utils/src/main/resources/logback-test.xml b/sources/hv-collector-test-utils/src/main/resources/logback-test.xml new file mode 100644 index 00000000..9a4eacfe --- /dev/null +++ b/sources/hv-collector-test-utils/src/main/resources/logback-test.xml @@ -0,0 +1,35 @@ + + + + + + + + + %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX,UTC} %highlight(%-5level) [%-40.40logger{10}] - %msg%n + + + + + + + ${FILE_LOG_PATTERN} + + ${LOG_FILE} + + ${LOG_FILE}.%d{yyyy-MM-dd}.log + 50MB + 30 + 10GB + + + + + + + + + + diff --git a/sources/hv-collector-utils/pom.xml b/sources/hv-collector-utils/pom.xml index 66879ff7..2490767e 100644 --- a/sources/hv-collector-utils/pom.xml +++ b/sources/hv-collector-utils/pom.xml @@ -102,6 +102,11 @@ org.slf4j slf4j-api + + ch.qos.logback + logback-classic + test + org.assertj assertj-core @@ -126,11 +131,6 @@ com.nhaarman.mockitokotlin2 mockito-kotlin - - ch.qos.logback - logback-classic - test - org.glassfish javax.json diff --git a/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/ratpack.kt b/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/ratpack.kt index 0282d0c7..5a733f24 100644 --- a/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/ratpack.kt +++ b/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/ratpack.kt @@ -42,7 +42,7 @@ fun ratpack.http.Response.sendOrError(action: IO) { } fun ratpack.http.Response.sendEitherErrorOrResponse(response: Either) { - when(response) { + when (response) { is Either.Left -> send(errorResponse(response.a.toString())) is Either.Right -> sendAndHandleErrors(IO.just(response.b)) } diff --git a/sources/hv-collector-utils/src/test/resources/logback-test.xml b/sources/hv-collector-utils/src/test/resources/logback-test.xml new file mode 100644 index 00000000..9a4eacfe --- /dev/null +++ b/sources/hv-collector-utils/src/test/resources/logback-test.xml @@ -0,0 +1,35 @@ + + + + + + + + + %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX,UTC} %highlight(%-5level) [%-40.40logger{10}] - %msg%n + + + + + + + ${FILE_LOG_PATTERN} + + ${LOG_FILE} + + ${LOG_FILE}.%d{yyyy-MM-dd}.log + 50MB + 30 + 10GB + + + + + + + + + + diff --git a/sources/hv-collector-ves-message-generator/pom.xml b/sources/hv-collector-ves-message-generator/pom.xml index c5ce7f65..29e32f46 100644 --- a/sources/hv-collector-ves-message-generator/pom.xml +++ b/sources/hv-collector-ves-message-generator/pom.xml @@ -62,6 +62,11 @@ hv-collector-domain ${project.parent.version} + + ${project.parent.groupId} + hv-collector-utils + ${project.parent.version} + ${project.parent.groupId} hv-collector-test-utils @@ -100,11 +105,6 @@ io.projectreactor reactor-test - - ch.qos.logback - logback-classic - runtime - org.glassfish javax.json diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/MessageParametersParserImpl.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/MessageParametersParserImpl.kt index 6ef6d53a..88cc47a6 100644 --- a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/MessageParametersParserImpl.kt +++ b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/MessageParametersParserImpl.kt @@ -22,6 +22,7 @@ package org.onap.dcae.collectors.veshv.ves.message.generator.impl import arrow.core.Option import arrow.core.Try import arrow.core.identity +import org.onap.dcae.collectors.veshv.utils.logging.Logger import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageParameters import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageParametersParser import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageType @@ -40,6 +41,7 @@ internal class MessageParametersParserImpl( Try { request .map { it.asJsonObject() } + .onEach { logger.info { "Parsing MessageParameters body: $it" } } .map { json -> val commonEventHeader = commonEventHeaderParser .parse(json.getJsonObject("commonEventHeader")) @@ -54,4 +56,9 @@ internal class MessageParametersParserImpl( ex.message ?: "Unable to parse message parameters", Option.fromNullable(ex)) } + + companion object { + private val logger = Logger(MessageParametersParserImpl::class) + } + } diff --git a/sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/adapters/XnfApiServer.kt b/sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/adapters/XnfApiServer.kt index 06f1cffe..16019384 100644 --- a/sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/adapters/XnfApiServer.kt +++ b/sources/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/adapters/XnfApiServer.kt @@ -20,6 +20,7 @@ package org.onap.dcae.collectors.veshv.simulators.xnf.impl.adapters import arrow.core.Either +import arrow.core.getOrElse import arrow.effects.IO import org.onap.dcae.collectors.veshv.simulators.xnf.impl.OngoingSimulations import org.onap.dcae.collectors.veshv.simulators.xnf.impl.XnfSimulator @@ -64,9 +65,13 @@ internal class XnfApiServer( } private fun startSimulationHandler(ctx: Context) { - logger.info("Starting asynchronous scenario") + logger.info("Attempting to start asynchronous scenario") ctx.request.body.then { body -> val id = startSimulation(body) + when (id) { + is Either.Left -> logger.warn { "Failed to start scenario, ${id.a}"} + is Either.Right -> logger.info { "Scenario started, details: ${id.b}" } + } ctx.response.sendEitherErrorOrResponse(id) } } @@ -78,9 +83,12 @@ internal class XnfApiServer( } private fun simulatorStatusHandler(ctx: Context) { + logger.debug("Checking task status") val id = UUID.fromString(ctx.pathTokens["id"]) + logger.debug { "Checking status for id: $id" } val status = ongoingSimulations.status(id) val response = Responses.statusResponse(status.toString(), status.message) + logger.info { "Task $id status: $response" } ctx.response.sendAndHandleErrors(IO.just(response)) } -- cgit 1.2.3-korg