diff options
author | Geir Storli <geirst@yahoo-inc.com> | 2016-12-13 13:27:42 +0100 |
---|---|---|
committer | Geir Storli <geirst@yahoo-inc.com> | 2016-12-14 14:46:24 +0100 |
commit | e344f471d70362ecd7587129ea432a824c335e4b (patch) | |
tree | e05d2e0a270bb552a4f837acd52fb6bf79d20497 /searchcore/src/tests/proton/metrics | |
parent | 7c79ee78cb7ad6d0961b4c56eb6721339125a4eb (diff) |
Expose detailed memory usage metrics for attributes using new naming scheme.
Diffstat (limited to 'searchcore/src/tests/proton/metrics')
-rw-r--r-- | searchcore/src/tests/proton/metrics/metrics_engine/metrics_engine_test.cpp | 81 |
1 files changed, 77 insertions, 4 deletions
diff --git a/searchcore/src/tests/proton/metrics/metrics_engine/metrics_engine_test.cpp b/searchcore/src/tests/proton/metrics/metrics_engine/metrics_engine_test.cpp index a70ce5a5333..29df68b2d17 100644 --- a/searchcore/src/tests/proton/metrics/metrics_engine/metrics_engine_test.cpp +++ b/searchcore/src/tests/proton/metrics/metrics_engine/metrics_engine_test.cpp @@ -5,15 +5,58 @@ #include <vespa/log/log.h> LOG_SETUP("metrics_engine_test"); +#include <vespa/metrics/metricset.h> +#include <vespa/searchcore/proton/metrics/attribute_metrics_collection.h> #include <vespa/searchcore/proton/metrics/metrics_engine.h> #include <vespa/vespalib/testkit/testapp.h> using namespace proton; -namespace { +struct DummyMetricSet : public metrics::MetricSet { + DummyMetricSet(const vespalib::string &name) : metrics::MetricSet(name, "", "", nullptr) {} +}; -TEST("require that the metric proton.diskusage is the sum of the documentDB " - "diskusage metrics.") { +struct AttributeMetricsFixture { + MetricsEngine engine; + DummyMetricSet parent; + AttributeMetrics metrics; + LegacyAttributeMetrics legacyMetrics; + LegacyAttributeMetrics totalLegacyMetrics; + AttributeMetricsFixture() + : engine(), + parent("parent"), + metrics(&parent), + legacyMetrics(nullptr), + totalLegacyMetrics(nullptr) + {} + void addAttribute(const vespalib::string &attrName) { + engine.addAttribute(AttributeMetricsCollection(metrics, legacyMetrics), &totalLegacyMetrics, attrName); + } + void removeAttribute(const vespalib::string &attrName) { + engine.removeAttribute(AttributeMetricsCollection(metrics, legacyMetrics), &totalLegacyMetrics, attrName); + } + void cleanAttributes() { + engine.cleanAttributes(AttributeMetricsCollection(metrics, legacyMetrics), &totalLegacyMetrics); + } + void assertRegisteredMetrics(size_t expNumMetrics) const { + EXPECT_EQUAL(expNumMetrics, parent.getRegisteredMetrics().size()); + EXPECT_EQUAL(expNumMetrics, legacyMetrics.list.getRegisteredMetrics().size()); + EXPECT_EQUAL(expNumMetrics, totalLegacyMetrics.list.getRegisteredMetrics().size()); + } + void assertMetricsExists(const vespalib::string &attrName) { + EXPECT_TRUE(metrics.get(attrName).get() != nullptr); + EXPECT_TRUE(legacyMetrics.list.get(attrName).get() != nullptr); + EXPECT_TRUE(totalLegacyMetrics.list.get(attrName).get() != nullptr); + } + void assertMetricsNotExists(const vespalib::string &attrName) { + EXPECT_TRUE(metrics.get(attrName).get() == nullptr); + EXPECT_TRUE(legacyMetrics.list.get(attrName).get() == nullptr); + EXPECT_TRUE(totalLegacyMetrics.list.get(attrName).get() == nullptr); + } +}; + +TEST("require that the metric proton.diskusage is the sum of the documentDB diskusage metrics") +{ MetricsEngine metrics_engine; DocumentDBMetricsCollection metrics1("type1", 1); @@ -27,6 +70,36 @@ TEST("require that the metric proton.diskusage is the sum of the documentDB " EXPECT_EQUAL(1100, metrics_engine.legacyRoot().diskUsage.getLongValue("value")); } -} // namespace +TEST_F("require that attribute metrics can be added", AttributeMetricsFixture) +{ + TEST_DO(f.assertRegisteredMetrics(0)); + f.addAttribute("foo"); + TEST_DO(f.assertRegisteredMetrics(1)); + TEST_DO(f.assertMetricsExists("foo")); +} + +TEST_F("require that attribute metrics can be removed", AttributeMetricsFixture) +{ + TEST_DO(f.assertRegisteredMetrics(0)); + f.addAttribute("foo"); + f.addAttribute("bar"); + TEST_DO(f.assertRegisteredMetrics(2)); + f.removeAttribute("foo"); + TEST_DO(f.assertRegisteredMetrics(1)); + TEST_DO(f.assertMetricsNotExists("foo")); + TEST_DO(f.assertMetricsExists("bar")); +} + +TEST_F("require that all attribute metrics can be cleaned", AttributeMetricsFixture) +{ + TEST_DO(f.assertRegisteredMetrics(0)); + f.addAttribute("foo"); + f.addAttribute("bar"); + TEST_DO(f.assertRegisteredMetrics(2)); + f.cleanAttributes(); + TEST_DO(f.assertRegisteredMetrics(0)); + TEST_DO(f.assertMetricsNotExists("foo")); + TEST_DO(f.assertMetricsNotExists("bar")); +} TEST_MAIN() { TEST_RUN_ALL(); } |