// SPDX-License-Identifier: GPL-2.0 #define _GNU_SOURCE#include <check.h>#include <stdio.h>#include <stdlib.h>#include <sched.h>#include <limits.h>#include <unistd.h>#include <sys/sysinfo.h> #include <linux/container_of.h> #include "cli_params_assert.h"#include "../../src/cli.h" #define PARSE_ARGS(...) char *argv[] = { __VA_ARGS__, NULL };\ int argc = sizeof(argv) / sizeof(char *) - 1;\ struct common_params *params =\ timerlat_hist_parse_args(argc, argv);\ struct timerlat_params *tlat_params __maybe_unused =\ to_timerlat_params(params) /* Tracing Options */ START_TEST(test_irq_short){ PARSE_ARGS("timerlat", "hist", "-i", "20"); ck_assert_int_eq(params->stop_us, 20);}END_TEST START_TEST(test_irq_long){ PARSE_ARGS("timerlat", "hist", "--irq", "20"); ck_assert_int_eq(params->stop_us, 20);}END_TEST START_TEST(test_period_short){ PARSE_ARGS("timerlat", "hist", "-p", "200"); ck_assert_int_eq(tlat_params->timerlat_period_us, 200);}END_TEST START_TEST(test_period_long){ PARSE_ARGS("timerlat", "hist", "--period", "200"); ck_assert_int_eq(tlat_params->timerlat_period_us, 200);}END_TEST START_TEST(test_period_unset_short){ PARSE_ARGS("timerlat", "hist", "-p", "200", "--no-period"); ck_assert_int_eq(tlat_params->timerlat_period_us, 0);}END_TEST START_TEST(test_period_unset_long){ PARSE_ARGS("timerlat", "hist", "--period", "200", "--no-period"); ck_assert_int_eq(tlat_params->timerlat_period_us, 0);}END_TEST START_TEST(test_stack_short){ PARSE_ARGS("timerlat", "hist", "-s", "20"); ck_assert_int_eq(tlat_params->print_stack, 20);}END_TEST START_TEST(test_stack_long){ PARSE_ARGS("timerlat", "hist", "--stack", "20"); ck_assert_int_eq(tlat_params->print_stack, 20);}END_TEST START_TEST(test_thread_short){ PARSE_ARGS("timerlat", "hist", "-T", "20"); ck_assert_int_eq(params->stop_total_us, 20);}END_TEST START_TEST(test_thread_long){ PARSE_ARGS("timerlat", "hist", "--thread", "20"); ck_assert_int_eq(params->stop_total_us, 20);}END_TEST START_TEST(test_trace_short_noarg){ PARSE_ARGS("timerlat", "hist", "-t"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "timerlat_trace.txt");}END_TEST START_TEST(test_trace_short_followarg){ PARSE_ARGS("timerlat", "hist", "-t", "-d", "20"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "timerlat_trace.txt"); ck_assert_int_eq(params->duration, 20); /* check if next argument is read correctly */}END_TEST START_TEST(test_trace_short_space){ PARSE_ARGS("timerlat", "hist", "-t", "tracefile"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "tracefile");}END_TEST START_TEST(test_trace_short_equals){ PARSE_ARGS("timerlat", "hist", "-t=tracefile"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "tracefile");}END_TEST START_TEST(test_trace_long_noarg){ PARSE_ARGS("timerlat", "hist", "--trace"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "timerlat_trace.txt");}END_TEST START_TEST(test_trace_long_followarg){ PARSE_ARGS("timerlat", "hist", "--trace", "-d", "20"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "timerlat_trace.txt"); ck_assert_int_eq(params->duration, 20); /* check if next argument is read correctly */}END_TEST START_TEST(test_trace_long_space){ PARSE_ARGS("timerlat", "hist", "--trace", "tracefile"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "tracefile");}END_TEST START_TEST(test_trace_long_equals){ PARSE_ARGS("timerlat", "hist", "--trace=tracefile"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "tracefile");}END_TEST /* Event Configuration */ START_TEST(test_event_short){ PARSE_ARGS("timerlat", "hist", "-e", "system:event"); CLI_ASSERT_SINGLE_EVENT("system", "event");}END_TEST START_TEST(test_event_long){ PARSE_ARGS("timerlat", "hist", "--event", "system:event"); CLI_ASSERT_SINGLE_EVENT("system", "event");}END_TEST START_TEST(test_filter){ PARSE_ARGS("timerlat", "hist", "-e", "system:event", "--filter", "filter"); CLI_ASSERT_SINGLE_FILTER("filter");}END_TEST START_TEST(test_trigger){ PARSE_ARGS("timerlat", "hist", "-e", "system:event", "--trigger", "trigger"); CLI_ASSERT_SINGLE_TRIGGER("trigger");}END_TEST /* CPU Configuration */ START_TEST(test_cpus_short){ nr_cpus = 4; PARSE_ARGS("timerlat", "hist", "-c", "0-1,3"); ck_assert_str_eq(params->cpus, "0-1,3"); CLI_ASSERT_CPUSET(monitored_cpus, 0, 1, 3);}END_TEST START_TEST(test_cpus_long){ nr_cpus = 4; PARSE_ARGS("timerlat", "hist", "--cpus", "0-1,3"); ck_assert_str_eq(params->cpus, "0-1,3"); CLI_ASSERT_CPUSET(monitored_cpus, 0, 1, 3);}END_TEST START_TEST(test_housekeeping_short){ nr_cpus = 4; PARSE_ARGS("timerlat", "hist", "-H", "0-1,3"); CLI_ASSERT_CPUSET(hk_cpu_set, 0, 1, 3);}END_TEST START_TEST(test_housekeeping_long){ nr_cpus = 4; PARSE_ARGS("timerlat", "hist", "--house-keeping", "0-1,3"); CLI_ASSERT_CPUSET(hk_cpu_set, 0, 1, 3);}END_TEST /* Thread Configuration */ START_TEST(test_cgroup_short_noarg){ PARSE_ARGS("timerlat", "hist", "-C"); ck_assert(params->cgroup); ck_assert_ptr_null(params->cgroup_name);}END_TEST START_TEST(test_cgroup_short_space){ PARSE_ARGS("timerlat", "hist", "-C", "cgroup"); ck_assert(params->cgroup); ck_assert_str_eq(params->cgroup_name, "cgroup");}END_TEST START_TEST(test_cgroup_short_equals){ PARSE_ARGS("timerlat", "hist", "-C=cgroup"); ck_assert(params->cgroup); ck_assert_str_eq(params->cgroup_name, "cgroup");}END_TEST START_TEST(test_cgroup_long_noarg){ PARSE_ARGS("timerlat", "hist", "--cgroup"); ck_assert(params->cgroup); ck_assert_ptr_null(params->cgroup_name);}END_TEST START_TEST(test_cgroup_long_space){ PARSE_ARGS("timerlat", "hist", "--cgroup", "cgroup"); ck_assert(params->cgroup); ck_assert_str_eq(params->cgroup_name, "cgroup");}END_TEST START_TEST(test_cgroup_long_equals){ PARSE_ARGS("timerlat", "hist", "--cgroup=cgroup"); ck_assert(params->cgroup); ck_assert_str_eq(params->cgroup_name, "cgroup");}END_TEST START_TEST(test_kernel_threads_short){ PARSE_ARGS("timerlat", "hist", "-k"); ck_assert(params->kernel_workload); ck_assert(!params->user_workload); ck_assert(!params->user_data);}END_TEST START_TEST(test_kernel_threads_long){ PARSE_ARGS("timerlat", "hist", "--kernel-threads"); ck_assert(params->kernel_workload); ck_assert(!params->user_workload); ck_assert(!params->user_data);}END_TEST START_TEST(test_priority_short){ PARSE_ARGS("timerlat", "hist", "-P", "f:95"); ck_assert_int_eq(params->sched_param.sched_policy, SCHED_FIFO); ck_assert_int_eq(params->sched_param.sched_priority, 95);}END_TEST START_TEST(test_priority_long){ PARSE_ARGS("timerlat", "hist", "--priority", "f:95"); ck_assert_int_eq(params->sched_param.sched_policy, SCHED_FIFO); ck_assert_int_eq(params->sched_param.sched_priority, 95);}END_TEST START_TEST(test_user_load_short){ PARSE_ARGS("timerlat", "hist", "-U"); ck_assert(!params->kernel_workload); ck_assert(!params->user_workload); ck_assert(params->user_data);}END_TEST START_TEST(test_user_load_long){ PARSE_ARGS("timerlat", "hist", "--user-load"); ck_assert(!params->kernel_workload); ck_assert(!params->user_workload); ck_assert(params->user_data);}END_TEST START_TEST(test_user_threads_short){ PARSE_ARGS("timerlat", "hist", "-u"); ck_assert(!params->kernel_workload); ck_assert(params->user_workload); ck_assert(params->user_data);}END_TEST START_TEST(test_user_threads_long){ PARSE_ARGS("timerlat", "hist", "--user-threads"); ck_assert(!params->kernel_workload); ck_assert(params->user_workload); ck_assert(params->user_data);}END_TEST START_TEST(test_aligned_short){ PARSE_ARGS("timerlat", "hist", "-A", "500"); ck_assert(tlat_params->timerlat_align); ck_assert_int_eq(tlat_params->timerlat_align_us, 500);}END_TEST START_TEST(test_aligned_long){ PARSE_ARGS("timerlat", "hist", "--aligned", "500"); ck_assert(tlat_params->timerlat_align); ck_assert_int_eq(tlat_params->timerlat_align_us, 500);}END_TEST /* Histogram Options */ START_TEST(test_bucket_size_short){ PARSE_ARGS("timerlat", "hist", "-b", "2"); ck_assert_int_eq(params->hist.bucket_size, 2);}END_TEST START_TEST(test_bucket_size_long){ PARSE_ARGS("timerlat", "hist", "--bucket-size", "2"); ck_assert_int_eq(params->hist.bucket_size, 2);}END_TEST START_TEST(test_entries_short){ PARSE_ARGS("timerlat", "hist", "-E", "512"); ck_assert_int_eq(params->hist.entries, 512);}END_TEST START_TEST(test_entries_long){ PARSE_ARGS("timerlat", "hist", "--entries", "512"); ck_assert_int_eq(params->hist.entries, 512);}END_TEST START_TEST(test_no_header){ PARSE_ARGS("timerlat", "hist", "--no-header"); ck_assert(params->hist.no_header);}END_TEST START_TEST(test_no_index){ PARSE_ARGS("timerlat", "hist", "--with-zeros", "--no-index"); ck_assert(params->hist.no_index);}END_TEST START_TEST(test_no_irq){ PARSE_ARGS("timerlat", "hist", "--no-irq"); ck_assert(params->hist.no_irq);}END_TEST START_TEST(test_no_summary){ PARSE_ARGS("timerlat", "hist", "--no-summary"); ck_assert(params->hist.no_summary);}END_TEST START_TEST(test_no_thread){ PARSE_ARGS("timerlat", "hist", "--no-thread"); ck_assert(params->hist.no_thread);}END_TEST START_TEST(test_with_zeros){ PARSE_ARGS("timerlat", "hist", "--with-zeros"); ck_assert(params->hist.with_zeros);}END_TEST /* Output */ START_TEST(test_nano_short){ PARSE_ARGS("timerlat", "hist", "-n"); ck_assert_int_eq(params->output_divisor, 1);}END_TESTLines 1–500 of 740. Load more
// SPDX-License-Identifier: GPL-2.0 #define _GNU_SOURCE #include <check.h> #include <stdio.h> #include <stdlib.h> #include <sched.h> #include <limits.h> #include <unistd.h> #include <sys/sysinfo.h> #include <linux/container_of.h> #include "cli_params_assert.h" #include "../../src/cli.h" #define PARSE_ARGS(...) char *argv[] = { __VA_ARGS__, NULL };\ int argc = sizeof(argv) / sizeof(char *) - 1;\ struct common_params *params =\ timerlat_hist_parse_args(argc, argv);\ struct timerlat_params *tlat_params __maybe_unused =\ to_timerlat_params(params) /* Tracing Options */ START_TEST(test_irq_short) { PARSE_ARGS("timerlat", "hist", "-i", "20"); ck_assert_int_eq(params->stop_us, 20); } END_TEST START_TEST(test_irq_long) { PARSE_ARGS("timerlat", "hist", "--irq", "20"); ck_assert_int_eq(params->stop_us, 20); } END_TEST START_TEST(test_period_short) { PARSE_ARGS("timerlat", "hist", "-p", "200"); ck_assert_int_eq(tlat_params->timerlat_period_us, 200); } END_TEST START_TEST(test_period_long) { PARSE_ARGS("timerlat", "hist", "--period", "200"); ck_assert_int_eq(tlat_params->timerlat_period_us, 200); } END_TEST START_TEST(test_period_unset_short) { PARSE_ARGS("timerlat", "hist", "-p", "200", "--no-period"); ck_assert_int_eq(tlat_params->timerlat_period_us, 0); } END_TEST START_TEST(test_period_unset_long) { PARSE_ARGS("timerlat", "hist", "--period", "200", "--no-period"); ck_assert_int_eq(tlat_params->timerlat_period_us, 0); } END_TEST START_TEST(test_stack_short) { PARSE_ARGS("timerlat", "hist", "-s", "20"); ck_assert_int_eq(tlat_params->print_stack, 20); } END_TEST START_TEST(test_stack_long) { PARSE_ARGS("timerlat", "hist", "--stack", "20"); ck_assert_int_eq(tlat_params->print_stack, 20); } END_TEST START_TEST(test_thread_short) { PARSE_ARGS("timerlat", "hist", "-T", "20"); ck_assert_int_eq(params->stop_total_us, 20); } END_TEST START_TEST(test_thread_long) { PARSE_ARGS("timerlat", "hist", "--thread", "20"); ck_assert_int_eq(params->stop_total_us, 20); } END_TEST START_TEST(test_trace_short_noarg) { PARSE_ARGS("timerlat", "hist", "-t"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "timerlat_trace.txt"); } END_TEST START_TEST(test_trace_short_followarg) { PARSE_ARGS("timerlat", "hist", "-t", "-d", "20"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "timerlat_trace.txt"); ck_assert_int_eq(params->duration, 20); /* check if next argument is read correctly */ } END_TEST START_TEST(test_trace_short_space) { PARSE_ARGS("timerlat", "hist", "-t", "tracefile"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "tracefile"); } END_TEST START_TEST(test_trace_short_equals) { PARSE_ARGS("timerlat", "hist", "-t=tracefile"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "tracefile"); } END_TEST START_TEST(test_trace_long_noarg) { PARSE_ARGS("timerlat", "hist", "--trace"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "timerlat_trace.txt"); } END_TEST START_TEST(test_trace_long_followarg) { PARSE_ARGS("timerlat", "hist", "--trace", "-d", "20"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "timerlat_trace.txt"); ck_assert_int_eq(params->duration, 20); /* check if next argument is read correctly */ } END_TEST START_TEST(test_trace_long_space) { PARSE_ARGS("timerlat", "hist", "--trace", "tracefile"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "tracefile"); } END_TEST START_TEST(test_trace_long_equals) { PARSE_ARGS("timerlat", "hist", "--trace=tracefile"); CLI_ASSERT_SINGLE_ACTION(threshold_actions, ACTION_TRACE_OUTPUT, trace_output, str, "tracefile"); } END_TEST /* Event Configuration */ START_TEST(test_event_short) { PARSE_ARGS("timerlat", "hist", "-e", "system:event"); CLI_ASSERT_SINGLE_EVENT("system", "event"); } END_TEST START_TEST(test_event_long) { PARSE_ARGS("timerlat", "hist", "--event", "system:event"); CLI_ASSERT_SINGLE_EVENT("system", "event"); } END_TEST START_TEST(test_filter) { PARSE_ARGS("timerlat", "hist", "-e", "system:event", "--filter", "filter"); CLI_ASSERT_SINGLE_FILTER("filter"); } END_TEST START_TEST(test_trigger) { PARSE_ARGS("timerlat", "hist", "-e", "system:event", "--trigger", "trigger"); CLI_ASSERT_SINGLE_TRIGGER("trigger"); } END_TEST /* CPU Configuration */ START_TEST(test_cpus_short) { nr_cpus = 4; PARSE_ARGS("timerlat", "hist", "-c", "0-1,3"); ck_assert_str_eq(params->cpus, "0-1,3"); CLI_ASSERT_CPUSET(monitored_cpus, 0, 1, 3); } END_TEST START_TEST(test_cpus_long) { nr_cpus = 4; PARSE_ARGS("timerlat", "hist", "--cpus", "0-1,3"); ck_assert_str_eq(params->cpus, "0-1,3"); CLI_ASSERT_CPUSET(monitored_cpus, 0, 1, 3); } END_TEST START_TEST(test_housekeeping_short) { nr_cpus = 4; PARSE_ARGS("timerlat", "hist", "-H", "0-1,3"); CLI_ASSERT_CPUSET(hk_cpu_set, 0, 1, 3); } END_TEST START_TEST(test_housekeeping_long) { nr_cpus = 4; PARSE_ARGS("timerlat", "hist", "--house-keeping", "0-1,3"); CLI_ASSERT_CPUSET(hk_cpu_set, 0, 1, 3); } END_TEST /* Thread Configuration */ START_TEST(test_cgroup_short_noarg) { PARSE_ARGS("timerlat", "hist", "-C"); ck_assert(params->cgroup); ck_assert_ptr_null(params->cgroup_name); } END_TEST START_TEST(test_cgroup_short_space) { PARSE_ARGS("timerlat", "hist", "-C", "cgroup"); ck_assert(params->cgroup); ck_assert_str_eq(params->cgroup_name, "cgroup"); } END_TEST START_TEST(test_cgroup_short_equals) { PARSE_ARGS("timerlat", "hist", "-C=cgroup"); ck_assert(params->cgroup); ck_assert_str_eq(params->cgroup_name, "cgroup"); } END_TEST START_TEST(test_cgroup_long_noarg) { PARSE_ARGS("timerlat", "hist", "--cgroup"); ck_assert(params->cgroup); ck_assert_ptr_null(params->cgroup_name); } END_TEST START_TEST(test_cgroup_long_space) { PARSE_ARGS("timerlat", "hist", "--cgroup", "cgroup"); ck_assert(params->cgroup); ck_assert_str_eq(params->cgroup_name, "cgroup"); } END_TEST START_TEST(test_cgroup_long_equals) { PARSE_ARGS("timerlat", "hist", "--cgroup=cgroup"); ck_assert(params->cgroup); ck_assert_str_eq(params->cgroup_name, "cgroup"); } END_TEST START_TEST(test_kernel_threads_short) { PARSE_ARGS("timerlat", "hist", "-k"); ck_assert(params->kernel_workload); ck_assert(!params->user_workload); ck_assert(!params->user_data); } END_TEST START_TEST(test_kernel_threads_long) { PARSE_ARGS("timerlat", "hist", "--kernel-threads"); ck_assert(params->kernel_workload); ck_assert(!params->user_workload); ck_assert(!params->user_data); } END_TEST START_TEST(test_priority_short) { PARSE_ARGS("timerlat", "hist", "-P", "f:95"); ck_assert_int_eq(params->sched_param.sched_policy, SCHED_FIFO); ck_assert_int_eq(params->sched_param.sched_priority, 95); } END_TEST START_TEST(test_priority_long) { PARSE_ARGS("timerlat", "hist", "--priority", "f:95"); ck_assert_int_eq(params->sched_param.sched_policy, SCHED_FIFO); ck_assert_int_eq(params->sched_param.sched_priority, 95); } END_TEST START_TEST(test_user_load_short) { PARSE_ARGS("timerlat", "hist", "-U"); ck_assert(!params->kernel_workload); ck_assert(!params->user_workload); ck_assert(params->user_data); } END_TEST START_TEST(test_user_load_long) { PARSE_ARGS("timerlat", "hist", "--user-load"); ck_assert(!params->kernel_workload); ck_assert(!params->user_workload); ck_assert(params->user_data); } END_TEST START_TEST(test_user_threads_short) { PARSE_ARGS("timerlat", "hist", "-u"); ck_assert(!params->kernel_workload); ck_assert(params->user_workload); ck_assert(params->user_data); } END_TEST START_TEST(test_user_threads_long) { PARSE_ARGS("timerlat", "hist", "--user-threads"); ck_assert(!params->kernel_workload); ck_assert(params->user_workload); ck_assert(params->user_data); } END_TEST START_TEST(test_aligned_short) { PARSE_ARGS("timerlat", "hist", "-A", "500"); ck_assert(tlat_params->timerlat_align); ck_assert_int_eq(tlat_params->timerlat_align_us, 500); } END_TEST START_TEST(test_aligned_long) { PARSE_ARGS("timerlat", "hist", "--aligned", "500"); ck_assert(tlat_params->timerlat_align); ck_assert_int_eq(tlat_params->timerlat_align_us, 500); } END_TEST /* Histogram Options */ START_TEST(test_bucket_size_short) { PARSE_ARGS("timerlat", "hist", "-b", "2"); ck_assert_int_eq(params->hist.bucket_size, 2); } END_TEST START_TEST(test_bucket_size_long) { PARSE_ARGS("timerlat", "hist", "--bucket-size", "2"); ck_assert_int_eq(params->hist.bucket_size, 2); } END_TEST START_TEST(test_entries_short) { PARSE_ARGS("timerlat", "hist", "-E", "512"); ck_assert_int_eq(params->hist.entries, 512); } END_TEST START_TEST(test_entries_long) { PARSE_ARGS("timerlat", "hist", "--entries", "512"); ck_assert_int_eq(params->hist.entries, 512); } END_TEST START_TEST(test_no_header) { PARSE_ARGS("timerlat", "hist", "--no-header"); ck_assert(params->hist.no_header); } END_TEST START_TEST(test_no_index) { PARSE_ARGS("timerlat", "hist", "--with-zeros", "--no-index"); ck_assert(params->hist.no_index); } END_TEST START_TEST(test_no_irq) { PARSE_ARGS("timerlat", "hist", "--no-irq"); ck_assert(params->hist.no_irq); } END_TEST START_TEST(test_no_summary) { PARSE_ARGS("timerlat", "hist", "--no-summary"); ck_assert(params->hist.no_summary); } END_TEST START_TEST(test_no_thread) { PARSE_ARGS("timerlat", "hist", "--no-thread"); ck_assert(params->hist.no_thread); } END_TEST START_TEST(test_with_zeros) { PARSE_ARGS("timerlat", "hist", "--with-zeros"); ck_assert(params->hist.with_zeros); } END_TEST /* Output */ START_TEST(test_nano_short) { PARSE_ARGS("timerlat", "hist", "-n"); ck_assert_int_eq(params->output_divisor, 1); } END_TEST