On Mon, May 2, 2022 at 3:23 PM Daniel Latypov dlatypov@google.com wrote:
The test currently is a bunch of checks (implemented using BUG_ON()) that can be built into the kernel or as a module.
Convert it to a KUnit test, which can also run in both modes. From a user's perspective, this change adds a CONFIG_KUNIT=y dep and changes the output format of the test [1]. The test itself is the same.
This hopefully makes the test easier to run and more consistent with similar tests in lib/. Since it has no dependencies, it can be run without explicitly setting up a .kunitconfig via $ ./tools/testing/kunit/kunit.py run atomic ... [13:53:44] Starting KUnit Kernel (1/1)... [13:53:44] ============================================================ [13:53:47] =================== atomic (2 subtests) ==================== [13:53:47] [PASSED] test_atomic [13:53:47] [PASSED] test_atomic64 [13:53:47] ===================== [PASSED] atomic ====================== [13:53:47] ============================================================ [13:53:47] Testing complete. Passed: 2, Failed: 0, Crashed: 0, Skipped: 0, Errors: 0 [13:53:47] Elapsed time: 13.902s total, 1.629s configuring, 9.331s building, 2.852s running
It can be run on ARCH=x86_64 (and others) via: $ ./tools/testing/kunit/kunit.py run --arch=x86_64 atomic
The message about which platform the test ran on won't show up in kunit.py, but still gets printed out in dmesg, e.g.
TAP version 14 1..1 # Subtest: atomic 1..2 ok 1 - test_atomic ok 2 - test_atomic64 # atomic: ran on x86-64 platform with CX8 and with SSE # atomic: pass:2 fail:0 skip:0 total:2 # Totals: pass:2 fail:0 skip:0 total:2 ok 1 - atomic
Signed-off-by: Daniel Latypov dlatypov@google.com
I am also not an expert, but it looks good to me.
Reviewed-by: Brendan Higgins brendanhiggins@google.com