Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp1184545rdb; Wed, 20 Sep 2023 01:56:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH4Bs5DM7xFEknuW0NkZmJqnASWhXL1mbeCGklNB1aSSQy2d8u8Qf4T83bObgL8lhJJgJxF X-Received: by 2002:a05:6a00:b53:b0:690:c5cf:91f5 with SMTP id p19-20020a056a000b5300b00690c5cf91f5mr2091956pfo.18.1695200208324; Wed, 20 Sep 2023 01:56:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695200208; cv=none; d=google.com; s=arc-20160816; b=bMuqN32GQiHkDqkPyqis5Eox5JytAjTsFpXTT6ziPEDd4kjCJsjoi2Mij9QBXEUHFG T/sFuUgvH2TzwXM87lhJtegDBSluVDwkHTA47NHqQUBtp6zrBN0wQwS02M7gUiOUd/Bv unah94vdQBNgS/hvU6E4CQ62VUeymKW8/j13MWvsCWj+5ljDEcREQcBzRErU9kqXTSVd HohUeu8hDPQ71MF5DaLtPH52cceG5/7D/1H+X7YdtzkghZEJK8RZp5c5bgyy/kH0CMH9 epcxEzXR5NBLJV9pCV2V0WPHeabSSk4QpfaK0GilECSR0yF+v4NgeSfVri0VmXKcaTa8 D1FQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=6f2YjNt/+1rkpt/Lzv2XIvZ8Tczse3fWxIPQKRjUU6g=; fh=TLCuMDloLp2earPKFEtMHjAcQwhiAhbmgvUtXmK/gO0=; b=LGeJotjFvInFaHPTC0BAFxm05j0ZL3qrz3FDRIBg7ztRg8J03j//6yV2NO+4SkLkhv Tc1wlqxQDyTyihAaYvSFM8djHT5iOa8K9ujtFPs7JoBRcUSQXnDB316rbRgpVsARpjwP OV+RKAvUabdE+KkjEcL3T7seKP6ioGf1Ohviv6tIIMO8octQkJ5JVskcUjigxw7AhAVo B3ywYLXDmnjy1+QOqzuzwwtg3fRaCxGHZVyQqBZUBnzZAwVQp4CiaHSVV3PZ1vbR8RIg JFCTt28gwCgYAne3vvZ04nI8eE5xgF7lQdtDoDiTKFxeVE4FvWRIDkD087ZnbXMTShoJ rsRg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fFAMTd+2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id az1-20020a056a02004100b00573f9a427d6si8714155pgb.450.2023.09.20.01.56.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 01:56:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fFAMTd+2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 7F03E8198C6C; Wed, 20 Sep 2023 01:49:15 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233567AbjITItP (ORCPT + 99 others); Wed, 20 Sep 2023 04:49:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36852 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233125AbjITItO (ORCPT ); Wed, 20 Sep 2023 04:49:14 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6BDAA93; Wed, 20 Sep 2023 01:49:08 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8B8FCC433C7; Wed, 20 Sep 2023 08:49:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1695199748; bh=qSsw71s1Fjqhd6GpejqtDVQ+WOuNOzjUTZO9Z7vF7/U=; h=From:To:Cc:Subject:Date:From; b=fFAMTd+2BBf2WY/P+COVYj/C+yt5CW2oUw5+/gHjtBVXIg8DfalWC6QQBjBe0+lzI HCRD/4HKgXi6HHRdTJBRaP3MAtQfvuk4CuqD3kn14luq9yfCUZ219qJyhzlljI5rZ0 8GOsRtOiS4bY3sHoIrlScmuKF1T6NIfYXb/i0b+ci1NyaVrMNe3xaEUKH13jcFMCtE gKwWWwElx1pddNUlBvkKnp7oOVbW9AUj9bTtiYF0FLTQuEVCaPLu/Si1b39j9VM/A9 rGnf/k9CCmLomNoq1h3YsW+zmKbfqgMn2wC3CnTBuBvXwxQ8sRFz1Wt+ImMkHcNRNN Zc5kHJiq44UWQ== From: Maxime Ripard To: Brendan Higgins , David Gow Cc: Maxime Ripard , Jani Nikula , Rae Moar , linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org Subject: [PATCH v2] kunit: Warn if tests are slow Date: Wed, 20 Sep 2023 10:49:03 +0200 Message-ID: <20230920084903.1522728-1-mripard@kernel.org> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Wed, 20 Sep 2023 01:49:15 -0700 (PDT) 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 --- To: Brendan Higgins To: David Gow Cc: Jani Nikula Cc: Rae Moar Cc: linux-kselftest@vger.kernel.org Cc: kunit-dev@googlegroups.com Cc: linux-kernel@vger.kernel.org Changes from v1: - Split the patch out of the series - Change to trigger the warning only if the runtime is twice the threshold (Jani, Rae) - Split the speed check into a separate function (Rae) - Link: https://lore.kernel.org/all/20230911-kms-slow-tests-v1-0-d3800a69a1a1@kernel.org/ --- lib/kunit/test.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib/kunit/test.c b/lib/kunit/test.c index 49698a168437..a1d5dd2bf87d 100644 --- a/lib/kunit/test.c +++ b/lib/kunit/test.c @@ -372,6 +372,25 @@ void kunit_init_test(struct kunit *test, const char *name, char *log) } EXPORT_SYMBOL_GPL(kunit_init_test); +#define KUNIT_SPEED_SLOW_THRESHOLD_S 1 + +static void kunit_run_case_check_speed(struct kunit *test, + struct kunit_case *test_case, + struct timespec64 duration) +{ + enum kunit_speed speed = test_case->attr.speed; + + if (duration.tv_sec < (2 * KUNIT_SPEED_SLOW_THRESHOLD_S)) + return; + + if (speed == KUNIT_SPEED_VERY_SLOW || speed == KUNIT_SPEED_SLOW) + return; + + kunit_warn(test, + "Test should be marked slow (runtime: %lld.%09lds)", + duration.tv_sec, duration.tv_nsec); +} + /* * Initializes and runs test case. Does not clean up or do post validations. */ @@ -379,6 +398,8 @@ static void kunit_run_case_internal(struct kunit *test, struct kunit_suite *suite, struct kunit_case *test_case) { + struct timespec64 start, end; + if (suite->init) { int ret; @@ -390,7 +411,13 @@ static void kunit_run_case_internal(struct kunit *test, } } + ktime_get_ts64(&start); + test_case->run_case(test); + + ktime_get_ts64(&end); + + kunit_run_case_check_speed(test, test_case, timespec64_sub(end, start)); } static void kunit_case_internal_cleanup(struct kunit *test) -- 2.41.0