diff options
author | YH Lin <yueherngl@chromium.org> | 2022-12-03 00:17:55 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-12-05 17:43:18 +0000 |
commit | dd732876495ed4942d00b9f9ca8dd3b01bad7120 (patch) | |
tree | bdff671e5ad3e71e30ab56f4f084f34a2fd72e28 /util/twister_launcher.py | |
parent | 184d13e77614be3be5374d3fef9d1edf66ec8687 (diff) | |
download | chrome-ec-factory-brya-14909.124.B-main.tar.gz |
Revert "Merge remote-tracking branch cros/main into factory-brya-14909.124.B-main"factory-brya-14909.124.B-main
This reverts commit 184d13e77614be3be5374d3fef9d1edf66ec8687.
Reason for revert: broken build due to ec-utils.
Original change's description:
> Merge remote-tracking branch cros/main into factory-brya-14909.124.B-main
>
> Generated by: util/update_release_branch.py --baseboard brya --relevant_paths_file
> baseboard/brya/relevant-paths.txt factory-brya-14909.124.B-main
>
> Relevant changes:
>
> git log --oneline 19d4d68ffa..aa40b859b3 -- baseboard/brya board/agah
> board/anahera board/banshee board/brya board/crota board/felwinter
> board/gimble board/kano board/mithrax board/osiris board/primus
> board/redrix board/taeko board/taniks board/vell board/volmar
> driver/bc12/pi3usb9201_public.* driver/charger/bq25710.*
> driver/ppc/nx20p348x.* driver/ppc/syv682x_public.*
> driver/retimer/bb_retimer_public.* driver/tcpm/nct38xx.*
> driver/tcpm/ps8xxx_public.* driver/tcpm/tcpci.* include/power/alderlake*
> include/intel_x86.h power/alderlake* power/intel_x86.c
> util/getversion.sh
>
> e6da633c38 driver: Sort header files
> 234a87ae2d tcpci: Add FRS enable to driver structure
> a56be59ccd tcpm_header: add test for tcpm_dump_registers
> 57b3256963 Rename CONFIG_CHARGER_INPUT_CURRENT to _CHARGER_DEFAULT_CURRENT_LIMIT
> e420c8ff9a marasov: Modify TypeC and TypeA configuration.
> 43b53e0045 Add default implementation of board_set_charge_limit
> b75dc90677 Add CONFIG_CHARGER_MIN_INPUT_CURRENT_LIMIT
> f1b563c350 baseboard: Sort header files
> 7d01b1e58d driver/retimer/ps8818.h: Add I2C ADDR FLAGS 0x30, 0x58, 0x70
> ec31407993 Add CONFIG_CHARGER_INPUT_CURRENT_DERATE_PCT
> 8f89f69a5b crota: disable lid angle sensor for clamshell
>
> BRANCH=None
> BUG=b:260630630 b:163093572 b:259002141 b:255184961 b:259354679
> BUG=b:247100970 b:254328661
> TEST=`emerge-brya chromeos-ec`
>
> Force-Relevant-Builds: all
> Change-Id: I0ecfa0e6af68631283c7a9e8f1afb9d827176c62
> Signed-off-by: YH Lin <yueherngl@google.com>
Bug: b:260630630 b:163093572 b:259002141 b:255184961 b:259354679
Bug: b:247100970 b:254328661
Change-Id: Ia14942d1bd6a502062399d77cb59d1f4b549b2c9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4077247
Auto-Submit: YH Lin <yueherngl@chromium.org>
Tested-by: YH Lin <yueherngl@chromium.org>
Reviewed-by: Boris Mittelberg <bmbm@google.com>
Commit-Queue: YH Lin <yueherngl@chromium.org>
Diffstat (limited to 'util/twister_launcher.py')
-rwxr-xr-x | util/twister_launcher.py | 182 |
1 files changed, 66 insertions, 116 deletions
diff --git a/util/twister_launcher.py b/util/twister_launcher.py index 11202f9343..033b4c59dd 100755 --- a/util/twister_launcher.py +++ b/util/twister_launcher.py @@ -37,10 +37,6 @@ parameters that may be used, please consult the Twister documentation. # version: "version:5.8.0.chromium.3" # > # wheel: < -# name: "infra/python/wheels/pyelftools-py2_py3" -# version: "version:0.29" -# > -# wheel: < # name: "infra/python/wheels/pykwalify-py2_py3" # version: "version:1.8.0" # > @@ -81,10 +77,8 @@ parameters that may be used, please consult the Twister documentation. import argparse import json import os -import pathlib import re import shlex -import shutil import subprocess import sys import time @@ -98,8 +92,7 @@ def find_checkout() -> Path: if cros_checkout is not None: return Path(cros_checkout) - # Attempt to locate checkout location relatively if being run outside of - # chroot. + # Attempt to locate checkout location relatively if being run outside of chroot. try: cros_checkout = Path(__file__).resolve().parents[4] assert (cros_checkout / "src").exists() @@ -174,75 +167,59 @@ def is_rdb_login(): return ret.returncode == 0 -def upload_results(ec_base, outdir): +def upload_results(ec_base): """Uploads Zephyr Test results to ResultDB""" flag = False if is_rdb_login(): - json_path = pathlib.Path(outdir) / "twister.json" - - if json_path.exists(): - cmd = [ - "rdb", - "stream", - "-new", - "-realm", - "chromium:public", - "--", - "vpython3", - str(ec_base / "util/zephyr_to_resultdb.py"), - "--result=" + str(json_path), - "--upload=True", - ] - - start_time = time.time() - ret = subprocess.run( - cmd, capture_output=True, text=True, check=True - ) - end_time = time.time() - - # Extract URL to test report from captured output - rdb_url = re.search( - r"(?P<url>https?://[^\s]+)", ret.stderr.split("\n")[0] - ).group("url") - print(f"\nTEST RESULTS ({end_time - start_time:.3f}s): {rdb_url}\n") - flag = ret.returncode == 0 + json_path = ec_base / "twister-out" / "twister.json" + cmd = [ + "rdb", + "stream", + "-new", + "-realm", + "chromium:public", + "--", + str(ec_base / "util/zephyr_to_resultdb.py"), + "--result=" + str(json_path), + "--upload=True", + ] + + start_time = time.time() + ret = subprocess.run(cmd, capture_output=True, text=True, check=True) + end_time = time.time() + + # Extract URL to test report from captured output + rdb_url = re.search( + r"(?P<url>https?://[^\s]+)", ret.stderr.split("\n")[0] + ).group("url") + print(f"\nTEST RESULTS ({end_time - start_time:.3f}s): {rdb_url}\n") + flag = ret.returncode == 0 else: print("Unable to upload test results, please run 'rdb auth-login'\n") return flag -def check_for_skipped_tests(outdir): +def check_for_skipped_tests(ec_base): """Checks Twister json test report for skipped tests""" found_skipped = False - json_path = pathlib.Path(outdir) / "twister.json" - if json_path.exists(): - with open(json_path) as file: - data = json.load(file) + json_path = ec_base / "twister-out" / "twister.json" + with open(json_path) as file: + data = json.load(file) - for testsuite in data["testsuites"]: - for testcase in testsuite["testcases"]: - if testcase["status"] == "skipped": - tc_name = testcase["identifier"] - print(f"TEST SKIPPED: {tc_name}") - found_skipped = True + for testsuite in data["testsuites"]: + for testcase in testsuite["testcases"]: + if testcase["status"] == "skipped": + tc_name = testcase["identifier"] + print(f"TEST SKIPPED: {tc_name}") + found_skipped = True - file.close() + file.close() return found_skipped -def append_cmake_compiler(cmdline, cmake_var, exe_options): - """Picks the first available exe from exe_options and adds a cmake variable - to cmdline.""" - for exe in exe_options: - exe_path = shutil.which(exe) - if exe_path: - cmdline.append(f"-x={cmake_var}={exe_path}") - return - - def main(): """Run Twister using defaults for the EC project.""" @@ -256,6 +233,21 @@ def main(): if ec_base.resolve() not in zephyr_modules: zephyr_modules.append(ec_base) + # Prepare environment variables for export to Twister. Inherit the parent + # process's environment, but set some default values if not already set. + twister_env = dict(os.environ) + is_in_chroot = Path("/etc/cros_chroot_version").is_file() + extra_env_vars = { + "TOOLCHAIN_ROOT": os.environ.get( + "TOOLCHAIN_ROOT", + str(ec_base / "zephyr") if is_in_chroot else zephyr_base, + ), + "ZEPHYR_TOOLCHAIN_VARIANT": os.environ.get( + "ZEPHYR_TOOLCHAIN_VARIANT", "llvm" if is_in_chroot else "host" + ), + } + twister_env.update(extra_env_vars) + # Twister CLI args # TODO(b/239165779): Reduce or remove the usage of label properties # Zephyr upstream has deprecated the label property. We need to allow @@ -271,7 +263,6 @@ def main(): f"-x=ZEPHYR_BASE={zephyr_base}", f"-x=ZEPHYR_MODULES={';'.join([str(p) for p in zephyr_modules])}", ] - is_in_chroot = Path("/etc/cros_chroot_version").is_file() # `-T` flags (used for specifying test directories to build and run) # require special handling. When run without `-T` flags, Twister will @@ -285,31 +276,11 @@ def main(): parser.add_argument("-T", "--testsuite-root", action="append") parser.add_argument("-p", "--platform", action="append") parser.add_argument("-v", "--verbose", action="count", default=0) - parser.add_argument("--gcov-tool") - parser.add_argument( - "--no-upload-cros-rdb", dest="upload_cros_rdb", action="store_false" - ) parser.add_argument( - "-O", - "--outdir", - default=os.path.join(os.getcwd(), "twister-out"), + "--gcov-tool", default=str(ec_base / "util" / "llvm-gcov.sh") ) parser.add_argument( - "--toolchain", - default=os.environ.get( - "ZEPHYR_TOOLCHAIN_VARIANT", - "llvm" if is_in_chroot else "host", - ), - ) - parser.add_argument( - "--gcc", dest="toolchain", action="store_const", const="host" - ) - parser.add_argument( - "--llvm", - "--clang", - dest="toolchain", - action="store_const", - const="llvm", + "--no-upload-cros-rdb", dest="upload_cros_rdb", action="store_false" ) intercepted_args, other_args = parser.parse_known_args() @@ -323,14 +294,19 @@ def main(): for arg in intercepted_args.testsuite_root: twister_cli.extend(["-T", arg]) else: - # Use this set of test suite roots when no -T args are present. This - # should encompass all current Zephyr EC tests. The paths are meant to - # be as specific as possible to limit Twister's search scope. This saves - # significant time when starting Twister. - twister_cli.extend(["-T", str(ec_base / "common")]) - twister_cli.extend(["-T", str(ec_base / "zephyr/test")]) + # Use EC base dir when no -T args specified. This will cause all + # Twister-compatible EC tests to run. + twister_cli.extend(["-T", str(ec_base)]) twister_cli.extend(["-T", str(zephyr_base / "tests/subsys/shell")]) + # Pass through the chosen coverage tool, or fall back on the default choice + # (see add_argument above). + twister_cli.extend( + [ + "--gcov-tool", + intercepted_args.gcov_tool, + ] + ) if intercepted_args.platform: # Pass user-provided -p args when present. for arg in intercepted_args.platform: @@ -340,32 +316,6 @@ def main(): twister_cli.extend(["-p", "native_posix"]) twister_cli.extend(["-p", "unit_testing"]) - twister_cli.extend(["--outdir", intercepted_args.outdir]) - - # Prepare environment variables for export to Twister. Inherit the parent - # process's environment, but set some default values if not already set. - twister_env = dict(os.environ) - extra_env_vars = { - "TOOLCHAIN_ROOT": os.environ.get( - "TOOLCHAIN_ROOT", - str(ec_base / "zephyr") if is_in_chroot else str(zephyr_base), - ), - "ZEPHYR_TOOLCHAIN_VARIANT": intercepted_args.toolchain, - } - gcov_tool = None - if intercepted_args.toolchain == "host": - gcov_tool = "gcov" - elif intercepted_args.toolchain == "llvm": - gcov_tool = str(ec_base / "util" / "llvm-gcov.sh") - else: - print("Unknown toolchain specified:", intercepted_args.toolchain) - if intercepted_args.gcov_tool: - gcov_tool = intercepted_args.gcov_tool - if gcov_tool: - twister_cli.extend(["--gcov-tool", gcov_tool]) - - twister_env.update(extra_env_vars) - # Append additional user-supplied args twister_cli.extend(other_args) @@ -384,7 +334,7 @@ def main(): # Invoke Twister and wait for it to exit. result = subprocess.run(twister_cli, env=twister_env, check=False) - if check_for_skipped_tests(intercepted_args.outdir): + if check_for_skipped_tests(ec_base): result.returncode = 1 if result.returncode == 0: @@ -393,7 +343,7 @@ def main(): print("TEST EXECUTION FAILED") if is_tool("rdb") and intercepted_args.upload_cros_rdb: - upload_results(ec_base, intercepted_args.outdir) + upload_results(ec_base) sys.exit(result.returncode) |