Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp847820pxv; Wed, 14 Jul 2021 17:23:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw56tZO/3USG94ZPN8L/VOXbSRvDqLo1imUNDNXRfpJm7PHRNNCM7ifeX6pu8dFtp4G9CeT X-Received: by 2002:a92:8e04:: with SMTP id c4mr275737ild.219.1626308596641; Wed, 14 Jul 2021 17:23:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626308596; cv=none; d=google.com; s=arc-20160816; b=ZAQVVO+TQ12f02vIZDDvTKI3EsZEaR9TEyz/4PWuKZRAyl+N/wr/B7EavBfauFMFDf sOKiQ+Qg949NRC2w5skQqpGj+XK26JN05WOXf5SMfn5roCGZHW5ik5qTxbWPNSGUo4bF 6srOAAo9GebCgCMjEm9z4PWjqOA+E/yUgUVo1XVMIHC0TnKwPOzoKuNwGYfR2BNm8nmC lD+bmMScs66PxHv4Yv0g0/yHNVsOEHArffdYiIc9q5femuwUDxsJg51Cw46BulYXFdm8 9KAgdMqHVYheNYJEiJ1xk9VXYzbqQL6uAUFC9Go7GHu3F5uGsCLUWUA458mMXPFYgfb2 z99A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:mime-version:message-id:date :dkim-signature; bh=tbdzyFamT8pQc1mVhk+2w4TImGXTQGfmsYo5ttrPBMU=; b=w4qTINKAYs65R/mzanYFNpNELLQPFzaVFNuJuB7065FhES5XTxGzlrDEtLGC5Z10Qv IyoNlaD1Qu/P9bqEkKtB6wAF4yV/p8LYnCb2M15l1nfjDR/Uk8CRqNjaRxC+FC+jg/4e sNkgcMeG7pAF/2s6Ocnn6yp0ZpejvZB4Z4CARtPg9L+aPC9LnLJX72A0xkU819DkKovd owJTuSeVwGNwlwlJdvY6xWrL+Qa7s2CnLranhwTHUwrZn9ZaP56MHLrvJx+/Q1LjdCGf ZftLuNihh0Y/oOooZvJxbDfpDdsISmu3OuhEl7jW5eno6nUoZ+HN6jW8/t7GfUT3Afv5 H0lA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=dE4Ts12D; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id o5si4147246ioh.16.2021.07.14.17.23.04; Wed, 14 Jul 2021 17:23:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=dE4Ts12D; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S235574AbhGNXAo (ORCPT + 99 others); Wed, 14 Jul 2021 19:00:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39492 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234988AbhGNXAo (ORCPT ); Wed, 14 Jul 2021 19:00:44 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EEB75C061760 for ; Wed, 14 Jul 2021 15:57:51 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id w5-20020a0569021005b029055b51419c7dso4800188ybt.23 for ; Wed, 14 Jul 2021 15:57:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=tbdzyFamT8pQc1mVhk+2w4TImGXTQGfmsYo5ttrPBMU=; b=dE4Ts12Dib3b6drnj9ehCuKIL5IDPt2R/QW/Y5We/zaTkYzbjMcXxdPeM5xLYulvCV zxk2pC5zASse0Z193x4YZWlnJYWxB1Dq36jJm5EMiceaZr7pZPpkLcfSbSTXi8Aqfoy0 EMVxXwqrWnC/FzxnwhNHtfCRxbPMZMkJ7QcIFKgnCoH02TVhr3nq1f8TmT/ITZGopuAv 6jaDx01EAEf8LAU9EOAkTLrCHCM69Jf4ZXcZNXMB4vGD3utoAdeLGDfNUII9wIxxb235 YKXoyBi9q9CXr8a0CpAQtc2SE3bptrRpTTZeEUf+xZPXR+ozOdrQXl+ZqqCLzKCZSGpL AgKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=tbdzyFamT8pQc1mVhk+2w4TImGXTQGfmsYo5ttrPBMU=; b=frW9Al2s7c0kWbRh7wYETjNPEKfYjiKASx0YnWedBg4U2PL1Na3gFToSCA+WZ/27yY xKh9RdKHJpC1HTWSoglSLDFzPAd4X7gyB5tC5fFw1XgZi7Bmnz+6CoK6n6VBAL+PQlB3 HplsDiMB7tOQadgjR4SKHx1tjNJ2OcpOH4lHPYvU/+PZT+OcT2UpaKJIVSxFyWVajpuh +2VAC6+QQwFOhLaO+tP6O2vaDFgXZa3toPjPxQJQ0l6Ow14zZA4XTgVkhake3CuSjhz3 BfaRXQyZ4i4eEsPLZFDGHsIVTVX872dQHAbNFaXDhmlbk/vM1BvnC6lh/xOv1OAtk9BW 1JsA== X-Gm-Message-State: AOAM531ye8ieEIEjTYJXvCgtQ/g2qWUZEVeVaTaXGj84nTmoUZ3BxTZp Mp634N6yDgLiFXQupewciCDQQQi4B17AxA== X-Received: from dlatypov.svl.corp.google.com ([2620:15c:2cd:202:1109:2a1e:ff11:1796]) (user=dlatypov job=sendgmr) by 2002:a25:e803:: with SMTP id k3mr460065ybd.268.1626303471176; Wed, 14 Jul 2021 15:57:51 -0700 (PDT) Date: Wed, 14 Jul 2021 15:57:41 -0700 Message-Id: <20210714225741.882178-1-dlatypov@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.32.0.93.g670b81a890-goog Subject: [PATCH] kunit: tool: add --kernel_args to allow setting module params From: Daniel Latypov To: brendanhiggins@google.com, davidgow@google.com Cc: linux-kernel@vger.kernel.org, kunit-dev@googlegroups.com, linux-kselftest@vger.kernel.org, skhan@linuxfoundation.org, Daniel Latypov Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org kunit.py currently does not make it possible for users to specify module parameters (/kernel arguments more generally) unless one directly tweaks the kunit.py code itself. This hasn't mattered much so far, but this would make it easier to port existing tests that expose module parameters over to KUnit and/or let current KUnit tests take advantage of them. Tested using an kunit internal parameter: $ ./tools/testing/kunit/kunit.py run --kunitconfig=lib/kunit \ --kernel_args=kunit.filter_glob=kunit_status ... Testing complete. 2 tests run. 0 failed. 0 crashed. 0 skipped. Signed-off-by: Daniel Latypov --- Documentation/dev-tools/kunit/running_tips.rst | 10 ++++++++++ tools/testing/kunit/kunit.py | 16 ++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Documentation/dev-tools/kunit/running_tips.rst b/Documentation/dev-tools/kunit/running_tips.rst index 7d99386cf94a..bc37a2ad1598 100644 --- a/Documentation/dev-tools/kunit/running_tips.rst +++ b/Documentation/dev-tools/kunit/running_tips.rst @@ -80,6 +80,16 @@ file ``.kunitconfig``, you can just pass in the dir, e.g. automagically, but tests could theoretically depend on incompatible options, so handling that would be tricky. +Setting kernel commandline parameters +------------------------------------- + +You can use ``--kernel_arg`` to pass arbitrary kernel arguments, e.g. + +.. code-block:: bash + + $ ./tools/testing/kunit/kunit.py run --kernel_arg=param=42 --kernel_arg=param2=false + + Generating code coverage reports under UML ------------------------------------------ diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py index be8d8d4a4e08..03f3bc406955 100755 --- a/tools/testing/kunit/kunit.py +++ b/tools/testing/kunit/kunit.py @@ -28,12 +28,13 @@ KunitBuildRequest = namedtuple('KunitBuildRequest', ['jobs', 'build_dir', 'alltests', 'make_options']) KunitExecRequest = namedtuple('KunitExecRequest', - ['timeout', 'build_dir', 'alltests', 'filter_glob']) + ['timeout', 'build_dir', 'alltests', + 'filter_glob', 'kernel_args']) KunitParseRequest = namedtuple('KunitParseRequest', ['raw_output', 'input_data', 'build_dir', 'json']) KunitRequest = namedtuple('KunitRequest', ['raw_output','timeout', 'jobs', 'build_dir', 'alltests', 'filter_glob', - 'json', 'make_options']) + 'kernel_args', 'json', 'make_options']) KernelDirectoryPath = sys.argv[0].split('tools/testing/kunit/')[0] @@ -92,6 +93,7 @@ def exec_tests(linux: kunit_kernel.LinuxSourceTree, kunit_parser.print_with_timestamp('Starting KUnit Kernel ...') test_start = time.time() result = linux.run_kernel( + args=request.kernel_args, timeout=None if request.alltests else request.timeout, filter_glob=request.filter_glob, build_dir=request.build_dir) @@ -150,7 +152,8 @@ def run_tests(linux: kunit_kernel.LinuxSourceTree, return build_result exec_request = KunitExecRequest(request.timeout, request.build_dir, - request.alltests, request.filter_glob) + request.alltests, request.filter_glob, + request.kernel_args) exec_result = exec_tests(linux, exec_request) if exec_result.status != KunitStatus.SUCCESS: return exec_result @@ -236,6 +239,9 @@ def add_exec_opts(parser) -> None: nargs='?', default='', metavar='filter_glob') + parser.add_argument('--kernel_args', + help='Kernel command-line parameters. Maybe be repeated', + action='append') def add_parse_opts(parser) -> None: parser.add_argument('--raw_output', help='don\'t format output from kernel', @@ -307,6 +313,7 @@ def main(argv, linux=None): cli_args.build_dir, cli_args.alltests, cli_args.filter_glob, + cli_args.kernel_args, cli_args.json, cli_args.make_options) result = run_tests(linux, request) @@ -361,7 +368,8 @@ def main(argv, linux=None): exec_request = KunitExecRequest(cli_args.timeout, cli_args.build_dir, cli_args.alltests, - cli_args.filter_glob) + cli_args.filter_glob, + cli_args.kernel_args) exec_result = exec_tests(linux, exec_request) parse_request = KunitParseRequest(cli_args.raw_output, exec_result.result, base-commit: 8096acd7442e613fad0354fc8dfdb2003cceea0b -- 2.32.0.93.g670b81a890-goog