aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tools/testing/kunit/kunit_json.py
diff options
context:
space:
mode:
authorDaniel Latypov <dlatypov@google.com>2022-02-24 11:20:35 -0800
committerShuah Khan <skhan@linuxfoundation.org>2022-04-04 15:22:23 -0600
commitee96d25f2fa657a29ab59345898dc4ff616cfe84 (patch)
tree46d4bd7b0451b2f7f63d4cf9f89fac478e750446 /tools/testing/kunit/kunit_json.py
parentkunit: tool: readability tweaks in KernelCI json generation logic (diff)
downloadwireguard-linux-ee96d25f2fa657a29ab59345898dc4ff616cfe84.tar.xz
wireguard-linux-ee96d25f2fa657a29ab59345898dc4ff616cfe84.zip
kunit: tool: refactor how we plumb metadata into JSON
When using --json, kunit.py run/exec/parse will produce results in KernelCI json format. As part of that, we include the build_dir that was used, and we (incorrectly) hardcode in the arch, etc. We'll want a way to plumb more values (as well as the correct `arch`), so this patch groups those fields into kunit_json.Metadata type. This patch should have no user visible changes. And since we only used build_dir in KunitParseRequest for json, we can now move it out of that struct and add it into KunitExecRequest, which needs it and used to get it via inheritance. Signed-off-by: Daniel Latypov <dlatypov@google.com> Reviewed-by: David Gow <davidgow@google.com> Reviewed-by: Brendan Higgins <brendanhiggins@google.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Diffstat (limited to 'tools/testing/kunit/kunit_json.py')
-rw-r--r--tools/testing/kunit/kunit_json.py29
1 files changed, 20 insertions, 9 deletions
diff --git a/tools/testing/kunit/kunit_json.py b/tools/testing/kunit/kunit_json.py
index 14a480d3308a..0a7e29a315ed 100644
--- a/tools/testing/kunit/kunit_json.py
+++ b/tools/testing/kunit/kunit_json.py
@@ -6,6 +6,7 @@
# Copyright (C) 2020, Google LLC.
# Author: Heidi Fahim <heidifahim@google.com>
+from dataclasses import dataclass
import json
import os
@@ -14,6 +15,13 @@ import kunit_parser
from kunit_parser import Test, TestStatus
from typing import Any, Dict
+@dataclass
+class Metadata:
+ """Stores metadata about this run to include in get_json_result()."""
+ arch: str = 'UM'
+ def_config: str = 'kunit_defconfig'
+ build_dir: str = ''
+
JsonObj = Dict[str, Any]
_status_map: Dict[TestStatus, str] = {
@@ -22,14 +30,13 @@ _status_map: Dict[TestStatus, str] = {
TestStatus.TEST_CRASHED: "ERROR",
}
-def _get_group_json(test: Test, def_config: str, build_dir: str) -> JsonObj:
+def _get_group_json(test: Test, common_fields: JsonObj) -> JsonObj:
sub_groups = [] # List[JsonObj]
test_cases = [] # List[JsonObj]
for subtest in test.subtests:
if subtest.subtests:
- sub_group = _get_group_json(subtest, def_config,
- build_dir)
+ sub_group = _get_group_json(subtest, common_fields)
sub_groups.append(sub_group)
continue
status = _status_map.get(subtest.status, "FAIL")
@@ -37,19 +44,23 @@ def _get_group_json(test: Test, def_config: str, build_dir: str) -> JsonObj:
test_group = {
"name": test.name,
- "arch": "UM",
- "defconfig": def_config,
- "build_environment": build_dir,
"sub_groups": sub_groups,
"test_cases": test_cases,
+ }
+ test_group.update(common_fields)
+ return test_group
+
+def get_json_result(test: Test, metadata: Metadata) -> str:
+ common_fields = {
+ "arch": metadata.arch,
+ "defconfig": metadata.def_config,
+ "build_environment": metadata.build_dir,
"lab_name": None,
"kernel": None,
"job": None,
"git_branch": "kselftest",
}
- return test_group
-def get_json_result(test: Test, def_config: str, build_dir: str) -> str:
- test_group = _get_group_json(test, def_config, build_dir)
+ test_group = _get_group_json(test, common_fields)
test_group["name"] = "KUnit Test Group"
return json.dumps(test_group, indent=4)