summaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/persistenceengine
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2021-08-20 10:41:12 +0000
committerGeir Storli <geirst@verizonmedia.com>2021-08-20 11:03:59 +0000
commit3cf0428b6865f0efc68e39d4137279ee404b88e0 (patch)
tree1313fd5d37762feefdd638ed7ac5efe420fc76dd /searchcore/src/tests/proton/persistenceengine
parenteadf49cb8c1feff72098a5f2b6a44bfe82702812 (diff)
Report max address space used in attribute vector components from content nodes (proton) to the cluster controller.
This is more generic than explicit address space values for enum store and multi value. This is used in the cluster controller to determine whether to block external feed.
Diffstat (limited to 'searchcore/src/tests/proton/persistenceengine')
-rw-r--r--searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp50
1 files changed, 25 insertions, 25 deletions
diff --git a/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp b/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp
index 4144b87c61d..7e1cf89ccdf 100644
--- a/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp
+++ b/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp
@@ -1,11 +1,12 @@
// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/persistence/spi/resource_usage_listener.h>
#include <vespa/persistence/spi/resource_usage.h>
+#include <vespa/persistence/spi/resource_usage_listener.h>
#include <vespa/searchcore/proton/attribute/attribute_usage_stats.h>
#include <vespa/searchcore/proton/attribute/i_attribute_usage_listener.h>
#include <vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h>
#include <vespa/searchcore/proton/test/disk_mem_usage_notifier.h>
+#include <vespa/searchlib/attribute/address_space_components.h>
#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/vespalib/util/idestructorcallback.h>
#include <atomic>
@@ -131,7 +132,7 @@ struct AttributeUsageStatsBuilder
~AttributeUsageStatsBuilder();
AttributeUsageStatsBuilder& reset() { stats = AttributeUsageStats(); return *this; }
- AttributeUsageStatsBuilder& merge(const NamedAttribute& named_attribute, size_t used_enum_store, size_t used_multivalue);
+ AttributeUsageStatsBuilder& merge(const NamedAttribute& named_attribute, size_t used_address_space);
AttributeUsageStats build() { return stats; }
@@ -140,11 +141,11 @@ struct AttributeUsageStatsBuilder
AttributeUsageStatsBuilder::~AttributeUsageStatsBuilder() = default;
AttributeUsageStatsBuilder&
-AttributeUsageStatsBuilder::merge(const NamedAttribute& named_attribute, size_t used_enum_store, size_t used_multivalue)
+AttributeUsageStatsBuilder::merge(const NamedAttribute& named_attribute, size_t used_address_space)
{
- vespalib::AddressSpace enum_store_usage(used_enum_store, 0, usage_limit);
- vespalib::AddressSpace multivalue_usage(used_multivalue, 0, usage_limit);
- search::AddressSpaceUsage as_usage(enum_store_usage, multivalue_usage);
+ vespalib::AddressSpace address_space_usage(used_address_space, 0, usage_limit);
+ search::AddressSpaceUsage as_usage;
+ as_usage.set("comp", address_space_usage);
stats.merge(as_usage, named_attribute.attribute, named_attribute.subdb);
return *this;
}
@@ -153,11 +154,10 @@ double rel_usage(size_t usage) noexcept {
return (double) usage / (double) usage_limit;
}
-ResourceUsage make_resource_usage(const vespalib::string& enum_store_name, size_t used_enum_store, const vespalib::string &multivalue_name, size_t used_multivalue)
+ResourceUsage make_resource_usage(const vespalib::string& attr_name, size_t used_address_space)
{
- AttributeResourceUsage enum_store_usage(rel_usage(used_enum_store), enum_store_name);
- AttributeResourceUsage multivalue_usage(rel_usage(used_multivalue), multivalue_name);
- return ResourceUsage(0.0, 0.0, enum_store_usage, multivalue_usage);
+ AttributeResourceUsage address_space_usage(rel_usage(used_address_space), attr_name);
+ return ResourceUsage(0.0, 0.0, address_space_usage);
}
}
@@ -170,24 +170,24 @@ TEST_F(ResourceUsageTrackerTest, aggregates_attribute_usage)
auto aul2 = _tracker->make_attribute_usage_listener("doctype2");
AttributeUsageStatsBuilder b1;
AttributeUsageStatsBuilder b2;
- b1.merge(ready_a1, 10, 20).merge(ready_a2, 5, 30);
- b2.merge(ready_a1, 15, 15);
+ b1.merge(ready_a1, 10).merge(ready_a2, 5);
+ b2.merge(ready_a1, 15);
aul1->notify_attribute_usage(b1.build());
aul2->notify_attribute_usage(b2.build());
- EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype1.0.ready.a2", 30), get_usage());
- b1.merge(notready_a1, 5, 31);
+ EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1.comp", 15), get_usage());
+ b1.merge(notready_a1, 16);
aul1->notify_attribute_usage(b1.build());
- EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype1.2.notready.a1", 31), get_usage());
- b1.reset().merge(ready_a1, 10, 20).merge(ready_a2, 5, 30);
+ EXPECT_EQ(make_resource_usage("doctype1.2.notready.a1.comp", 16), get_usage());
+ b1.reset().merge(ready_a1, 10).merge(ready_a2, 5);
aul1->notify_attribute_usage(b1.build());
- EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype1.0.ready.a2", 30), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1.comp", 15), get_usage());
aul2.reset();
- EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 10, "doctype1.0.ready.a2", 30), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 10), get_usage());
aul1.reset();
- EXPECT_EQ(make_resource_usage("", 0, "", 0), get_usage());
+ EXPECT_EQ(make_resource_usage("", 0), get_usage());
aul2 = _tracker->make_attribute_usage_listener("doctype2");
aul2->notify_attribute_usage(b2.build());
- EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype2.0.ready.a1", 15), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1.comp", 15), get_usage());
}
TEST_F(ResourceUsageTrackerTest, can_skip_scan_when_aggregating_attributes)
@@ -198,16 +198,16 @@ TEST_F(ResourceUsageTrackerTest, can_skip_scan_when_aggregating_attributes)
auto aul2 = _tracker->make_attribute_usage_listener("doctype2");
AttributeUsageStatsBuilder b1;
AttributeUsageStatsBuilder b2;
- b1.merge(ready_a1, 20, 20).merge(ready_a2, 5, 30);
- b2.merge(ready_a1, 15, 15);
+ b1.merge(ready_a1, 20).merge(ready_a2, 5);
+ b2.merge(ready_a1, 15);
aul1->notify_attribute_usage(b1.build());
- EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 20, "doctype1.0.ready.a2", 30), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 20), get_usage());
EXPECT_EQ(2u, get_update_count());
aul1->notify_attribute_usage(b1.build());
- EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 20, "doctype1.0.ready.a2", 30), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 20), get_usage());
EXPECT_EQ(2u, get_update_count()); // usage for doctype1 has not changed
aul2->notify_attribute_usage(b2.build());
- EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 20, "doctype1.0.ready.a2", 30), get_usage());
+ EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 20), get_usage());
EXPECT_EQ(2u, get_update_count()); // usage for doctype2 is less than usage for doctype1
aul2.reset();
aul1.reset();