| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | #include "prometheus/counter.h"#include "prometheus/gauge.h"#include "prometheus/histogram.h"#include "prometheus/registry.h"#include "prometheus/summary.h"#include <gmock/gmock.h>#include <algorithm>namespace prometheus {namespace {class BuilderTest : public testing::Test { protected:  std::vector<ClientMetric::Label> getExpectedLabels() {    std::vector<ClientMetric::Label> labels;    auto gen = [](std::pair<const std::string, std::string> p) {      return ClientMetric::Label{p.first, p.second};    };    std::transform(std::begin(const_labels), std::end(const_labels),                   std::back_inserter(labels), gen);    std::transform(std::begin(more_labels), std::end(more_labels),                   std::back_inserter(labels), gen);    return labels;  }  void verifyCollectedLabels() {    const auto collected = registry.Collect();    ASSERT_EQ(1U, collected.size());    EXPECT_EQ(name, collected.at(0).name);    EXPECT_EQ(help, collected.at(0).help);    ASSERT_EQ(1U, collected.at(0).metric.size());    EXPECT_THAT(collected.at(0).metric.at(0).label,                testing::UnorderedElementsAreArray(expected_labels));  }  Registry registry;  const std::string name = "some_name";  const std::string help = "Additional description.";  const std::map<std::string, std::string> const_labels = {{"key", "value"}};  const std::map<std::string, std::string> more_labels = {{"name", "test"}};  const std::vector<ClientMetric::Label> expected_labels = getExpectedLabels();};TEST_F(BuilderTest, build_counter) {  auto& family = BuildCounter()                     .Name(name)                     .Help(help)                     .Labels(const_labels)                     .Register(registry);  family.Add(more_labels);  verifyCollectedLabels();}TEST_F(BuilderTest, build_gauge) {  auto& family = BuildGauge()                     .Name(name)                     .Help(help)                     .Labels(const_labels)                     .Register(registry);  family.Add(more_labels);  verifyCollectedLabels();}TEST_F(BuilderTest, build_histogram) {  auto& family = BuildHistogram()                     .Name(name)                     .Help(help)                     .Labels(const_labels)                     .Register(registry);  family.Add(more_labels, Histogram::BucketBoundaries{1, 2});  verifyCollectedLabels();}TEST_F(BuilderTest, build_summary) {  auto& family = BuildSummary()                     .Name(name)                     .Help(help)                     .Labels(const_labels)                     .Register(registry);  family.Add(more_labels, Summary::Quantiles{});  verifyCollectedLabels();}}  // namespace}  // namespace prometheus
 |