Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp106366ybv; Tue, 4 Feb 2020 17:21:06 -0800 (PST) X-Google-Smtp-Source: APXvYqxJ2IpIFjfwZq7pugJA8JXbKtIVhqxbnAESUoqQOUycWBbCb7ibyjr9Hfj3lpo8Anl18a5w X-Received: by 2002:aca:c256:: with SMTP id s83mr1338659oif.57.1580865666283; Tue, 04 Feb 2020 17:21:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580865666; cv=none; d=google.com; s=arc-20160816; b=zrbxo9KptafQJkKFj4QYz4xBi4vD3lkfAKqTGvDkICM2F/pFLw2dKsKq40INAA8e9S rxBvUlxHFf9QNdan5mA72PhP2yOOoWLTe1GWlwxiOGXes2HuIIaqa+gxWu9NEIivTNAP J0woov/PykcMmOlHW6e0CswRmGcZYKg1Q65Ox5WyVCRi2j8wUOuM3Bjo6527AyFAQ2Xj kkP4QCblhwrjoDgjvDX4umcaWqv6MJg3rSIdgFXip9GQWaOkMg/IiWgezLw59d3JC+ZY e8CBUleZOP1s7g/Ps2nVnS1a9NuW5fYI+nArcJPnEPZ8nyLSxEXaBRZRmYjBqkIAjIt9 fYOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=ehUZDKkbTDStuHx/pS6DuaspA135Mfd5By/OONirJ34=; b=jH/LfoZ4Uta3wVl/RtkhPdNTbS7O7Hl1ucZlxb9yF0qW7qDsRl9saUh1Mz3Eu2HcRk e1GMqLR6a/yYp3T21cwrZqoiM8mb0k+93NmNWEQQyqtPllkZ1TbTcCg0IZhl2tUDsEub 2hEhYzwNDJmLqiZp/cLJLpdeDvkJl02K88nZzCyzpPo+8S87kmFCmWyLdZuS5Z+l4Wzk ZBwkZKsgyl6Ic0m4fCPFI/Tx7cbtJV5NoRYTHWIriWq5bKhlkWdvYGkeoKlWXwZL+K/B cW/MzwQ2E/ZOl7+P94xdAiII3juAi+bBOxwGF1m6mWn/LJAk6+40g6Bnsx9vhsiDOa6N wUxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=aEb2zaRN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w207si11208198oia.226.2020.02.04.17.20.39; Tue, 04 Feb 2020 17:21:06 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=aEb2zaRN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727798AbgBEBR1 (ORCPT + 99 others); Tue, 4 Feb 2020 20:17:27 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:45821 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727791AbgBEBR1 (ORCPT ); Tue, 4 Feb 2020 20:17:27 -0500 Received: by mail-pg1-f196.google.com with SMTP id b9so83364pgk.12 for ; Tue, 04 Feb 2020 17:17:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ehUZDKkbTDStuHx/pS6DuaspA135Mfd5By/OONirJ34=; b=aEb2zaRNdrPfZXojfMR1qDxiSMQH7kF6i3jce+ifoVVxnFMNKmisV+hk1sz++QoJKa L5UzKB7KJuV96SSbHGx+5SNdd2HWC9ad+MVsOfAINXYqjnM5ypQYBmwlXtH/H2XSzAlJ U2uGA/3bAraovLBvIgxih9u02lM9cXP3Tqcqi2kluLyXyYZpt68kLMH5mZnoY1GdxD4D 7IeaLunIGZKPf6F4RzgL0DCN/BPTeHCSPtlsa75CkOf+PY6+oFXZp82GAl2nlushrGx7 P6wX1T5HSrusG/TUo0/eMswoN2VU2Q5XLghEbYdh+K6NVgYwiYRMe8jc0/W5oi3PfkKE x1LA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ehUZDKkbTDStuHx/pS6DuaspA135Mfd5By/OONirJ34=; b=d6V2N0Rzd3vqFvuH8G5el6SMj6t1vzIJjRukoezXuMClWrOUDC9qLgAJOS9tO7AZO6 VtE0rejjhVbeK3zZJ+f+c/wscColPycreJ6aCUyaxQVeXdU32+wGHvyUA5wvPAuvtinx NaV7T4qdp5ih8ilvviu2ryn8/B1O5I/Rh9zLJZC6UQSBAnAXHjjP5R1vAVHydzbX+v/S dhQfiR0dyz7PbX1Fw16elp7viz2V8UbPo1MGcu5Tr53/FmU4sOKkgmXfwAzLAAb4dIpJ vDHtrgBS84sV/aaRj6jcDE0FdkVg8V2Y6jQT1Np7dP72WetTS2SBvG7vDsU7YZ+fzYJz THIg== X-Gm-Message-State: APjAAAVmd2z9rld7psngJUzznZDY0qiTP3qWa+l4FnCG5Qvkfcghz7OJ o0Q5TzVkxKjKp0mIlKNlnTgkCHGhvlA47kNqPyJ1iA== X-Received: by 2002:a63:480f:: with SMTP id v15mr33530785pga.201.1580865445849; Tue, 04 Feb 2020 17:17:25 -0800 (PST) MIME-Version: 1.0 References: <20200130230812.142642-1-brendanhiggins@google.com> <20200130230812.142642-3-brendanhiggins@google.com> <1da1538d-2e4c-0ed0-5fae-6f9033230c46@gmail.com> In-Reply-To: <1da1538d-2e4c-0ed0-5fae-6f9033230c46@gmail.com> From: Brendan Higgins Date: Tue, 4 Feb 2020 17:17:14 -0800 Message-ID: Subject: Re: [PATCH v2 2/7] arch: um: add linker section for KUnit test suites To: Frank Rowand , David Gow Cc: Jeff Dike , Richard Weinberger , Anton Ivanov , Arnd Bergmann , Kees Cook , Shuah Khan , Alan Maguire , Iurii Zaikin , Andrew Morton , rppt@linux.ibm.com, Greg KH , Stephen Boyd , Logan Gunthorpe , Luis Chamberlain , Knut Omang , linux-um , linux-arch@vger.kernel.org, "open list:KERNEL SELFTEST FRAMEWORK" , KUnit Development , Linux Kernel Mailing List , "open list:DOCUMENTATION" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 4, 2020 at 3:17 PM Frank Rowand wrote: > > On 2/4/20 4:30 PM, Brendan Higgins wrote: > > On Tue, Feb 4, 2020 at 1:59 PM Frank Rowand wrote: > >> > >> On 1/30/20 5:08 PM, Brendan Higgins wrote: > >>> Add a linker section to UML where KUnit can put references to its test > >>> suites. This patch is an early step in transitioning to dispatching all > >>> KUnit tests from a centralized executor rather than having each as its > >>> own separate late_initcall. > >> > >> All architectures please. > > > > I *am* supporting all architectures with this patchset. > > > > The first patch in this series adds support to all architectures > > except UML (admittedly I only tried x86 and ARM, 32 bit and 64 bit for > > Right you are. My mind did not span from patch 1 to patch 2. Apologies for > the noise. > > > > both, but I am pretty sure someone tried it for POWER and something > > else, so maybe I should try it with others before submission). A patch > > specific for UML, this patch, was needed because UML is a special > > snowflake and has a bunch of special linker scripts that don't make > > the change in vmlinux.lds.h (the previous patch) sufficient. > > > >> The early versions of Kunit documented reliance on UML. Discussion lead to > >> the conclusion that real architectures and real hardware would be supported. > > > > I am *very* aware. > > > > I would never intentionally break support for other architectures. I > > know it is very important to you, Alan, and others. > > > >> This like this are what make me reluctant to move devicetree unittests to > >> KUnit. > > > > Hopefully I can reassure you then: > > > > With Alan as a regular contributor who cares very much about non-UML > > architectures, it would be very unlikely for me to accidentally break > > support for other architectures without us finding out before a > > release. > > > > I also periodically test KUnit on linux-next on x86-64. I have gotten > > bugs for other architectures from Arnd Bergmann and one of the m86k > > maintainers who seems to play around with it as well. > > > > So yeah, other people care about this too, and I would really not want > > to make any of them unhappy. > > Thanks for the extra reassurance. No worries. This actually makes me think that we should probably have some kind of automated test that at least makes sure that popular KUnit architectures are not broken. Someone is currently adding KUnit support to KernelCI; maybe we can have KernelCI run multiple architecture tests after the initial support is complete. > >> Can you please add a section to the KUnit documentation that lists things > >> like the expectations, requirements, limitations, etc for a test case that > >> is run by KUnit? Some examples that pop to mind from recent discussions > >> and my own experiences: > >> > >> - Each test case is invoked after late_init is complete. > >> + Exception: the possible value of being able to run a unit test > >> at a specific runlevel has been expressed. If an actual unit > >> test can be shown to require running earlier, this restriction > >> will be re-visited. > >> > >> - Each test case must be idempotent. Each test case may be called > >> multiple times, and must generate the same result each time it > >> is called. > >> + Exception 1: a test case can be declared to not be idempotent > >> [[ mechanism TBD ]], in which case KUnit will not call the > >> test case a second time without the kernel rebooting. > >> + Exception 2: hardware may not be deterministic, so a test that > >> always passes or fails when run under UML may not always to > >> so on real hardware. <--- sentence copied from > >> Documentation/dev-tools/kunit/usage.rst > >> [[ This item and 1st exception do not exist yet, but will exist > >> in some form if the proposed proc filesystem interface is > >> added. ]] > >> > >> - KUnit provides a helpful wrapper to simplify building a UML kernel > >> containing the KUnit test cases, booting the UML kernel, and > >> formatting the output from the test cases. This wrapper MUST NOT > >> be required to run the test cases or to determine a test result. > >> The formatting may provide additional analysis and improve > >> readability of a test result. > >> > >> - .... There is more that belongs here, but I'm getting side tracked > >> here, when I'm trying to instead convert devicetree unittests to > >> KUnit and want to get back to that. > > > > Sure, I think that's a great start! Thanks for that. I hope you don't > > mind if I copy and paste some of it. > > Please do. And no need to credit me. > > > > It kind of sounds like you are talking about more of a requirements > > doc than the design doc I was imagining in my reply to you on the > > cover letter, which is fine. The documentation is primarily for people > > other than me, so whatever you and others think is useful, I will do. > > > > I wasn't really sure what to label it as. My inspiration was based > a little bit on reading through the Linux 5.5 KUnit source and > documentation, and trying to understand the expectations of the > KUnit framework and what the test cases have to either obey or > can expect. > > I think there is a lot of history that you know, but is only visible > to test implementors if they read through the past couple of years > email threads. Yeah, that's no good. We need to provide a better experience than that. David has gotten deeply involved relatively recently: I suspect that he might have some good insight on this. David, you mentioned offline that there are some philosophical changes in how we think about KUnit that has happened that you feel have never quite been captured in the docs. Do you think this is part of what Frank has pointed out here? If not, do you have any thoughts about what we should call this documentation section? Shuah's first KUnit PR seemed to imply that KUnit was primarily for UML, or only fully supported under UML. So I think I might be the odd one out thinking that that has changed and the documentation properly conveys that.