[PATCH v4 0/4] SBIUnit: cover OpenSBI with tests

Anup Patel anup at brainfault.org
Sat Mar 9 20:54:06 PST 2024


On Tue, Mar 5, 2024 at 3:15 AM Ivan Orlov <ivan.orlov0322 at gmail.com> wrote:
>
> It is good when the code is covered with tests. Tests help us to keep
> the code clean and avoid regressions. Also, a good test is always a nice
> documentation for the code it covers.
>
> This patch series introduces SBIUnit - the set of macros and functions
> which simplify the unit test development for OpenSBI and automate tests
> execution and evaluation.
>
> This thing is mainly inspired by the KUnit framework from the Linux
> Kernel, where the similar unit-test development tooling have been used
> successfully for a pretty long time now. SBIUnit uses the same test
> structure: multiple test cases are grouped together into the test
> suites. SBIUnit also tries to reproduce the KUnit tests API while
> allowing for some simplifications.
>
> Another difference between the KUnit and SBIUnit is the location where
> the tests are "stored". KUnit creates the ELF section in the kernel and
> stores the pointers to all of the test suites there. SBIUnit takes
> advantage of the 'carray' functionality of OpenSBI, keeping the pointers
> to test suites in the auto-generated ".c" file. ELF section approach
> could not be applied to SBIUnit, because OpenSBI could be used as a
> static library when linking firmware. Use of a dedicated ELF section
> would mean that all firmware linked with OpenSBI would need to have
> this ELF section as well.
>
> V1 -> V2:
> - Add a cover letter
> - Elaborate more on the differences between SBIUnit and KUnit
> - Add a new patch adding a new entry to the 'clear' makefile target in
> order to clear carray-generated files as well.
>
> V2 -> V3:
> - Drop the patch which modifies carray behavior (it will be included
> into a separate patch series)
>
> V3 -> V4:
> - (Patch-specific changes are described in the following patches)
>
> Ivan Orlov (4):
>   docs: Add documentation about tests and SBIUnit
>   lib: Add SBIUnit testing macros and functions
>   lib: tests: Add a test for sbi_bitmap
>   lib: tests: Add sbi_console test

Overall, this is a good addition to OpenSBI. This unit testing framework
not only allows testing OpenSBI code but it will also enable people to
write M-mode baremetal tests.

As a separate patch, I suggest moving all unit test related code
under sub-directory lib/sbi/tests. This way testing related code is
easy to locate under lib/sbi directory.

Thanks,
Anup

>
>  docs/writing_tests.md         | 133 ++++++++++++++++++++++++++++++++++
>  include/sbi/sbi_unit_test.h   |  71 ++++++++++++++++++
>  lib/sbi/Kconfig               |   4 +
>  lib/sbi/objects.mk            |   6 ++
>  lib/sbi/sbi_bitmap_test.c     | 102 ++++++++++++++++++++++++++
>  lib/sbi/sbi_console.c         |   4 +
>  lib/sbi/sbi_console_test.c    | 105 +++++++++++++++++++++++++++
>  lib/sbi/sbi_init.c            |   3 +
>  lib/sbi/sbi_unit_test.c       |  43 +++++++++++
>  lib/sbi/sbi_unit_tests.carray |   3 +
>  10 files changed, 474 insertions(+)
>  create mode 100644 docs/writing_tests.md
>  create mode 100644 include/sbi/sbi_unit_test.h
>  create mode 100644 lib/sbi/sbi_bitmap_test.c
>  create mode 100644 lib/sbi/sbi_console_test.c
>  create mode 100644 lib/sbi/sbi_unit_test.c
>  create mode 100644 lib/sbi/sbi_unit_tests.carray
>
> --
> 2.34.1
>



More information about the opensbi mailing list