Path: blob/master/tools/tracing/rtla/tests/unit/unit_tests.c
170997 views
// SPDX-License-Identifier: GPL-2.012#define _GNU_SOURCE3#include <check.h>4#include <stdio.h>5#include <stdlib.h>6#include <sched.h>7#include <limits.h>8#include <unistd.h>9#include <sys/sysinfo.h>1011#include "../../src/utils.h"12int nr_cpus;1314START_TEST(test_strtoi)15{16int result;17char buf[64];1819ck_assert_int_eq(strtoi("123", &result), 0);20ck_assert_int_eq(result, 123);21ck_assert_int_eq(strtoi(" -456", &result), 0);22ck_assert_int_eq(result, -456);2324snprintf(buf, sizeof(buf), "%d", INT_MAX);25ck_assert_int_eq(strtoi(buf, &result), 0);26snprintf(buf, sizeof(buf), "%ld", (long)INT_MAX + 1);27ck_assert_int_eq(strtoi(buf, &result), -1);2829ck_assert_int_eq(strtoi("", &result), -1);30ck_assert_int_eq(strtoi("123abc", &result), -1);31ck_assert_int_eq(strtoi("123 ", &result), -1);32}33END_TEST3435START_TEST(test_parse_cpu_set)36{37cpu_set_t set;3839nr_cpus = 8;40ck_assert_int_eq(parse_cpu_set("0", &set), 0);41ck_assert(CPU_ISSET(0, &set));42ck_assert(!CPU_ISSET(1, &set));4344ck_assert_int_eq(parse_cpu_set("0,2", &set), 0);45ck_assert(CPU_ISSET(0, &set));46ck_assert(CPU_ISSET(2, &set));4748ck_assert_int_eq(parse_cpu_set("0-3", &set), 0);49ck_assert(CPU_ISSET(0, &set));50ck_assert(CPU_ISSET(1, &set));51ck_assert(CPU_ISSET(2, &set));52ck_assert(CPU_ISSET(3, &set));5354ck_assert_int_eq(parse_cpu_set("1-3,5", &set), 0);55ck_assert(!CPU_ISSET(0, &set));56ck_assert(CPU_ISSET(1, &set));57ck_assert(CPU_ISSET(2, &set));58ck_assert(CPU_ISSET(3, &set));59ck_assert(!CPU_ISSET(4, &set));60ck_assert(CPU_ISSET(5, &set));6162ck_assert_int_eq(parse_cpu_set("-1", &set), 1);63ck_assert_int_eq(parse_cpu_set("abc", &set), 1);64ck_assert_int_eq(parse_cpu_set("9999", &set), 1);65}66END_TEST6768START_TEST(test_parse_prio)69{70struct sched_attr attr;7172ck_assert_int_eq(parse_prio("f:50", &attr), 0);73ck_assert_uint_eq(attr.sched_policy, SCHED_FIFO);74ck_assert_uint_eq(attr.sched_priority, 50U);7576ck_assert_int_eq(parse_prio("r:30", &attr), 0);77ck_assert_uint_eq(attr.sched_policy, SCHED_RR);7879ck_assert_int_eq(parse_prio("o:0", &attr), 0);80ck_assert_uint_eq(attr.sched_policy, SCHED_OTHER);81ck_assert_int_eq(attr.sched_nice, 0);8283ck_assert_int_eq(parse_prio("d:10ms:100ms", &attr), 0);84ck_assert_uint_eq(attr.sched_policy, 6U);8586ck_assert_int_eq(parse_prio("f:999", &attr), -1);87ck_assert_int_eq(parse_prio("o:-20", &attr), -1);88ck_assert_int_eq(parse_prio("d:100ms:10ms", &attr), -1);89ck_assert_int_eq(parse_prio("x:50", &attr), -1);90}91END_TEST9293Suite *utils_suite(void)94{95Suite *s = suite_create("utils");96TCase *tc = tcase_create("core");9798tcase_add_test(tc, test_strtoi);99tcase_add_test(tc, test_parse_cpu_set);100tcase_add_test(tc, test_parse_prio);101102suite_add_tcase(s, tc);103return s;104}105106int main(void)107{108int num_failed;109SRunner *sr;110111sr = srunner_create(utils_suite());112srunner_run_all(sr, CK_NORMAL);113num_failed = srunner_ntests_failed(sr);114115srunner_free(sr);116117return (num_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;118}119120121