From 3bdd41724d031c5d787239ce1b4186ac7680d03c Mon Sep 17 00:00:00 2001 From: kjaniak Date: Thu, 12 Jul 2018 10:57:58 +0200 Subject: [PATCH] Extract message generator module Closes ONAP-501 Change-Id: Ia5dc5f67e18c302abbeac7e0373cef479f4befb8 Signed-off-by: kjaniak Issue-ID: DCAEGEN2-601 --- .../tests/component/PerformanceSpecification.kt | 6 +- hv-collector-ves-message-generator/pom.xml | 110 +++++++++++++++++++++ .../ves/message/generator}/api/MessageGenerator.kt | 16 ++- .../message/generator}/config/MessageParameters.kt | 2 +- .../generator}/impl/MessageGeneratorImpl.kt | 14 +-- .../message/generator}/impl/PayloadGenerator.kt | 2 +- .../impl/impl/MessageGeneratorImplTest.kt | 15 +-- .../generator/impl}/impl/PayloadGeneratorTest.kt | 3 +- hv-collector-xnf-simulator/pom.xml | 5 + .../collectors/veshv/simulators/xnf/factory.kt | 30 ------ .../veshv/simulators/xnf/impl/HttpServer.kt | 7 +- pom.xml | 1 + 12 files changed, 154 insertions(+), 57 deletions(-) create mode 100644 hv-collector-ves-message-generator/pom.xml rename {hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf => hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator}/api/MessageGenerator.kt (67%) rename {hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf => hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator}/config/MessageParameters.kt (94%) rename {hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf => hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator}/impl/MessageGeneratorImpl.kt (86%) rename {hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf => hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator}/impl/PayloadGenerator.kt (97%) rename hv-collector-xnf-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/MessageFactoryTest.kt => hv-collector-ves-message-generator/src/test/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/impl/MessageGeneratorImplTest.kt (85%) rename {hv-collector-xnf-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf => hv-collector-ves-message-generator/src/test/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl}/impl/PayloadGeneratorTest.kt (95%) delete mode 100644 hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/factory.kt diff --git a/hv-collector-ct/src/test/kotlin/org/onap/dcae/collectors/veshv/tests/component/PerformanceSpecification.kt b/hv-collector-ct/src/test/kotlin/org/onap/dcae/collectors/veshv/tests/component/PerformanceSpecification.kt index 54a7ea11..b793f3aa 100644 --- a/hv-collector-ct/src/test/kotlin/org/onap/dcae/collectors/veshv/tests/component/PerformanceSpecification.kt +++ b/hv-collector-ct/src/test/kotlin/org/onap/dcae/collectors/veshv/tests/component/PerformanceSpecification.kt @@ -26,10 +26,10 @@ 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.domain.WireFrameEncoder -import org.onap.dcae.collectors.veshv.simulators.xnf.config.MessageParameters -import org.onap.dcae.collectors.veshv.simulators.xnf.createMessageGenerator import org.onap.dcae.collectors.veshv.tests.fakes.CountingSink import org.onap.dcae.collectors.veshv.tests.fakes.basicConfiguration +import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageGenerator +import org.onap.dcae.collectors.veshv.ves.message.generator.config.MessageParameters import reactor.core.publisher.Flux import reactor.math.sum import java.security.MessageDigest @@ -161,7 +161,7 @@ fun dropWhenIndex(predicate: (Long) -> Boolean, stream: Flux): Flux = WireFrameEncoder(alloc).let { encoder -> - createMessageGenerator() + MessageGenerator.INSTANCE .createMessageFlux(params) .map(encoder::encode) .transform { simulateRemoteTcp(alloc, 1000, it) } diff --git a/hv-collector-ves-message-generator/pom.xml b/hv-collector-ves-message-generator/pom.xml new file mode 100644 index 00000000..dfa30b10 --- /dev/null +++ b/hv-collector-ves-message-generator/pom.xml @@ -0,0 +1,110 @@ + + + + 4.0.0 + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + org.onap.dcaegen2.collectors.veshv + ves-hv-collector + 1.0.0-SNAPSHOT + .. + + + hv-collector-ves-message-generator + VES HighVolume Collector :: VES message generator + + + false + + + + + + kotlin-maven-plugin + org.jetbrains.kotlin + + + maven-surefire-plugin + org.apache.maven.plugins + + + + + + ${project.parent.groupId} + hv-collector-domain + ${project.parent.version} + + + ${project.parent.groupId} + hv-collector-utils + ${project.parent.version} + + + org.slf4j + slf4j-api + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.assertj + assertj-core + + + org.jetbrains.kotlin + kotlin-test + + + org.jetbrains.spek + spek-api + + + org.jetbrains.spek + spek-junit-platform-engine + + + io.projectreactor + reactor-test + + + ch.qos.logback + logback-classic + runtime + + + org.glassfish + javax.json + + + + + \ No newline at end of file diff --git a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/api/MessageGenerator.kt b/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageGenerator.kt similarity index 67% rename from hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/api/MessageGenerator.kt rename to hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageGenerator.kt index a6d6af84..e52db848 100644 --- a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/api/MessageGenerator.kt +++ b/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageGenerator.kt @@ -17,11 +17,15 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.dcae.collectors.veshv.simulators.xnf.api +package org.onap.dcae.collectors.veshv.ves.message.generator.api import org.onap.dcae.collectors.veshv.domain.PayloadWireFrameMessage -import org.onap.dcae.collectors.veshv.simulators.xnf.config.MessageParameters +import org.onap.dcae.collectors.veshv.ves.message.generator.config.MessageParameters +import org.onap.dcae.collectors.veshv.ves.message.generator.impl.MessageGeneratorImpl +import org.onap.dcae.collectors.veshv.ves.message.generator.impl.PayloadGenerator +import org.onap.ves.VesEventV5 import reactor.core.publisher.Flux +import javax.json.JsonObject /** * @author Piotr Jaszczyk @@ -29,4 +33,12 @@ import reactor.core.publisher.Flux */ interface MessageGenerator { fun createMessageFlux(messageParameters: MessageParameters): Flux + fun parseCommonHeader(json: JsonObject): VesEventV5.VesEvent.CommonEventHeader + + companion object { + val INSTANCE: MessageGenerator by lazy { + MessageGeneratorImpl(PayloadGenerator()) + } + } } + diff --git a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/config/MessageParameters.kt b/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/config/MessageParameters.kt similarity index 94% rename from hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/config/MessageParameters.kt rename to hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/config/MessageParameters.kt index f993f45a..7e80cc66 100644 --- a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/config/MessageParameters.kt +++ b/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/config/MessageParameters.kt @@ -17,7 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.dcae.collectors.veshv.simulators.xnf.config +package org.onap.dcae.collectors.veshv.ves.message.generator.config import org.onap.ves.VesEventV5.VesEvent.CommonEventHeader diff --git a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/MessageGeneratorImpl.kt b/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/MessageGeneratorImpl.kt similarity index 86% rename from hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/MessageGeneratorImpl.kt rename to hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/MessageGeneratorImpl.kt index baff967a..b2f73894 100644 --- a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/MessageGeneratorImpl.kt +++ b/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/MessageGeneratorImpl.kt @@ -17,12 +17,12 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.dcae.collectors.veshv.simulators.xnf.impl +package org.onap.dcae.collectors.veshv.ves.message.generator.impl import com.google.protobuf.ByteString import org.onap.dcae.collectors.veshv.domain.PayloadWireFrameMessage -import org.onap.dcae.collectors.veshv.simulators.xnf.api.MessageGenerator -import org.onap.dcae.collectors.veshv.simulators.xnf.config.MessageParameters +import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageGenerator +import org.onap.dcae.collectors.veshv.ves.message.generator.config.MessageParameters import org.onap.ves.VesEventV5.VesEvent import org.onap.ves.VesEventV5.VesEvent.CommonEventHeader import reactor.core.publisher.Flux @@ -33,7 +33,7 @@ import javax.json.JsonObject * @author Jakub Dudycz * @since June 2018 */ -internal class MessageGeneratorImpl(private val payloadGenerator: PayloadGenerator) : MessageGenerator { +class MessageGeneratorImpl internal constructor(private val payloadGenerator: PayloadGenerator) : MessageGenerator { override fun createMessageFlux(messageParameters: MessageParameters): Flux = Mono.fromCallable { createMessage(messageParameters.commonEventHeader) }.let { @@ -43,7 +43,7 @@ internal class MessageGeneratorImpl(private val payloadGenerator: PayloadGenerat it.repeat(messageParameters.amount) } - fun parseCommonHeader(json: JsonObject): CommonEventHeader = CommonEventHeader.newBuilder() + override fun parseCommonHeader(json: JsonObject): CommonEventHeader = CommonEventHeader.newBuilder() .setVersion(json.getString("version")) .setDomain(CommonEventHeader.Domain.forNumber(json.getInt("domain"))) .setSequence(json.getInt("sequence")) @@ -72,8 +72,4 @@ internal class MessageGeneratorImpl(private val payloadGenerator: PayloadGenerat .setHvRanMeasFields(payloadGenerator.generatePayload().toByteString()) .build() .toByteArray() - - companion object { - val INSTANCE = MessageGeneratorImpl(PayloadGenerator()) - } } diff --git a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/PayloadGenerator.kt b/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/PayloadGenerator.kt similarity index 97% rename from hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/PayloadGenerator.kt rename to hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/PayloadGenerator.kt index c8b97639..66f34e9e 100644 --- a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/PayloadGenerator.kt +++ b/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/PayloadGenerator.kt @@ -17,7 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.dcae.collectors.veshv.simulators.xnf.impl +package org.onap.dcae.collectors.veshv.ves.message.generator.impl import org.onap.ves.HVRanMeasFieldsV5.HVRanMeasFields.HVRanMeasPayload import org.onap.ves.HVRanMeasFieldsV5.HVRanMeasFields.HVRanMeasPayload.PMObject diff --git a/hv-collector-xnf-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/MessageFactoryTest.kt b/hv-collector-ves-message-generator/src/test/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/impl/MessageGeneratorImplTest.kt similarity index 85% rename from hv-collector-xnf-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/MessageFactoryTest.kt rename to hv-collector-ves-message-generator/src/test/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/impl/MessageGeneratorImplTest.kt index 6f8a95a4..07027173 100644 --- a/hv-collector-xnf-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/MessageFactoryTest.kt +++ b/hv-collector-ves-message-generator/src/test/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/impl/MessageGeneratorImplTest.kt @@ -17,14 +17,15 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.dcae.collectors.veshv.simulators.xnf.impl +package org.onap.dcae.collectors.veshv.ves.message.generator.impl.impl import com.google.protobuf.ByteString 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.onap.dcae.collectors.veshv.simulators.xnf.config.MessageParameters +import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageGenerator +import org.onap.dcae.collectors.veshv.ves.message.generator.config.MessageParameters import org.onap.ves.VesEventV5 import org.onap.ves.VesEventV5.VesEvent.CommonEventHeader.Domain.HVRANMEAS import org.onap.ves.VesEventV5.VesEvent.CommonEventHeader.Priority.MEDIUM @@ -37,22 +38,22 @@ const val SAMPLE_LAST_EPOCH: Long = 120034455 * @author Jakub Dudycz * @since June 2018 */ -object MessageFactoryTest : Spek({ +object MessageGeneratorImplTest : Spek({ describe("message factory") { - val factory = MessageGeneratorImpl.INSTANCE + val generator = MessageGenerator.INSTANCE given("only common header") { it("should return infinite flux") { val limit = 1000L - factory.createMessageFlux(getSampleMessageParameters()).take(limit).test() + generator.createMessageFlux(getSampleMessageParameters()).take(limit).test() .expectNextCount(limit) .verifyComplete() } } given("common header and messages amount") { it("should return message flux of specified size") { - factory.createMessageFlux((getSampleMessageParameters(5))).test() + generator.createMessageFlux((getSampleMessageParameters(5))).test() .expectNextCount(5) .verifyComplete() } @@ -60,7 +61,7 @@ object MessageFactoryTest : Spek({ } }) -fun getSampleMessageParameters(amount: Long = -1): MessageParameters{ +fun getSampleMessageParameters(amount: Long = -1): MessageParameters { val commonHeader = VesEventV5.VesEvent.CommonEventHeader.newBuilder() .setVersion("sample-version") .setDomain(HVRANMEAS) diff --git a/hv-collector-xnf-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/PayloadGeneratorTest.kt b/hv-collector-ves-message-generator/src/test/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/impl/PayloadGeneratorTest.kt similarity index 95% rename from hv-collector-xnf-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/PayloadGeneratorTest.kt rename to hv-collector-ves-message-generator/src/test/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/impl/PayloadGeneratorTest.kt index 73129a7f..9760208f 100644 --- a/hv-collector-xnf-simulator/src/test/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/PayloadGeneratorTest.kt +++ b/hv-collector-ves-message-generator/src/test/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/impl/PayloadGeneratorTest.kt @@ -17,13 +17,14 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.dcae.collectors.veshv.simulators.xnf.impl +package org.onap.dcae.collectors.veshv.ves.message.generator.impl.impl import org.jetbrains.spek.api.Spek import org.jetbrains.spek.api.dsl.given import org.jetbrains.spek.api.dsl.it import org.assertj.core.api.Assertions.assertThat import org.jetbrains.spek.api.dsl.on +import org.onap.dcae.collectors.veshv.ves.message.generator.impl.PayloadGenerator private const val DEFAULT_MEASUREMENTS_NUMBER = 2 private const val DEFAULT_COUNTERS_NUMBER = 2 diff --git a/hv-collector-xnf-simulator/pom.xml b/hv-collector-xnf-simulator/pom.xml index 9af2246d..2a02fae1 100644 --- a/hv-collector-xnf-simulator/pom.xml +++ b/hv-collector-xnf-simulator/pom.xml @@ -93,6 +93,11 @@ hv-collector-utils ${project.parent.version} + + ${project.parent.groupId} + hv-collector-ves-message-generator + ${project.parent.version} + io.arrow-kt arrow-effects diff --git a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/factory.kt b/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/factory.kt deleted file mode 100644 index dce386b1..00000000 --- a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/factory.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * dcaegen2-collectors-veshv - * ================================================================================ - * Copyright (C) 2018 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.simulators.xnf - -import org.onap.dcae.collectors.veshv.simulators.xnf.api.MessageGenerator -import org.onap.dcae.collectors.veshv.simulators.xnf.impl.MessageGeneratorImpl -import org.onap.dcae.collectors.veshv.simulators.xnf.impl.PayloadGenerator - -/** - * @author Piotr Jaszczyk - * @since June 2018 - */ -fun createMessageGenerator(): MessageGenerator = MessageGeneratorImpl(PayloadGenerator()) diff --git a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/HttpServer.kt b/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/HttpServer.kt index 6346b648..08a35d42 100644 --- a/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/HttpServer.kt +++ b/hv-collector-xnf-simulator/src/main/kotlin/org/onap/dcae/collectors/veshv/simulators/xnf/impl/HttpServer.kt @@ -21,8 +21,9 @@ package org.onap.dcae.collectors.veshv.simulators.xnf.impl import arrow.effects.IO import org.onap.dcae.collectors.veshv.domain.PayloadWireFrameMessage -import org.onap.dcae.collectors.veshv.simulators.xnf.config.MessageParameters +import org.onap.dcae.collectors.veshv.ves.message.generator.config.MessageParameters import org.onap.dcae.collectors.veshv.utils.logging.Logger +import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageGenerator import ratpack.exec.Promise import ratpack.handling.Chain import ratpack.handling.Context @@ -69,7 +70,7 @@ internal class HttpServer(private val vesClient: XnfSimulator) { return ctx.request.body .map { Json.createReader(it.inputStream).readObject() } .map { extractMessageParameters(it) } - .map { MessageGeneratorImpl.INSTANCE.createMessageFlux(it) } + .map { MessageGenerator.INSTANCE.createMessageFlux(it) } } private fun sendAcceptedResponse(ctx: Context) { @@ -95,7 +96,7 @@ internal class HttpServer(private val vesClient: XnfSimulator) { private fun extractMessageParameters(request: JsonObject): MessageParameters = try { - val commonEventHeader = MessageGeneratorImpl.INSTANCE + val commonEventHeader = MessageGenerator.INSTANCE .parseCommonHeader(request.getJsonObject("commonEventHeader")) val messagesAmount = request.getJsonNumber("messagesAmount").longValue() MessageParameters(commonEventHeader, messagesAmount) diff --git a/pom.xml b/pom.xml index 033b25ed..ca31d5a9 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,7 @@ hv-collector-domain hv-collector-main hv-collector-utils + hv-collector-ves-message-generator -- 2.16.6