Test that quota and burst can be written in either order without losing
the configured burst value.

Signed-off-by: Zhe Liu <[email protected]>
---
 tools/testing/selftests/cgroup/test_cpu.c | 40 +++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/tools/testing/selftests/cgroup/test_cpu.c 
b/tools/testing/selftests/cgroup/test_cpu.c
index f9f7017d9299..b13c2535afcd 100644
--- a/tools/testing/selftests/cgroup/test_cpu.c
+++ b/tools/testing/selftests/cgroup/test_cpu.c
@@ -733,6 +733,45 @@ static int test_cpucg_max(const char *root)
        return ret;
 }
 
+static int test_cpucg_max_burst(const char *root)
+{
+       int ret = KSFT_FAIL;
+       char *cpucg;
+
+       cpucg = cg_name(root, "cpucg_max_burst");
+       if (!cpucg)
+               return KSFT_FAIL;
+
+       if (cg_create(cpucg))
+               goto cleanup;
+
+       if (cg_write(cpucg, "cpu.max", "max 100000") ||
+           cg_write(cpucg, "cpu.max.burst", "100000000") ||
+           cg_write(cpucg, "cpu.max", "50000 100000") ||
+           cg_read_strcmp(cpucg, "cpu.max.burst", "100000000\n"))
+               goto cleanup;
+
+       if (cg_write(cpucg, "cpu.max.burst", "80000") ||
+           cg_write(cpucg, "cpu.max", "100000 100000") ||
+           cg_read_strcmp(cpucg, "cpu.max.burst", "80000\n"))
+               goto cleanup;
+
+       if (cg_write(cpucg, "cpu.max.burst", "0") ||
+           cg_write(cpucg, "cpu.max", "50000 100000") ||
+           cg_write(cpucg, "cpu.max", "100000 100000") ||
+           cg_write(cpucg, "cpu.max.burst", "80000") ||
+           cg_read_strcmp(cpucg, "cpu.max.burst", "80000\n"))
+               goto cleanup;
+
+       ret = KSFT_PASS;
+
+cleanup:
+       cg_destroy(cpucg);
+       free(cpucg);
+
+       return ret;
+}
+
 /*
  * This test verifies that a process inside of a nested cgroup whose parent
  * group has a cpu.max value set, is properly throttled.
@@ -822,6 +861,7 @@ struct cpucg_test {
        T(test_cpucg_nested_weight_overprovisioned),
        T(test_cpucg_nested_weight_underprovisioned),
        T(test_cpucg_max),
+       T(test_cpucg_max_burst),
        T(test_cpucg_max_nested),
 };
 #undef T
-- 
2.25.1

Reply via email to