summaryrefslogtreecommitdiff
path: root/src/test/test-condition.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2021-02-22 22:09:38 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2021-02-23 01:11:18 +0100
commit8ebfd50aaf5503de0e77e7786095760030458e67 (patch)
tree6003d3d8635f3b81087f0fad0c09cccebd499ed0 /src/test/test-condition.c
parent6c3f7ca036829825f344ffb364354faee5db174e (diff)
downloadsystemd-8ebfd50aaf5503de0e77e7786095760030458e67.tar.gz
shared/condition: add ConditionControlGroupController=v1|v2
Before, we only allowed conditionalizing on controllers, not the hierarchy. This commit extends this to allow a simple check for v1 (i.e. classic or hybrid), and v2 (full unified). An alternative approach would be to add a separate Condition for this, but I'm not too keen on that, considering that v1 is already being deprecrecated (c.f. 82f3063218).
Diffstat (limited to 'src/test/test-condition.c')
-rw-r--r--src/test/test-condition.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/test/test-condition.c b/src/test/test-condition.c
index 25483d015b..3fe961f60b 100644
--- a/src/test/test-condition.c
+++ b/src/test/test-condition.c
@@ -124,10 +124,26 @@ static void test_condition_test_path(void) {
condition_free(condition);
}
+static void test_condition_test_control_group_hierarchy(void) {
+ Condition *condition;
+ int r;
+
+ r = cg_unified();
+
+ condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, "v1", false, false);
+ assert_se(condition);
+ assert_se(condition_test(condition, environ) == (r < CGROUP_UNIFIED_ALL));
+ condition_free(condition);
+
+ condition = condition_new(CONDITION_CONTROL_GROUP_CONTROLLER, "v2", false, false);
+ assert_se(condition);
+ assert_se(condition_test(condition, environ) == (r >= CGROUP_UNIFIED_ALL));
+ condition_free(condition);
+}
+
static void test_condition_test_control_group_controller(void) {
Condition *condition;
CGroupMask system_mask;
- CGroupController controller;
_cleanup_free_ char *controller_name = NULL;
int r;
@@ -151,7 +167,7 @@ static void test_condition_test_control_group_controller(void) {
assert_se(cg_mask_supported(&system_mask) >= 0);
/* Individual valid controllers one by one */
- for (controller = 0; controller < _CGROUP_CONTROLLER_MAX; controller++) {
+ for (CGroupController controller = 0; controller < _CGROUP_CONTROLLER_MAX; controller++) {
const char *local_controller_name = cgroup_controller_to_string(controller);
log_info("chosen controller is '%s'", local_controller_name);
if (system_mask & CGROUP_CONTROLLER_TO_MASK(controller)) {
@@ -881,6 +897,7 @@ int main(int argc, char *argv[]) {
test_condition_test_virtualization();
test_condition_test_user();
test_condition_test_group();
+ test_condition_test_control_group_hierarchy();
test_condition_test_control_group_controller();
test_condition_test_cpus();
test_condition_test_memory();