cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

kunit_json.py (1635B)


      1# SPDX-License-Identifier: GPL-2.0
      2#
      3# Generates JSON from KUnit results according to
      4# KernelCI spec: https://github.com/kernelci/kernelci-doc/wiki/Test-API
      5#
      6# Copyright (C) 2020, Google LLC.
      7# Author: Heidi Fahim <heidifahim@google.com>
      8
      9from dataclasses import dataclass
     10import json
     11from typing import Any, Dict
     12
     13from kunit_parser import Test, TestStatus
     14
     15@dataclass
     16class Metadata:
     17	"""Stores metadata about this run to include in get_json_result()."""
     18	arch: str = ''
     19	def_config: str = ''
     20	build_dir: str = ''
     21
     22JsonObj = Dict[str, Any]
     23
     24_status_map: Dict[TestStatus, str] = {
     25	TestStatus.SUCCESS: "PASS",
     26	TestStatus.SKIPPED: "SKIP",
     27	TestStatus.TEST_CRASHED: "ERROR",
     28}
     29
     30def _get_group_json(test: Test, common_fields: JsonObj) -> JsonObj:
     31	sub_groups = []  # List[JsonObj]
     32	test_cases = []  # List[JsonObj]
     33
     34	for subtest in test.subtests:
     35		if subtest.subtests:
     36			sub_group = _get_group_json(subtest, common_fields)
     37			sub_groups.append(sub_group)
     38			continue
     39		status = _status_map.get(subtest.status, "FAIL")
     40		test_cases.append({"name": subtest.name, "status": status})
     41
     42	test_group = {
     43		"name": test.name,
     44		"sub_groups": sub_groups,
     45		"test_cases": test_cases,
     46	}
     47	test_group.update(common_fields)
     48	return test_group
     49
     50def get_json_result(test: Test, metadata: Metadata) -> str:
     51	common_fields = {
     52		"arch": metadata.arch,
     53		"defconfig": metadata.def_config,
     54		"build_environment": metadata.build_dir,
     55		"lab_name": None,
     56		"kernel": None,
     57		"job": None,
     58		"git_branch": "kselftest",
     59	}
     60
     61	test_group = _get_group_json(test, common_fields)
     62	test_group["name"] = "KUnit Test Group"
     63	return json.dumps(test_group, indent=4)