hc
2024-08-16 a24a44ff9ca902811b99aa9663d697cf452e08ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# SPDX-License-Identifier: GPL-2.0
#
# Generates JSON from KUnit results according to
# KernelCI spec: https://github.com/kernelci/kernelci-doc/wiki/Test-API
#
# Copyright (C) 2020, Google LLC.
# Author: Heidi Fahim <heidifahim@google.com>
 
import json
import os
 
import kunit_parser
 
from kunit_parser import TestStatus
 
def get_json_result(test_result, def_config, build_dir, json_path):
   sub_groups = []
 
   # Each test suite is mapped to a KernelCI sub_group
   for test_suite in test_result.suites:
       sub_group = {
           "name": test_suite.name,
           "arch": "UM",
           "defconfig": def_config,
           "build_environment": build_dir,
           "test_cases": [],
           "lab_name": None,
           "kernel": None,
           "job": None,
           "git_branch": "kselftest",
       }
       test_cases = []
       # TODO: Add attachments attribute in test_case with detailed
       #  failure message, see https://api.kernelci.org/schema-test-case.html#get
       for case in test_suite.cases:
           test_case = {"name": case.name, "status": "FAIL"}
           if case.status == TestStatus.SUCCESS:
               test_case["status"] = "PASS"
           elif case.status == TestStatus.TEST_CRASHED:
               test_case["status"] = "ERROR"
           test_cases.append(test_case)
       sub_group["test_cases"] = test_cases
       sub_groups.append(sub_group)
   test_group = {
       "name": "KUnit Test Group",
       "arch": "UM",
       "defconfig": def_config,
       "build_environment": build_dir,
       "sub_groups": sub_groups,
       "lab_name": None,
       "kernel": None,
       "job": None,
       "git_branch": "kselftest",
   }
   json_obj = json.dumps(test_group, indent=4)
   if json_path != 'stdout':
       with open(json_path, 'w') as result_path:
           result_path.write(json_obj)
       root = __file__.split('tools/testing/kunit/')[0]
       kunit_parser.print_with_timestamp(
           "Test results stored in %s" %
           os.path.join(root, result_path.name))
   return json_obj