]> git.ipfire.org Git - pakfire.git/commitdiff
tests: jail: Add check for nice level
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 9 Aug 2022 15:35:42 +0000 (15:35 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 9 Aug 2022 15:35:42 +0000 (15:35 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
tests/libpakfire/jail.c

index c502b6ae198baabea4abcd84fab8448760cc90d0..958951d0a06dd09964e4e3adc41045e8631501c8 100644 (file)
@@ -124,11 +124,53 @@ FAIL:
        return r;
 }
 
+static int test_nice(const struct test* t) {
+       struct pakfire_jail* jail = NULL;
+       char** output = NULL;
+       int r = EXIT_FAILURE;
+
+       const char* argv[] = {
+               "/command", "print-nice", NULL,
+       };
+
+       char* expected_output[] = {
+               "5\n", NULL,
+       };
+
+       // Create a new jail
+       ASSERT_SUCCESS(pakfire_jail_create(&jail, t->pakfire, 0));
+
+       // Set invalid nice levels
+       ASSERT_ERRNO(pakfire_jail_nice(jail,  100), EINVAL);
+       ASSERT_ERRNO(pakfire_jail_nice(jail, -100), EINVAL);
+
+       // Set something sane
+       ASSERT_SUCCESS(pakfire_jail_nice(jail, 5));
+
+       ASSERT_SUCCESS(pakfire_jail_exec(jail, argv, &output));
+       ASSERT_STRING_ARRAY_EQUALS(output, expected_output);
+
+       // Success
+       r = EXIT_SUCCESS;
+
+FAIL:
+       if (jail)
+               pakfire_jail_unref(jail);
+       if (output) {
+               for (char** line = output; *line; line++)
+                       free(*line);
+               free(output);
+       }
+
+       return r;
+}
+
 int main(int argc, const char* argv[]) {
        testsuite_add_test(test_create);
        testsuite_add_test(test_env);
        testsuite_add_test(test_exec);
        testsuite_add_test(test_launch_into_cgroup);
+       testsuite_add_test(test_nice);
 
        return testsuite_run(argc, argv);
 }