Lines Matching full:env
46 return env.verbosity > VERBOSE_NONE; in verbose()
52 if (verbose() && env.worker_id == -1) { in stdio_hijack_init()
62 stdout = env.stdout_saved; in stdio_hijack_init()
67 if (env.subtest_state) in stdio_hijack_init()
68 env.subtest_state->stdout_saved = stdout; in stdio_hijack_init()
70 env.test_state->stdout_saved = stdout; in stdio_hijack_init()
79 if (verbose() && env.worker_id == -1) { in stdio_hijack()
84 env.stdout_saved = stdout; in stdio_hijack()
85 env.stderr_saved = stderr; in stdio_hijack()
94 if (verbose() && env.worker_id == -1) { in stdio_restore_cleanup()
101 if (env.subtest_state) { in stdio_restore_cleanup()
102 fclose(env.subtest_state->stdout_saved); in stdio_restore_cleanup()
103 env.subtest_state->stdout_saved = NULL; in stdio_restore_cleanup()
104 stdout = env.test_state->stdout_saved; in stdio_restore_cleanup()
105 stderr = env.test_state->stdout_saved; in stdio_restore_cleanup()
107 fclose(env.test_state->stdout_saved); in stdio_restore_cleanup()
108 env.test_state->stdout_saved = NULL; in stdio_restore_cleanup()
116 if (verbose() && env.worker_id == -1) { in stdio_restore()
121 if (stdout == env.stdout_saved) in stdio_restore()
126 stdout = env.stdout_saved; in stdio_restore()
127 stderr = env.stderr_saved; in stdio_restore()
157 struct test_env env = {}; variable
184 * If timer is active for longer than env.secs_till_notify,
186 * If timer is active for longer than env.secs_till_kill,
195 if (env.subtest_state) in watchdog_timer_func()
197 env.test->test_name, env.subtest_state->name); in watchdog_timer_func()
200 env.test->test_name); in watchdog_timer_func()
202 switch (env.watchdog_state) { in watchdog_timer_func()
204 fprintf(env.stderr_saved, "WATCHDOG: test case %s executes for %d seconds...\n", in watchdog_timer_func()
205 test_name, env.secs_till_notify); in watchdog_timer_func()
206 timeout.it_value.tv_sec = env.secs_till_kill - env.secs_till_notify; in watchdog_timer_func()
207 env.watchdog_state = WD_KILL; in watchdog_timer_func()
208 err = timer_settime(env.watchdog, 0, &timeout, NULL); in watchdog_timer_func()
210 fprintf(env.stderr_saved, "Failed to arm watchdog timer\n"); in watchdog_timer_func()
213 fprintf(env.stderr_saved, in watchdog_timer_func()
215 test_name, env.secs_till_kill); in watchdog_timer_func()
216 pthread_kill(env.main_thread, SIGSEGV); in watchdog_timer_func()
226 if (env.secs_till_kill == 0) in watchdog_start()
228 if (env.secs_till_notify > 0) { in watchdog_start()
229 env.watchdog_state = WD_NOTIFY; in watchdog_start()
230 timeout.it_value.tv_sec = env.secs_till_notify; in watchdog_start()
232 env.watchdog_state = WD_KILL; in watchdog_start()
233 timeout.it_value.tv_sec = env.secs_till_kill; in watchdog_start()
235 err = timer_settime(env.watchdog, 0, &timeout, NULL); in watchdog_start()
237 fprintf(env.stderr_saved, "Failed to start watchdog timer\n"); in watchdog_start()
245 env.watchdog_state = WD_NOTIFY; in watchdog_stop()
246 err = timer_settime(env.watchdog, 0, &timeout, NULL); in watchdog_stop()
248 fprintf(env.stderr_saved, "Failed to stop watchdog timer\n"); in watchdog_stop()
259 env.main_thread = pthread_self(); in watchdog_init()
260 err = timer_create(CLOCK_MONOTONIC, &watchdog_sev, &env.watchdog); in watchdog_init()
351 fprintf(env.stdout_saved, "#%-*d %s:", TEST_NUM_WIDTH, test->test_num, test->test_name); in print_test_result()
353 fprintf(env.stdout_saved, "FAIL"); in print_test_result()
355 fprintf(env.stdout_saved, "OK"); in print_test_result()
357 fprintf(env.stdout_saved, "SKIP"); in print_test_result()
359 fprintf(env.stdout_saved, "OK (SKIP: %d/%d)", skipped_cnt, subtests_cnt); in print_test_result()
361 fprintf(env.stdout_saved, "\n"); in print_test_result()
367 fprintf(env.stdout_saved, "%s", log_buf); in print_test_log()
369 fprintf(env.stdout_saved, "\n"); in print_test_log()
380 fprintf(env.stdout_saved, "#%-*s %s/%s", in print_subtest_name()
385 fprintf(env.stdout_saved, ":%s", result); in print_subtest_name()
387 fprintf(env.stdout_saved, "\n"); in print_subtest_name()
418 if (env.worker_id != -1) in dump_test_log()
488 for (i = 0; i < env.nr_cpus; i++) in reset_affinity()
507 env.saved_netns_fd = open("/proc/self/ns/net", O_RDONLY); in save_netns()
508 if (env.saved_netns_fd == -1) { in save_netns()
516 if (setns(env.saved_netns_fd, CLONE_NEWNET) == -1) { in restore_netns()
525 struct prog_test_def *test = env.test; in test__end_subtest()
526 struct test_state *test_state = env.test_state; in test__end_subtest()
527 struct subtest_state *subtest_state = env.subtest_state; in test__end_subtest()
538 if (verbose() && !env.workers) in test__end_subtest()
545 env.subtest_state = NULL; in test__end_subtest()
550 struct prog_test_def *test = env.test; in test__start_subtest()
551 struct test_state *state = env.test_state; in test__start_subtest()
555 if (env.subtest_state) in test__start_subtest()
572 fprintf(env.stderr_saved, in test__start_subtest()
580 fprintf(env.stderr_saved, in test__start_subtest()
586 if (!should_run_subtest(&env.test_selector, in test__start_subtest()
587 &env.subtest_selector, in test__start_subtest()
595 subtest_state->should_tmon = match_subtest(&env.tmon_selector.whitelist, in test__start_subtest()
599 env.subtest_state = subtest_state; in test__start_subtest()
608 env.test_state->force_log = true; in test__force_log()
613 if (env.subtest_state) in test__skip()
614 env.subtest_state->skipped = true; in test__skip()
616 env.test_state->skip_cnt++; in test__skip()
621 if (env.subtest_state) in test__fail()
622 env.subtest_state->error_cnt++; in test__fail()
624 env.test_state->error_cnt++; in test__fail()
631 if (!env.test->need_cgroup_cleanup) { in test__join_cgroup()
635 env.test->test_num, env.test->test_name); in test__join_cgroup()
639 env.test->need_cgroup_cleanup = true; in test__join_cgroup()
646 env.test->test_num, env.test->test_name, path, errno); in test__join_cgroup()
653 env.test->test_num, env.test->test_name, path, errno); in test__join_cgroup()
778 if (env.test->should_tmon || in netns_new()
779 (env.subtest_state && env.subtest_state->should_tmon)) { in netns_new()
780 test_name = env.test->test_name; in netns_new()
781 subtest_name = env.subtest_state ? env.subtest_state->name : NULL; in netns_new()
964 if (env.verbosity < VERBOSE_VERY && level == LIBBPF_DEBUG) in libbpf_print_fn()
1000 struct test_env *env = state->input; in parse_arg() local
1010 &env->subtest_selector.num_set, in parse_arg()
1011 &env->subtest_selector.num_set_len)) { in parse_arg()
1017 if (parse_num_list(arg, &env->test_selector.num_set, in parse_arg()
1018 &env->test_selector.num_set_len)) { in parse_arg()
1028 &env->test_selector.whitelist, in parse_arg()
1032 &env->test_selector.whitelist, in parse_arg()
1041 &env->test_selector.blacklist, in parse_arg()
1045 &env->test_selector.blacklist, in parse_arg()
1051 env->verifier_stats = true; in parse_arg()
1054 env->verbosity = VERBOSE_NORMAL; in parse_arg()
1057 env->verbosity = VERBOSE_VERY; in parse_arg()
1060 env->verbosity = VERBOSE_SUPER; in parse_arg()
1069 env_verbosity = env->verbosity; in parse_arg()
1082 env->get_test_cnt = true; in parse_arg()
1085 env->list_test_names = true; in parse_arg()
1089 env->workers = atoi(arg); in parse_arg()
1090 if (!env->workers) { in parse_arg()
1095 env->workers = get_nprocs(); in parse_arg()
1099 env->debug = true; in parse_arg()
1102 env->json = fopen(arg, "w"); in parse_arg()
1103 if (env->json == NULL) { in parse_arg()
1117 &env->tmon_selector.whitelist, in parse_arg()
1121 &env->tmon_selector.whitelist, in parse_arg()
1126 env->secs_till_kill = atoi(arg); in parse_arg()
1127 if (env->secs_till_kill < 0) { in parse_arg()
1131 if (env->secs_till_kill < env->secs_till_notify) { in parse_arg()
1132 env->secs_till_notify = 0; in parse_arg()
1273 if (env.stdout_saved) in crash_handler()
1275 if (env.test) { in crash_handler()
1276 env.test_state->error_cnt++; in crash_handler()
1277 dump_test_log(env.test, env.test_state, true, false, NULL); in crash_handler()
1279 if (env.worker_id != -1) in crash_handler()
1280 fprintf(stderr, "[%d]: ", env.worker_id); in crash_handler()
1304 for (i = 0; i < env.workers; i++) in sigint_handler()
1305 if (env.worker_socks[i] > 0) in sigint_handler()
1306 close(env.worker_socks[i]); in sigint_handler()
1349 if (env.debug) in send_message()
1362 if (env.debug) in recv_message()
1373 env.test = test; in run_one_test()
1374 env.test_state = state; in run_one_test()
1386 if (env.subtest_state) in run_one_test()
1391 if (verbose() && env.worker_id == -1) in run_one_test()
1525 env.worker_current_test[data->worker_id] = test_to_run; in dispatch_thread()
1565 if (env.debug) in dispatch_thread()
1574 if (env.debug) in dispatch_thread()
1582 static void calculate_summary_and_print_errors(struct test_env *env) in calculate_summary_and_print_errors() argument
1603 if (env->json) { in calculate_summary_and_print_errors()
1604 w = jsonw_new(env->json); in calculate_summary_and_print_errors()
1606 fprintf(env->stderr_saved, "Failed to create new JSON stream."); in calculate_summary_and_print_errors()
1645 if (env->json) in calculate_summary_and_print_errors()
1646 fclose(env->json); in calculate_summary_and_print_errors()
1651 env->succ_cnt = succ_cnt; in calculate_summary_and_print_errors()
1652 env->sub_succ_cnt = sub_succ_cnt; in calculate_summary_and_print_errors()
1653 env->fail_cnt = fail_cnt; in calculate_summary_and_print_errors()
1654 env->skip_cnt = skip_cnt; in calculate_summary_and_print_errors()
1669 dispatcher_threads = calloc(sizeof(pthread_t), env.workers); in server_main()
1670 data = calloc(sizeof(struct dispatch_data), env.workers); in server_main()
1672 env.worker_current_test = calloc(sizeof(int), env.workers); in server_main()
1673 for (i = 0; i < env.workers; i++) { in server_main()
1677 data[i].sock_fd = env.worker_socks[i]; in server_main()
1686 for (i = 0; i < env.workers; i++) { in server_main()
1693 if (env.debug) in server_main()
1695 i, env.worker_current_test[i] + 1); in server_main()
1705 free(env.worker_current_test); in server_main()
1724 calculate_summary_and_print_errors(&env); in server_main()
1727 for (i = 0; i < env.workers; i++) { in server_main()
1730 pid = waitpid(env.worker_pids[i], &wstatus, 0); in server_main()
1731 if (pid != env.worker_pids[i]) in server_main()
1835 if (env.debug) in worker_main()
1837 env.worker_id); in worker_main()
1845 if (env.debug) in worker_main()
1847 env.worker_id, in worker_main()
1885 if (env.debug) in worker_main()
1887 env.worker_id, in worker_main()
1893 if (env.debug) in worker_main()
1894 fprintf(stderr, "[%d]: unknown message.\n", env.worker_id); in worker_main()
1934 env.secs_till_notify = 10; in main()
1935 env.secs_till_kill = 120; in main()
1936 err = argp_parse(&argp, argc, argv, 0, NULL, &env); in main()
1952 env.jit_enabled = is_jit_enabled(); in main()
1953 env.nr_cpus = libbpf_num_possible_cpus(); in main()
1954 if (env.nr_cpus < 0) { in main()
1956 env.nr_cpus); in main()
1960 env.stdout_saved = stdout; in main()
1961 env.stderr_saved = stderr; in main()
1963 env.has_testmod = true; in main()
1964 if (!env.list_test_names) { in main()
1969 fprintf(env.stderr_saved, "WARNING! Selftests relying on bpf_testmod.ko will be skipped.\n"); in main()
1970 env.has_testmod = false; in main()
1979 test->should_run = should_run(&env.test_selector, in main()
1989 test->should_tmon = should_tmon(&env.tmon_selector, test->test_name); in main()
1993 if (env.get_test_cnt || env.list_test_names) in main()
1994 env.workers = 0; in main()
1997 env.worker_id = -1; /* main process */ in main()
1998 if (env.workers) { in main()
1999 env.worker_pids = calloc(sizeof(pid_t), env.workers); in main()
2000 env.worker_socks = calloc(sizeof(int), env.workers); in main()
2001 if (env.debug) in main()
2002 fprintf(stdout, "Launching %d workers.\n", env.workers); in main()
2003 for (i = 0; i < env.workers; i++) { in main()
2017 env.worker_pids[i] = pid; in main()
2018 env.worker_socks[i] = sv[0]; in main()
2021 env.worker_id = i; in main()
2026 if (env.worker_id == -1) { in main()
2043 if (env.get_test_cnt) { in main()
2044 env.succ_cnt++; in main()
2048 if (env.list_test_names) { in main()
2049 fprintf(env.stdout_saved, "%s\n", test->test_name); in main()
2050 env.succ_cnt++; in main()
2057 if (env.get_test_cnt) { in main()
2058 printf("%d\n", env.succ_cnt); in main()
2062 if (env.list_test_names) in main()
2065 calculate_summary_and_print_errors(&env); in main()
2067 close(env.saved_netns_fd); in main()
2069 if (!env.list_test_names && env.has_testmod) in main()
2072 free_test_selector(&env.test_selector); in main()
2073 free_test_selector(&env.subtest_selector); in main()
2074 free_test_selector(&env.tmon_selector); in main()
2077 if (env.succ_cnt + env.fail_cnt + env.skip_cnt == 0) in main()
2080 return env.fail_cnt ? EXIT_FAILURE : EXIT_SUCCESS; in main()