summaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/attribute
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2021-08-18 13:17:47 +0000
committerGeir Storli <geirst@verizonmedia.com>2021-08-20 11:03:58 +0000
commit2153b7cc3353992550596141314e5edd3a6c0681 (patch)
treeef73149677cb4b59d576d935255cba5550b0a281 /searchcore/src/tests/proton/attribute
parent43402b23dc74fe6550d231b26e8c50327e1971f9 (diff)
Track max address space usage among components in attributes vectors in all sub databases.
Diffstat (limited to 'searchcore/src/tests/proton/attribute')
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_usage_stats/CMakeLists.txt9
-rw-r--r--searchcore/src/tests/proton/attribute/attribute_usage_stats/attribute_usage_stats_test.cpp47
2 files changed, 56 insertions, 0 deletions
diff --git a/searchcore/src/tests/proton/attribute/attribute_usage_stats/CMakeLists.txt b/searchcore/src/tests/proton/attribute/attribute_usage_stats/CMakeLists.txt
new file mode 100644
index 00000000000..b015ca2a168
--- /dev/null
+++ b/searchcore/src/tests/proton/attribute/attribute_usage_stats/CMakeLists.txt
@@ -0,0 +1,9 @@
+# Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(searchcore_attribute_usage_stats_test_app TEST
+ SOURCES
+ attribute_usage_stats_test.cpp
+ DEPENDS
+ searchcore_attribute
+ GTest::GTest
+)
+vespa_add_test(NAME searchcore_attribute_usage_stats_test_app COMMAND searchcore_attribute_usage_stats_test_app)
diff --git a/searchcore/src/tests/proton/attribute/attribute_usage_stats/attribute_usage_stats_test.cpp b/searchcore/src/tests/proton/attribute/attribute_usage_stats/attribute_usage_stats_test.cpp
new file mode 100644
index 00000000000..025ae859993
--- /dev/null
+++ b/searchcore/src/tests/proton/attribute/attribute_usage_stats/attribute_usage_stats_test.cpp
@@ -0,0 +1,47 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/searchcore/proton/attribute/attribute_usage_stats.h>
+#include <vespa/vespalib/gtest/gtest.h>
+
+using proton::AddressSpaceUsageStats;
+using proton::AttributeUsageStats;
+using search::AddressSpaceUsage;
+using vespalib::AddressSpace;
+
+void
+expect_max_usage(size_t used, const vespalib::string& attr_name,
+ const vespalib::string& comp_name, const vespalib::string& sub_name,
+ const AttributeUsageStats& stats)
+{
+ const auto& max = stats.max_usage();
+ EXPECT_EQ(used, max.getUsage().used());
+ EXPECT_EQ(attr_name, max.getAttributeName());
+ EXPECT_EQ(comp_name, max.get_component_name());
+ EXPECT_EQ(sub_name, max.getSubDbName());
+}
+
+TEST(AttributeUsageStatsTest, tracks_max_address_space_usage)
+{
+ AttributeUsageStats stats;
+ {
+ AddressSpaceUsage usage;
+ usage.set("comp1", AddressSpace(2, 0, 10));
+ usage.set("comp2", AddressSpace(3, 0, 10));
+ stats.merge(usage, "attr1", "sub1");
+ expect_max_usage(3, "attr1", "comp2", "sub1", stats);
+ }
+ {
+ AddressSpaceUsage usage;
+ usage.set("comp3", AddressSpace(5, 0, 10));
+ usage.set("comp4", AddressSpace(4, 0, 10));
+ stats.merge(usage, "attr2", "sub2");
+ expect_max_usage(5, "attr2", "comp3", "sub2", stats);
+ }
+ {
+ AddressSpaceUsage usage;
+ usage.set("comp5", AddressSpace(5, 0, 10));
+ stats.merge(usage, "attr3", "sub2");
+ expect_max_usage(5, "attr2", "comp3", "sub2", stats);
+ }
+}
+
+GTEST_MAIN_RUN_ALL_TESTS()