linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Cc: "Christoph Hellwig" <hch@lst.de>, "Shuah Khan" <shuah@kernel.org>,
	"Masahiro Yamada" <masahiroy@kernel.org>,
	"Nathan Chancellor" <nathan@kernel.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Willy Tarreau" <w@1wt.eu>,
	"Thomas Weißschuh" <linux@weissschuh.net>,
	"Brendan Higgins" <brendan.higgins@linux.dev>,
	"David Gow" <davidgow@google.com>, "Rae Moar" <rmoar@google.com>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Nicolas Schier" <nicolas.schier@linux.dev>,
	"Kees Cook" <kees@kernel.org>,
	"Alexander Viro" <viro@zeniv.linux.org.uk>,
	"Christian Brauner" <brauner@kernel.org>,
	"Jan Kara" <jack@suse.cz>, "Luis Chamberlain" <mcgrof@kernel.org>,
	"Christophe Leroy" <christophe.leroy@csgroup.eu>,
	linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com,
	linux-doc@vger.kernel.org, workflows@vger.kernel.org,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH v5 00/15] kunit: Introduce UAPI testing framework
Date: Tue, 12 Aug 2025 11:41:07 +0200	[thread overview]
Message-ID: <20250812094107.GA27450@lst.de> (raw)
In-Reply-To: <20250721100913-0c6d93d8-79d6-482b-9db4-7b0c06b604fa@linutronix.de>

On Mon, Aug 04, 2025 at 05:01:35PM +0200, Thomas Weißschuh wrote:
> > That's great.  Let's reuse it without having to drive running userspace
> > programs from kernel code.
> 
> Running in the kernel is the point behind KUnit.

When using kunit as is to unit test kernel functionality - obviously.

When running it to integration test the syscall boundary - not at all.

> It could be done by putting
> all the userspace test into a initramfs and run them on boot from there.
> But that has other drawbacks:
> * The tests can't be run on an existing system.
> * All tests need to be loaded into memory together, and not on demand.
> * The tests can not be rerun.

None of that is true.  While running syscall level tests from an
initramfs could be a nice feature for an automatd kernel CI system,
nothin in this tests should require running from an initramfs.

> This was a response to one specific statement. Could you be a bit more specific
> in your critique? I am not sure what exactly you mean in some cases, making it
> hard to respond properly. For example "bloat", it is bloaty
> * source code,
> * object code for users enabling the new kconfig options,
> * object code for other users *not* enabling the new kconfig options?

You are adding kernel code both at the source and object level to run
userspace tests.  That is very clearly bloat.  Even more so as it adds
functionality and exports that don't fit in with what the kernel already
does for actual kernel functionality.

> > > It is not and most probably won't ever be. The maintainers of each testcase
> > > will decide which libc to use. Like it is in tools/testing/selftests/ today.
> > > Some use glibc, some nolibc and some can do both.
> > 
> > So why do you want to use it here?  And how is is related to the rest
> > of the series?
> 
> To make it easier to test a wide range of architectures by not requiring a
> libc from the toolchain. It also avoids relying on a bunch of out-of-tree
> code (glibc) as part of the test. And there are existing kselftests which
> use it over glibc for their own reasons.
> 
> But using nolibc in test code is not necessary and nobody is forced to do so.
> 
> (Maybe a disclaimer that I'm one of the nolibc maintainers is in order)

Well, why do you even mix it up with this unrelated series then?

> To run kselftests we need the following things:
> a) A toolchain which can build userspace executables.

You'll need that for any userspace program, no matter what test
harness.

> b) Quite a bit of supporting userland, at least glibc, coreutils and bash.

Well, a libc you will need anyway.  Maybe nolibc is good enough for
some tests, but as you already stated not for very many.  The others
are just an artifcat of how you run tests.

> c) A rootfs assembled out of these.
> d) An efficient way to incrementally rebuild the test executables and rootfs.
> e) A way to put that rootfs into the system under test.

You don't need a rootfs.

> And for all of this there should be good in-tree tooling.

Absolutely.

> Moving to a pure userspace solution would preclude the usage of KUnit as far as
> I can see.

You've still failed why using kunit is the goal and not just something
that made your life easier archieving your goal.

> > Yes, kselftests suck as most people will agree. But the answer is not
> > to add a lot of kernel bloat to treat userspace integration tests
> > like kernel units tests.
> 
> I fail to understand how this test code is worse than the existing KUnit test
> code. This is not meant to test complex scenarios, but single system calls or
> specific UAPIs, which may depend on architecture features. For example timers,
> signals, vDSO, mm etc.

So now having another half-assed test framework is a good thing?

> > How about you just fix kselftests, preferably
> > by reusing well known and teststed userland code?
> 
> Is "well known and tested userland code" referring to glibc or testing
> frameworks? As mentioned above, glibc can be used just fine and the frameworks
> I know about are lacking.

Basically any kind of testing framework that has broad use.  It's not
like there aren't userland unit test frameworks if you really want to
use that.

      reply	other threads:[~2025-08-12  9:41 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-17  8:48 [PATCH v5 00/15] kunit: Introduce UAPI testing framework Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 01/15] kbuild: userprogs: avoid duplication of flags inherited from kernel Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 02/15] kbuild: userprogs: also inherit byte order and ABI " Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 03/15] kbuild: doc: add label for userprogs section Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 04/15] init: re-add CONFIG_CC_CAN_LINK_STATIC Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 05/15] init: add nolibc build support Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 06/15] fs,fork,exit: export symbols necessary for KUnit UAPI support Thomas Weißschuh
2025-07-18 16:44   ` Al Viro
2025-07-21  6:42     ` Thomas Weißschuh
2025-07-21  7:20       ` Christoph Hellwig
2025-07-17  8:48 ` [PATCH v5 07/15] kunit: tool: Add test for nested test result reporting Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 08/15] kunit: tool: Don't overwrite test status based on subtest counts Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 09/15] kunit: tool: Parse skipped tests from kselftest.h Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 10/15] kunit: Always descend into kunit directory during build Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 11/15] kunit: qemu_configs: loongarch: Enable LSX/LSAX Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 12/15] kunit: Introduce UAPI testing framework Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 13/15] kunit: uapi: Add example for UAPI tests Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 14/15] kunit: uapi: Introduce preinit executable Thomas Weißschuh
2025-07-17  8:48 ` [PATCH v5 15/15] kunit: uapi: Validate usability of /proc Thomas Weißschuh
2025-07-17 13:23 ` [PATCH v5 00/15] kunit: Introduce UAPI testing framework Christoph Hellwig
2025-07-17 13:49   ` Mark Brown
2025-07-18  6:22   ` Thomas Weißschuh
2025-07-21  7:09     ` Christoph Hellwig
2025-08-04 15:01       ` Thomas Weißschuh
2025-08-12  9:41         ` Christoph Hellwig [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250812094107.GA27450@lst.de \
    --to=hch@lst.de \
    --cc=akpm@linux-foundation.org \
    --cc=brauner@kernel.org \
    --cc=brendan.higgins@linux.dev \
    --cc=christophe.leroy@csgroup.eu \
    --cc=corbet@lwn.net \
    --cc=davidgow@google.com \
    --cc=jack@suse.cz \
    --cc=kees@kernel.org \
    --cc=kunit-dev@googlegroups.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux@weissschuh.net \
    --cc=masahiroy@kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=nathan@kernel.org \
    --cc=nicolas.schier@linux.dev \
    --cc=rmoar@google.com \
    --cc=shuah@kernel.org \
    --cc=thomas.weissschuh@linutronix.de \
    --cc=viro@zeniv.linux.org.uk \
    --cc=w@1wt.eu \
    --cc=workflows@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).