On Wed, 2020-07-15 at 11:47 +0800, David Gow wrote:
On Wed, Jul 15, 2020 at 11:11 AM Vitor Massaru Iha <vitor@massaru.org
wrote: Currently, KUnit does not allow the use of tests as a module. This prevents the implementation of tests that require userspace.
If this is what I think it is, thanks! I'll hopefully get a chance to play with it over the next few days.
Can we clarify what this means: the current description is a little misleading, as KUnit tests can already be built and run as modules, and "tests that require userspace" is a bit broad.
As I understand it, this patchset does three things:
- Let kunit_tool install modules to a root filesystem and boot UML
with that filesystem.
- Have tests inherit the mm of the process that started them, which
(if the test is in a module), provides a user-space memory context so that copy_{from,to}_user() works.
- Port the test_user_copy.c tests to KUnit, using this new feature.
A few comments from my quick glance over it:
- The rootfs support is useful: I'm curious how it'll interact with
non-UML architectures in [1]. It'd be nice for this to be extensible and to not explicitly state UML where possible.
Hm, I didn't think about other architectures. Which ones are you thinking ?
- The inheriting of the mm stuff still means that
copy_{from,to}_user() will only work if loaded as a module. This really needs to be documented. (Ideally, we'd find a way of having this work even for built-in tests, but I don't have any real ideas as to how that could be done).
Sure, I'll write the documentation.
- It'd be nice to split the test_user_copy.c test port into a
separate commit. In fact, it may make sense to also split the kunit_tool changes and the mm changes into separate series, as they're both quite useful independently.
I'll do it.
Thanks for the review.