public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <mripard@kernel.org>
To: Brendan Higgins <brendan.higgins@linux.dev>,
	David Gow <davidgow@google.com>, David Airlie <airlied@gmail.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Thomas Zimmermann <tzimmermann@suse.de>
Cc: "Maíra Canal" <mairacanal@riseup.net>,
	linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	"Maxime Ripard" <mripard@kernel.org>
Subject: [PATCH 1/2] kunit: Warn if tests are slow
Date: Mon, 11 Sep 2023 11:51:05 +0200	[thread overview]
Message-ID: <20230911-kms-slow-tests-v1-1-d3800a69a1a1@kernel.org> (raw)
In-Reply-To: <20230911-kms-slow-tests-v1-0-d3800a69a1a1@kernel.org>

Kunit recently gained support to setup attributes, the first one being
the speed of a given test, then allowing to filter out slow tests.

A slow test is defined in the documentation as taking more than one
second. There's an another speed attribute called "super slow" but whose
definition is less clear.

Add support to the test runner to check the test execution time, and
report tests that should be marked as slow but aren't.

Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
 lib/kunit/test.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/lib/kunit/test.c b/lib/kunit/test.c
index 49698a168437..a3b924501f3d 100644
--- a/lib/kunit/test.c
+++ b/lib/kunit/test.c
@@ -379,6 +379,9 @@ static void kunit_run_case_internal(struct kunit *test,
 				    struct kunit_suite *suite,
 				    struct kunit_case *test_case)
 {
+	struct timespec64 start, end;
+	struct timespec64 duration;
+
 	if (suite->init) {
 		int ret;
 
@@ -390,7 +393,20 @@ static void kunit_run_case_internal(struct kunit *test,
 		}
 	}
 
+	ktime_get_ts64(&start);
+
 	test_case->run_case(test);
+
+	ktime_get_ts64(&end);
+
+	duration = timespec64_sub(end, start);
+
+	if (duration.tv_sec >= 1 &&
+	    (test_case->attr.speed == KUNIT_SPEED_UNSET ||
+	     test_case->attr.speed >= KUNIT_SPEED_NORMAL))
+		kunit_warn(test,
+			   "Test should be marked slow (runtime: %lld.%09lds)",
+			   duration.tv_sec, duration.tv_nsec);
 }
 
 static void kunit_case_internal_cleanup(struct kunit *test)

-- 
2.41.0


  reply	other threads:[~2023-09-11 21:47 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-11  9:51 [PATCH 0/2] drm/tests: Flag slow kunit tests as such Maxime Ripard
2023-09-11  9:51 ` Maxime Ripard [this message]
2023-09-11 10:07   ` [PATCH 1/2] kunit: Warn if tests are slow Jani Nikula
2023-09-11 11:25     ` Maxime Ripard
2023-09-19 19:48   ` Rae Moar
2023-09-20  7:06     ` Maxime Ripard
2023-09-11  9:51 ` [PATCH 2/2] drm/tests: Flag slow tests as such Maxime Ripard
2023-09-12  7:36   ` Daniel Vetter
2023-09-14 13:24     ` Maxime Ripard

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=20230911-kms-slow-tests-v1-1-d3800a69a1a1@kernel.org \
    --to=mripard@kernel.org \
    --cc=airlied@gmail.com \
    --cc=brendan.higgins@linux.dev \
    --cc=daniel@ffwll.ch \
    --cc=davidgow@google.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=kunit-dev@googlegroups.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mairacanal@riseup.net \
    --cc=tzimmermann@suse.de \
    /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