xref: /aosp_15_r20/external/crosvm/infra/recipes/health_check.py (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker# Copyright 2022 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker# found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker
5*bb4ee6a4SAndroid Build Coastguard Workerfrom recipe_engine.post_process import Filter
6*bb4ee6a4SAndroid Build Coastguard Worker
7*bb4ee6a4SAndroid Build Coastguard WorkerDEPS = [
8*bb4ee6a4SAndroid Build Coastguard Worker    "crosvm",
9*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/raw_io",
10*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/buildbucket",
11*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/context",
12*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/properties",
13*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/step",
14*bb4ee6a4SAndroid Build Coastguard Worker]
15*bb4ee6a4SAndroid Build Coastguard Worker
16*bb4ee6a4SAndroid Build Coastguard Worker
17*bb4ee6a4SAndroid Build Coastguard Workerdef RunSteps(api):
18*bb4ee6a4SAndroid Build Coastguard Worker    with api.crosvm.container_build_context():
19*bb4ee6a4SAndroid Build Coastguard Worker        api.step(
20*bb4ee6a4SAndroid Build Coastguard Worker            "Self-test dev-container",
21*bb4ee6a4SAndroid Build Coastguard Worker            [
22*bb4ee6a4SAndroid Build Coastguard Worker                "vpython3",
23*bb4ee6a4SAndroid Build Coastguard Worker                api.crosvm.source_dir / "tools/dev_container",
24*bb4ee6a4SAndroid Build Coastguard Worker                "--verbose",
25*bb4ee6a4SAndroid Build Coastguard Worker                "--self-test",
26*bb4ee6a4SAndroid Build Coastguard Worker            ],
27*bb4ee6a4SAndroid Build Coastguard Worker        )
28*bb4ee6a4SAndroid Build Coastguard Worker        result = api.step(
29*bb4ee6a4SAndroid Build Coastguard Worker            "List checks to run",
30*bb4ee6a4SAndroid Build Coastguard Worker            [
31*bb4ee6a4SAndroid Build Coastguard Worker                "vpython3",
32*bb4ee6a4SAndroid Build Coastguard Worker                api.crosvm.source_dir / "tools/presubmit",
33*bb4ee6a4SAndroid Build Coastguard Worker                "--list-checks",
34*bb4ee6a4SAndroid Build Coastguard Worker                "health_checks",
35*bb4ee6a4SAndroid Build Coastguard Worker            ],
36*bb4ee6a4SAndroid Build Coastguard Worker            stdout=api.raw_io.output_text(),
37*bb4ee6a4SAndroid Build Coastguard Worker        )
38*bb4ee6a4SAndroid Build Coastguard Worker        check_list = result.stdout.strip().split("\n")
39*bb4ee6a4SAndroid Build Coastguard Worker        for check in check_list:
40*bb4ee6a4SAndroid Build Coastguard Worker            api.crosvm.step_in_container(
41*bb4ee6a4SAndroid Build Coastguard Worker                "tools/presubmit %s" % check, ["tools/presubmit", "--no-delta", check]
42*bb4ee6a4SAndroid Build Coastguard Worker            )
43*bb4ee6a4SAndroid Build Coastguard Worker
44*bb4ee6a4SAndroid Build Coastguard Worker
45*bb4ee6a4SAndroid Build Coastguard Workerdef GenTests(api):
46*bb4ee6a4SAndroid Build Coastguard Worker    yield (
47*bb4ee6a4SAndroid Build Coastguard Worker        api.test(
48*bb4ee6a4SAndroid Build Coastguard Worker            "basic",
49*bb4ee6a4SAndroid Build Coastguard Worker            api.buildbucket.ci_build(project="crosvm/crosvm"),
50*bb4ee6a4SAndroid Build Coastguard Worker            # Provide a fake response to --list-checks
51*bb4ee6a4SAndroid Build Coastguard Worker            api.step_data(
52*bb4ee6a4SAndroid Build Coastguard Worker                "List checks to run",
53*bb4ee6a4SAndroid Build Coastguard Worker                stdout=api.raw_io.output_text("check_a\ncheck_b"),
54*bb4ee6a4SAndroid Build Coastguard Worker            ),
55*bb4ee6a4SAndroid Build Coastguard Worker        )
56*bb4ee6a4SAndroid Build Coastguard Worker        + api.post_process(Filter("List checks to run").include_re(r"tools/presubmit .*"))
57*bb4ee6a4SAndroid Build Coastguard Worker    )
58