Lines Matching refs:env

46 	return env.verbosity > VERBOSE_NONE;
52 if (verbose() && env.worker_id == -1) {
62 stdout = env.stdout_saved;
67 if (env.subtest_state)
68 env.subtest_state->stdout_saved = stdout;
70 env.test_state->stdout_saved = stdout;
79 if (verbose() && env.worker_id == -1) {
84 env.stdout_saved = stdout;
85 env.stderr_saved = stderr;
96 if (verbose() && env.worker_id == -1) {
105 if (env.subtest_state) {
106 if (env.subtest_state->stdout_saved)
107 fclose(env.subtest_state->stdout_saved);
108 env.subtest_state->stdout_saved = NULL;
109 stdout = env.test_state->stdout_saved;
110 stderr = env.test_state->stdout_saved;
112 if (env.test_state->stdout_saved)
113 fclose(env.test_state->stdout_saved);
114 env.test_state->stdout_saved = NULL;
115 stdout = env.stdout_saved;
116 stderr = env.stderr_saved;
158 struct test_env env = {};
185 * If timer is active for longer than env.secs_till_notify,
187 * If timer is active for longer than env.secs_till_kill,
196 if (env.subtest_state)
198 env.test->test_name, env.subtest_state->name);
201 env.test->test_name);
203 switch (env.watchdog_state) {
205 fprintf(env.stderr_saved, "WATCHDOG: test case %s executes for %d seconds...\n",
206 test_name, env.secs_till_notify);
207 timeout.it_value.tv_sec = env.secs_till_kill - env.secs_till_notify;
208 env.watchdog_state = WD_KILL;
209 err = timer_settime(env.watchdog, 0, &timeout, NULL);
211 fprintf(env.stderr_saved, "Failed to arm watchdog timer\n");
214 fprintf(env.stderr_saved,
216 test_name, env.secs_till_kill);
217 pthread_kill(env.main_thread, SIGSEGV);
227 if (env.secs_till_kill == 0)
229 if (env.secs_till_notify > 0) {
230 env.watchdog_state = WD_NOTIFY;
231 timeout.it_value.tv_sec = env.secs_till_notify;
233 env.watchdog_state = WD_KILL;
234 timeout.it_value.tv_sec = env.secs_till_kill;
236 err = timer_settime(env.watchdog, 0, &timeout, NULL);
238 fprintf(env.stderr_saved, "Failed to start watchdog timer\n");
246 env.watchdog_state = WD_NOTIFY;
247 err = timer_settime(env.watchdog, 0, &timeout, NULL);
249 fprintf(env.stderr_saved, "Failed to stop watchdog timer\n");
260 env.main_thread = pthread_self();
261 err = timer_create(CLOCK_MONOTONIC, &watchdog_sev, &env.watchdog);
352 fprintf(env.stdout_saved, "#%-*d %s:", TEST_NUM_WIDTH, test->test_num, test->test_name);
354 fprintf(env.stdout_saved, "FAIL");
356 fprintf(env.stdout_saved, "OK");
358 fprintf(env.stdout_saved, "SKIP");
360 fprintf(env.stdout_saved, "OK (SKIP: %d/%d)", skipped_cnt, subtests_cnt);
362 fprintf(env.stdout_saved, "\n");
368 fprintf(env.stdout_saved, "%s", log_buf);
370 fprintf(env.stdout_saved, "\n");
381 fprintf(env.stdout_saved, "#%-*s %s/%s",
386 fprintf(env.stdout_saved, ":%s", result);
388 fprintf(env.stdout_saved, "\n");
419 if (env.worker_id != -1)
487 for (i = 0; i < env.nr_cpus; i++)
504 env.saved_netns_fd = open("/proc/self/ns/net", O_RDONLY);
505 if (env.saved_netns_fd == -1) {
513 if (setns(env.saved_netns_fd, CLONE_NEWNET) == -1) {
521 struct prog_test_def *test = env.test;
522 struct test_state *test_state = env.test_state;
523 struct subtest_state *subtest_state = env.subtest_state;
534 if (verbose() && !env.workers)
542 env.subtest_state = NULL;
547 struct prog_test_def *test = env.test;
548 struct test_state *state = env.test_state;
552 if (env.subtest_state)
569 fprintf(env.stderr_saved,
577 fprintf(env.stderr_saved,
583 if (!should_run_subtest(&env.test_selector,
584 &env.subtest_selector,
592 subtest_state->should_tmon = match_subtest(&env.tmon_selector.whitelist,
596 env.subtest_state = subtest_state;
605 env.test_state->force_log = true;
610 if (env.subtest_state)
611 env.subtest_state->skipped = true;
613 env.test_state->skip_cnt++;
618 if (env.subtest_state)
619 env.subtest_state->error_cnt++;
621 env.test_state->error_cnt++;
628 if (!env.test->need_cgroup_cleanup) {
632 env.test->test_num, env.test->test_name);
636 env.test->need_cgroup_cleanup = true;
643 env.test->test_num, env.test->test_name, path, errno);
650 env.test->test_num, env.test->test_name, path, errno);
775 if (env.test->should_tmon ||
776 (env.subtest_state && env.subtest_state->should_tmon)) {
777 test_name = env.test->test_name;
778 subtest_name = env.subtest_state ? env.subtest_state->name : NULL;
961 if (env.verbosity < VERBOSE_VERY && level == LIBBPF_DEBUG)
997 struct test_env *env = state->input;
1007 &env->subtest_selector.num_set,
1008 &env->subtest_selector.num_set_len)) {
1014 if (parse_num_list(arg, &env->test_selector.num_set,
1015 &env->test_selector.num_set_len)) {
1025 &env->test_selector.whitelist,
1029 &env->test_selector.whitelist,
1038 &env->test_selector.blacklist,
1042 &env->test_selector.blacklist,
1048 env->verifier_stats = true;
1051 env->verbosity = VERBOSE_NORMAL;
1054 env->verbosity = VERBOSE_VERY;
1057 env->verbosity = VERBOSE_SUPER;
1066 env_verbosity = env->verbosity;
1079 env->get_test_cnt = true;
1082 env->list_test_names = true;
1086 env->workers = atoi(arg);
1087 if (!env->workers) {
1092 env->workers = get_nprocs();
1096 env->debug = true;
1099 env->json = fopen(arg, "w");
1100 if (env->json == NULL) {
1114 &env->tmon_selector.whitelist,
1118 &env->tmon_selector.whitelist,
1123 env->secs_till_kill = atoi(arg);
1124 if (env->secs_till_kill < 0) {
1128 if (env->secs_till_kill < env->secs_till_notify) {
1129 env->secs_till_notify = 0;
1271 stdout = env.stdout_saved;
1272 stderr = env.stderr_saved;
1274 if (env.test) {
1275 env.test_state->error_cnt++;
1276 dump_test_log(env.test, env.test_state, true, false, NULL);
1278 if (env.worker_id != -1)
1279 fprintf(stderr, "[%d]: ", env.worker_id);
1303 for (i = 0; i < env.workers; i++)
1304 if (env.worker_socks[i] > 0)
1305 close(env.worker_socks[i]);
1348 if (env.debug)
1361 if (env.debug)
1381 env.test = test;
1382 env.test_state = state;
1397 if (env.subtest_state)
1404 if (verbose() && env.worker_id == -1)
1537 env.worker_current_test[data->worker_id] = test_to_run;
1577 if (env.debug)
1586 if (env.debug)
1594 static void calculate_summary_and_print_errors(struct test_env *env)
1615 if (env->json) {
1616 w = jsonw_new(env->json);
1618 fprintf(env->stderr_saved, "Failed to create new JSON stream.");
1657 if (env->json)
1658 fclose(env->json);
1663 env->succ_cnt = succ_cnt;
1664 env->sub_succ_cnt = sub_succ_cnt;
1665 env->fail_cnt = fail_cnt;
1666 env->skip_cnt = skip_cnt;
1681 dispatcher_threads = calloc(sizeof(pthread_t), env.workers);
1682 data = calloc(sizeof(struct dispatch_data), env.workers);
1684 env.worker_current_test = calloc(sizeof(int), env.workers);
1685 for (i = 0; i < env.workers; i++) {
1689 data[i].sock_fd = env.worker_socks[i];
1698 for (i = 0; i < env.workers; i++) {
1705 if (env.debug)
1707 i, env.worker_current_test[i] + 1);
1717 free(env.worker_current_test);
1736 calculate_summary_and_print_errors(&env);
1739 for (i = 0; i < env.workers; i++) {
1742 pid = waitpid(env.worker_pids[i], &wstatus, 0);
1743 if (pid != env.worker_pids[i])
1847 if (env.debug)
1849 env.worker_id);
1857 if (env.debug)
1859 env.worker_id,
1897 if (env.debug)
1899 env.worker_id,
1905 if (env.debug)
1906 fprintf(stderr, "[%d]: unknown message.\n", env.worker_id);
1946 env.stdout_saved = stdout;
1947 env.stderr_saved = stderr;
1949 env.secs_till_notify = 10;
1950 env.secs_till_kill = 120;
1951 err = argp_parse(&argp, argc, argv, 0, NULL, &env);
1969 env.jit_enabled = is_jit_enabled();
1970 env.nr_cpus = libbpf_num_possible_cpus();
1971 if (env.nr_cpus < 0) {
1973 env.nr_cpus);
1977 env.has_testmod = true;
1978 if (!env.list_test_names) {
1983 fprintf(env.stderr_saved, "WARNING! Selftests relying on bpf_testmod.ko will be skipped.\n");
1984 env.has_testmod = false;
1993 test->should_run = should_run(&env.test_selector,
2003 test->should_tmon = should_tmon(&env.tmon_selector, test->test_name);
2007 if (env.get_test_cnt || env.list_test_names)
2008 env.workers = 0;
2011 env.worker_id = -1; /* main process */
2012 if (env.workers) {
2013 env.worker_pids = calloc(sizeof(pid_t), env.workers);
2014 env.worker_socks = calloc(sizeof(int), env.workers);
2015 if (env.debug)
2016 fprintf(stdout, "Launching %d workers.\n", env.workers);
2017 for (i = 0; i < env.workers; i++) {
2031 env.worker_pids[i] = pid;
2032 env.worker_socks[i] = sv[0];
2035 env.worker_id = i;
2040 if (env.worker_id == -1) {
2057 if (env.get_test_cnt) {
2058 env.succ_cnt++;
2062 if (env.list_test_names) {
2063 fprintf(env.stdout_saved, "%s\n", test->test_name);
2064 env.succ_cnt++;
2071 if (env.get_test_cnt) {
2072 printf("%d\n", env.succ_cnt);
2076 if (env.list_test_names)
2079 calculate_summary_and_print_errors(&env);
2081 close(env.saved_netns_fd);
2083 if (!env.list_test_names && env.has_testmod)
2086 free_test_selector(&env.test_selector);
2087 free_test_selector(&env.subtest_selector);
2088 free_test_selector(&env.tmon_selector);
2091 if (env.succ_cnt + env.fail_cnt + env.skip_cnt == 0)
2094 return env.fail_cnt ? EXIT_FAILURE : EXIT_SUCCESS;