This is an automated email from the ASF dual-hosted git repository.
alexey pushed a commit to branch branch-1.17.x
in repository https://gitbox.apache.org/repos/asf/kudu.git
The following commit(s) were added to refs/heads/branch-1.17.x by this push:
new b18f36ccf [test] a small clean-up on StringGaugePrometheusTest
b18f36ccf is described below
commit b18f36ccf823da552ee9272fd36852fb7d74498b
Author: Alexey Serbin <[email protected]>
AuthorDate: Thu Feb 1 17:49:09 2024 -0800
[test] a small clean-up on StringGaugePrometheusTest
I took a quick look at KUDU-3549, and a natural first step was to check
whether we have a proper test coverage for handling StringGauge in when
dumping metrics in Prometheus format. The result was this patch, adding
a couple new sub-scenarios into MetricsTest.StringGaugePrometheusTest.
While this didn't lead to discovering the root case of the reported
issue, the new sub-scenarios are still useful since they provide extra
coverage for the related functionality. I also took the liberty of
cleaning up the code a bit.
Change-Id: Ie495f3bae91facd98e9ce61ee86f34dea8b08087
Reviewed-on: http://gerrit.cloudera.org:8080/20984
Reviewed-by: Yingchun Lai <[email protected]>
Tested-by: Alexey Serbin <[email protected]>
(cherry picked from commit ce8ef84d9cf1c4aca8edd07920dfef274edb8df4)
Reviewed-on: http://gerrit.cloudera.org:8080/21006
---
src/kudu/util/metrics-test.cc | 76 ++++++++++++++++++++++++-------------------
1 file changed, 43 insertions(+), 33 deletions(-)
diff --git a/src/kudu/util/metrics-test.cc b/src/kudu/util/metrics-test.cc
index 2ab2d15d3..2f3bc6a75 100644
--- a/src/kudu/util/metrics-test.cc
+++ b/src/kudu/util/metrics-test.cc
@@ -47,6 +47,7 @@
#include "kudu/util/test_macros.h"
#include "kudu/util/test_util.h"
+using std::ostringstream;
using std::string;
using std::unordered_map;
using std::unordered_set;
@@ -133,13 +134,11 @@ TEST_F(MetricsTest, ResetCounter) {
}
TEST_F(MetricsTest, CounterPrometheusTest) {
- scoped_refptr<Counter> requests =
- new Counter(&METRIC_test_counter);
+ scoped_refptr<Counter> requests(new Counter(&METRIC_test_counter));
- std::ostringstream output;
- string prefix;
+ ostringstream output;
PrometheusWriter writer(&output);
- ASSERT_OK(requests->WriteAsPrometheus(&writer, prefix));
+ ASSERT_OK(requests->WriteAsPrometheus(&writer, {}));
const string expected_output = "# HELP test_counter Description of test
counter\n"
"# TYPE test_counter counter\n"
@@ -205,14 +204,30 @@ TEST_F(MetricsTest, SimpleStringGaugeForMergeTest) {
TEST_F(MetricsTest, StringGaugePrometheusTest) {
scoped_refptr<StringGauge> state =
- new StringGauge(&METRIC_test_string_gauge, "Healthy");
+ new StringGauge(&METRIC_test_string_gauge, "Healthy");
- std::ostringstream output;
- string prefix;
+ ostringstream output;
PrometheusWriter writer(&output);
- ASSERT_OK(state->WriteAsPrometheus(&writer, prefix));
+ ASSERT_OK(state->WriteAsPrometheus(&writer, {}));
// String Gauges are not representable in Prometheus, empty output is
expected
ASSERT_EQ("", output.str());
+
+ // Make sure proper methods are called when relying on method overrides.
+ {
+ const Metric* g = state.get();
+ ostringstream output;
+ PrometheusWriter writer(&output);
+ ASSERT_OK(g->WriteAsPrometheus(&writer, {}));
+ // String Gauges are not representable in Prometheus, empty output is
expected
+ ASSERT_EQ("", output.str());
+ }
+ {
+ const Metric* m = state.get();
+ ostringstream output;
+ PrometheusWriter writer(&output);
+ ASSERT_OK(m->WriteAsPrometheus(&writer, {}));
+ ASSERT_EQ("", output.str());
+ }
}
METRIC_DEFINE_gauge_double(test_entity, test_mean_gauge, "Test mean Gauge",
@@ -268,9 +283,9 @@ TEST_F(MetricsTest, TestMeanGaugeJsonPrint) {
const double kTotalCount = 2.0;
test_meangauge->set_value(kTotalSum, kTotalCount);
- std::ostringstream out;
+ ostringstream out;
JsonWriter writer(&out, JsonWriter::PRETTY);
- CHECK_OK(entity_->WriteAsJson(&writer, MetricJsonOptions()));
+ ASSERT_OK(entity_->WriteAsJson(&writer, {}));
JsonReader reader(out.str());
ASSERT_OK(reader.Init());
@@ -294,10 +309,9 @@ TEST_F(MetricsTest, MeanGaugePrometheusTest) {
scoped_refptr<MeanGauge> average_usage =
METRIC_test_mean_gauge.InstantiateMeanGauge(entity_);
- std::ostringstream output;
- string prefix;
+ ostringstream output;
PrometheusWriter writer(&output);
- ASSERT_OK(average_usage->WriteAsPrometheus(&writer, prefix));
+ ASSERT_OK(average_usage->WriteAsPrometheus(&writer, {}));
const string expected_output = "# HELP test_mean_gauge Description of mean
Gauge\n"
"# TYPE test_mean_gauge gauge\n"
@@ -376,13 +390,12 @@ TEST_F(MetricsTest, SimpleAtomicGaugeMinTypeMergeTest) {
}
TEST_F(MetricsTest, AtomicGaugePrometheusTest) {
- scoped_refptr<AtomicGauge<uint64_t> > mem_usage =
- METRIC_test_gauge.Instantiate(entity_, 0);
+ scoped_refptr<AtomicGauge<uint64_t>> mem_usage =
+ METRIC_test_gauge.Instantiate(entity_, 0);
- std::ostringstream output;
- string prefix;
+ ostringstream output;
PrometheusWriter writer(&output);
- ASSERT_OK(mem_usage->WriteAsPrometheus(&writer, prefix));
+ ASSERT_OK(mem_usage->WriteAsPrometheus(&writer, {}));
const string expected_output = "# HELP test_gauge Description of Test
Gauge\n"
"# TYPE test_gauge gauge\n"
@@ -395,10 +408,9 @@ TEST_F(MetricsTest, AtomicGaugeBooleanPrometheusTest) {
scoped_refptr<AtomicGauge<bool> > clock_extrapolating =
METRIC_test_gauge_bool.Instantiate(entity_, false);
- std::ostringstream output;
- string prefix;
+ ostringstream output;
PrometheusWriter writer(&output);
- ASSERT_OK(clock_extrapolating->WriteAsPrometheus(&writer, prefix));
+ ASSERT_OK(clock_extrapolating->WriteAsPrometheus(&writer, {}));
const string expected_output = "# HELP test_gauge_bool Description of Test
boolean Gauge\n"
"# TYPE test_gauge_bool gauge\n"
@@ -548,14 +560,13 @@ TEST_F(MetricsTest, AutoDetachToConstant) {
TEST_F(MetricsTest, FunctionGaugePrometheusTest) {
int metric_val = 1000;
- scoped_refptr<FunctionGauge<int64_t> > gauge =
- METRIC_test_func_gauge.InstantiateFunctionGauge(
- entity_, [&metric_val]() { return MyFunction(&metric_val); });
+ scoped_refptr<FunctionGauge<int64_t>> gauge =
+ METRIC_test_func_gauge.InstantiateFunctionGauge(
+ entity_, [&metric_val]() { return MyFunction(&metric_val); });
- std::ostringstream output;
- string prefix;
+ ostringstream output;
PrometheusWriter writer(&output);
- ASSERT_OK(gauge->WriteAsPrometheus(&writer, prefix));
+ ASSERT_OK(gauge->WriteAsPrometheus(&writer, {}));
const string expected_output = "# HELP test_func_gauge Test Gauge 2\n"
"# TYPE test_func_gauge gauge\n"
@@ -620,10 +631,9 @@ TEST_F(MetricsTest, SimpleHistogramMergeTest) {
TEST_F(MetricsTest, HistogramPrometheusTest) {
scoped_refptr<Histogram> hist = METRIC_test_hist.Instantiate(entity_);
- std::ostringstream output;
+ ostringstream output;
PrometheusWriter writer(&output);
- string prefix;
- ASSERT_OK(hist->WriteAsPrometheus(&writer, prefix));
+ ASSERT_OK(hist->WriteAsPrometheus(&writer, {}));
const string expected_output = "# HELP test_hist foo\n"
"# TYPE test_hist histogram\n"
@@ -649,7 +659,7 @@ TEST_F(MetricsTest, JsonPrintTest) {
// Generate the JSON.
std::ostringstream out;
JsonWriter writer(&out, JsonWriter::PRETTY);
- ASSERT_OK(entity_->WriteAsJson(&writer, MetricJsonOptions()));
+ ASSERT_OK(entity_->WriteAsJson(&writer, {}));
// Now parse it back out.
JsonReader reader(out.str());
@@ -1003,7 +1013,7 @@ TEST_F(MetricsTest, TestDontDumpUntouched) {
opts.include_untouched_metrics = false;
std::ostringstream out;
JsonWriter writer(&out, JsonWriter::COMPACT);
- CHECK_OK(entity_->WriteAsJson(&writer, opts));
+ ASSERT_OK(entity_->WriteAsJson(&writer, opts));
// Untouched counters and histograms should not be included.
ASSERT_STR_NOT_CONTAINS(out.str(), "test_counter");
ASSERT_STR_NOT_CONTAINS(out.str(), "test_hist");