xref: /aosp_15_r20/tools/netsim/scripts/tasks/run_test_task.py (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Worker#!/usr/bin/env python3
2*cf78ab8cSAndroid Build Coastguard Worker#
3*cf78ab8cSAndroid Build Coastguard Worker# Copyright 2024 - The Android Open Source Project
4*cf78ab8cSAndroid Build Coastguard Worker#
5*cf78ab8cSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the',  help="License");
6*cf78ab8cSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*cf78ab8cSAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*cf78ab8cSAndroid Build Coastguard Worker#
9*cf78ab8cSAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
10*cf78ab8cSAndroid Build Coastguard Worker#
11*cf78ab8cSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*cf78ab8cSAndroid Build Coastguard Worker# distributed under the License is distributed on an',  help="AS IS" BASIS,
13*cf78ab8cSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*cf78ab8cSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*cf78ab8cSAndroid Build Coastguard Worker# limitations under the License.
16*cf78ab8cSAndroid Build Coastguard Worker
17*cf78ab8cSAndroid Build Coastguard Workerfrom pathlib import Path
18*cf78ab8cSAndroid Build Coastguard Workerimport platform
19*cf78ab8cSAndroid Build Coastguard Worker
20*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.task import Task
21*cf78ab8cSAndroid Build Coastguard Workerfrom utils import (AOSP_ROOT, run, rust_version)
22*cf78ab8cSAndroid Build Coastguard Worker
23*cf78ab8cSAndroid Build Coastguard Worker
24*cf78ab8cSAndroid Build Coastguard Workerclass RunTestTask(Task):
25*cf78ab8cSAndroid Build Coastguard Worker
26*cf78ab8cSAndroid Build Coastguard Worker  def __init__(self, args, env):
27*cf78ab8cSAndroid Build Coastguard Worker    super().__init__("RunTest")
28*cf78ab8cSAndroid Build Coastguard Worker    self.buildbot = args.buildbot
29*cf78ab8cSAndroid Build Coastguard Worker    self.out = Path(args.out_dir)
30*cf78ab8cSAndroid Build Coastguard Worker    self.env = env
31*cf78ab8cSAndroid Build Coastguard Worker
32*cf78ab8cSAndroid Build Coastguard Worker  def do_run(self):
33*cf78ab8cSAndroid Build Coastguard Worker    # TODO(b/379745416): Support clippy for Mac and Windows
34*cf78ab8cSAndroid Build Coastguard Worker    if platform.system() == "Linux":
35*cf78ab8cSAndroid Build Coastguard Worker      # Set Clippy flags
36*cf78ab8cSAndroid Build Coastguard Worker      clippy_flags = [
37*cf78ab8cSAndroid Build Coastguard Worker          "-A clippy::disallowed_names",
38*cf78ab8cSAndroid Build Coastguard Worker          "-A clippy::type-complexity",
39*cf78ab8cSAndroid Build Coastguard Worker          "-A clippy::unnecessary-wraps",
40*cf78ab8cSAndroid Build Coastguard Worker          "-A clippy::unusual-byte-groupings",
41*cf78ab8cSAndroid Build Coastguard Worker          "-A clippy::upper-case-acronyms",
42*cf78ab8cSAndroid Build Coastguard Worker          "-W clippy::undocumented_unsafe_blocks",
43*cf78ab8cSAndroid Build Coastguard Worker          "-W clippy::cognitive-complexity",
44*cf78ab8cSAndroid Build Coastguard Worker      ]
45*cf78ab8cSAndroid Build Coastguard Worker      # Run cargo clippy
46*cf78ab8cSAndroid Build Coastguard Worker      run(
47*cf78ab8cSAndroid Build Coastguard Worker          [
48*cf78ab8cSAndroid Build Coastguard Worker              AOSP_ROOT / "tools" / "netsim" / "scripts" / "cargo_clippy.sh",
49*cf78ab8cSAndroid Build Coastguard Worker              str(self.out),
50*cf78ab8cSAndroid Build Coastguard Worker              rust_version(),
51*cf78ab8cSAndroid Build Coastguard Worker              " ".join(clippy_flags),
52*cf78ab8cSAndroid Build Coastguard Worker          ],
53*cf78ab8cSAndroid Build Coastguard Worker          self.env,
54*cf78ab8cSAndroid Build Coastguard Worker          "clippy",
55*cf78ab8cSAndroid Build Coastguard Worker      )
56*cf78ab8cSAndroid Build Coastguard Worker
57*cf78ab8cSAndroid Build Coastguard Worker    # Set script for cargo Test
58*cf78ab8cSAndroid Build Coastguard Worker    if platform.system() == "Windows":
59*cf78ab8cSAndroid Build Coastguard Worker      script = AOSP_ROOT / "tools" / "netsim" / "scripts" / "cargo_test.cmd"
60*cf78ab8cSAndroid Build Coastguard Worker    else:
61*cf78ab8cSAndroid Build Coastguard Worker      script = AOSP_ROOT / "tools" / "netsim" / "scripts" / "cargo_test.sh"
62*cf78ab8cSAndroid Build Coastguard Worker
63*cf78ab8cSAndroid Build Coastguard Worker    # Run cargo Test
64*cf78ab8cSAndroid Build Coastguard Worker    for package in [
65*cf78ab8cSAndroid Build Coastguard Worker        "hostapd-rs",
66*cf78ab8cSAndroid Build Coastguard Worker        "libslirp-rs",
67*cf78ab8cSAndroid Build Coastguard Worker        "http-proxy",
68*cf78ab8cSAndroid Build Coastguard Worker        "netsim-common",
69*cf78ab8cSAndroid Build Coastguard Worker        "netsim-daemon",
70*cf78ab8cSAndroid Build Coastguard Worker        "netsim-packets",
71*cf78ab8cSAndroid Build Coastguard Worker        "capture",
72*cf78ab8cSAndroid Build Coastguard Worker    ]:
73*cf78ab8cSAndroid Build Coastguard Worker      # TODO(b/379708365): Resolve netsim-daemon test for Mac & Windows
74*cf78ab8cSAndroid Build Coastguard Worker      if package == "netsim-daemon" and platform.system() != "Linux":
75*cf78ab8cSAndroid Build Coastguard Worker        continue
76*cf78ab8cSAndroid Build Coastguard Worker      cmd = [script, package, str(self.out), rust_version()]
77*cf78ab8cSAndroid Build Coastguard Worker      run(cmd, self.env, f"{package}_unit_tests")
78*cf78ab8cSAndroid Build Coastguard Worker    return True
79