From fb613396cec50bae2ae59b6bd7280b903149f8b7 Mon Sep 17 00:00:00 2001 From: Filip Krzywka Date: Tue, 25 Jun 2019 14:39:07 +0200 Subject: Implement kafka consumer metrics - bump Micrometer version 1.0.8 -> 1.1.5 Change-Id: I7a00fbf252df0f31f12f8743e8719701bd282ce2 Issue-ID: DCAEGEN2-1626 Signed-off-by: Filip Krzywka --- sources/hv-collector-test-utils/pom.xml | 5 ++ .../dcae/collectors/veshv/tests/utils/metrics.kt | 55 ++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 sources/hv-collector-test-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/tests/utils/metrics.kt (limited to 'sources/hv-collector-test-utils') diff --git a/sources/hv-collector-test-utils/pom.xml b/sources/hv-collector-test-utils/pom.xml index bf70e180..97737e84 100644 --- a/sources/hv-collector-test-utils/pom.xml +++ b/sources/hv-collector-test-utils/pom.xml @@ -86,5 +86,10 @@ logback-classic compile + + io.micrometer + micrometer-registry-prometheus + compile + \ No newline at end of file diff --git a/sources/hv-collector-test-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/tests/utils/metrics.kt b/sources/hv-collector-test-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/tests/utils/metrics.kt new file mode 100644 index 00000000..1aefdb34 --- /dev/null +++ b/sources/hv-collector-test-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/tests/utils/metrics.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.tests.utils + +import arrow.core.Try +import io.micrometer.core.instrument.Counter +import io.micrometer.core.instrument.Gauge +import io.micrometer.core.instrument.Tags +import io.micrometer.core.instrument.Timer +import io.micrometer.core.instrument.search.RequiredSearch +import io.micrometer.prometheus.PrometheusMeterRegistry +import org.assertj.core.api.Assertions + + +fun PrometheusMeterRegistry.verifyGauge(name: String, verifier: (Gauge) -> T) = + verifyMeter(findMeter(name), RequiredSearch::gauge, verifier) + +fun PrometheusMeterRegistry.verifyTimer(name: String, verifier: (Timer) -> T) = + verifyMeter(findMeter(name), RequiredSearch::timer, verifier) + +fun PrometheusMeterRegistry.verifyCounter(name: String, verifier: (Counter) -> T) = + verifyCounter(findMeter(name), verifier) + +fun PrometheusMeterRegistry.verifyCounter(name: String, tags: Tags, verifier: (Counter) -> T) = + verifyCounter(findMeter(name).tags(tags), verifier) + +private fun PrometheusMeterRegistry.findMeter(meterName: String) = RequiredSearch.`in`(this).name(meterName) + +private fun verifyCounter(search: RequiredSearch, verifier: (Counter) -> T) = + verifyMeter(search, RequiredSearch::counter, verifier) + +private inline fun verifyMeter(search: RequiredSearch, + map: (RequiredSearch) -> M, + verifier: (M) -> T) = + Try { map(search) }.fold( + { ex -> Assertions.assertThat(ex).doesNotThrowAnyException() }, + verifier + ) \ No newline at end of file -- cgit 1.2.3-korg