All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Latypov <dlatypov@google.com>
To: Stephen Boyd <sboyd@kernel.org>
Cc: Michael Turquette <mturquette@baylibre.com>,
	linux-kernel@vger.kernel.org,  linux-clk@vger.kernel.org,
	patches@lists.linux.dev,
	 Brendan Higgins <brendan.higgins@linux.dev>,
	David Gow <davidgow@google.com>,
	 Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	 Rob Herring <robh+dt@kernel.org>,
	Frank Rowand <frowand.list@gmail.com>,
	 Christian Marangi <ansuelsmth@gmail.com>,
	 Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	devicetree@vger.kernel.org,  linux-kselftest@vger.kernel.org,
	kunit-dev@googlegroups.com,  Maxime Ripard <maxime@cerno.tech>
Subject: Re: [PATCH v3 05/11] of: Add a KUnit test for overlays and test managed APIs
Date: Wed, 12 Apr 2023 17:04:26 -0700	[thread overview]
Message-ID: <CAGS_qxryWVOT9cBtKk28=NupbLP6_AiCj0P3np2GpMVKkyQOLg@mail.gmail.com> (raw)
In-Reply-To: <20230327222159.3509818-6-sboyd@kernel.org>

On Mon, Mar 27, 2023 at 3:22 PM Stephen Boyd <sboyd@kernel.org> wrote:
>
> Test the KUnit test managed overlay APIs. Confirm that platform devices
> are created and destroyed properly. This provides us confidence that the
> test managed work correctly and can be relied upon to provide tests with
> fake platform devices and device nodes via overlays compiled into the
> kernel image.
>

The discussion around kunit_cleanup() caught my eye below, so one
small comment about that.

<snip>

> +/* Test that of_overlay_apply_kunit() cleans up after the test is finished */
> +static void of_overlay_apply_kunit_cleanup(struct kunit *test)
> +{
> +       struct device *dev;
> +       struct device_node *np;
> +
> +       KUNIT_ASSERT_EQ(test, 0,
> +                       of_overlay_apply_kunit(test, kunit_overlay_test));
> +
> +       np = of_find_node_by_name(NULL, kunit_node_name);
> +       of_node_put(np); /* Not derefing 'np' after this */
> +       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, np);
> +
> +       dev = bus_find_device(&platform_bus_type, NULL, np, bus_match_np);
> +       put_device(dev); /* Not derefing 'device' after this */
> +       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
> +
> +       /* Remove overlay */
> +       kunit_cleanup(test);

Note: this cleans up *all* resources associated with `test`.
Right now, it's probably fine, but this probably isn't the safest approach.

Notably, two of the new/upcoming API changes rely on resource,
kunit/static_stub.h and kunit_add_action() [1].
Calling kunit_cleanup() undoes all the stubs and immediately triggers
all the actions.

Perhaps you can create your own local `struct kunit` like in [2]
E.g.

struct kunit subtest; // not sure what to call this...

kunit_init_test(&subtest, "fake test", NULL);
/* use subtest */
kunit_cleanup(&subtest);

There's also already-submitted code doing similar things in
lib/kunit/kunit-test.c you can look at, but it's in init/exit funcs.
See kunit_resource_test_init() and kunit_resource_test_exit().

[1] https://lore.kernel.org/linux-kselftest/20230331080411.981038-2-davidgow@google.com/
[2] https://lore.kernel.org/linux-kselftest/20230403201930.2019419-1-rmoar@google.com/

Daniel

  parent reply	other threads:[~2023-04-13  0:04 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-27 22:21 [PATCH v3 00/11] clk: Add kunit tests for fixed rate and parent data Stephen Boyd
2023-03-27 22:21 ` [PATCH v3 01/11] of: Add KUnit test to confirm DTB is loaded Stephen Boyd
2023-03-27 22:21 ` [PATCH v3 02/11] of: Add test managed wrappers for of_overlay_apply()/of_node_put() Stephen Boyd
2023-04-06 14:35   ` Rob Herring
2023-04-10 19:51     ` Stephen Boyd
2023-03-27 22:21 ` [PATCH v3 03/11] dt-bindings: vendor-prefixes: Add "test" vendor for KUnit and friends Stephen Boyd
2023-04-06 15:02   ` Rob Herring
2023-03-27 22:21 ` [PATCH v3 04/11] dt-bindings: test: Add KUnit empty node binding Stephen Boyd
2023-04-06 15:02   ` Rob Herring
2023-03-27 22:21 ` [PATCH v3 05/11] of: Add a KUnit test for overlays and test managed APIs Stephen Boyd
2023-04-06 14:59   ` Rob Herring
2023-04-10 20:12     ` Stephen Boyd
2023-04-13  0:04   ` Daniel Latypov [this message]
2023-04-13  0:26     ` Stephen Boyd
2023-03-27 22:21 ` [PATCH v3 06/11] platform: Add test managed platform_device/driver APIs Stephen Boyd
2023-03-27 22:21 ` [PATCH v3 07/11] dt-bindings: kunit: Add fixed rate clk consumer test Stephen Boyd
2023-04-06 15:02   ` Rob Herring
2023-03-27 22:21 ` [PATCH v3 08/11] clk: Add test managed clk provider/consumer APIs Stephen Boyd
2023-03-27 22:21 ` [PATCH v3 09/11] clk: Add KUnit tests for clk fixed rate basic type Stephen Boyd
2023-03-27 22:21 ` [PATCH v3 10/11] dt-bindings: clk: Add KUnit clk_parent_data test Stephen Boyd
2023-04-06 15:03   ` Rob Herring
2023-03-27 22:21 ` [PATCH v3 11/11] clk: Add KUnit tests for clks registered with struct clk_parent_data Stephen Boyd

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='CAGS_qxryWVOT9cBtKk28=NupbLP6_AiCj0P3np2GpMVKkyQOLg@mail.gmail.com' \
    --to=dlatypov@google.com \
    --cc=ansuelsmth@gmail.com \
    --cc=brendan.higgins@linux.dev \
    --cc=davidgow@google.com \
    --cc=devicetree@vger.kernel.org \
    --cc=frowand.list@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=kunit-dev@googlegroups.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=maxime@cerno.tech \
    --cc=mturquette@baylibre.com \
    --cc=patches@lists.linux.dev \
    --cc=rafael@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.