From bacba429e2dd6b3048da7e75800f5ad200952599 Mon Sep 17 00:00:00 2001 From: Jakub Dudycz Date: Tue, 19 Feb 2019 18:06:33 +0100 Subject: Use sdk/hvves-producer in hvves/xnf-simulator Change-Id: I8f493b0edd2cbaef136a22d914ad24198bb63a7f Signed-off-by: Jakub Dudycz Issue-ID: DCAEGEN2-1253 --- .../ves/message/generator/api/MessageGenerator.kt | 44 ------------- .../ves/message/generator/api/MessageParameters.kt | 22 ++++++- .../generator/factory/MessageGeneratorFactory.kt | 8 +-- .../generator/generators/MessageGenerator.kt | 45 ++++++++++++++ .../generator/generators/RawMessageGenerator.kt | 55 +++++++++++++++++ .../generator/generators/VesEventGenerator.kt | 72 ++++++++++++++++++++++ .../generator/impl/CommonEventHeaderParser.kt | 49 +++++++++++++++ .../generator/impl/MessageParametersParserImpl.kt | 1 - .../ves/message/generator/impl/PayloadGenerator.kt | 46 ++++++++++++++ .../impl/vesevent/CommonEventHeaderParser.kt | 49 --------------- .../generator/impl/vesevent/PayloadGenerator.kt | 46 -------------- .../generator/impl/vesevent/VesEventGenerator.kt | 72 ---------------------- .../generator/impl/wireframe/WireFrameGenerator.kt | 66 -------------------- 13 files changed, 290 insertions(+), 285 deletions(-) delete mode 100644 sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageGenerator.kt create mode 100644 sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/MessageGenerator.kt create mode 100644 sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/RawMessageGenerator.kt create mode 100644 sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/VesEventGenerator.kt create mode 100644 sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/CommonEventHeaderParser.kt create mode 100644 sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/PayloadGenerator.kt delete mode 100644 sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/CommonEventHeaderParser.kt delete mode 100644 sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/PayloadGenerator.kt delete mode 100644 sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/VesEventGenerator.kt delete mode 100644 sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/wireframe/WireFrameGenerator.kt (limited to 'sources/hv-collector-ves-message-generator/src/main') diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageGenerator.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageGenerator.kt deleted file mode 100644 index 5f8638f0..00000000 --- a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageGenerator.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * ============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.ves.message.generator.api - -import reactor.core.publisher.Flux -import reactor.core.publisher.Mono - -/** - * @author Piotr Jaszczyk - * @since June 2018 - */ -abstract class MessageGenerator { - abstract fun createMessageFlux(parameters: K): Flux - - protected fun repeatMessage(message: Mono, amount: Long): Flux = when { - amount < 0 -> repeatForever(message) - amount == 0L -> emptyMessageStream() - else -> repeatNTimes(message, amount) - } - - private fun repeatForever(message: Mono) = message.repeat() - - private fun emptyMessageStream() = Flux.empty() - - private fun repeatNTimes(message: Mono, amount: Long) = message.repeat(amount - 1) -} - diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageParameters.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageParameters.kt index 82b79c0c..a7187166 100644 --- a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageParameters.kt +++ b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/api/MessageParameters.kt @@ -19,20 +19,36 @@ */ package org.onap.dcae.collectors.veshv.ves.message.generator.api +import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameType.INVALID_WIRE_FRAME +import org.onap.dcaegen2.services.sdk.services.hvves.client.producer.api.options.ImmutableWireFrameVersion +import org.onap.dcaegen2.services.sdk.services.hvves.client.producer.api.options.WireFrameVersion import org.onap.ves.VesEventOuterClass /** * @author Jakub Dudycz * @since June 2018 */ -abstract class MessageParameters(val amount: Long = -1) +sealed class MessageParameters /** * @author Jakub Dudycz * @since February 2019 */ class WireFrameParameters(val messageType: WireFrameType, - amount: Long = -1) : MessageParameters(amount) + val amount: Long = -1) : MessageParameters() { + + val wireFrameVersion: WireFrameVersion + get() = ImmutableWireFrameVersion.builder().let { + if (messageType == INVALID_WIRE_FRAME) + it.major(UNSUPPORTED_MAJOR_VERSION) + else + it + }.build() + + companion object { + private const val UNSUPPORTED_MAJOR_VERSION: Short = 2 + } +} /** * @author Jakub Dudycz @@ -40,4 +56,4 @@ class WireFrameParameters(val messageType: WireFrameType, */ class VesEventParameters(val commonEventHeader: VesEventOuterClass.CommonEventHeader, val messageType: VesEventType, - amount: Long = -1) : MessageParameters(amount) + val amount: Long = -1) : MessageParameters() diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/factory/MessageGeneratorFactory.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/factory/MessageGeneratorFactory.kt index aa473796..613f9bd1 100644 --- a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/factory/MessageGeneratorFactory.kt +++ b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/factory/MessageGeneratorFactory.kt @@ -19,9 +19,9 @@ */ package org.onap.dcae.collectors.veshv.ves.message.generator.factory -import org.onap.dcae.collectors.veshv.ves.message.generator.impl.vesevent.PayloadGenerator -import org.onap.dcae.collectors.veshv.ves.message.generator.impl.vesevent.VesEventGenerator -import org.onap.dcae.collectors.veshv.ves.message.generator.impl.wireframe.WireFrameGenerator +import org.onap.dcae.collectors.veshv.ves.message.generator.impl.PayloadGenerator +import org.onap.dcae.collectors.veshv.ves.message.generator.generators.VesEventGenerator +import org.onap.dcae.collectors.veshv.ves.message.generator.generators.RawMessageGenerator /** * @author Piotr Jaszczyk @@ -30,5 +30,5 @@ import org.onap.dcae.collectors.veshv.ves.message.generator.impl.wireframe.WireF class MessageGeneratorFactory(private val maxPayloadSizeBytes: Int) { fun createVesEventGenerator() = VesEventGenerator(PayloadGenerator(), maxPayloadSizeBytes) - fun createWireFrameGenerator() = WireFrameGenerator() + fun createWireFrameGenerator() = RawMessageGenerator() } diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/MessageGenerator.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/MessageGenerator.kt new file mode 100644 index 00000000..5682cc4c --- /dev/null +++ b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/MessageGenerator.kt @@ -0,0 +1,45 @@ +/* + * ============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.ves.message.generator.generators + +import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageParameters +import reactor.core.publisher.Flux +import reactor.core.publisher.Mono + +/** + * @author Piotr Jaszczyk + * @since June 2018 + */ +abstract class MessageGenerator { + abstract fun createMessageFlux(parameters: K): Flux + + protected fun repeatMessage(message: Mono, amount: Long): Flux = when { + amount < 0 -> repeatForever(message) + amount == 0L -> emptyMessageStream() + else -> repeatNTimes(message, amount) + } + + private fun repeatForever(message: Mono) = message.repeat() + + private fun emptyMessageStream() = Flux.empty() + + private fun repeatNTimes(message: Mono, amount: Long) = message.repeat(amount - 1) +} + diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/RawMessageGenerator.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/RawMessageGenerator.kt new file mode 100644 index 00000000..9f20bd29 --- /dev/null +++ b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/RawMessageGenerator.kt @@ -0,0 +1,55 @@ +/* + * ============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.ves.message.generator.generators + +import io.netty.buffer.Unpooled +import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameParameters +import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameType +import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameType.INVALID_GPB_DATA +import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameType.INVALID_WIRE_FRAME +import org.onap.ves.VesEventOuterClass.VesEvent +import reactor.core.publisher.Flux +import reactor.core.publisher.Mono +import java.nio.ByteBuffer +import java.nio.charset.Charset + +/** + * @author Jakub Dudycz + * @since February 2019 + */ +class RawMessageGenerator : MessageGenerator() { + + override fun createMessageFlux(parameters: WireFrameParameters): Flux = + parameters.run { + Mono + .fromCallable { createMessage(messageType) } + .let { repeatMessage(it, amount) } + } + + private fun createMessage(messageType: WireFrameType): ByteBuffer = + when (messageType) { + INVALID_WIRE_FRAME -> wrap(VesEvent.getDefaultInstance().toByteArray()) + INVALID_GPB_DATA -> wrap("invalid vesEvent".toByteArray(Charset.defaultCharset())) + } + + private fun wrap(bytes: ByteArray) = Unpooled.wrappedBuffer(bytes).nioBuffer() + + +} diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/VesEventGenerator.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/VesEventGenerator.kt new file mode 100644 index 00000000..a6669e7d --- /dev/null +++ b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/generators/VesEventGenerator.kt @@ -0,0 +1,72 @@ +/* + * ============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.ves.message.generator.generators + +import com.google.protobuf.ByteString +import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventParameters +import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventType +import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventType.FIXED_PAYLOAD +import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventType.TOO_BIG_PAYLOAD +import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventType.VALID +import org.onap.dcae.collectors.veshv.ves.message.generator.impl.PayloadGenerator +import org.onap.ves.VesEventOuterClass.CommonEventHeader +import org.onap.ves.VesEventOuterClass.VesEvent +import reactor.core.publisher.Flux +import reactor.core.publisher.Mono + +/** + * @author Jakub Dudycz + * @since June 2018 + */ +class VesEventGenerator internal constructor( + private val payloadGenerator: PayloadGenerator, + private val maxPayloadSizeBytes: Int +) : MessageGenerator() { + + override fun createMessageFlux(parameters: VesEventParameters): Flux = + parameters.run { + Mono + .fromCallable { createMessage(commonEventHeader, messageType) } + .let { repeatMessage(it, amount) } + } + + private fun createMessage(commonEventHeader: CommonEventHeader, messageType: VesEventType): VesEvent = + when (messageType) { + VALID -> vesEvent(commonEventHeader, payloadGenerator.generatePayload()) + TOO_BIG_PAYLOAD -> vesEvent(commonEventHeader, oversizedPayload()) + FIXED_PAYLOAD -> vesEvent(commonEventHeader, fixedPayload()) + } + + private fun vesEvent(commonEventHeader: CommonEventHeader, payload: ByteString): VesEvent = + VesEvent.newBuilder() + .setCommonEventHeader(commonEventHeader) + .setEventFields(payload) + .build() + + private fun oversizedPayload(): ByteString = + payloadGenerator.generateRawPayload(maxPayloadSizeBytes + 1) + + private fun fixedPayload(): ByteString = + payloadGenerator.generateRawPayload(FIXED_PAYLOAD_SIZE) + + companion object { + const val FIXED_PAYLOAD_SIZE = 100 + } +} diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/CommonEventHeaderParser.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/CommonEventHeaderParser.kt new file mode 100644 index 00000000..f0ae4607 --- /dev/null +++ b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/CommonEventHeaderParser.kt @@ -0,0 +1,49 @@ +/* + * ============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.ves.message.generator.impl + +import arrow.core.Option +import com.google.protobuf.util.JsonFormat +import org.onap.dcae.collectors.veshv.domain.headerRequiredFieldDescriptors +import org.onap.ves.VesEventOuterClass.CommonEventHeader +import javax.json.JsonObject + +/** + * @author Jakub Dudycz + * @since July 2018 + */ +internal class CommonEventHeaderParser { + fun parse(json: JsonObject): Option = Option.fromNullable( + CommonEventHeader.newBuilder() + .apply { JsonFormat.parser().merge(json.toString(), this) } + .build() + .takeUnless { !isValid(it) } + ) + + + private fun isValid(header: CommonEventHeader): Boolean = + allMandatoryFieldsArePresent(header) + + + private fun allMandatoryFieldsArePresent(header: CommonEventHeader) = + headerRequiredFieldDescriptors + .all { fieldDescriptor -> header.hasField(fieldDescriptor) } + +} 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 174a01fd..7d6087c2 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 @@ -33,7 +33,6 @@ import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventType.Com import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameParameters import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameType import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameType.Companion.isWireFrameType -import org.onap.dcae.collectors.veshv.ves.message.generator.impl.vesevent.CommonEventHeaderParser import javax.json.JsonArray import javax.json.JsonObject import javax.json.JsonValue diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/PayloadGenerator.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/PayloadGenerator.kt new file mode 100644 index 00000000..5891e7bc --- /dev/null +++ b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/PayloadGenerator.kt @@ -0,0 +1,46 @@ +/* + * ============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.ves.message.generator.impl + +import com.google.protobuf.ByteString +import java.util.* +import kotlin.streams.asSequence + +internal class PayloadGenerator { + + private val randomGenerator = Random() + + fun generateRawPayload(size: Int): ByteString = + ByteString.copyFrom(ByteArray(size)) + + fun generatePayload(numOfCountMeasurements: Long = 2): ByteString = + ByteString.copyFrom( + randomGenerator + .ints(numOfCountMeasurements, MIN_BYTE_VALUE, MAX_BYTE_VALUE) + .asSequence() + .toString() + .toByteArray() + ) + + companion object { + private const val MIN_BYTE_VALUE = 0 + private const val MAX_BYTE_VALUE = 256 + } +} diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/CommonEventHeaderParser.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/CommonEventHeaderParser.kt deleted file mode 100644 index 05938924..00000000 --- a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/CommonEventHeaderParser.kt +++ /dev/null @@ -1,49 +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.ves.message.generator.impl.vesevent - -import arrow.core.Option -import com.google.protobuf.util.JsonFormat -import org.onap.dcae.collectors.veshv.domain.headerRequiredFieldDescriptors -import org.onap.ves.VesEventOuterClass.CommonEventHeader -import javax.json.JsonObject - -/** - * @author Jakub Dudycz - * @since July 2018 - */ -class CommonEventHeaderParser { - fun parse(json: JsonObject): Option = Option.fromNullable( - CommonEventHeader.newBuilder() - .apply { JsonFormat.parser().merge(json.toString(), this) } - .build() - .takeUnless { !isValid(it) } - ) - - - private fun isValid(header: CommonEventHeader): Boolean = - allMandatoryFieldsArePresent(header) - - - private fun allMandatoryFieldsArePresent(header: CommonEventHeader) = - headerRequiredFieldDescriptors - .all { fieldDescriptor -> header.hasField(fieldDescriptor) } - -} diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/PayloadGenerator.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/PayloadGenerator.kt deleted file mode 100644 index ed521054..00000000 --- a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/PayloadGenerator.kt +++ /dev/null @@ -1,46 +0,0 @@ -/* - * ============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.ves.message.generator.impl.vesevent - -import com.google.protobuf.ByteString -import java.util.* -import kotlin.streams.asSequence - -internal class PayloadGenerator { - - private val randomGenerator = Random() - - fun generateRawPayload(size: Int): ByteString = - ByteString.copyFrom(ByteArray(size)) - - fun generatePayload(numOfCountMeasurements: Long = 2): ByteString = - ByteString.copyFrom( - randomGenerator - .ints(numOfCountMeasurements, MIN_BYTE_VALUE, MAX_BYTE_VALUE) - .asSequence() - .toString() - .toByteArray() - ) - - companion object { - private const val MIN_BYTE_VALUE = 0 - private const val MAX_BYTE_VALUE = 256 - } -} diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/VesEventGenerator.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/VesEventGenerator.kt deleted file mode 100644 index 7abd6054..00000000 --- a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/vesevent/VesEventGenerator.kt +++ /dev/null @@ -1,72 +0,0 @@ -/* - * ============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.ves.message.generator.impl.vesevent - -import com.google.protobuf.ByteString -import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageGenerator -import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventParameters -import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventType -import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventType.FIXED_PAYLOAD -import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventType.TOO_BIG_PAYLOAD -import org.onap.dcae.collectors.veshv.ves.message.generator.api.VesEventType.VALID -import org.onap.ves.VesEventOuterClass.CommonEventHeader -import org.onap.ves.VesEventOuterClass.VesEvent -import reactor.core.publisher.Flux -import reactor.core.publisher.Mono - -/** - * @author Jakub Dudycz - * @since June 2018 - */ -class VesEventGenerator internal constructor( - private val payloadGenerator: PayloadGenerator, - private val maxPayloadSizeBytes: Int -) : MessageGenerator() { - - override fun createMessageFlux(parameters: VesEventParameters): Flux = - parameters.run { - Mono - .fromCallable { createMessage(commonEventHeader, messageType) } - .let { repeatMessage(it, amount) } - } - - private fun createMessage(commonEventHeader: CommonEventHeader, messageType: VesEventType): VesEvent = - when (messageType) { - VALID -> vesEvent(commonEventHeader, payloadGenerator.generatePayload()) - TOO_BIG_PAYLOAD -> vesEvent(commonEventHeader, oversizedPayload()) - FIXED_PAYLOAD -> vesEvent(commonEventHeader, fixedPayload()) - } - - private fun vesEvent(commonEventHeader: CommonEventHeader, payload: ByteString): VesEvent = - VesEvent.newBuilder() - .setCommonEventHeader(commonEventHeader) - .setEventFields(payload) - .build() - - private fun oversizedPayload(): ByteString = - payloadGenerator.generateRawPayload(maxPayloadSizeBytes + 1) - - private fun fixedPayload(): ByteString = - payloadGenerator.generateRawPayload(FIXED_PAYLOAD_SIZE) - - companion object { - const val FIXED_PAYLOAD_SIZE = 100 - } -} diff --git a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/wireframe/WireFrameGenerator.kt b/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/wireframe/WireFrameGenerator.kt deleted file mode 100644 index ad45bc5c..00000000 --- a/sources/hv-collector-ves-message-generator/src/main/kotlin/org/onap/dcae/collectors/veshv/ves/message/generator/impl/wireframe/WireFrameGenerator.kt +++ /dev/null @@ -1,66 +0,0 @@ -/* - * ============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.ves.message.generator.impl.wireframe - -import org.onap.dcae.collectors.veshv.domain.ByteData -import org.onap.dcae.collectors.veshv.domain.PayloadContentType -import org.onap.dcae.collectors.veshv.domain.WireFrameMessage -import org.onap.dcae.collectors.veshv.ves.message.generator.api.MessageGenerator -import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameParameters -import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameType -import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameType.INVALID_GPB_DATA -import org.onap.dcae.collectors.veshv.ves.message.generator.api.WireFrameType.INVALID_WIRE_FRAME -import org.onap.ves.VesEventOuterClass.VesEvent -import reactor.core.publisher.Flux -import reactor.core.publisher.Mono -import java.nio.charset.Charset - -/** - * @author Jakub Dudycz - * @since February 2019 - */ -class WireFrameGenerator : MessageGenerator() { - - override fun createMessageFlux(parameters: WireFrameParameters): Flux = - parameters.run { - Mono - .fromCallable { createMessage(messageType) } - .let { repeatMessage(it, amount) } - } - - private fun createMessage(messageType: WireFrameType): WireFrameMessage = - when (messageType) { - INVALID_WIRE_FRAME -> { - val payload = ByteData(VesEvent.getDefaultInstance().toByteArray()) - WireFrameMessage( - payload, - UNSUPPORTED_VERSION, - UNSUPPORTED_VERSION, - PayloadContentType.GOOGLE_PROTOCOL_BUFFER.hexValue, - payload.size()) - } - INVALID_GPB_DATA -> - WireFrameMessage("invalid vesEvent".toByteArray(Charset.defaultCharset())) - } - - companion object { - private const val UNSUPPORTED_VERSION: Short = 2 - } -} -- cgit 1.2.3-korg