Skip to content

Commit

Permalink
Merge pull request #269 from jupp0r/feature/improve-coverage
Browse files Browse the repository at this point in the history
core: Improve test coverage
  • Loading branch information
gjasny committed May 6, 2019
2 parents 1dfefd6 + afef90f commit 4b11ee7
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 0 deletions.
1 change: 1 addition & 0 deletions core/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

add_executable(prometheus_test
builder_test.cc
check_names_test.cc
counter_test.cc
family_test.cc
Expand Down
96 changes: 96 additions & 0 deletions core/tests/builder_test.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#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
14 changes: 14 additions & 0 deletions core/tests/gauge_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,27 @@ TEST(GaugeTest, inc_multiple) {
EXPECT_EQ(gauge.Value(), 7.0);
}

TEST(GaugeTest, inc_negative_value) {
Gauge gauge;
gauge.Increment(5.0);
gauge.Increment(-5.0);
EXPECT_EQ(gauge.Value(), 5.0);
}

TEST(GaugeTest, dec) {
Gauge gauge;
gauge.Set(5.0);
gauge.Decrement();
EXPECT_EQ(gauge.Value(), 4.0);
}

TEST(GaugeTest, dec_negative_value) {
Gauge gauge;
gauge.Set(5.0);
gauge.Decrement(-1.0);
EXPECT_EQ(gauge.Value(), 5.0);
}

TEST(GaugeTest, dec_number) {
Gauge gauge;
gauge.Set(5.0);
Expand Down

0 comments on commit 4b11ee7

Please sign in to comment.