aboutsummaryrefslogtreecommitdiffstats
path: root/hv-collector-domain/src/main/kotlin
diff options
context:
space:
mode:
authorPiotr Jaszczyk <piotr.jaszczyk@nokia.com>2018-11-28 15:46:50 +0100
committerPiotr Jaszczyk <piotr.jaszczyk@nokia.com>2018-11-29 14:41:42 +0100
commitdde383a2aa75f94c26d7949665b79cc95486a223 (patch)
tree75f3e8f564067afd0e67dbe6254183e45ca26944 /hv-collector-domain/src/main/kotlin
parent77f896523f2065b1da1be21545155a29edea5122 (diff)
Custom detekt rule for logger usage check
Check if logger invocations don't use unoptimal invocations, eg. concatenation `debug("a=" + a)` instead of lambda use `debug {"a=" + a}` Unfortunately to avoid defining dependencies in many places and having circural dependencies it was necessarry to reorganize the maven module structure. The goal was to have `sources` module with production code and `build` module with build-time tooling (detekt rules among them). Issue-ID: DCAEGEN2-1002 Change-Id: I36e677b98972aaae6905d722597cbce5e863d201 Signed-off-by: Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
Diffstat (limited to 'hv-collector-domain/src/main/kotlin')
-rw-r--r--hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/ByteData.kt56
-rw-r--r--hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/PayloadContentType.kt34
-rw-r--r--hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/SecurityConfiguration.kt50
-rw-r--r--hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/VesEventDomain.kt35
-rw-r--r--hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/codec.kt102
-rw-r--r--hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/errors.kt48
-rw-r--r--hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/validation.kt38
-rw-r--r--hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/wire_frame.kt86
8 files changed, 0 insertions, 449 deletions
diff --git a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/ByteData.kt b/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/ByteData.kt
deleted file mode 100644
index a1ebba37..00000000
--- a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/ByteData.kt
+++ /dev/null
@@ -1,56 +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.domain
-
-import io.netty.buffer.ByteBuf
-import java.nio.charset.Charset
-
-/**
- * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
- * @since June 2018
- */
-class ByteData(private val data: ByteArray) {
-
- fun size() = data.size
-
- /**
- * This will expose mutable state of the data.
- *
- * @return wrapped data buffer (NOT a copy)
- */
- fun unsafeAsArray() = data
-
- fun writeTo(byteBuf: ByteBuf) {
- byteBuf.writeBytes(data)
- }
-
- fun asString(charset: Charset = Charset.defaultCharset()) = String(data, charset)
-
- companion object {
- val EMPTY = ByteData(byteArrayOf())
-
- fun readFrom(byteBuf: ByteBuf, length: Int): ByteData {
- val dataArray = ByteArray(length)
- byteBuf.readBytes(dataArray)
- return ByteData(dataArray)
- }
- }
-}
-
diff --git a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/PayloadContentType.kt b/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/PayloadContentType.kt
deleted file mode 100644
index 7cbf3530..00000000
--- a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/PayloadContentType.kt
+++ /dev/null
@@ -1,34 +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.domain
-
-/**
- * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
- * @since June 2018
- */
-enum class PayloadContentType(val hexValue: Int) {
- GOOGLE_PROTOCOL_BUFFER(0x0001);
-
- companion object {
- private val hexValues = PayloadContentType.values().map { it.hexValue }
-
- fun isValidHexValue(hex: Int) = hexValues.contains(hex)
- }
-}
diff --git a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/SecurityConfiguration.kt b/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/SecurityConfiguration.kt
deleted file mode 100644
index 7f566a6d..00000000
--- a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/SecurityConfiguration.kt
+++ /dev/null
@@ -1,50 +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.domain
-
-import arrow.core.Option
-import java.io.InputStream
-import java.nio.file.Path
-
-/**
- * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
- * @since May 2018
- */
-data class SecurityConfiguration(
- val sslDisable: Boolean = false,
- val keys: Option<SslKeys>)
-
-sealed class SslKeys
-
-data class OpenSslKeys(val privateKey: Path,
- val cert: Path,
- val trustedCert: Path) : SslKeys()
-
-data class JdkKeys(val keyStore: StreamProvider,
- val keyStorePassword: CharArray,
- val trustStore: StreamProvider,
- val trustStorePassword: CharArray) : SslKeys() {
- fun forgetPasswords() {
- keyStorePassword.fill('x')
- trustStorePassword.fill('x')
- }
-}
-
-typealias StreamProvider = () -> InputStream
diff --git a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/VesEventDomain.kt b/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/VesEventDomain.kt
deleted file mode 100644
index 0b18337d..00000000
--- a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/VesEventDomain.kt
+++ /dev/null
@@ -1,35 +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.domain
-
-enum class VesEventDomain(val domainName: String) {
- FAULT("fault"),
- HEARTBEAT("heartbeat"),
- MEASUREMENT("measurement"),
- MOBILE_FLOW("mobileFlow"),
- OTHER("other"),
- PNF_REGISTRATION("pnfRegistration"),
- SIP_SIGNALING("sipSignaling"),
- STATE_CHANGE("stateChange"),
- SYSLOG("syslog"),
- THRESHOLD_CROSSING_ALERT("thresholdCrossingAlert"),
- VOICE_QUALITY("voiceQuality"),
- PERF3GPP("perf3gpp");
-}
diff --git a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/codec.kt b/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/codec.kt
deleted file mode 100644
index 7fabdf14..00000000
--- a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/codec.kt
+++ /dev/null
@@ -1,102 +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.domain
-
-import arrow.core.Either
-import arrow.core.Left
-import arrow.core.Right
-import io.netty.buffer.ByteBuf
-import io.netty.buffer.ByteBufAllocator
-import org.onap.dcae.collectors.veshv.domain.WireFrameMessage.Companion.RESERVED_BYTE_COUNT
-
-/**
- * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
- * @since June 2018
- */
-class WireFrameEncoder(private val allocator: ByteBufAllocator = ByteBufAllocator.DEFAULT) {
-
- fun encode(frame: WireFrameMessage): ByteBuf = allocator
- .buffer(WireFrameMessage.HEADER_SIZE + frame.payload.size())
- .run {
- writeByte(WireFrameMessage.MARKER_BYTE.toInt())
- writeByte(frame.versionMajor.toInt())
- writeByte(frame.versionMinor.toInt())
- writeZero(RESERVED_BYTE_COUNT)
- writeShort(frame.payloadType)
- writeInt(frame.payloadSize)
- }
- .also {
- frame.payload.writeTo(it)
- }
-}
-
-/**
- * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
- * @since June 2018
- */
-class WireFrameDecoder(private val maxPayloadSizeBytes: Int) {
-
- fun decodeFirst(byteBuf: ByteBuf): Either<WireFrameDecodingError, WireFrameMessage> =
- when {
- isEmpty(byteBuf) -> Left(EmptyWireFrame)
- headerDoesNotFit(byteBuf) -> Left(MissingWireFrameHeaderBytes)
- else -> parseWireFrame(byteBuf)
- }
-
- private fun isEmpty(byteBuf: ByteBuf) = byteBuf.readableBytes() < 1
-
- private fun headerDoesNotFit(byteBuf: ByteBuf) = byteBuf.readableBytes() < WireFrameMessage.HEADER_SIZE
-
- private fun parseWireFrame(byteBuf: ByteBuf): Either<WireFrameDecodingError, WireFrameMessage> {
- byteBuf.markReaderIndex()
-
- val mark = byteBuf.readUnsignedByte()
- return when (mark) {
- WireFrameMessage.MARKER_BYTE -> parsePayloadFrame(byteBuf)
- else -> {
- byteBuf.resetReaderIndex()
- Left(InvalidWireFrameMarker(mark))
- }
- }
- }
-
- @Suppress("ReturnCount")
- private fun parsePayloadFrame(byteBuf: ByteBuf): Either<WireFrameDecodingError, WireFrameMessage> {
- val versionMajor = byteBuf.readUnsignedByte()
- val versionMinor = byteBuf.readUnsignedByte()
- byteBuf.skipBytes(RESERVED_BYTE_COUNT)
- val payloadTypeRaw = byteBuf.readUnsignedShort()
- val payloadSize = byteBuf.readInt()
-
- if (payloadSize > maxPayloadSizeBytes) {
- byteBuf.resetReaderIndex()
- return Left(PayloadSizeExceeded(maxPayloadSizeBytes))
- }
-
- if (byteBuf.readableBytes() < payloadSize) {
- byteBuf.resetReaderIndex()
- return Left(MissingWireFramePayloadBytes)
- }
-
- val payload = ByteData.readFrom(byteBuf, payloadSize)
-
- return Right(WireFrameMessage(payload, versionMajor, versionMinor, payloadTypeRaw, payloadSize))
- }
-}
diff --git a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/errors.kt b/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/errors.kt
deleted file mode 100644
index 0d55cebb..00000000
--- a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/errors.kt
+++ /dev/null
@@ -1,48 +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.domain
-
-/**
- * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
- * @since June 2018
- */
-
-sealed class WireFrameDecodingError(val message: String)
-
-
-// Invalid frame errors
-
-sealed class InvalidWireFrame(msg: String) : WireFrameDecodingError(msg)
-
-class InvalidWireFrameMarker(actualMarker: Short) : InvalidWireFrame(
- "Invalid start of frame. Expected 0x%02X, but was 0x%02X"
- .format(WireFrameMessage.MARKER_BYTE, actualMarker)
-)
-
-class PayloadSizeExceeded(maxPayloadSizeBytes: Int) :
- InvalidWireFrame("payload size exceeds the limit ($maxPayloadSizeBytes bytes)")
-
-// Missing bytes errors
-
-sealed class MissingWireFrameBytes(msg: String) : WireFrameDecodingError(msg)
-
-object MissingWireFrameHeaderBytes : MissingWireFrameBytes("readable bytes < header size")
-object MissingWireFramePayloadBytes : MissingWireFrameBytes("readable bytes < payload size")
-object EmptyWireFrame : MissingWireFrameBytes("empty wire frame")
diff --git a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/validation.kt b/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/validation.kt
deleted file mode 100644
index 1eb6239f..00000000
--- a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/validation.kt
+++ /dev/null
@@ -1,38 +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.domain
-
-import org.onap.ves.VesEventOuterClass
-
-val headerRequiredFieldDescriptors = listOf(
- "version",
- "domain",
- /* field "sequence" has been removed from validation, since default value "0" is acceptable */
- "priority",
- "eventId",
- "eventName",
- "lastEpochMicrosec",
- "startEpochMicrosec",
- "reportingEntityName",
- "sourceName",
- "vesEventListenerVersion")
- .map { fieldName -> VesEventOuterClass.CommonEventHeader.getDescriptor().findFieldByName(fieldName) }
-
-val vesEventListenerVersionRegex = """7\.[0-9].*""".toRegex()
diff --git a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/wire_frame.kt b/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/wire_frame.kt
deleted file mode 100644
index de37b140..00000000
--- a/hv-collector-domain/src/main/kotlin/org/onap/dcae/collectors/veshv/domain/wire_frame.kt
+++ /dev/null
@@ -1,86 +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.domain
-
-/**
- * Wire frame structure is presented bellow using ASN.1 notation. Please note that official supported specification
- * should be available on
- * [RTD documentation](https://onap.readthedocs.io/en/latest/submodules/dcaegen2.git/docs/sections/apis/ves-hv.html).
- *
- * ```
- * -- Wire Transfer Protocol (binary, defined using ASN.1 notation)
- * -- Encoding: use "direct encoding" to the number of octets indicated in the comment [n], using network byte order.
- *
- * WTP DEFINITIONS ::= BEGIN
- *
- * -- Used to sent data from the data provider
- * WtpData ::= SEQUENCE {
- * magic INTEGER (0..255), -- [1] always 0xAA
- * versionMajor INTEGER (0..255), -- [1] major interface version, forward incompatible
- * -- with previous major version, current value: 1
- * versionMinor INTEGER (0..255), -- [1] minor interface version, forward compatible
- * -- with previous minor version, current value: 0
- * reserved OCTET STRING (SIZE (3)), -- [3] reserved for future use (ignored, but use 0)
- * payloadId INTEGER (0..65535), -- [2] payload type: 0x0000=undefined, 0x0001=ONAP VesEvent (protobuf)
- * payloadLength INTEGER (0..4294967295). -- [4] payload length in octets
- * payload OCTET STRING -- [length as per payloadLength]
- * }
- *
- * END
- * ```
- *
- * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
- * @since May 2018
- */
-data class WireFrameMessage(val payload: ByteData,
- val versionMajor: Short,
- val versionMinor: Short,
- val payloadType: Int,
- val payloadSize: Int
-) {
- constructor(payload: ByteArray) : this(
- ByteData(payload),
- SUPPORTED_VERSION_MAJOR,
- SUPPORTED_VERSION_MINOR,
- PayloadContentType.GOOGLE_PROTOCOL_BUFFER.hexValue,
- payload.size)
-
- fun isValid(): Boolean =
- versionMajor == SUPPORTED_VERSION_MAJOR
- && PayloadContentType.isValidHexValue(payloadType)
- && payload.size() == payloadSize
-
- companion object {
- const val MARKER_BYTE: Short = 0xAA
- const val RESERVED_BYTE_COUNT: Int = 3
-
- const val SUPPORTED_VERSION_MAJOR: Short = 1
- const val SUPPORTED_VERSION_MINOR: Short = 0
-
- const val HEADER_SIZE =
- 1 * java.lang.Byte.BYTES + // marker
- 2 * java.lang.Byte.BYTES + // single byte fields
- 1 * java.lang.Short.BYTES + // double byte fields
- RESERVED_BYTE_COUNT * java.lang.Byte.BYTES + // reserved bytes
- 1 * java.lang.Integer.BYTES // payload length
-
- const val DEFAULT_MAX_PAYLOAD_SIZE_BYTES = 1024 * 1024
- }
-}