xref: /aosp_15_r20/tools/netsim/scripts/tasks/__init__.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 Workerimport logging
18*cf78ab8cSAndroid Build Coastguard Workerimport platform
19*cf78ab8cSAndroid Build Coastguard Workerfrom typing import Mapping
20*cf78ab8cSAndroid Build Coastguard Worker
21*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.compile_install_task import CompileInstallTask
22*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.compile_task import CompileTask
23*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.configure_task import ConfigureTask
24*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.install_emulator_task import InstallEmulatorTask
25*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.run_pytest_task import RunPyTestTask
26*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.run_test_task import RunTestTask
27*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.task import Task
28*cf78ab8cSAndroid Build Coastguard Workerfrom tasks.zip_artifact_task import ZipArtifactTask
29*cf78ab8cSAndroid Build Coastguard Worker
30*cf78ab8cSAndroid Build Coastguard WorkerTASK_LIST = [
31*cf78ab8cSAndroid Build Coastguard Worker    "Configure",
32*cf78ab8cSAndroid Build Coastguard Worker    "Compile",
33*cf78ab8cSAndroid Build Coastguard Worker    "CompileInstall",
34*cf78ab8cSAndroid Build Coastguard Worker    "RunTest",
35*cf78ab8cSAndroid Build Coastguard Worker    "ZipArtifact",
36*cf78ab8cSAndroid Build Coastguard Worker    "InstallEmulator",
37*cf78ab8cSAndroid Build Coastguard Worker    "RunPyTest",
38*cf78ab8cSAndroid Build Coastguard Worker    "LocalRunAll",
39*cf78ab8cSAndroid Build Coastguard Worker]
40*cf78ab8cSAndroid Build Coastguard Worker
41*cf78ab8cSAndroid Build Coastguard Worker
42*cf78ab8cSAndroid Build Coastguard Workerdef log_enabled_tasks(tasks):
43*cf78ab8cSAndroid Build Coastguard Worker  enabled_tasks = [
44*cf78ab8cSAndroid Build Coastguard Worker      task_name for task_name, task in tasks.items() if task.enabled
45*cf78ab8cSAndroid Build Coastguard Worker  ]
46*cf78ab8cSAndroid Build Coastguard Worker  logging.info(f"Enabled Tasks are {enabled_tasks}")
47*cf78ab8cSAndroid Build Coastguard Worker
48*cf78ab8cSAndroid Build Coastguard Worker
49*cf78ab8cSAndroid Build Coastguard Workerdef get_tasks(args, env) -> Mapping[str, Task]:
50*cf78ab8cSAndroid Build Coastguard Worker  """A list of tasks that should be executed"""
51*cf78ab8cSAndroid Build Coastguard Worker
52*cf78ab8cSAndroid Build Coastguard Worker  # Mapping of tasks
53*cf78ab8cSAndroid Build Coastguard Worker  tasks = {
54*cf78ab8cSAndroid Build Coastguard Worker      "Configure": ConfigureTask(args, env),
55*cf78ab8cSAndroid Build Coastguard Worker      "Compile": CompileTask(args, env),
56*cf78ab8cSAndroid Build Coastguard Worker      "CompileInstall": CompileInstallTask(args, env),
57*cf78ab8cSAndroid Build Coastguard Worker      "RunTest": RunTestTask(args, env),
58*cf78ab8cSAndroid Build Coastguard Worker      "ZipArtifact": ZipArtifactTask(args),
59*cf78ab8cSAndroid Build Coastguard Worker      "InstallEmulator": InstallEmulatorTask(args),
60*cf78ab8cSAndroid Build Coastguard Worker      "RunPyTest": RunPyTestTask(args),
61*cf78ab8cSAndroid Build Coastguard Worker  }
62*cf78ab8cSAndroid Build Coastguard Worker
63*cf78ab8cSAndroid Build Coastguard Worker  # Enable all tasks for buidlbots
64*cf78ab8cSAndroid Build Coastguard Worker  if args.buildbot:
65*cf78ab8cSAndroid Build Coastguard Worker    for task_name in [
66*cf78ab8cSAndroid Build Coastguard Worker        "Configure",
67*cf78ab8cSAndroid Build Coastguard Worker        "CompileInstall",
68*cf78ab8cSAndroid Build Coastguard Worker        "RunTest",
69*cf78ab8cSAndroid Build Coastguard Worker        "ZipArtifact",
70*cf78ab8cSAndroid Build Coastguard Worker        "InstallEmulator",
71*cf78ab8cSAndroid Build Coastguard Worker        "RunPyTest",
72*cf78ab8cSAndroid Build Coastguard Worker    ]:
73*cf78ab8cSAndroid Build Coastguard Worker      tasks[task_name].enable(True)
74*cf78ab8cSAndroid Build Coastguard Worker    return tasks
75*cf78ab8cSAndroid Build Coastguard Worker
76*cf78ab8cSAndroid Build Coastguard Worker  if args.task:
77*cf78ab8cSAndroid Build Coastguard Worker    # Enable user specified tasks
78*cf78ab8cSAndroid Build Coastguard Worker    for args_task_name in args.task:
79*cf78ab8cSAndroid Build Coastguard Worker      if args_task_name.lower() == "localrunall":
80*cf78ab8cSAndroid Build Coastguard Worker        # We don't need installation process when running locally
81*cf78ab8cSAndroid Build Coastguard Worker        for task_name in [
82*cf78ab8cSAndroid Build Coastguard Worker            "Configure",
83*cf78ab8cSAndroid Build Coastguard Worker            "Compile",
84*cf78ab8cSAndroid Build Coastguard Worker            "RunTest",
85*cf78ab8cSAndroid Build Coastguard Worker            "InstallEmulator",
86*cf78ab8cSAndroid Build Coastguard Worker            "RunPyTest",
87*cf78ab8cSAndroid Build Coastguard Worker        ]:
88*cf78ab8cSAndroid Build Coastguard Worker          tasks[task_name].enable(True)
89*cf78ab8cSAndroid Build Coastguard Worker        break
90*cf78ab8cSAndroid Build Coastguard Worker      elif args_task_name.lower() == "configure":
91*cf78ab8cSAndroid Build Coastguard Worker        tasks["Configure"].enable(True)
92*cf78ab8cSAndroid Build Coastguard Worker      elif args_task_name.lower() == "compile":
93*cf78ab8cSAndroid Build Coastguard Worker        tasks["Compile"].enable(True)
94*cf78ab8cSAndroid Build Coastguard Worker      elif args_task_name.lower() == "compileinstall":
95*cf78ab8cSAndroid Build Coastguard Worker        tasks["CompileInstall"].enable(True)
96*cf78ab8cSAndroid Build Coastguard Worker      elif args_task_name.lower() == "runtest":
97*cf78ab8cSAndroid Build Coastguard Worker        tasks["RunTest"].enable(True)
98*cf78ab8cSAndroid Build Coastguard Worker      elif args_task_name.lower() == "zipartifact":
99*cf78ab8cSAndroid Build Coastguard Worker        tasks["ZipArtifact"].enable(True)
100*cf78ab8cSAndroid Build Coastguard Worker      elif args_task_name.lower() == "installemulator":
101*cf78ab8cSAndroid Build Coastguard Worker        tasks["InstallEmulator"].enable(True)
102*cf78ab8cSAndroid Build Coastguard Worker      elif args_task_name.lower() == "fullbuild":
103*cf78ab8cSAndroid Build Coastguard Worker        tasks["Configure"].enable(True)
104*cf78ab8cSAndroid Build Coastguard Worker        tasks["Compile"].enable(True)
105*cf78ab8cSAndroid Build Coastguard Worker        tasks["InstallEmulator"].enable(True)
106*cf78ab8cSAndroid Build Coastguard Worker      elif args_task_name.lower() == "runpytest":
107*cf78ab8cSAndroid Build Coastguard Worker        tasks["RunPyTest"].enable(True)
108*cf78ab8cSAndroid Build Coastguard Worker      else:
109*cf78ab8cSAndroid Build Coastguard Worker        logging.error(f"Unknown task: {args_task_name}")
110*cf78ab8cSAndroid Build Coastguard Worker  else:
111*cf78ab8cSAndroid Build Coastguard Worker    # If task argument isn't passed, only enable ConfigureTask
112*cf78ab8cSAndroid Build Coastguard Worker    tasks["Configure"].enable(True)
113*cf78ab8cSAndroid Build Coastguard Worker  return tasks
114