This is an automated email from the ASF dual-hosted git repository. zhaijia pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push: new d82dc1c ISSUE #535: Prometheus metrics provider fails to initialize d82dc1c is described below commit d82dc1c3e64e12e27ac8492ecbd4204a5529099c Author: Sijie Guo <si...@apache.org> AuthorDate: Wed Oct 4 10:51:08 2017 +0800 ISSUE #535: Prometheus metrics provider fails to initialize Descriptions of the changes in this PR: - the parameter of `collectorNames` should be Collector rather than String - add test case for prometheus metrics provider - rename the classes to under `org.apache.bookkeeper.stats.prometheus` rather than taking the common `stats` package. Author: Sijie Guo <si...@apache.org> Reviewers: Jia Zhai <None>, Matteo Merli <mme...@apache.org> This closes #536 from sijie/fix_promethus, closes #535 --- .../stats/{ => prometheus}/PrometheusCounter.java | 3 +- .../PrometheusMetricsProvider.java | 4 +- .../{ => prometheus}/PrometheusOpStatsLogger.java | 4 +- .../{ => prometheus}/PrometheusStatsLogger.java | 6 ++- .../stats/{ => prometheus}/PrometheusUtil.java | 4 +- .../stats/{ => prometheus}/package-info.java | 4 +- .../prometheus/TestPrometheusMetricsProvider.java | 54 ++++++++++++++++++++++ 7 files changed, 71 insertions(+), 8 deletions(-) diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusCounter.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusCounter.java similarity index 94% rename from bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusCounter.java rename to bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusCounter.java index 1e80087..db5b13d 100644 --- a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusCounter.java +++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusCounter.java @@ -14,11 +14,12 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.apache.bookkeeper.stats; +package org.apache.bookkeeper.stats.prometheus; import io.prometheus.client.Collector; import io.prometheus.client.CollectorRegistry; import io.prometheus.client.Gauge; +import org.apache.bookkeeper.stats.Counter; /** * A {@link Counter} implementation based on <i>Prometheus</i> metrics library. diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusMetricsProvider.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java similarity index 95% rename from bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusMetricsProvider.java rename to bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java index 57c9248..6c84dea 100644 --- a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusMetricsProvider.java +++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java @@ -14,7 +14,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.apache.bookkeeper.stats; +package org.apache.bookkeeper.stats.prometheus; import io.prometheus.client.CollectorRegistry; import io.prometheus.client.exporter.MetricsServlet; @@ -23,6 +23,8 @@ import io.prometheus.client.hotspot.MemoryPoolsExports; import io.prometheus.client.hotspot.StandardExports; import io.prometheus.client.hotspot.ThreadExports; import java.net.InetSocketAddress; +import org.apache.bookkeeper.stats.StatsLogger; +import org.apache.bookkeeper.stats.StatsProvider; import org.apache.commons.configuration.Configuration; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusOpStatsLogger.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusOpStatsLogger.java similarity index 95% rename from bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusOpStatsLogger.java rename to bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusOpStatsLogger.java index 94ad9b0..a44ad5a 100644 --- a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusOpStatsLogger.java +++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusOpStatsLogger.java @@ -14,11 +14,13 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.apache.bookkeeper.stats; +package org.apache.bookkeeper.stats.prometheus; import io.prometheus.client.CollectorRegistry; import io.prometheus.client.Summary; import java.util.concurrent.TimeUnit; +import org.apache.bookkeeper.stats.OpStatsData; +import org.apache.bookkeeper.stats.OpStatsLogger; /** * A {@code Prometheus} based {@link OpStatsLogger} implementation. diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusStatsLogger.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusStatsLogger.java similarity index 92% rename from bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusStatsLogger.java rename to bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusStatsLogger.java index 5e39159..4f2cdfe 100644 --- a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusStatsLogger.java +++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusStatsLogger.java @@ -14,11 +14,15 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.apache.bookkeeper.stats; +package org.apache.bookkeeper.stats.prometheus; import com.google.common.base.Joiner; import io.prometheus.client.Collector; import io.prometheus.client.CollectorRegistry; +import org.apache.bookkeeper.stats.Counter; +import org.apache.bookkeeper.stats.Gauge; +import org.apache.bookkeeper.stats.OpStatsLogger; +import org.apache.bookkeeper.stats.StatsLogger; /** * A {@code Prometheus} based {@link StatsLogger} implementation. diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusUtil.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusUtil.java similarity index 96% rename from bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusUtil.java rename to bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusUtil.java index 6ccc645..dcb1a71 100644 --- a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/PrometheusUtil.java +++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusUtil.java @@ -14,7 +14,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.apache.bookkeeper.stats; +package org.apache.bookkeeper.stats.prometheus; import io.prometheus.client.Collector; import io.prometheus.client.CollectorRegistry; @@ -39,7 +39,7 @@ public class PrometheusUtil { collectorsMapField = CollectorRegistry.class.getDeclaredField("namesToCollectors"); collectorsMapField.setAccessible(true); - collectorsNamesMethod = CollectorRegistry.class.getDeclaredMethod("collectorNames", String.class); + collectorsNamesMethod = CollectorRegistry.class.getDeclaredMethod("collectorNames", Collector.class); collectorsNamesMethod.setAccessible(true); } catch (NoSuchFieldException | SecurityException | NoSuchMethodException e) { diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/package-info.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/package-info.java similarity index 86% rename from bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/package-info.java rename to bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/package-info.java index a264d8f..596d596 100644 --- a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/package-info.java +++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/package-info.java @@ -15,6 +15,6 @@ * the License. */ /** - * A stats provider implementation based on {@link Prometheus}. + * A stats provider implementation based on {@link https://prometheus.io/}. */ -package org.apache.bookkeeper.stats; +package org.apache.bookkeeper.stats.prometheus; diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java new file mode 100644 index 0000000..c0383f5 --- /dev/null +++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java @@ -0,0 +1,54 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with this + * work for additional information regarding copyright ownership. The ASF + * licenses this file to you 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. + */ +package org.apache.bookkeeper.stats.prometheus; + +import static org.junit.Assert.assertEquals; + +import io.prometheus.client.Collector; +import io.prometheus.client.CollectorRegistry; +import java.lang.reflect.Field; +import java.util.Map; +import org.junit.Test; + +public class TestPrometheusMetricsProvider { + + private final CollectorRegistry registry = new CollectorRegistry(); + + @Test + public void testCounter() { + PrometheusCounter counter = new PrometheusCounter(registry, "testcounter"); + long value = counter.get(); + assertEquals(0L, value); + counter.inc(); + assertEquals(1L, counter.get().longValue()); + counter.dec(); + assertEquals(0L, counter.get().longValue()); + counter.add(3); + assertEquals(3L, counter.get().longValue()); + } + + @Test + public void testTwoCounters() throws Exception { + PrometheusCounter counter1 = new PrometheusCounter(registry, "testcounter"); + PrometheusCounter counter2 = new PrometheusCounter(registry, "testcounter"); + Field collectorsMapField = CollectorRegistry.class.getDeclaredField("namesToCollectors"); + collectorsMapField.setAccessible(true); + Map<String, Collector> collectorMap = (Map<String, Collector>) collectorsMapField.get(registry); + assertEquals(1, collectorMap.size()); + } + +} -- To stop receiving notification emails like this one, please contact ['"commits@bookkeeper.apache.org" <commits@bookkeeper.apache.org>'].