diff options
Diffstat (limited to 'sources')
2 files changed, 65 insertions, 105 deletions
diff --git a/sources/hv-collector-main/src/main/kotlin/org/onap/dcae/collectors/veshv/main/metrics/MicrometerMetrics.kt b/sources/hv-collector-main/src/main/kotlin/org/onap/dcae/collectors/veshv/main/metrics/MicrometerMetrics.kt index f3bcf381..b832bc9f 100644 --- a/sources/hv-collector-main/src/main/kotlin/org/onap/dcae/collectors/veshv/main/metrics/MicrometerMetrics.kt +++ b/sources/hv-collector-main/src/main/kotlin/org/onap/dcae/collectors/veshv/main/metrics/MicrometerMetrics.kt @@ -47,37 +47,34 @@ class MicrometerMetrics internal constructor( ) : Metrics { private val receivedBytes = registry.counter(name(DATA, RECEIVED, BYTES)) - private val receivedMsgCount = registry.counter(name(MESSAGES, RECEIVED, COUNT)) - private val receivedMsgBytes = registry.counter(name(MESSAGES, RECEIVED, BYTES)) + private val receivedMessages = registry.counter(name(MESSAGES, RECEIVED)) + private val receivedMessagesPayloadBytes = registry.counter(name(MESSAGES, RECEIVED, PAYLOAD, BYTES)) - private val connectionsTotalCount = registry.counter(name(CONNECTIONS, TOTAL, COUNT)) - private val disconnectionsCount = registry.counter(name(DISCONNECTIONS, COUNT)) + private val totalConnections = registry.counter(name(CONNECTIONS)) + private val disconnections = registry.counter(name(DISCONNECTIONS)) private val processingTime = registry.timer(name(MESSAGES, PROCESSING, TIME)) - private val totalLatency = registry.timer(name(MESSAGES, LATENCY, TIME)) + private val totalLatency = registry.timer(name(MESSAGES, LATENCY)) - private val sentCount = registry.counter(name(MESSAGES, SENT, COUNT)) - private val sentToTopicCount = { topic: String -> - registry.counter(name(MESSAGES, SENT, TOPIC, COUNT), TOPIC, topic) + private val sentMessages = registry.counter(name(MESSAGES, SENT)) + private val sentMessagesByTopic = { topic: String -> + registry.counter(name(MESSAGES, SENT, TOPIC), TOPIC, topic) }.memoize<String, Counter>() - private val droppedCount = registry.counter(name(MESSAGES, DROPPED, COUNT)) - private val droppedCauseCount = { cause: String -> - registry.counter(name(MESSAGES, DROPPED, CAUSE, COUNT), CAUSE, cause) + private val droppedMessages = registry.counter(name(MESSAGES, DROPPED)) + private val messagesDroppedByCause = { cause: String -> + registry.counter(name(MESSAGES, DROPPED, CAUSE), CAUSE, cause) }.memoize<String, Counter>() - private val clientsRejectedCount = registry.counter(name(CLIENTS, REJECTED, COUNT)) - private val clientsRejectedCauseCount = { cause: String -> - registry.counter(name(CLIENTS, REJECTED, CAUSE, COUNT), CAUSE, cause) + private val clientsRejected = registry.counter(name(CLIENTS, REJECTED)) + private val clientsRejectedByCause = { cause: String -> + registry.counter(name(CLIENTS, REJECTED, CAUSE), CAUSE, cause) }.memoize<String, Counter>() init { - registry.gauge(name(MESSAGES, PROCESSING, COUNT), this) { - (receivedMsgCount.count() - sentCount.count() - droppedCount.count()).coerceAtLeast(0.0) - } - registry.gauge(name(CONNECTIONS, ACTIVE, COUNT), this) { - (connectionsTotalCount.count() - disconnectionsCount.count()).coerceAtLeast(0.0) + registry.gauge(name(CONNECTIONS, ACTIVE), this) { + (totalConnections.count() - disconnections.count()).coerceAtLeast(0.0) } ClassLoaderMetrics().bindTo(registry) @@ -94,35 +91,35 @@ class MicrometerMetrics internal constructor( } override fun notifyMessageReceived(msg: WireFrameMessage) { - receivedMsgCount.increment() - receivedMsgBytes.increment(msg.payloadSize.toDouble()) + receivedMessages.increment() + receivedMessagesPayloadBytes.increment(msg.payloadSize.toDouble()) } override fun notifyMessageSent(msg: RoutedMessage) { val now = Instant.now() - sentCount.increment() - sentToTopicCount(msg.topic).increment() + sentMessages.increment() + sentMessagesByTopic(msg.topic).increment() processingTime.record(Duration.between(msg.message.wtpFrame.receivedAt, now)) totalLatency.record(Duration.between(epochMicroToInstant(msg.message.header.lastEpochMicrosec), now)) } override fun notifyMessageDropped(cause: MessageDropCause) { - droppedCount.increment() - droppedCauseCount(cause.tag).increment() + droppedMessages.increment() + messagesDroppedByCause(cause.tag).increment() } override fun notifyClientRejected(cause: ClientRejectionCause) { - clientsRejectedCount.increment() - clientsRejectedCauseCount(cause.tag).increment() + clientsRejected.increment() + clientsRejectedByCause(cause.tag).increment() } override fun notifyClientConnected() { - connectionsTotalCount.increment() + totalConnections.increment() } override fun notifyClientDisconnected() { - disconnectionsCount.increment() + disconnections.increment() } companion object { @@ -134,7 +131,6 @@ class MicrometerMetrics internal constructor( internal const val CONNECTIONS = "connections" internal const val ACTIVE = "active" internal const val BYTES = "bytes" - internal const val COUNT = "count" internal const val DATA = "data" internal const val SENT = "sent" internal const val PROCESSING = "processing" @@ -143,9 +139,9 @@ class MicrometerMetrics internal constructor( internal const val REJECTED = "rejected" internal const val TOPIC = "topic" internal const val DROPPED = "dropped" - internal const val TOTAL = "total" internal const val TIME = "time" internal const val LATENCY = "latency" + internal const val PAYLOAD = "payload" internal fun name(vararg name: String) = "$PREFIX.${name.joinToString(".")}" } } diff --git a/sources/hv-collector-main/src/test/kotlin/org/onap/dcae/collectors/veshv/main/MicrometerMetricsTest.kt b/sources/hv-collector-main/src/test/kotlin/org/onap/dcae/collectors/veshv/main/MicrometerMetricsTest.kt index 24355d5d..16d28326 100644 --- a/sources/hv-collector-main/src/test/kotlin/org/onap/dcae/collectors/veshv/main/MicrometerMetricsTest.kt +++ b/sources/hv-collector-main/src/test/kotlin/org/onap/dcae/collectors/veshv/main/MicrometerMetricsTest.kt @@ -22,6 +22,7 @@ package org.onap.dcae.collectors.veshv.main import arrow.core.Try import io.micrometer.core.instrument.Counter import io.micrometer.core.instrument.Gauge +import io.micrometer.core.instrument.Meter import io.micrometer.core.instrument.Timer import io.micrometer.core.instrument.search.RequiredSearch import io.micrometer.prometheus.PrometheusConfig @@ -34,19 +35,16 @@ import org.jetbrains.spek.api.dsl.it import org.jetbrains.spek.api.dsl.on import org.onap.dcae.collectors.veshv.main.metrics.MicrometerMetrics import org.onap.dcae.collectors.veshv.main.metrics.MicrometerMetrics.Companion.PREFIX -import org.onap.dcae.collectors.veshv.model.MessageDropCause.INVALID_MESSAGE -import org.onap.dcae.collectors.veshv.model.MessageDropCause.ROUTE_NOT_FOUND import org.onap.dcae.collectors.veshv.model.ClientRejectionCause.INVALID_WIRE_FRAME_MARKER import org.onap.dcae.collectors.veshv.model.ClientRejectionCause.PAYLOAD_SIZE_EXCEEDED_IN_MESSAGE +import org.onap.dcae.collectors.veshv.model.MessageDropCause.INVALID_MESSAGE +import org.onap.dcae.collectors.veshv.model.MessageDropCause.ROUTE_NOT_FOUND import org.onap.dcae.collectors.veshv.model.RoutedMessage import org.onap.dcae.collectors.veshv.model.VesMessage import org.onap.dcae.collectors.veshv.tests.utils.emptyWireProtocolFrame import org.onap.dcae.collectors.veshv.tests.utils.vesEvent import org.onap.dcae.collectors.veshv.tests.utils.wireProtocolFrame -import org.onap.dcae.collectors.veshv.tests.utils.wireProtocolFrameWithPayloadSize import java.time.Instant -import io.micrometer.core.instrument.Meter - import java.time.temporal.Temporal import java.util.concurrent.TimeUnit import kotlin.reflect.KClass @@ -133,8 +131,8 @@ object MicrometerMetricsTest : Spek({ } describe("notifyMessageReceived") { - on("$PREFIX.messages.received.count counter") { - val counterName = "$PREFIX.messages.received.count" + on("$PREFIX.messages.received counter") { + val counterName = "$PREFIX.messages.received" it("should increment counter") { cut.notifyMessageReceived(emptyWireProtocolFrame()) @@ -145,8 +143,8 @@ object MicrometerMetricsTest : Spek({ } } - on("$PREFIX.messages.received.bytes counter") { - val counterName = "$PREFIX.messages.received.bytes" + on("$PREFIX.messages.received.payload.bytes counter") { + val counterName = "$PREFIX.messages.received.payload.bytes" it("should increment counter") { val bytes = 888 @@ -161,8 +159,8 @@ object MicrometerMetricsTest : Spek({ it("should leave all other counters unchanged") { cut.notifyMessageReceived(emptyWireProtocolFrame().copy(payloadSize = 128)) verifyCountersAndTimersAreUnchangedBut( - "$PREFIX.messages.received.count", - "$PREFIX.messages.received.bytes" + "$PREFIX.messages.received", + "$PREFIX.messages.received.payload.bytes" ) } } @@ -171,8 +169,8 @@ object MicrometerMetricsTest : Spek({ val topicName1 = "PERF3GPP" val topicName2 = "CALLTRACE" - on("$PREFIX.messages.sent.count counter") { - val counterName = "$PREFIX.messages.sent.count" + on("$PREFIX.messages.sent counter") { + val counterName = "$PREFIX.messages.sent" it("should increment counter") { cut.notifyMessageSent(routedMessage(topicName1)) @@ -182,14 +180,14 @@ object MicrometerMetricsTest : Spek({ } verifyCountersAndTimersAreUnchangedBut( counterName, - "$PREFIX.messages.sent.topic.count", + "$PREFIX.messages.sent.topic", "$PREFIX.messages.processing.time", - "$PREFIX.messages.latency.time") + "$PREFIX.messages.latency") } } - on("$PREFIX.messages.sent.topic.count counter") { - val counterName = "$PREFIX.messages.sent.topic.count" + on("$PREFIX.messages.sent.topic counter") { + val counterName = "$PREFIX.messages.sent.topic" it("should handle counters for different topics") { cut.notifyMessageSent(routedMessage(topicName1)) @@ -219,14 +217,14 @@ object MicrometerMetricsTest : Spek({ } verifyCountersAndTimersAreUnchangedBut( counterName, - "$PREFIX.messages.sent.topic.count", - "$PREFIX.messages.sent.count", - "$PREFIX.messages.latency.time") + "$PREFIX.messages.sent.topic", + "$PREFIX.messages.sent", + "$PREFIX.messages.latency") } } - on("$PREFIX.messages.latency.time") { - val counterName = "$PREFIX.messages.latency.time" + on("$PREFIX.messages.latency") { + val counterName = "$PREFIX.messages.latency" val latencyMs = 1666L it("should update timer") { @@ -241,16 +239,16 @@ object MicrometerMetricsTest : Spek({ } verifyCountersAndTimersAreUnchangedBut( counterName, - "$PREFIX.messages.sent.topic.count", - "$PREFIX.messages.sent.count", + "$PREFIX.messages.sent.topic", + "$PREFIX.messages.sent", "$PREFIX.messages.processing.time") } } } describe("notifyMessageDropped") { - on("$PREFIX.messages.dropped.count counter") { - val counterName = "$PREFIX.messages.dropped.count" + on("$PREFIX.messages.dropped counter") { + val counterName = "$PREFIX.messages.dropped" it("should increment counter") { cut.notifyMessageDropped(ROUTE_NOT_FOUND) @@ -259,12 +257,12 @@ object MicrometerMetricsTest : Spek({ verifyCounter(counterName) { assertThat(it.count()).isCloseTo(2.0, doublePrecision) } - verifyCountersAndTimersAreUnchangedBut(counterName, "$PREFIX.messages.dropped.cause.count") + verifyCountersAndTimersAreUnchangedBut(counterName, "$PREFIX.messages.dropped.cause") } } - on("$PREFIX.messages.dropped.cause.count counter") { - val counterName = "$PREFIX.messages.dropped.cause.count" + on("$PREFIX.messages.dropped.cause counter") { + val counterName = "$PREFIX.messages.dropped.cause" it("should handle counters for different drop reasons") { cut.notifyMessageDropped(ROUTE_NOT_FOUND) @@ -283,8 +281,8 @@ object MicrometerMetricsTest : Spek({ } describe("notifyClientConnected") { - on("$PREFIX.connections.total.count counter") { - val counterName = "$PREFIX.connections.total.count" + on("$PREFIX.connections counter") { + val counterName = "$PREFIX.connections" it("should increment counter") { cut.notifyClientConnected() @@ -300,8 +298,8 @@ object MicrometerMetricsTest : Spek({ } describe("notifyClientDisconnected") { - on("$PREFIX.disconnections.count counter") { - val counterName = "$PREFIX.disconnections.count" + on("$PREFIX.disconnections counter") { + val counterName = "$PREFIX.disconnections" it("should increment counter") { cut.notifyClientDisconnected() @@ -318,8 +316,8 @@ object MicrometerMetricsTest : Spek({ describe("notifyClientRejected") { - on("$PREFIX.clients.rejected.count") { - val counterName = "$PREFIX.clients.rejected.count" + on("$PREFIX.clients.rejected") { + val counterName = "$PREFIX.clients.rejected" it("should increment counter for each possible reason") { cut.notifyClientRejected(INVALID_WIRE_FRAME_MARKER) cut.notifyClientRejected(PAYLOAD_SIZE_EXCEEDED_IN_MESSAGE) @@ -327,12 +325,12 @@ object MicrometerMetricsTest : Spek({ verifyCounter(counterName) { assertThat(it.count()).isCloseTo(2.0, doublePrecision) } - verifyCountersAndTimersAreUnchangedBut(counterName, "$PREFIX.clients.rejected.cause.count") + verifyCountersAndTimersAreUnchangedBut(counterName, "$PREFIX.clients.rejected.cause") } } - on("$PREFIX.clients.rejected.cause.count counter") { - val counterName = "$PREFIX.clients.rejected.cause.count" + on("$PREFIX.clients.rejected.cause counter") { + val counterName = "$PREFIX.clients.rejected.cause" it("should handle counters for different rejection reasons") { cut.notifyClientRejected(INVALID_WIRE_FRAME_MARKER) cut.notifyClientRejected(PAYLOAD_SIZE_EXCEEDED_IN_MESSAGE) @@ -349,42 +347,8 @@ object MicrometerMetricsTest : Spek({ } } - describe("$PREFIX.messages.processing.count gauge") { - val gaugeName = "$PREFIX.messages.processing.count" - - on("message traffic") { - it("should calculate positive difference between sent and received messages") { - cut.notifyMessageReceived(wireProtocolFrameWithPayloadSize(128)) - cut.notifyMessageReceived(wireProtocolFrameWithPayloadSize(256)) - cut.notifyMessageReceived(wireProtocolFrameWithPayloadSize(256)) - cut.notifyMessageSent(routedMessage("perf3gpp")) - - verifyGauge(gaugeName) { - assertThat(it.value()).isCloseTo(2.0, doublePrecision) - } - } - - it("should calculate no difference between sent and received messages") { - cut.notifyMessageSent(routedMessage("perf3gpp")) - cut.notifyMessageSent(routedMessage("fault")) - - verifyGauge(gaugeName) { - assertThat(it.value()).isCloseTo(0.0, doublePrecision) - } - } - - it("should calculate negative difference between sent and received messages") { - cut.notifyMessageSent(routedMessage("fault")) - - verifyGauge(gaugeName) { - assertThat(it.value()).isCloseTo(0.0, doublePrecision) - } - } - } - } - - describe("$PREFIX.connections.active.count gauge") { - val gaugeName = "$PREFIX.connections.active.count" + describe("$PREFIX.connections.active gauge") { + val gaugeName = "$PREFIX.connections.active" on("connection traffic") { it("should calculate positive difference between connected and disconnected clients") { |