diff options
Diffstat (limited to 'vespalib/src/tests')
35 files changed, 121 insertions, 0 deletions
diff --git a/vespalib/src/tests/util/cgroup_resource_limits/CMakeLists.txt b/vespalib/src/tests/util/cgroup_resource_limits/CMakeLists.txt new file mode 100644 index 00000000000..79414f9ef9f --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/CMakeLists.txt @@ -0,0 +1,9 @@ +# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(vespalib_cgroup_resource_limits_test_app TEST + SOURCES + cgroup_resource_limits_test.cpp + DEPENDS + vespalib + GTest::GTest +) +vespa_add_test(NAME vespalib_cgroup_resource_limits_test_app COMMAND vespalib_cgroup_resource_limits_test_app) diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_resource_limits_test.cpp b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_resource_limits_test.cpp new file mode 100644 index 00000000000..a4e57f69ab8 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_resource_limits_test.cpp @@ -0,0 +1,75 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/vespalib/gtest/gtest.h> +#include <vespa/vespalib/util/cgroup_resource_limits.h> +#include <vespa/vespalib/util/size_literals.h> + +namespace vespalib { + +class CGroupResourceLimitsTest : public ::testing::Test +{ +protected: + CGroupResourceLimitsTest(); + ~CGroupResourceLimitsTest(); + void check_limits(const std::string &name, const std::optional<uint64_t>& memory_limit, const std::optional<uint32_t>& cpu_limit); +}; + +CGroupResourceLimitsTest::CGroupResourceLimitsTest() = default; +CGroupResourceLimitsTest::~CGroupResourceLimitsTest() = default; + +void +CGroupResourceLimitsTest::check_limits(const std::string &base, const std::optional<uint64_t>& memory_limit, const std::optional<uint32_t>& cpu_limit) +{ + CGroupResourceLimits cg_limits(base + "/cgroup", base + "/self"); + EXPECT_EQ(memory_limit, cg_limits.get_memory_limit()); + EXPECT_EQ(cpu_limit, cg_limits.get_cpu_limit()); +} + +TEST_F(CGroupResourceLimitsTest, no_cgroup) +{ + check_limits("no_cgroup", std::nullopt, std::nullopt); +} + +TEST_F(CGroupResourceLimitsTest, cgroup_v1_host) +{ + check_limits("cgroup_v1_host", 4_Mi, 3); +} + +TEST_F(CGroupResourceLimitsTest, cgroup_v1_host_nested) +{ + check_limits("cgroup_v1_host_nested", 5_Mi, 4); +} + +TEST_F(CGroupResourceLimitsTest, cgroup_v1_host_no_limit) +{ + check_limits("cgroup_v1_host_no_limit", std::nullopt, std::nullopt); +} + +TEST_F(CGroupResourceLimitsTest, cgroup_v1_container) +{ + check_limits("cgroup_v1_container", 8_Mi, 5); +} + +TEST_F(CGroupResourceLimitsTest, cgroup_v2_host) +{ + check_limits("cgroup_v2_host", 12_Mi, 7); +} + +TEST_F(CGroupResourceLimitsTest, cgroup_v2_host_nested) +{ + check_limits("cgroup_v2_host_nested", 13_Mi, 8); +} + +TEST_F(CGroupResourceLimitsTest, cgroup_v2_host_no_limit) +{ + check_limits("cgroup_v2_host_no_limit", std::nullopt, std::nullopt); +} + +TEST_F(CGroupResourceLimitsTest, cgroup_v2_container) +{ + check_limits("cgroup_v2_container", 16_Mi, 9); +} + +} + +GTEST_MAIN_RUN_ALL_TESTS() diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/cgroup/cpu/cpu.cfs_period_us b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/cgroup/cpu/cpu.cfs_period_us new file mode 100644 index 00000000000..f7393e847d3 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/cgroup/cpu/cpu.cfs_period_us @@ -0,0 +1 @@ +100000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/cgroup/cpu/cpu.cfs_quota_us b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/cgroup/cpu/cpu.cfs_quota_us new file mode 100644 index 00000000000..354b2529b29 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/cgroup/cpu/cpu.cfs_quota_us @@ -0,0 +1 @@ +500000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/cgroup/memory/memory.limit_in_bytes b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/cgroup/memory/memory.limit_in_bytes new file mode 100644 index 00000000000..16edb4cc19a --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/cgroup/memory/memory.limit_in_bytes @@ -0,0 +1 @@ +8388608 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/self b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/self new file mode 100644 index 00000000000..ee80ea30458 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_container/self @@ -0,0 +1,2 @@ +1:memory:/group1 +1:cpu,cpuacct:/group2 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/cgroup/cpu/group2/cpu.cfs_period_us b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/cgroup/cpu/group2/cpu.cfs_period_us new file mode 100644 index 00000000000..f7393e847d3 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/cgroup/cpu/group2/cpu.cfs_period_us @@ -0,0 +1 @@ +100000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/cgroup/cpu/group2/cpu.cfs_quota_us b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/cgroup/cpu/group2/cpu.cfs_quota_us new file mode 100644 index 00000000000..67f9d558228 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/cgroup/cpu/group2/cpu.cfs_quota_us @@ -0,0 +1 @@ +300000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/cgroup/memory/group1/memory.limit_in_bytes b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/cgroup/memory/group1/memory.limit_in_bytes new file mode 100644 index 00000000000..3f7803daddf --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/cgroup/memory/group1/memory.limit_in_bytes @@ -0,0 +1 @@ +4194304 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/self b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/self new file mode 100644 index 00000000000..ee80ea30458 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host/self @@ -0,0 +1,2 @@ +1:memory:/group1 +1:cpu,cpuacct:/group2 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/cpu.cfs_period_us b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/cpu.cfs_period_us new file mode 100644 index 00000000000..f7393e847d3 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/cpu.cfs_period_us @@ -0,0 +1 @@ +100000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/cpu.cfs_quota_us b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/cpu.cfs_quota_us new file mode 100644 index 00000000000..004d15285e7 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/cpu.cfs_quota_us @@ -0,0 +1 @@ +400000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/group4/cpu.cfs_period_us b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/group4/cpu.cfs_period_us new file mode 100644 index 00000000000..f7393e847d3 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/group4/cpu.cfs_period_us @@ -0,0 +1 @@ +100000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/group4/cpu.cfs_quota_us b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/group4/cpu.cfs_quota_us new file mode 100644 index 00000000000..354b2529b29 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/cpu/group2/group4/cpu.cfs_quota_us @@ -0,0 +1 @@ +500000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/memory/group1/group3/memory.limit_in_bytes b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/memory/group1/group3/memory.limit_in_bytes new file mode 100644 index 00000000000..faefc1fbffc --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/memory/group1/group3/memory.limit_in_bytes @@ -0,0 +1 @@ +6291456 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/memory/group1/memory.limit_in_bytes b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/memory/group1/memory.limit_in_bytes new file mode 100644 index 00000000000..062933f0941 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/cgroup/memory/group1/memory.limit_in_bytes @@ -0,0 +1 @@ +5242880 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/self b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/self new file mode 100644 index 00000000000..98a1f55ba89 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_nested/self @@ -0,0 +1,2 @@ +1:memory:/group1/group3 +1:cpu,cpuacct:/group2/group4 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/cgroup/cpu/group2/cpu.cfs_period_us b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/cgroup/cpu/group2/cpu.cfs_period_us new file mode 100644 index 00000000000..f7393e847d3 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/cgroup/cpu/group2/cpu.cfs_period_us @@ -0,0 +1 @@ +100000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/cgroup/cpu/group2/cpu.cfs_quota_us b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/cgroup/cpu/group2/cpu.cfs_quota_us new file mode 100644 index 00000000000..3a2e3f4984a --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/cgroup/cpu/group2/cpu.cfs_quota_us @@ -0,0 +1 @@ +-1 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/cgroup/memory/group1/memory.limit_in_bytes b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/cgroup/memory/group1/memory.limit_in_bytes new file mode 100644 index 00000000000..564113cfaff --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/cgroup/memory/group1/memory.limit_in_bytes @@ -0,0 +1 @@ +9223372036854771712 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/self b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/self new file mode 100644 index 00000000000..ee80ea30458 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v1_host_no_limit/self @@ -0,0 +1,2 @@ +1:memory:/group1 +1:cpu,cpuacct:/group2 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_container/cgroup/cpu.max b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_container/cgroup/cpu.max new file mode 100644 index 00000000000..06f6446c456 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_container/cgroup/cpu.max @@ -0,0 +1 @@ +900000 100000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_container/cgroup/memory.max b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_container/cgroup/memory.max new file mode 100644 index 00000000000..27f897b99ff --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_container/cgroup/memory.max @@ -0,0 +1 @@ +16777216 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_container/self b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_container/self new file mode 100644 index 00000000000..f85fa774795 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_container/self @@ -0,0 +1 @@ +0::/group1 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host/cgroup/group1/cpu.max b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host/cgroup/group1/cpu.max new file mode 100644 index 00000000000..fd6b2b4e326 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host/cgroup/group1/cpu.max @@ -0,0 +1 @@ +700000 100000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host/cgroup/group1/memory.max b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host/cgroup/group1/memory.max new file mode 100644 index 00000000000..372ed62fb4b --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host/cgroup/group1/memory.max @@ -0,0 +1 @@ +12582912 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host/self b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host/self new file mode 100644 index 00000000000..f85fa774795 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host/self @@ -0,0 +1 @@ +0::/group1 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/cpu.max b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/cpu.max new file mode 100644 index 00000000000..5c5f99b398b --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/cpu.max @@ -0,0 +1 @@ +800000 100000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/group2/cpu.max b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/group2/cpu.max new file mode 100644 index 00000000000..06f6446c456 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/group2/cpu.max @@ -0,0 +1 @@ +900000 100000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/group2/memory.max b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/group2/memory.max new file mode 100644 index 00000000000..9812e3d8f08 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/group2/memory.max @@ -0,0 +1 @@ +14680064 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/memory.max b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/memory.max new file mode 100644 index 00000000000..03b7c4afd21 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/cgroup/group1/memory.max @@ -0,0 +1 @@ +13631488 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/self b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/self new file mode 100644 index 00000000000..b2c3ecd563b --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_nested/self @@ -0,0 +1 @@ +0::/group1/group2 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_no_limit/cgroup/group1/cpu.max b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_no_limit/cgroup/group1/cpu.max new file mode 100644 index 00000000000..1c1d3e7c303 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_no_limit/cgroup/group1/cpu.max @@ -0,0 +1 @@ +max 100000 diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_no_limit/cgroup/group1/memory.max b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_no_limit/cgroup/group1/memory.max new file mode 100644 index 00000000000..355295a05af --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_no_limit/cgroup/group1/memory.max @@ -0,0 +1 @@ +max diff --git a/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_no_limit/self b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_no_limit/self new file mode 100644 index 00000000000..f85fa774795 --- /dev/null +++ b/vespalib/src/tests/util/cgroup_resource_limits/cgroup_v2_host_no_limit/self @@ -0,0 +1 @@ +0::/group1 |