• Home
  • Raw
  • Download

Lines Matching full:test

3  * Base unit test (KUnit) API.
9 #include <kunit/test.h>
71 struct kunit *test = is_test ? test_or_suite : NULL; in kunit_print_ok_not_ok() local
74 * We do not log the test suite results as doing so would in kunit_print_ok_not_ok()
75 * mean debugfs display would consist of the test suite in kunit_print_ok_not_ok()
76 * description and status prior to individual test results. in kunit_print_ok_not_ok()
86 kunit_log(KERN_INFO, test, KUNIT_SUBTEST_INDENT "%s %zd - %s", in kunit_print_ok_not_ok()
130 static void kunit_print_string_stream(struct kunit *test, in kunit_print_string_stream() argument
141 kunit_err(test, in kunit_print_string_stream()
144 kunit_err(test, "%s", fragment->fragment); in kunit_print_string_stream()
146 kunit_err(test, "\n"); in kunit_print_string_stream()
148 kunit_err(test, "%s", buf); in kunit_print_string_stream()
149 kunit_kfree(test, buf); in kunit_print_string_stream()
153 static void kunit_fail(struct kunit *test, struct kunit_assert *assert) in kunit_fail() argument
157 kunit_set_failure(test); in kunit_fail()
159 stream = alloc_string_stream(test, GFP_KERNEL); in kunit_fail()
170 kunit_print_string_stream(test, stream); in kunit_fail()
175 static void __noreturn kunit_abort(struct kunit *test) in kunit_abort() argument
177 kunit_try_catch_throw(&test->try_catch); /* Does not return. */ in kunit_abort()
180 * Throw could not abort from test. in kunit_abort()
185 WARN_ONCE(true, "Throw could not abort from test!\n"); in kunit_abort()
188 void kunit_do_assertion(struct kunit *test, in kunit_do_assertion() argument
203 kunit_fail(test, assert); in kunit_do_assertion()
208 kunit_abort(test); in kunit_do_assertion()
212 void kunit_init_test(struct kunit *test, const char *name, char *log) in kunit_init_test() argument
214 spin_lock_init(&test->lock); in kunit_init_test()
215 INIT_LIST_HEAD(&test->resources); in kunit_init_test()
216 test->name = name; in kunit_init_test()
217 test->log = log; in kunit_init_test()
218 if (test->log) in kunit_init_test()
219 test->log[0] = '\0'; in kunit_init_test()
220 test->success = true; in kunit_init_test()
225 * Initializes and runs test case. Does not clean up or do post validations.
227 static void kunit_run_case_internal(struct kunit *test, in kunit_run_case_internal() argument
234 ret = suite->init(test); in kunit_run_case_internal()
236 kunit_err(test, "failed to initialize: %d\n", ret); in kunit_run_case_internal()
237 kunit_set_failure(test); in kunit_run_case_internal()
242 test_case->run_case(test); in kunit_run_case_internal()
245 static void kunit_case_internal_cleanup(struct kunit *test) in kunit_case_internal_cleanup() argument
247 kunit_cleanup(test); in kunit_case_internal_cleanup()
251 * Performs post validations and cleanup after a test case was run.
254 static void kunit_run_case_cleanup(struct kunit *test, in kunit_run_case_cleanup() argument
258 suite->exit(test); in kunit_run_case_cleanup()
260 kunit_case_internal_cleanup(test); in kunit_run_case_cleanup()
264 struct kunit *test; member
272 struct kunit *test = ctx->test; in kunit_try_run_case() local
277 current->kunit_test = test; in kunit_try_run_case()
285 kunit_run_case_internal(test, suite, test_case); in kunit_try_run_case()
287 kunit_run_case_cleanup(test, suite); in kunit_try_run_case()
293 struct kunit *test = ctx->test; in kunit_catch_run_case() local
295 int try_exit_code = kunit_try_catch_get_result(&test->try_catch); in kunit_catch_run_case()
298 kunit_set_failure(test); in kunit_catch_run_case()
300 * Test case could not finish, we have no idea what state it is in kunit_catch_run_case()
304 kunit_err(test, "test case timed out\n"); in kunit_catch_run_case()
306 * Unknown internal error occurred preventing test case from in kunit_catch_run_case()
310 kunit_err(test, "internal error occurred preventing test case from running: %d\n", in kunit_catch_run_case()
317 * Test case was run, but aborted. It is the test case's business as to in kunit_catch_run_case()
320 kunit_run_case_cleanup(test, suite); in kunit_catch_run_case()
324 * Performs all logic to run a test case. It also catches most errors that
325 * occur in a test case and reports them as failures.
332 struct kunit test; in kunit_run_case_catch_errors() local
334 kunit_init_test(&test, test_case->name, test_case->log); in kunit_run_case_catch_errors()
335 try_catch = &test.try_catch; in kunit_run_case_catch_errors()
338 &test, in kunit_run_case_catch_errors()
341 context.test = &test; in kunit_run_case_catch_errors()
346 test_case->success = test.success; in kunit_run_case_catch_errors()
348 kunit_print_ok_not_ok(&test, true, test_case->success, in kunit_run_case_catch_errors()
405 int kunit_add_resource(struct kunit *test, in kunit_add_resource() argument
424 spin_lock(&test->lock); in kunit_add_resource()
425 list_add_tail(&res->node, &test->resources); in kunit_add_resource()
427 spin_unlock(&test->lock); in kunit_add_resource()
433 int kunit_add_named_resource(struct kunit *test, in kunit_add_named_resource() argument
445 existing = kunit_find_named_resource(test, name); in kunit_add_named_resource()
453 return kunit_add_resource(test, init, free, res, data); in kunit_add_named_resource()
457 struct kunit_resource *kunit_alloc_and_get_resource(struct kunit *test, in kunit_alloc_and_get_resource() argument
470 ret = kunit_add_resource(test, init, free, res, data); in kunit_alloc_and_get_resource()
483 void kunit_remove_resource(struct kunit *test, struct kunit_resource *res) in kunit_remove_resource() argument
485 spin_lock(&test->lock); in kunit_remove_resource()
487 spin_unlock(&test->lock); in kunit_remove_resource()
492 int kunit_destroy_resource(struct kunit *test, kunit_resource_match_t match, in kunit_destroy_resource() argument
495 struct kunit_resource *res = kunit_find_resource(test, match, in kunit_destroy_resource()
501 kunit_remove_resource(test, res); in kunit_destroy_resource()
531 void *kunit_kmalloc(struct kunit *test, size_t size, gfp_t gfp) in kunit_kmalloc() argument
538 return kunit_alloc_resource(test, in kunit_kmalloc()
546 void kunit_kfree(struct kunit *test, const void *ptr) in kunit_kfree() argument
550 res = kunit_find_resource(test, kunit_resource_instance_match, in kunit_kfree()
557 kunit_remove_resource(test, res); in kunit_kfree()
564 void kunit_cleanup(struct kunit *test) in kunit_cleanup() argument
569 * test->resources is a stack - each allocation must be freed in the in kunit_cleanup()
578 spin_lock(&test->lock); in kunit_cleanup()
579 if (list_empty(&test->resources)) { in kunit_cleanup()
580 spin_unlock(&test->lock); in kunit_cleanup()
583 res = list_last_entry(&test->resources, in kunit_cleanup()
588 * resource, and this can't happen if the test->lock in kunit_cleanup()
591 spin_unlock(&test->lock); in kunit_cleanup()
592 kunit_remove_resource(test, res); in kunit_cleanup()