summaryrefslogtreecommitdiffstats
path: root/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'staging_vespalib/src/tests/metrics/simple_metrics_test.cpp')
-rw-r--r--staging_vespalib/src/tests/metrics/simple_metrics_test.cpp219
1 files changed, 0 insertions, 219 deletions
diff --git a/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp b/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp
deleted file mode 100644
index 3006022a43d..00000000000
--- a/staging_vespalib/src/tests/metrics/simple_metrics_test.cpp
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/testkit/testapp.h>
-#include <vespa/vespalib/data/slime/slime.h>
-#include <vespa/vespalib/data/slime/json_format.h>
-#include <vespa/vespalib/metrics/simple_metrics.h>
-#include <vespa/vespalib/metrics/simple_metrics_manager.h>
-#include <vespa/vespalib/metrics/stable_store.h>
-#include <vespa/vespalib/metrics/json_formatter.h>
-#include "mock_tick.h"
-#include <stdio.h>
-#include <unistd.h>
-
-using namespace vespalib;
-using namespace vespalib::metrics;
-
-TEST("require that simple metrics gauge merge works")
-{
- std::pair<MetricId, Point> id(MetricId(42), Point(17));
- Gauge::Measurement a1(id, 0.0);
- Gauge::Measurement b1(id, 7.0);
- Gauge::Measurement b2(id, 9.0);
- Gauge::Measurement b3(id, 8.0);
- Gauge::Measurement c1(id, 10.0);
- Gauge::Measurement c2(id, 1.0);
-
- GaugeAggregator a(a1), b(b1), c(c1);
- b.merge(b2);
- b.merge(b3);
- c.merge(c2);
-
- EXPECT_EQUAL(a.observedCount, 1u);
- EXPECT_EQUAL(a.sumValue, 0.0);
- EXPECT_EQUAL(a.minValue, 0.0);
- EXPECT_EQUAL(a.maxValue, 0.0);
- EXPECT_EQUAL(a.lastValue, 0.0);
-
- EXPECT_EQUAL(b.observedCount, 3u);
- EXPECT_EQUAL(b.sumValue, 24.0);
- EXPECT_EQUAL(b.minValue, 7.0);
- EXPECT_EQUAL(b.maxValue, 9.0);
- EXPECT_EQUAL(b.lastValue, 8.0);
-
- EXPECT_EQUAL(c.observedCount, 2u);
- EXPECT_EQUAL(c.sumValue, 11.0);
- EXPECT_EQUAL(c.minValue, 1.0);
- EXPECT_EQUAL(c.maxValue, 10.0);
- EXPECT_EQUAL(c.lastValue, 1.0);
-
- a.minValue = 8;
-
- a.merge(b);
- EXPECT_EQUAL(a.observedCount, 4u);
- EXPECT_EQUAL(a.sumValue, 24.0);
- EXPECT_EQUAL(a.minValue, 7.0);
- EXPECT_EQUAL(a.maxValue, 9.0);
- EXPECT_EQUAL(a.lastValue, 8.0);
-
- a.merge(b);
- EXPECT_EQUAL(a.observedCount, 7u);
- EXPECT_EQUAL(a.sumValue, 48.0);
- EXPECT_EQUAL(a.minValue, 7.0);
- EXPECT_EQUAL(a.maxValue, 9.0);
- EXPECT_EQUAL(a.lastValue, 8.0);
-
- a.merge(c);
- EXPECT_EQUAL(a.observedCount, 9u);
- EXPECT_EQUAL(a.sumValue, 59.0);
- EXPECT_EQUAL(a.minValue, 1.0);
- EXPECT_EQUAL(a.maxValue, 10.0);
- EXPECT_EQUAL(a.lastValue, 1.0);
-}
-
-bool compare_json(const vespalib::string &a, const vespalib::string &b)
-{
- using vespalib::Memory;
- using vespalib::slime::JsonFormat;
-
- Slime slimeA, slimeB;
- if (! JsonFormat::decode(a, slimeA)) {
-fprintf(stderr, "bad json a:\n>>>%s\n<<<\n", a.c_str());
- return false;
- }
- if (! JsonFormat::decode(b, slimeB)) {
-fprintf(stderr, "bad json b\n");
- return false;
- }
- if (!(slimeA == slimeB)) {
-fprintf(stderr, "compares unequal:\n[A]\n%s\n[B]\n%s\n", a.c_str(), b.c_str());
- }
- return slimeA == slimeB;
-}
-
-void check_json(const vespalib::string &actual)
-{
- vespalib::string expect = "{"
- " snapshot: { from: 1, to: 4 },"
- " values: [ { name: 'foo',"
- " values: { count: 17, rate: 4.85714 }"
- " }, {"
- " name: 'foo',"
- " dimensions: { chain: 'default', documenttype: 'music', thread: '0' },"
- " values: { count: 4, rate: 1.14286 }"
- " }, {"
- " name: 'bar',"
- " values: { count: 4, rate: 1.14286, average: 42, sum: 168, min: 41, max: 43, last: 42 }"
- " }, {"
- " name: 'bar',"
- " dimensions: { chain: 'vespa', documenttype: 'blogpost', thread: '1' },"
- " values: { count: 1, rate: 0.285714, average: 14, sum: 14, min: 14, max: 14, last: 14 }"
- " }, {"
- " name: 'bar',"
- " dimensions: { chain: 'vespa', documenttype: 'blogpost', thread: '2' },"
- " values: { count: 1, rate: 0.285714, average: 11, sum: 11, min: 11, max: 11, last: 11 }"
- " } ]"
- "}";
- EXPECT_TRUE(compare_json(expect, actual));
-}
-
-
-TEST("use simple_metrics_collector")
-{
- using namespace vespalib::metrics;
- SimpleManagerConfig cf;
- cf.sliding_window_seconds = 5;
- std::shared_ptr<MockTick> ticker = std::make_shared<MockTick>(TimeStamp(1.0));
- auto manager = SimpleMetricsManager::createForTest(cf, std::make_unique<TickProxy>(ticker));
-
- Counter myCounter = manager->counter("foo", "no description");
- myCounter.add();
- myCounter.add(16);
-
- Gauge myGauge = manager->gauge("bar", "dummy description");
- myGauge.sample(42.0);
- myGauge.sample(41.0);
- myGauge.sample(43.0);
- myGauge.sample(42.0);
-
- EXPECT_EQUAL(1.0, ticker->give(TimeStamp(2.0)).count());
-
- Snapshot snap1 = manager->snapshot();
- EXPECT_EQUAL(1.0, snap1.startTime());
- EXPECT_EQUAL(2.0, snap1.endTime());
-
- EXPECT_EQUAL(1u, snap1.counters().size());
- EXPECT_EQUAL("foo", snap1.counters()[0].name());
- EXPECT_EQUAL(17u, snap1.counters()[0].count());
-
- EXPECT_EQUAL(1u, snap1.gauges().size());
- EXPECT_EQUAL("bar", snap1.gauges()[0].name());
- EXPECT_EQUAL(4u, snap1.gauges()[0].observedCount());
- EXPECT_EQUAL(41.0, snap1.gauges()[0].minValue());
- EXPECT_EQUAL(43.0, snap1.gauges()[0].maxValue());
- EXPECT_EQUAL(42.0, snap1.gauges()[0].lastValue());
-
- Point one = manager->pointBuilder()
- .bind("chain", "default")
- .bind("documenttype", "music")
- .bind("thread", "0").build();
- PointBuilder b2 = manager->pointBuilder();
- b2.bind("chain", "vespa")
- .bind("documenttype", "blogpost");
- b2.bind("thread", "1");
- Point two = b2.build();
- EXPECT_EQUAL(one.id(), 1u);
- EXPECT_EQUAL(two.id(), 2u);
-
- Point anotherOne = manager->pointBuilder()
- .bind("chain", "default")
- .bind("documenttype", "music")
- .bind("thread", "0");
- EXPECT_EQUAL(anotherOne.id(), 1u);
-
- Point three = manager->pointBuilder(two).bind("thread", "2");
- EXPECT_EQUAL(three.id(), 3u);
-
- myCounter.add(3, one);
- myCounter.add(one);
- myGauge.sample(14.0, two);
- myGauge.sample(11.0, three);
-
- EXPECT_EQUAL(2.0, ticker->give(TimeStamp(4.5)).count());
-
- Snapshot snap2 = manager->snapshot();
- EXPECT_EQUAL(1.0, snap2.startTime());
- EXPECT_EQUAL(4.5, snap2.endTime());
- EXPECT_EQUAL(2u, snap2.counters().size());
- EXPECT_EQUAL(3u, snap2.gauges().size());
-
- JsonFormatter fmt2(snap2);
- check_json(fmt2.asString());
-
- // flush sliding window
- for (int i = 5; i <= 10; ++i) {
- ticker->give(TimeStamp(i));
- }
- Snapshot snap3 = manager->snapshot();
- EXPECT_EQUAL(5.0, snap3.startTime());
- EXPECT_EQUAL(10.0, snap3.endTime());
- EXPECT_EQUAL(2u, snap3.counters().size());
- EXPECT_EQUAL(0u, snap3.counters()[0].count());
- EXPECT_EQUAL(0u, snap3.counters()[1].count());
- EXPECT_EQUAL(3u, snap3.gauges().size());
- EXPECT_EQUAL(0u, snap3.gauges()[0].observedCount());
- EXPECT_EQUAL(0u, snap3.gauges()[1].observedCount());
- EXPECT_EQUAL(0u, snap3.gauges()[2].observedCount());
-
- Snapshot snap4 = manager->totalSnapshot();
- EXPECT_EQUAL(1.0, snap4.startTime());
- EXPECT_EQUAL(10.0, snap4.endTime());
- EXPECT_EQUAL(2u, snap4.counters().size());
- EXPECT_NOT_EQUAL(0u, snap4.counters()[0].count());
- EXPECT_NOT_EQUAL(0u, snap4.counters()[1].count());
- EXPECT_EQUAL(3u, snap4.gauges().size());
- EXPECT_NOT_EQUAL(0u, snap4.gauges()[0].observedCount());
- EXPECT_NOT_EQUAL(0u, snap4.gauges()[1].observedCount());
- EXPECT_NOT_EQUAL(0u, snap4.gauges()[2].observedCount());
-}
-
-TEST_MAIN() { TEST_RUN_ALL(); }