From: Frank Rowand <frowand.list@gmail.com>
To: Brendan Higgins <brendanhiggins@google.com>,
keescook@google.com, mcgrof@kernel.org, shuah@kernel.org,
robh@kernel.org, kieran.bingham@ideasonboard.com
Cc: brakmo@fb.com, pmladek@suse.com, amir73il@gmail.com,
dri-devel@lists.freedesktop.org, Alexander.Levin@microsoft.com,
linux-kselftest@vger.kernel.org, linux-nvdimm@lists.01.org,
richard@nod.at, knut.omang@oracle.com, wfg@linux.intel.com,
joel@jms.id.au, jdike@addtoit.com, dan.carpenter@oracle.com,
devicetree@vger.kernel.org, Tim.Bird@sony.com,
linux-um@lists.infradead.org, rostedt@goodmis.org,
julia.lawall@lip6.fr, dan.j.williams@intel.com,
kunit-dev@googlegroups.com, gregkh@linuxfoundation.org,
linux-kernel@vger.kernel.org, daniel@ffwll.ch,
mpe@ellerman.id.au, joe@perches.com, khilman@baylibre.com
Subject: Re: [RFC v4 00/17] kunit: introduce KUnit, the Linux kernel unit testing framework
Date: Mon, 18 Feb 2019 12:02:24 -0800 [thread overview]
Message-ID: <a6ae907e-391b-993e-6011-6f40c761b339@gmail.com> (raw)
In-Reply-To: <20190214213729.21702-1-brendanhiggins@google.com>
On 2/14/19 1:37 PM, Brendan Higgins wrote:
> This patch set proposes KUnit, a lightweight unit testing and mocking
> framework for the Linux kernel.
>
> Unlike Autotest and kselftest, KUnit is a true unit testing framework;
> it does not require installing the kernel on a test machine or in a VM
> and does not require tests to be written in userspace running on a host
> kernel. Additionally, KUnit is fast: From invocation to completion KUnit
> can run several dozen tests in under a second. Currently, the entire
> KUnit test suite for KUnit runs in under a second from the initial
> invocation (build time excluded).
>
> KUnit is heavily inspired by JUnit, Python's unittest.mock, and
> Googletest/Googlemock for C++. KUnit provides facilities for defining
> unit test cases, grouping related test cases into test suites, providing
> common infrastructure for running tests, mocking, spying, and much more.
>
> ## What's so special about unit testing?
>
> A unit test is supposed to test a single unit of code in isolation,
> hence the name. There should be no dependencies outside the control of
> the test; this means no external dependencies, which makes tests orders
> of magnitudes faster. Likewise, since there are no external dependencies,
> there are no hoops to jump through to run the tests. Additionally, this
> makes unit tests deterministic: a failing unit test always indicates a
> problem. Finally, because unit tests necessarily have finer granularity,
> they are able to test all code paths easily solving the classic problem
> of difficulty in exercising error handling code.
>
> ## Is KUnit trying to replace other testing frameworks for the kernel?
>
> No. Most existing tests for the Linux kernel are end-to-end tests, which
> have their place. A well tested system has lots of unit tests, a
> reasonable number of integration tests, and some end-to-end tests. KUnit
> is just trying to address the unit test space which is currently not
> being addressed.
>
> ## More information on KUnit
>
> There is a bunch of documentation near the end of this patch set that
> describes how to use KUnit and best practices for writing unit tests.
> For convenience I am hosting the compiled docs here:
> https://google.github.io/kunit-docs/third_party/kernel/docs/
> Additionally for convenience, I have applied these patches to a branch:
> https://kunit.googlesource.com/linux/+/kunit/rfc/5.0-rc5/v4
> The repo may be cloned with:
> git clone https://kunit.googlesource.com/linux
> This patchset is on the kunit/rfc/5.0-rc5/v4 branch.
>
> ## Changes Since Last Version
>
> - Got KUnit working on (hypothetically) all architectures (tested on
> x86), as per Rob's (and other's) request
> - Punting all KUnit features/patches depending on UML for now.
> - Broke out UML specific support into arch/um/* as per "[RFC v3 01/19]
> kunit: test: add KUnit test runner core", as requested by Luis.
> - Added support to kunit_tool to allow it to build kernels in external
> directories, as suggested by Kieran.
> - Added a UML defconfig, and a config fragment for KUnit as suggested
> by Kieran and Luis.
> - Cleaned up, and reformatted a bunch of stuff.
>
I have not read through the patches in any detail. I have read some of
the code to try to understand the patches to the devicetree unit tests.
So that may limit how valid my comments below are.
I found the code difficult to read in places where it should have been
much simpler to read. Structuring the code in a pseudo object oriented
style meant that everywhere in a code path that I encountered a dynamic
function call, I had to go find where that dynamic function call was
initialized (and being the cautious person that I am, verify that
no where else was the value of that dynamic function call). With
primitive vi and tags, that search would have instead just been a
simple key press (or at worst a few keys) if hard coded function
calls were done instead of dynamic function calls. In the code paths
that I looked at, I did not see any case of a dynamic function being
anything other than the value it was originally initialized as.
There may be such cases, I did not read the entire patch set. There
may also be cases envisioned in the architects mind of how this
flexibility may be of future value. Dunno.
-Frank
_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um
next prev parent reply other threads:[~2019-02-18 20:02 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-14 21:37 [RFC v4 00/17] kunit: introduce KUnit, the Linux kernel unit testing framework Brendan Higgins
2019-02-14 21:37 ` [RFC v4 01/17] kunit: test: add KUnit test runner core Brendan Higgins
2019-02-14 21:37 ` [RFC v4 02/17] kunit: test: add test resource management API Brendan Higgins
2019-02-15 21:01 ` Stephen Boyd
2019-02-19 23:24 ` Brendan Higgins
2019-02-14 21:37 ` [RFC v4 03/17] kunit: test: add string_stream a std::stream like string builder Brendan Higgins
2019-02-14 21:37 ` [RFC v4 04/17] kunit: test: add test_stream a std::stream like logger Brendan Higgins
2019-02-14 21:37 ` [RFC v4 05/17] kunit: test: add the concept of expectations Brendan Higgins
2019-02-14 21:37 ` [RFC v4 06/17] kbuild: enable building KUnit Brendan Higgins
2019-02-14 21:37 ` [RFC v4 07/17] kunit: test: add initial tests Brendan Higgins
2019-02-14 21:37 ` [RFC v4 08/17] kunit: test: add support for test abort Brendan Higgins
2019-02-18 19:52 ` Frank Rowand
2019-02-20 3:39 ` Brendan Higgins
2019-02-20 6:44 ` Frank Rowand
2019-02-28 7:42 ` Brendan Higgins
2019-03-22 1:09 ` Frank Rowand
2019-03-22 1:41 ` Brendan Higgins
2019-03-22 7:10 ` Knut Omang
2019-03-25 22:32 ` Brendan Higgins
2019-03-26 7:44 ` Knut Omang
2019-02-26 20:35 ` Stephen Boyd
2019-02-28 9:03 ` Brendan Higgins
2019-02-28 13:54 ` Dan Carpenter
2019-03-04 22:28 ` Brendan Higgins
[not found] ` <155137694423.260864.2846034318906225490@swboyd.mtv.corp.google.com>
2019-03-04 22:39 ` Brendan Higgins
2019-02-14 21:37 ` [RFC v4 09/17] kunit: test: add the concept of assertions Brendan Higgins
2019-02-14 21:37 ` [RFC v4 10/17] kunit: test: add test managed resource tests Brendan Higgins
2019-02-15 20:54 ` Stephen Boyd
2019-02-19 23:20 ` Brendan Higgins
2019-02-14 21:37 ` [RFC v4 11/17] kunit: tool: add Python wrappers for running KUnit tests Brendan Higgins
2019-02-14 21:37 ` [RFC v4 12/17] kunit: defconfig: add defconfigs for building " Brendan Higgins
2019-02-14 21:37 ` [RFC v4 13/17] Documentation: kunit: add documentation for KUnit Brendan Higgins
2019-02-14 21:37 ` [RFC v4 14/17] MAINTAINERS: add entry for KUnit the unit testing framework Brendan Higgins
2019-02-14 21:37 ` [RFC v4 15/17] of: unittest: migrate tests to run on KUnit Brendan Higgins
2019-02-16 0:24 ` Frank Rowand
2019-02-20 2:24 ` Brendan Higgins
2019-02-14 21:37 ` [RFC v4 16/17] of: unittest: split out a couple of test cases from unittest Brendan Higgins
2019-03-22 1:14 ` Frank Rowand
2019-03-22 1:45 ` Brendan Higgins
2019-02-14 21:37 ` [RFC v4 17/17] of: unittest: split up some super large test cases Brendan Higgins
2019-03-22 1:16 ` Frank Rowand
2019-03-22 1:45 ` Brendan Higgins
2019-02-18 20:02 ` Frank Rowand [this message]
2019-02-20 6:34 ` [RFC v4 00/17] kunit: introduce KUnit, the Linux kernel unit testing framework Brendan Higgins
2019-02-20 6:46 ` Frank Rowand
2019-02-22 20:52 ` Thiago Jung Bauermann
2019-02-28 4:18 ` Brendan Higgins
2019-02-28 4:15 ` Brendan Higgins
2019-03-04 23:01 ` Brendan Higgins
2019-03-22 1:23 ` Frank Rowand
2019-03-25 22:11 ` Brendan Higgins
2019-03-21 1:07 ` Logan Gunthorpe
2019-03-21 5:23 ` Knut Omang
2019-03-21 15:56 ` Logan Gunthorpe
2019-03-21 16:55 ` Brendan Higgins
2019-03-21 19:13 ` Knut Omang
2019-03-21 19:29 ` Logan Gunthorpe
2019-03-21 20:14 ` Knut Omang
2019-03-21 22:07 ` Brendan Higgins
2019-03-21 22:26 ` Logan Gunthorpe
2019-03-21 23:33 ` Brendan Higgins
2019-03-22 1:12 ` Frank Rowand
2019-03-25 22:12 ` Brendan Higgins
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=a6ae907e-391b-993e-6011-6f40c761b339@gmail.com \
--to=frowand.list@gmail.com \
--cc=Alexander.Levin@microsoft.com \
--cc=Tim.Bird@sony.com \
--cc=amir73il@gmail.com \
--cc=brakmo@fb.com \
--cc=brendanhiggins@google.com \
--cc=dan.carpenter@oracle.com \
--cc=dan.j.williams@intel.com \
--cc=daniel@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=jdike@addtoit.com \
--cc=joe@perches.com \
--cc=joel@jms.id.au \
--cc=julia.lawall@lip6.fr \
--cc=keescook@google.com \
--cc=khilman@baylibre.com \
--cc=kieran.bingham@ideasonboard.com \
--cc=knut.omang@oracle.com \
--cc=kunit-dev@googlegroups.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-nvdimm@lists.01.org \
--cc=linux-um@lists.infradead.org \
--cc=mcgrof@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=pmladek@suse.com \
--cc=richard@nod.at \
--cc=robh@kernel.org \
--cc=rostedt@goodmis.org \
--cc=shuah@kernel.org \
--cc=wfg@linux.intel.com \
/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