aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/metrics
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahoo-inc.com>2016-12-13 13:27:42 +0100
committerGeir Storli <geirst@yahoo-inc.com>2016-12-14 14:46:24 +0100
commite344f471d70362ecd7587129ea432a824c335e4b (patch)
treee05d2e0a270bb552a4f837acd52fb6bf79d20497 /searchcore/src/tests/proton/metrics
parent7c79ee78cb7ad6d0961b4c56eb6721339125a4eb (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.cpp81
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(); }