lkml.org 
[lkml]   [2019]   [Aug]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v12 14/18] kunit: defconfig: add defconfigs for building KUnit tests
    From
    Add defconfig for UML and a fragment that can be used to configure other
    architectures for building KUnit tests. Add option to kunit_tool to use
    a defconfig to create the kunitconfig.

    Signed-off-by: Brendan Higgins <brendanhiggins@google.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
    ---
    arch/um/configs/kunit_defconfig | 8 ++++++
    tools/testing/kunit/configs/all_tests.config | 8 ++++++
    tools/testing/kunit/kunit.py | 28 +++++++++++++++++---
    tools/testing/kunit/kunit_kernel.py | 3 ++-
    4 files changed, 42 insertions(+), 5 deletions(-)
    create mode 100644 arch/um/configs/kunit_defconfig
    create mode 100644 tools/testing/kunit/configs/all_tests.config

    diff --git a/arch/um/configs/kunit_defconfig b/arch/um/configs/kunit_defconfig
    new file mode 100644
    index 0000000000000..bfe49689038f1
    --- /dev/null
    +++ b/arch/um/configs/kunit_defconfig
    @@ -0,0 +1,8 @@
    +CONFIG_OF=y
    +CONFIG_OF_UNITTEST=y
    +CONFIG_OF_OVERLAY=y
    +CONFIG_I2C=y
    +CONFIG_I2C_MUX=y
    +CONFIG_KUNIT=y
    +CONFIG_KUNIT_TEST=y
    +CONFIG_KUNIT_EXAMPLE_TEST=y
    diff --git a/tools/testing/kunit/configs/all_tests.config b/tools/testing/kunit/configs/all_tests.config
    new file mode 100644
    index 0000000000000..bfe49689038f1
    --- /dev/null
    +++ b/tools/testing/kunit/configs/all_tests.config
    @@ -0,0 +1,8 @@
    +CONFIG_OF=y
    +CONFIG_OF_UNITTEST=y
    +CONFIG_OF_OVERLAY=y
    +CONFIG_I2C=y
    +CONFIG_I2C_MUX=y
    +CONFIG_KUNIT=y
    +CONFIG_KUNIT_TEST=y
    +CONFIG_KUNIT_EXAMPLE_TEST=y
    diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py
    index da11bd62a4b82..0944dea5c3211 100755
    --- a/tools/testing/kunit/kunit.py
    +++ b/tools/testing/kunit/kunit.py
    @@ -11,6 +11,7 @@ import argparse
    import sys
    import os
    import time
    +import shutil

    from collections import namedtuple
    from enum import Enum, auto
    @@ -21,7 +22,7 @@ import kunit_parser

    KunitResult = namedtuple('KunitResult', ['status','result'])

    -KunitRequest = namedtuple('KunitRequest', ['raw_output','timeout', 'jobs', 'build_dir'])
    +KunitRequest = namedtuple('KunitRequest', ['raw_output','timeout', 'jobs', 'build_dir', 'defconfig'])

    class KunitStatus(Enum):
    SUCCESS = auto()
    @@ -29,8 +30,16 @@ class KunitStatus(Enum):
    BUILD_FAILURE = auto()
    TEST_FAILURE = auto()

    +def create_default_kunitconfig():
    + if not os.path.exists(kunit_kernel.KUNITCONFIG_PATH):
    + shutil.copyfile('arch/um/configs/kunit_defconfig',
    + kunit_kernel.KUNITCONFIG_PATH)
    +
    def run_tests(linux: kunit_kernel.LinuxSourceTree,
    request: KunitRequest) -> KunitResult:
    + if request.defconfig:
    + create_default_kunitconfig()
    +
    config_start = time.time()
    success = linux.build_reconfig(request.build_dir)
    config_end = time.time()
    @@ -72,7 +81,7 @@ def run_tests(linux: kunit_kernel.LinuxSourceTree,
    else:
    return KunitResult(KunitStatus.SUCCESS, test_result)

    -def main(argv, linux):
    +def main(argv, linux=None):
    parser = argparse.ArgumentParser(
    description='Helps writing and running KUnit tests.')
    subparser = parser.add_subparsers(dest='subcommand')
    @@ -99,13 +108,24 @@ def main(argv, linux):
    'directory.',
    type=str, default=None, metavar='build_dir')

    + run_parser.add_argument('--defconfig',
    + help='Uses a default kunitconfig.',
    + action='store_true')
    +
    cli_args = parser.parse_args(argv)

    if cli_args.subcommand == 'run':
    + if cli_args.defconfig:
    + create_default_kunitconfig()
    +
    + if not linux:
    + linux = kunit_kernel.LinuxSourceTree()
    +
    request = KunitRequest(cli_args.raw_output,
    cli_args.timeout,
    cli_args.jobs,
    - cli_args.build_dir)
    + cli_args.build_dir,
    + cli_args.defconfig)
    result = run_tests(linux, request)
    if result.status != KunitStatus.SUCCESS:
    sys.exit(1)
    @@ -113,4 +133,4 @@ def main(argv, linux):
    parser.print_help()

    if __name__ == '__main__':
    - main(sys.argv[1:], kunit_kernel.LinuxSourceTree())
    + main(sys.argv[1:])
    diff --git a/tools/testing/kunit/kunit_kernel.py b/tools/testing/kunit/kunit_kernel.py
    index 07c0abf2f47df..bf38768353313 100644
    --- a/tools/testing/kunit/kunit_kernel.py
    +++ b/tools/testing/kunit/kunit_kernel.py
    @@ -14,6 +14,7 @@ import os
    import kunit_config

    KCONFIG_PATH = '.config'
    +KUNITCONFIG_PATH = 'kunitconfig'

    class ConfigError(Exception):
    """Represents an error trying to configure the Linux kernel."""
    @@ -81,7 +82,7 @@ class LinuxSourceTree(object):

    def __init__(self):
    self._kconfig = kunit_config.Kconfig()
    - self._kconfig.read_from_file('kunitconfig')
    + self._kconfig.read_from_file(KUNITCONFIG_PATH)
    self._ops = LinuxSourceTreeOperations()

    def clean(self):
    --
    2.23.0.rc1.153.gdeed80330f-goog
    \
     
     \ /
      Last update: 2019-08-12 20:25    [W:4.026 / U:0.368 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site