Lines Matching +full:total +full:- +full:timeout
1 // SPDX-License-Identifier: GPL-2.0
11 #include <kunit/test-bug.h>
23 #include "device-impl.h"
24 #include "hooks-impl.h"
25 #include "string-stream.h"
26 #include "try-catch-impl.h"
39 if (!current->kunit_test) in __kunit_fail_current_test_impl()
42 kunit_set_failure(current->kunit_test); in __kunit_fail_current_test_impl()
49 buffer = kunit_kmalloc(current->kunit_test, len, GFP_KERNEL); in __kunit_fail_current_test_impl()
57 kunit_err(current->kunit_test, "%s:%d: %s", file, line, buffer); in __kunit_fail_current_test_impl()
58 kunit_kfree(current->kunit_test, buffer); in __kunit_fail_current_test_impl()
73 * Configure the base timeout.
76 module_param_named(timeout, kunit_base_timeout, ulong, 0644);
77 MODULE_PARM_DESC(timeout, "Set the base timeout for Kunit test cases");
81 * 0 - disabled
82 * 1 - only when there is more than one subtest
83 * 2 - enabled
94 unsigned long total; member
105 return (stats->total > 1); in kunit_should_print_stats()
116 "# %s: pass:%lu fail:%lu skip:%lu total:%lu", in kunit_print_test_stats()
117 test->name, in kunit_print_test_stats()
118 stats->passed, in kunit_print_test_stats()
119 stats->failed, in kunit_print_test_stats()
120 stats->skipped, in kunit_print_test_stats()
121 stats->total); in kunit_print_test_stats()
169 suite->name); in kunit_print_suite_start()
217 if (suite->suite_init_err) in kunit_suite_has_succeeded()
221 if (test_case->status == KUNIT_FAILURE) in kunit_suite_has_succeeded()
223 else if (test_case->status == KUNIT_SUCCESS) in kunit_suite_has_succeeded()
238 suite->name, in kunit_print_suite_end()
239 suite->status_comment); in kunit_print_suite_end()
271 list_for_each_entry(fragment, &stream->fragments, node) { in kunit_print_string_stream()
272 kunit_err(test, "%s", fragment->fragment); in kunit_print_string_stream()
293 loc->file, in kunit_fail()
294 loc->line); in kunit_fail()
308 kunit_try_catch_throw(&test->try_catch); /* Does not return. */ in __kunit_abort()
342 test->params_array.params = NULL; in kunit_init_params()
343 test->params_array.get_description = NULL; in kunit_init_params()
344 test->params_array.num_params = 0; in kunit_init_params()
345 test->params_array.elem_size = 0; in kunit_init_params()
350 spin_lock_init(&test->lock); in kunit_init_test()
351 INIT_LIST_HEAD(&test->resources); in kunit_init_test()
352 test->name = name; in kunit_init_test()
353 test->log = log; in kunit_init_test()
354 if (test->log) in kunit_init_test()
356 test->status = KUNIT_SUCCESS; in kunit_init_test()
357 test->status_comment[0] = '\0'; in kunit_init_test()
379 enum kunit_speed speed = test_case->attr.speed; in kunit_run_case_check_speed()
392 /* Returns timeout multiplier based on speed.
414 * The default test timeout is 300 seconds and will be adjusted by mult in kunit_test_timeout()
418 if (suite->attr.speed != KUNIT_SPEED_UNSET) in kunit_test_timeout()
419 mult = kunit_timeout_mult(suite->attr.speed); in kunit_test_timeout()
420 if (test_case->attr.speed != KUNIT_SPEED_UNSET) in kunit_test_timeout()
421 mult = kunit_timeout_mult(test_case->attr.speed); in kunit_test_timeout()
435 if (suite->init) { in kunit_run_case_internal()
438 ret = suite->init(test); in kunit_run_case_internal()
448 test_case->run_case(test); in kunit_run_case_internal()
467 if (suite->exit) in kunit_run_case_cleanup()
468 suite->exit(test); in kunit_run_case_cleanup()
482 struct kunit *test = ctx->test; in kunit_try_run_case()
483 struct kunit_suite *suite = ctx->suite; in kunit_try_run_case()
484 struct kunit_case *test_case = ctx->test_case; in kunit_try_run_case()
486 current->kunit_test = test; in kunit_try_run_case()
499 struct kunit *test = ctx->test; in kunit_try_run_case_cleanup()
500 struct kunit_suite *suite = ctx->suite; in kunit_try_run_case_cleanup()
502 current->kunit_test = test; in kunit_try_run_case_cleanup()
510 struct kunit *test = ctx->test; in kunit_catch_run_case_cleanup()
511 int try_exit_code = kunit_try_catch_get_result(&test->try_catch); in kunit_catch_run_case_cleanup()
521 if (try_exit_code == -ETIMEDOUT) { in kunit_catch_run_case_cleanup()
541 struct kunit *test = ctx->test; in kunit_catch_run_case()
542 int try_exit_code = kunit_try_catch_get_result(&test->try_catch); in kunit_catch_run_case()
550 if (try_exit_code == -ETIMEDOUT) { in kunit_catch_run_case()
575 try_catch = &test->try_catch; in kunit_run_case_catch_errors()
596 if (test->status == KUNIT_FAILURE) in kunit_run_case_catch_errors()
597 test_case->status = KUNIT_FAILURE; in kunit_run_case_catch_errors()
598 else if (test_case->status != KUNIT_FAILURE && test->status == KUNIT_SUCCESS) in kunit_run_case_catch_errors()
599 test_case->status = KUNIT_SUCCESS; in kunit_run_case_catch_errors()
608 "# %s: pass:%lu fail:%lu skip:%lu total:%lu", in kunit_print_suite_stats()
609 suite->name, in kunit_print_suite_stats()
610 suite_stats->passed, in kunit_print_suite_stats()
611 suite_stats->failed, in kunit_print_suite_stats()
612 suite_stats->skipped, in kunit_print_suite_stats()
613 suite_stats->total); in kunit_print_suite_stats()
618 "# Totals: pass:%lu fail:%lu skip:%lu total:%lu", in kunit_print_suite_stats()
619 param_stats->passed, in kunit_print_suite_stats()
620 param_stats->failed, in kunit_print_suite_stats()
621 param_stats->skipped, in kunit_print_suite_stats()
622 param_stats->total); in kunit_print_suite_stats()
631 stats->passed++; in kunit_update_stats()
634 stats->skipped++; in kunit_update_stats()
637 stats->failed++; in kunit_update_stats()
641 stats->total++; in kunit_update_stats()
644 static void kunit_accumulate_stats(struct kunit_result_stats *total, in kunit_accumulate_stats() argument
647 total->passed += add.passed; in kunit_accumulate_stats()
648 total->skipped += add.skipped; in kunit_accumulate_stats()
649 total->failed += add.failed; in kunit_accumulate_stats()
650 total->total += add.total; in kunit_accumulate_stats()
655 struct kunit_params *params_arr = &test->params_array; in kunit_array_gen_params()
658 if (test->param_index < params_arr->num_params) { in kunit_array_gen_params()
659 param = (char *)params_arr->params in kunit_array_gen_params()
660 + test->param_index * params_arr->elem_size; in kunit_array_gen_params()
662 if (params_arr->get_description) in kunit_array_gen_params()
663 params_arr->get_description(test, param, desc); in kunit_array_gen_params()
672 if (test_case->param_init) { in kunit_init_parent_param_test()
673 int err = test_case->param_init(test); in kunit_init_parent_param_test()
678 test->status = KUNIT_FAILURE; in kunit_init_parent_param_test()
679 test_case->status = KUNIT_FAILURE; in kunit_init_parent_param_test()
695 if (test_case->status == KUNIT_FAILURE) { in kunit_run_param_test()
696 kunit_update_stats(param_stats, test->status); in kunit_run_param_test()
701 /* TODO: Make generate_params try-catch */ in kunit_run_param_test()
702 curr_param = test_case->generate_params(test, NULL, param_desc); in kunit_run_param_test()
703 test_case->status = KUNIT_SKIPPED; in kunit_run_param_test()
707 "# Subtest: %s", test_case->name); in kunit_run_param_test()
708 if (test->params_array.params && in kunit_run_param_test()
709 test_case->generate_params == kunit_array_gen_params) { in kunit_run_param_test()
712 test->params_array.num_params); in kunit_run_param_test()
718 .param_index = ++test->param_index, in kunit_run_param_test()
721 kunit_init_test(¶m_test, test_case->name, NULL); in kunit_run_param_test()
722 param_test.log = test_case->log; in kunit_run_param_test()
727 "param-%d", param_test.param_index); in kunit_run_param_test()
740 curr_param = test_case->generate_params(test, curr_param, in kunit_run_param_test()
744 * TODO: Put into a try catch. Since we don't need suite->exit in kunit_run_param_test()
747 if (test_case->param_exit) in kunit_run_param_test()
748 test_case->param_exit(test); in kunit_run_param_test()
749 /* TODO: Put this kunit_cleanup into a try-catch. */ in kunit_run_param_test()
761 kunit_init_test(&test, test_case->name, test_case->log); in kunit_run_one_test()
762 if (test_case->status == KUNIT_SKIPPED) { in kunit_run_one_test()
766 } else if (!test_case->generate_params) { in kunit_run_one_test()
767 /* Non-parameterised test. */ in kunit_run_one_test()
768 test_case->status = KUNIT_SKIPPED; in kunit_run_one_test()
779 kunit_print_ok_not_ok(&test, KUNIT_LEVEL_CASE, test_case->status, in kunit_run_one_test()
781 test_case->name, in kunit_run_one_test()
784 kunit_update_stats(suite_stats, test_case->status); in kunit_run_one_test()
798 if (suite->suite_init) { in kunit_run_tests()
799 suite->suite_init_err = suite->suite_init(suite); in kunit_run_tests()
800 if (suite->suite_init_err) { in kunit_run_tests()
802 "# failed to initialize (%d)", suite->suite_init_err); in kunit_run_tests()
812 if (suite->suite_exit) in kunit_run_tests()
813 suite->suite_exit(suite); in kunit_run_tests()
826 suite->status_comment[0] = '\0'; in kunit_init_suite()
827 suite->suite_init_err = 0; in kunit_init_suite()
829 if (suite->log) in kunit_init_suite()
830 string_stream_clear(suite->log); in kunit_init_suite()
856 return -EINTR; in __kunit_test_suites_init()
893 mod->kunit_suites, mod->kunit_suites + mod->num_kunit_suites, in kunit_module_init()
896 mod->kunit_init_suites, mod->kunit_init_suites + mod->num_kunit_init_suites, in kunit_module_init()
901 if (mod->num_kunit_init_suites > 0) in kunit_module_init()
913 mod->kunit_suites = (struct kunit_suite **)filtered_set.start; in kunit_module_init()
914 mod->num_kunit_suites = filtered_set.end - filtered_set.start; in kunit_module_init()
916 if (mod->num_kunit_init_suites > 0) in kunit_module_init()
932 mod->kunit_suites, mod->kunit_suites + mod->num_kunit_suites, in kunit_module_exit()
945 __kunit_test_suites_exit(mod->kunit_suites, in kunit_module_exit()
946 mod->num_kunit_suites); in kunit_module_exit()
1029 * test->resources is a stack - each allocation must be freed in the in kunit_cleanup()
1038 spin_lock_irqsave(&test->lock, flags); in kunit_cleanup()
1039 if (list_empty(&test->resources)) { in kunit_cleanup()
1040 spin_unlock_irqrestore(&test->lock, flags); in kunit_cleanup()
1043 res = list_last_entry(&test->resources, in kunit_cleanup()
1048 * resource, and this can't happen if the test->lock in kunit_cleanup()
1051 spin_unlock_irqrestore(&test->lock, flags); in kunit_cleanup()
1054 current->kunit_test = NULL; in kunit_cleanup()