1*6777b538SAndroid Build Coastguard Worker# Copyright 2018 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Workerimport("//build/config/chrome_build.gni") 6*6777b538SAndroid Build Coastguard Workerimport("//build/config/chromeos/args.gni") 7*6777b538SAndroid Build Coastguard Workerimport("//build/config/chromeos/ui_mode.gni") 8*6777b538SAndroid Build Coastguard Workerimport("//build/config/dcheck_always_on.gni") 9*6777b538SAndroid Build Coastguard Workerimport("//build/config/gclient_args.gni") 10*6777b538SAndroid Build Coastguard Workerimport("//build/config/python.gni") 11*6777b538SAndroid Build Coastguard Workerimport("//build/util/generate_wrapper.gni") 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Workerassert(is_chromeos) 14*6777b538SAndroid Build Coastguard Workerassert(is_chromeos_device) 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker# Determine the real paths for various items in the SDK, which may be used 17*6777b538SAndroid Build Coastguard Worker# in the 'generate_runner_script' template below. We do so outside the template 18*6777b538SAndroid Build Coastguard Worker# to confine exec_script to a single invocation. 19*6777b538SAndroid Build Coastguard Workerif (cros_sdk_version != "") { 20*6777b538SAndroid Build Coastguard Worker # Ideally these should be maps, however, gn doesn't support map, so using a 21*6777b538SAndroid Build Coastguard Worker # list of list to simulate a map: 22*6777b538SAndroid Build Coastguard Worker # [key1, [value1, value2, ...]], [key2, [value1, value2, ...]], where 23*6777b538SAndroid Build Coastguard Worker # the keys are boards and values are symlinks or symlink targets, and the 24*6777b538SAndroid Build Coastguard Worker # mapping shouldn't be used for anything else. 25*6777b538SAndroid Build Coastguard Worker # 26*6777b538SAndroid Build Coastguard Worker # A sample usage is: 27*6777b538SAndroid Build Coastguard Worker # foreach(m, _symlink_targets_map) { 28*6777b538SAndroid Build Coastguard Worker # if(m[0] == target_key) { 29*6777b538SAndroid Build Coastguard Worker # target_value = m[1] 30*6777b538SAndroid Build Coastguard Worker # } 31*6777b538SAndroid Build Coastguard Worker # } 32*6777b538SAndroid Build Coastguard Worker # 33*6777b538SAndroid Build Coastguard Worker _symlink_map = [] 34*6777b538SAndroid Build Coastguard Worker _symlink_targets_map = [] 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker if (is_chromeos_ash) { 37*6777b538SAndroid Build Coastguard Worker _potential_test_boards = [ cros_board ] 38*6777b538SAndroid Build Coastguard Worker } else { 39*6777b538SAndroid Build Coastguard Worker _potential_test_boards = [] 40*6777b538SAndroid Build Coastguard Worker if (cros_boards != "") { 41*6777b538SAndroid Build Coastguard Worker _potential_test_boards += string_split(cros_boards, ":") 42*6777b538SAndroid Build Coastguard Worker } 43*6777b538SAndroid Build Coastguard Worker if (cros_boards_with_qemu_images != "") { 44*6777b538SAndroid Build Coastguard Worker _potential_test_boards += string_split(cros_boards_with_qemu_images, ":") 45*6777b538SAndroid Build Coastguard Worker } 46*6777b538SAndroid Build Coastguard Worker } 47*6777b538SAndroid Build Coastguard Worker 48*6777b538SAndroid Build Coastguard Worker foreach(b, _potential_test_boards) { 49*6777b538SAndroid Build Coastguard Worker _cache_path_prefix = 50*6777b538SAndroid Build Coastguard Worker "//build/cros_cache/chrome-sdk/symlinks/${b}+${cros_sdk_version}" 51*6777b538SAndroid Build Coastguard Worker 52*6777b538SAndroid Build Coastguard Worker _cros_is_vm = false 53*6777b538SAndroid Build Coastguard Worker foreach(b1, string_split(cros_boards_with_qemu_images, ":")) { 54*6777b538SAndroid Build Coastguard Worker if (b == b1) { 55*6777b538SAndroid Build Coastguard Worker _cros_is_vm = true 56*6777b538SAndroid Build Coastguard Worker } 57*6777b538SAndroid Build Coastguard Worker } 58*6777b538SAndroid Build Coastguard Worker 59*6777b538SAndroid Build Coastguard Worker _symlinks = [] 60*6777b538SAndroid Build Coastguard Worker _symlinks = [ 61*6777b538SAndroid Build Coastguard Worker # Tast harness & test data. 62*6777b538SAndroid Build Coastguard Worker rebase_path("${_cache_path_prefix}+autotest_server_package.tar.bz2"), 63*6777b538SAndroid Build Coastguard Worker 64*6777b538SAndroid Build Coastguard Worker # Binutils (and other toolchain tools) used to deploy Chrome to the device. 65*6777b538SAndroid Build Coastguard Worker rebase_path( 66*6777b538SAndroid Build Coastguard Worker "${_cache_path_prefix}+environment_chromeos-base_chromeos-chrome.tar.xz"), 67*6777b538SAndroid Build Coastguard Worker rebase_path("${_cache_path_prefix}+target_toolchain"), 68*6777b538SAndroid Build Coastguard Worker ] 69*6777b538SAndroid Build Coastguard Worker if (_cros_is_vm) { 70*6777b538SAndroid Build Coastguard Worker # VM-related tools. 71*6777b538SAndroid Build Coastguard Worker _symlinks += 72*6777b538SAndroid Build Coastguard Worker [ rebase_path("${_cache_path_prefix}+chromiumos_test_image.tar.xz") ] 73*6777b538SAndroid Build Coastguard Worker } 74*6777b538SAndroid Build Coastguard Worker _symlink_map += [ [ 75*6777b538SAndroid Build Coastguard Worker b, 76*6777b538SAndroid Build Coastguard Worker _symlinks, 77*6777b538SAndroid Build Coastguard Worker ] ] 78*6777b538SAndroid Build Coastguard Worker } 79*6777b538SAndroid Build Coastguard Worker 80*6777b538SAndroid Build Coastguard Worker _all_symlinks = [] 81*6777b538SAndroid Build Coastguard Worker foreach(m, _symlink_map) { 82*6777b538SAndroid Build Coastguard Worker _all_symlinks += m[1] 83*6777b538SAndroid Build Coastguard Worker } 84*6777b538SAndroid Build Coastguard Worker _all_symlink_targets = 85*6777b538SAndroid Build Coastguard Worker exec_script("//build/get_symlink_targets.py", _all_symlinks, "list lines") 86*6777b538SAndroid Build Coastguard Worker _index = 0 87*6777b538SAndroid Build Coastguard Worker foreach(m, _symlink_map) { 88*6777b538SAndroid Build Coastguard Worker _symlink_targets = [] 89*6777b538SAndroid Build Coastguard Worker foreach(_, m[1]) { 90*6777b538SAndroid Build Coastguard Worker _symlink_targets += [ _all_symlink_targets[_index] ] 91*6777b538SAndroid Build Coastguard Worker _index += 1 92*6777b538SAndroid Build Coastguard Worker } 93*6777b538SAndroid Build Coastguard Worker 94*6777b538SAndroid Build Coastguard Worker _symlink_targets_map += [ [ 95*6777b538SAndroid Build Coastguard Worker m[0], 96*6777b538SAndroid Build Coastguard Worker _symlink_targets, 97*6777b538SAndroid Build Coastguard Worker ] ] 98*6777b538SAndroid Build Coastguard Worker } 99*6777b538SAndroid Build Coastguard Worker} 100*6777b538SAndroid Build Coastguard Worker 101*6777b538SAndroid Build Coastguard Workertemplate("generate_chromeos_sdk_deps") { 102*6777b538SAndroid Build Coastguard Worker forward_variables_from(invoker, 103*6777b538SAndroid Build Coastguard Worker [ 104*6777b538SAndroid Build Coastguard Worker "deploy_chrome", 105*6777b538SAndroid Build Coastguard Worker "is_tast", 106*6777b538SAndroid Build Coastguard Worker ]) 107*6777b538SAndroid Build Coastguard Worker if (!defined(deploy_chrome)) { 108*6777b538SAndroid Build Coastguard Worker deploy_chrome = false 109*6777b538SAndroid Build Coastguard Worker } 110*6777b538SAndroid Build Coastguard Worker if (!defined(is_tast)) { 111*6777b538SAndroid Build Coastguard Worker is_tast = false 112*6777b538SAndroid Build Coastguard Worker } 113*6777b538SAndroid Build Coastguard Worker 114*6777b538SAndroid Build Coastguard Worker _sdk_data = [] 115*6777b538SAndroid Build Coastguard Worker assert(cros_sdk_version != "", "cros sdk version is not defined") 116*6777b538SAndroid Build Coastguard Worker foreach(b, _potential_test_boards) { 117*6777b538SAndroid Build Coastguard Worker _cros_is_vm = false 118*6777b538SAndroid Build Coastguard Worker foreach(b1, string_split(cros_boards_with_qemu_images, ":")) { 119*6777b538SAndroid Build Coastguard Worker if (b == b1) { 120*6777b538SAndroid Build Coastguard Worker _cros_is_vm = true 121*6777b538SAndroid Build Coastguard Worker } 122*6777b538SAndroid Build Coastguard Worker } 123*6777b538SAndroid Build Coastguard Worker 124*6777b538SAndroid Build Coastguard Worker # Determine the real paths for various items in the SDK, which may be used 125*6777b538SAndroid Build Coastguard Worker # in the 'generate_runner_script' template below. 126*6777b538SAndroid Build Coastguard Worker if (is_tast || _cros_is_vm || deploy_chrome) { 127*6777b538SAndroid Build Coastguard Worker _symlink_targets = [] 128*6777b538SAndroid Build Coastguard Worker foreach(m, _symlink_targets_map) { 129*6777b538SAndroid Build Coastguard Worker if (b == m[0]) { 130*6777b538SAndroid Build Coastguard Worker _symlink_targets = [] 131*6777b538SAndroid Build Coastguard Worker _symlink_targets = m[1] 132*6777b538SAndroid Build Coastguard Worker } 133*6777b538SAndroid Build Coastguard Worker } 134*6777b538SAndroid Build Coastguard Worker 135*6777b538SAndroid Build Coastguard Worker if (is_tast) { 136*6777b538SAndroid Build Coastguard Worker # Add tast sdk items. 137*6777b538SAndroid Build Coastguard Worker _sdk_data += [ _symlink_targets[0] ] 138*6777b538SAndroid Build Coastguard Worker } 139*6777b538SAndroid Build Coastguard Worker if (deploy_chrome) { 140*6777b538SAndroid Build Coastguard Worker # To deploy chrome to the VM, it needs to be stripped down to fit into 141*6777b538SAndroid Build Coastguard Worker # the VM. This is done by using binutils in the toolchain. So add the 142*6777b538SAndroid Build Coastguard Worker # toolchain to the data. 143*6777b538SAndroid Build Coastguard Worker _sdk_data += [ 144*6777b538SAndroid Build Coastguard Worker _symlink_targets[1], 145*6777b538SAndroid Build Coastguard Worker _symlink_targets[2], 146*6777b538SAndroid Build Coastguard Worker ] 147*6777b538SAndroid Build Coastguard Worker } 148*6777b538SAndroid Build Coastguard Worker if (_cros_is_vm) { 149*6777b538SAndroid Build Coastguard Worker # Add vm sdk items. 150*6777b538SAndroid Build Coastguard Worker _sdk_data += [ _symlink_targets[3] ] 151*6777b538SAndroid Build Coastguard Worker } 152*6777b538SAndroid Build Coastguard Worker } 153*6777b538SAndroid Build Coastguard Worker } 154*6777b538SAndroid Build Coastguard Worker group(target_name) { 155*6777b538SAndroid Build Coastguard Worker data = _sdk_data 156*6777b538SAndroid Build Coastguard Worker data += [ 157*6777b538SAndroid Build Coastguard Worker # Needed for various SDK components used below. 158*6777b538SAndroid Build Coastguard Worker "//build/cros_cache/chrome-sdk/misc/", 159*6777b538SAndroid Build Coastguard Worker "//build/cros_cache/chrome-sdk/symlinks/", 160*6777b538SAndroid Build Coastguard Worker "//chrome/VERSION", 161*6777b538SAndroid Build Coastguard Worker 162*6777b538SAndroid Build Coastguard Worker # The LKGM file controls what version of the VM image to download. Add it 163*6777b538SAndroid Build Coastguard Worker # as data here so that changes to it will trigger analyze. 164*6777b538SAndroid Build Coastguard Worker "//chromeos/CHROMEOS_LKGM", 165*6777b538SAndroid Build Coastguard Worker ] 166*6777b538SAndroid Build Coastguard Worker if (cros_boards_with_qemu_images != "") { 167*6777b538SAndroid Build Coastguard Worker data += [ "//build/cros_cache/cipd/" ] 168*6777b538SAndroid Build Coastguard Worker } 169*6777b538SAndroid Build Coastguard Worker } 170*6777b538SAndroid Build Coastguard Worker} 171*6777b538SAndroid Build Coastguard Worker 172*6777b538SAndroid Build Coastguard Worker# Creates tast filter files for skylab tast tests. 173*6777b538SAndroid Build Coastguard Worker# Args: 174*6777b538SAndroid Build Coastguard Worker# tast_attr_expr: Tast expression to determine tests to run. This creates the 175*6777b538SAndroid Build Coastguard Worker# initial set of tests that can be further filtered.. 176*6777b538SAndroid Build Coastguard Worker# tast_tests: Names of tests to enable in tast. All other tests will be 177*6777b538SAndroid Build Coastguard Worker# disabled that are not listed. 178*6777b538SAndroid Build Coastguard Worker# tast_disabled_tests: Names of tests to disable in tast. All other tests that 179*6777b538SAndroid Build Coastguard Worker# match the tast expression will still run. 180*6777b538SAndroid Build Coastguard Worker# tast_control: gni file with collections of tests to be used for specific 181*6777b538SAndroid Build Coastguard Worker# filters (e.g. "//chromeos/tast_control.gni"). Any lists of strings in 182*6777b538SAndroid Build Coastguard Worker# this file will be used to generate additional tast expressions with 183*6777b538SAndroid Build Coastguard Worker# those strings expanded into tests to disable (i.e. as && !"name:test"). 184*6777b538SAndroid Build Coastguard Worker# The name of those lists are then intended to be used to specify in 185*6777b538SAndroid Build Coastguard Worker# test_suites.pyl which collection to be used on specific test suites. 186*6777b538SAndroid Build Coastguard Workertemplate("generate_skylab_tast_filter") { 187*6777b538SAndroid Build Coastguard Worker forward_variables_from(invoker, 188*6777b538SAndroid Build Coastguard Worker [ 189*6777b538SAndroid Build Coastguard Worker "tast_attr_expr", 190*6777b538SAndroid Build Coastguard Worker "tast_tests", 191*6777b538SAndroid Build Coastguard Worker "tast_disabled_tests", 192*6777b538SAndroid Build Coastguard Worker "tast_control", 193*6777b538SAndroid Build Coastguard Worker ]) 194*6777b538SAndroid Build Coastguard Worker 195*6777b538SAndroid Build Coastguard Worker if (defined(tast_disabled_tests)) { 196*6777b538SAndroid Build Coastguard Worker assert(defined(tast_attr_expr), 197*6777b538SAndroid Build Coastguard Worker "tast_attr_expr must be used when specifying tast_disabled_tests.") 198*6777b538SAndroid Build Coastguard Worker } 199*6777b538SAndroid Build Coastguard Worker _generated_filter = "$root_build_dir/bin/${target_name}.filter" 200*6777b538SAndroid Build Coastguard Worker _skylab_args = [ 201*6777b538SAndroid Build Coastguard Worker "generate-filter", 202*6777b538SAndroid Build Coastguard Worker "--output", 203*6777b538SAndroid Build Coastguard Worker rebase_path(_generated_filter), 204*6777b538SAndroid Build Coastguard Worker ] 205*6777b538SAndroid Build Coastguard Worker if (defined(tast_control)) { 206*6777b538SAndroid Build Coastguard Worker _skylab_args += [ 207*6777b538SAndroid Build Coastguard Worker "--tast-control", 208*6777b538SAndroid Build Coastguard Worker rebase_path(tast_control), 209*6777b538SAndroid Build Coastguard Worker ] 210*6777b538SAndroid Build Coastguard Worker } 211*6777b538SAndroid Build Coastguard Worker if (defined(tast_attr_expr)) { 212*6777b538SAndroid Build Coastguard Worker _skylab_args += [ 213*6777b538SAndroid Build Coastguard Worker "--tast-expr", 214*6777b538SAndroid Build Coastguard Worker tast_attr_expr, 215*6777b538SAndroid Build Coastguard Worker ] 216*6777b538SAndroid Build Coastguard Worker } 217*6777b538SAndroid Build Coastguard Worker if (defined(tast_tests)) { 218*6777b538SAndroid Build Coastguard Worker foreach(_test, tast_tests) { 219*6777b538SAndroid Build Coastguard Worker _skylab_args += [ 220*6777b538SAndroid Build Coastguard Worker "--enabled-tests", 221*6777b538SAndroid Build Coastguard Worker _test, 222*6777b538SAndroid Build Coastguard Worker ] 223*6777b538SAndroid Build Coastguard Worker } 224*6777b538SAndroid Build Coastguard Worker } 225*6777b538SAndroid Build Coastguard Worker if (defined(tast_disabled_tests)) { 226*6777b538SAndroid Build Coastguard Worker foreach(_test_name, tast_disabled_tests) { 227*6777b538SAndroid Build Coastguard Worker _skylab_args += [ 228*6777b538SAndroid Build Coastguard Worker "--disabled-tests", 229*6777b538SAndroid Build Coastguard Worker _test_name, 230*6777b538SAndroid Build Coastguard Worker ] 231*6777b538SAndroid Build Coastguard Worker } 232*6777b538SAndroid Build Coastguard Worker } 233*6777b538SAndroid Build Coastguard Worker action(target_name) { 234*6777b538SAndroid Build Coastguard Worker testonly = true 235*6777b538SAndroid Build Coastguard Worker script = "//build/chromeos/generate_skylab_tast_filter.py" 236*6777b538SAndroid Build Coastguard Worker if (defined(tast_control)) { 237*6777b538SAndroid Build Coastguard Worker sources = [ tast_control ] 238*6777b538SAndroid Build Coastguard Worker } 239*6777b538SAndroid Build Coastguard Worker outputs = [ _generated_filter ] 240*6777b538SAndroid Build Coastguard Worker args = _skylab_args 241*6777b538SAndroid Build Coastguard Worker if (defined(invoker.data_deps)) { 242*6777b538SAndroid Build Coastguard Worker data_deps = invoker.data_deps 243*6777b538SAndroid Build Coastguard Worker } 244*6777b538SAndroid Build Coastguard Worker data = [ _generated_filter ] 245*6777b538SAndroid Build Coastguard Worker if (defined(invoker.data)) { 246*6777b538SAndroid Build Coastguard Worker data += invoker.data 247*6777b538SAndroid Build Coastguard Worker } 248*6777b538SAndroid Build Coastguard Worker if (defined(invoker.deps)) { 249*6777b538SAndroid Build Coastguard Worker deps = invoker.deps 250*6777b538SAndroid Build Coastguard Worker } 251*6777b538SAndroid Build Coastguard Worker } 252*6777b538SAndroid Build Coastguard Worker} 253*6777b538SAndroid Build Coastguard Worker 254*6777b538SAndroid Build Coastguard Worker# Creates a script at $generated_script that can be used to launch a cros VM 255*6777b538SAndroid Build Coastguard Worker# and optionally run a test within it. 256*6777b538SAndroid Build Coastguard Worker# Args: 257*6777b538SAndroid Build Coastguard Worker# test_exe: Name of test binary located in the out dir. This will get copied 258*6777b538SAndroid Build Coastguard Worker# to the VM and executed there. 259*6777b538SAndroid Build Coastguard Worker# tast_attr_expr: Tast expression to pass to local_test_runner on the VM. 260*6777b538SAndroid Build Coastguard Worker# tast_tests: List of Tast tests to run on the VM. Note that when this is 261*6777b538SAndroid Build Coastguard Worker# specified, the target name used to invoke this template will be 262*6777b538SAndroid Build Coastguard Worker# designated as the "name" of this test and will primarly used for test 263*6777b538SAndroid Build Coastguard Worker# results tracking and displaying (eg: flakiness dashboard). 264*6777b538SAndroid Build Coastguard Worker# generated_script: Path to place the generated script. 265*6777b538SAndroid Build Coastguard Worker# deploy_chrome: If true, deploys a locally built chrome located in the root 266*6777b538SAndroid Build Coastguard Worker# build dir to the VM or DUT after launching it. 267*6777b538SAndroid Build Coastguard Worker# deploy_lacros: If true, deploys a locally built Lacros located in the root 268*6777b538SAndroid Build Coastguard Worker# build dir to the VM or DUT after launching it. 269*6777b538SAndroid Build Coastguard Worker# runtime_deps_file: Path to file listing runtime deps for the test. If set, 270*6777b538SAndroid Build Coastguard Worker# all files listed will be copied to the VM before testing. 271*6777b538SAndroid Build Coastguard Worker# skip_generating_board_args: By default, this template generates an '--board' 272*6777b538SAndroid Build Coastguard Worker# arg with corresponding '--flash' or '--use-vm' args for device and vm 273*6777b538SAndroid Build Coastguard Worker# respectively. This argument instructs the template to skip generating 274*6777b538SAndroid Build Coastguard Worker# them, and it's designed for use cases where one builds for one board 275*6777b538SAndroid Build Coastguard Worker# (e.g. amd64-generic), but tests on a different board (e.g. eve). 276*6777b538SAndroid Build Coastguard Worker# tast_vars: A list of "key=value" runtime variable pairs to pass to invoke 277*6777b538SAndroid Build Coastguard Worker# strip_chrome: If true, strips Chrome before deploying it for non-Tast tests. 278*6777b538SAndroid Build Coastguard Worker# the Tast tests. For more details, please see: 279*6777b538SAndroid Build Coastguard Worker# https://chromium.googlesource.com/chromiumos/platform/tast/+/HEAD/docs/writing_tests.md#Runtime-variables 280*6777b538SAndroid Build Coastguard Workertemplate("generate_runner_script") { 281*6777b538SAndroid Build Coastguard Worker forward_variables_from(invoker, 282*6777b538SAndroid Build Coastguard Worker [ 283*6777b538SAndroid Build Coastguard Worker "deploy_chrome", 284*6777b538SAndroid Build Coastguard Worker "deploy_lacros", 285*6777b538SAndroid Build Coastguard Worker "generated_script", 286*6777b538SAndroid Build Coastguard Worker "runtime_deps_file", 287*6777b538SAndroid Build Coastguard Worker "skip_generating_board_args", 288*6777b538SAndroid Build Coastguard Worker "strip_chrome", 289*6777b538SAndroid Build Coastguard Worker "tast_attr_expr", 290*6777b538SAndroid Build Coastguard Worker "tast_tests", 291*6777b538SAndroid Build Coastguard Worker "tast_vars", 292*6777b538SAndroid Build Coastguard Worker "testonly", 293*6777b538SAndroid Build Coastguard Worker "test_exe", 294*6777b538SAndroid Build Coastguard Worker ]) 295*6777b538SAndroid Build Coastguard Worker 296*6777b538SAndroid Build Coastguard Worker if (!defined(skip_generating_board_args)) { 297*6777b538SAndroid Build Coastguard Worker # --board should be assigned by the autotest wrapper on skylab builders 298*6777b538SAndroid Build Coastguard Worker skip_generating_board_args = is_skylab 299*6777b538SAndroid Build Coastguard Worker } 300*6777b538SAndroid Build Coastguard Worker 301*6777b538SAndroid Build Coastguard Worker if (skip_generating_board_args) { 302*6777b538SAndroid Build Coastguard Worker # cros_board is not needed, so setting it to empty to avoid being used 303*6777b538SAndroid Build Coastguard Worker # accidentally below. 304*6777b538SAndroid Build Coastguard Worker cros_board = "" 305*6777b538SAndroid Build Coastguard Worker not_needed([ cros_board ]) 306*6777b538SAndroid Build Coastguard Worker } 307*6777b538SAndroid Build Coastguard Worker 308*6777b538SAndroid Build Coastguard Worker if (!defined(deploy_chrome)) { 309*6777b538SAndroid Build Coastguard Worker deploy_chrome = false 310*6777b538SAndroid Build Coastguard Worker } 311*6777b538SAndroid Build Coastguard Worker if (!defined(deploy_lacros)) { 312*6777b538SAndroid Build Coastguard Worker deploy_lacros = false 313*6777b538SAndroid Build Coastguard Worker } 314*6777b538SAndroid Build Coastguard Worker if (!defined(strip_chrome)) { 315*6777b538SAndroid Build Coastguard Worker strip_chrome = false 316*6777b538SAndroid Build Coastguard Worker } 317*6777b538SAndroid Build Coastguard Worker is_tast = defined(tast_attr_expr) || defined(tast_tests) 318*6777b538SAndroid Build Coastguard Worker assert(!(is_tast && defined(test_exe)), 319*6777b538SAndroid Build Coastguard Worker "Tast tests are invoked from binaries shipped with the VM image. " + 320*6777b538SAndroid Build Coastguard Worker "There should be no locally built binary needed.") 321*6777b538SAndroid Build Coastguard Worker assert(is_tast || !defined(tast_vars), 322*6777b538SAndroid Build Coastguard Worker "tast_vars is only support for Tast tests") 323*6777b538SAndroid Build Coastguard Worker 324*6777b538SAndroid Build Coastguard Worker if (is_tast) { 325*6777b538SAndroid Build Coastguard Worker not_needed([ "strip_chrome" ]) 326*6777b538SAndroid Build Coastguard Worker } 327*6777b538SAndroid Build Coastguard Worker 328*6777b538SAndroid Build Coastguard Worker # If we're in the cros chrome-sdk (and not the raw ebuild), the test will 329*6777b538SAndroid Build Coastguard Worker # need some additional runtime data located in the SDK cache. 330*6777b538SAndroid Build Coastguard Worker if (cros_sdk_version != "") { 331*6777b538SAndroid Build Coastguard Worker assert(defined(generated_script), 332*6777b538SAndroid Build Coastguard Worker "Must specify where to place generated test launcher script via " + 333*6777b538SAndroid Build Coastguard Worker "'generated_script'") 334*6777b538SAndroid Build Coastguard Worker 335*6777b538SAndroid Build Coastguard Worker generate_chromeos_sdk_deps(target_name + "_cros_deps__helper") { 336*6777b538SAndroid Build Coastguard Worker is_tast = is_tast 337*6777b538SAndroid Build Coastguard Worker deploy_chrome = deploy_chrome 338*6777b538SAndroid Build Coastguard Worker } 339*6777b538SAndroid Build Coastguard Worker } 340*6777b538SAndroid Build Coastguard Worker 341*6777b538SAndroid Build Coastguard Worker generate_wrapper(target_name) { 342*6777b538SAndroid Build Coastguard Worker executable = "//build/chromeos/test_runner.py" 343*6777b538SAndroid Build Coastguard Worker wrapper_script = generated_script 344*6777b538SAndroid Build Coastguard Worker executable_args = [] 345*6777b538SAndroid Build Coastguard Worker 346*6777b538SAndroid Build Coastguard Worker if (defined(runtime_deps_file)) { 347*6777b538SAndroid Build Coastguard Worker write_runtime_deps = runtime_deps_file 348*6777b538SAndroid Build Coastguard Worker } 349*6777b538SAndroid Build Coastguard Worker 350*6777b538SAndroid Build Coastguard Worker # Build executable_args for the three different test types: GTest, Tast, 351*6777b538SAndroid Build Coastguard Worker # and host-side commands (eg telemetry). 352*6777b538SAndroid Build Coastguard Worker if (defined(test_exe)) { 353*6777b538SAndroid Build Coastguard Worker executable_args += [ 354*6777b538SAndroid Build Coastguard Worker "gtest", 355*6777b538SAndroid Build Coastguard Worker "--test-exe", 356*6777b538SAndroid Build Coastguard Worker test_exe, 357*6777b538SAndroid Build Coastguard Worker ] 358*6777b538SAndroid Build Coastguard Worker 359*6777b538SAndroid Build Coastguard Worker # This target is not a gtest unit test, but an integration test suite. 360*6777b538SAndroid Build Coastguard Worker # Similar to interactive ui tests, it would start a full browser and 361*6777b538SAndroid Build Coastguard Worker # then do testing. 362*6777b538SAndroid Build Coastguard Worker # See more at //docs/testing/chromeos_integration. 363*6777b538SAndroid Build Coastguard Worker if (test_exe == "chromeos_integration_tests") { 364*6777b538SAndroid Build Coastguard Worker # Run the test sudo helper. 365*6777b538SAndroid Build Coastguard Worker executable_args += [ "--run-test-sudo-helper" ] 366*6777b538SAndroid Build Coastguard Worker 367*6777b538SAndroid Build Coastguard Worker if (is_chromeos_ash) { 368*6777b538SAndroid Build Coastguard Worker # For ash, it need to first stop the existing ash. 369*6777b538SAndroid Build Coastguard Worker executable_args += [ "--stop-ui" ] 370*6777b538SAndroid Build Coastguard Worker } 371*6777b538SAndroid Build Coastguard Worker 372*6777b538SAndroid Build Coastguard Worker # Lacros need to know the wayland socket file created by Ash. 373*6777b538SAndroid Build Coastguard Worker # In this way, Lacros will be connected to the system Ash. 374*6777b538SAndroid Build Coastguard Worker if (is_chromeos_lacros) { 375*6777b538SAndroid Build Coastguard Worker executable_args += [ 376*6777b538SAndroid Build Coastguard Worker "--env-var", 377*6777b538SAndroid Build Coastguard Worker "XDG_RUNTIME_DIR", 378*6777b538SAndroid Build Coastguard Worker "/run/chrome", 379*6777b538SAndroid Build Coastguard Worker ] 380*6777b538SAndroid Build Coastguard Worker } 381*6777b538SAndroid Build Coastguard Worker 382*6777b538SAndroid Build Coastguard Worker # Make the tests match the browser's selinux tags so it gets the same 383*6777b538SAndroid Build Coastguard Worker # security context as the browser would. 384*6777b538SAndroid Build Coastguard Worker executable_args += [ "--set-selinux-label=chromeos_integration_tests=u:object_r:chrome_browser_exec:s0" ] 385*6777b538SAndroid Build Coastguard Worker } 386*6777b538SAndroid Build Coastguard Worker if (defined(runtime_deps_file)) { 387*6777b538SAndroid Build Coastguard Worker executable_args += [ 388*6777b538SAndroid Build Coastguard Worker "--runtime-deps-path", 389*6777b538SAndroid Build Coastguard Worker rebase_path(runtime_deps_file, root_build_dir), 390*6777b538SAndroid Build Coastguard Worker ] 391*6777b538SAndroid Build Coastguard Worker } 392*6777b538SAndroid Build Coastguard Worker } else if (is_tast) { 393*6777b538SAndroid Build Coastguard Worker # When --tast-tests is specified, test_runner.py will call 394*6777b538SAndroid Build Coastguard Worker # local_test_runner on the VM to run the set of tests. 395*6777b538SAndroid Build Coastguard Worker executable_args += [ 396*6777b538SAndroid Build Coastguard Worker "tast", 397*6777b538SAndroid Build Coastguard Worker "--suite-name", 398*6777b538SAndroid Build Coastguard Worker target_name, 399*6777b538SAndroid Build Coastguard Worker ] 400*6777b538SAndroid Build Coastguard Worker if (defined(tast_attr_expr)) { 401*6777b538SAndroid Build Coastguard Worker executable_args += [ 402*6777b538SAndroid Build Coastguard Worker "--attr-expr", 403*6777b538SAndroid Build Coastguard Worker tast_attr_expr, 404*6777b538SAndroid Build Coastguard Worker ] 405*6777b538SAndroid Build Coastguard Worker } else { 406*6777b538SAndroid Build Coastguard Worker foreach(test, tast_tests) { 407*6777b538SAndroid Build Coastguard Worker executable_args += [ 408*6777b538SAndroid Build Coastguard Worker "-t", 409*6777b538SAndroid Build Coastguard Worker test, 410*6777b538SAndroid Build Coastguard Worker ] 411*6777b538SAndroid Build Coastguard Worker } 412*6777b538SAndroid Build Coastguard Worker } 413*6777b538SAndroid Build Coastguard Worker if (defined(tast_vars)) { 414*6777b538SAndroid Build Coastguard Worker foreach(var, tast_vars) { 415*6777b538SAndroid Build Coastguard Worker executable_args += [ 416*6777b538SAndroid Build Coastguard Worker "--tast-var", 417*6777b538SAndroid Build Coastguard Worker var, 418*6777b538SAndroid Build Coastguard Worker ] 419*6777b538SAndroid Build Coastguard Worker } 420*6777b538SAndroid Build Coastguard Worker } 421*6777b538SAndroid Build Coastguard Worker if (dcheck_always_on) { 422*6777b538SAndroid Build Coastguard Worker executable_args += [ 423*6777b538SAndroid Build Coastguard Worker "--tast-extra-use-flags", 424*6777b538SAndroid Build Coastguard Worker "chrome_dcheck", 425*6777b538SAndroid Build Coastguard Worker ] 426*6777b538SAndroid Build Coastguard Worker } 427*6777b538SAndroid Build Coastguard Worker } else { 428*6777b538SAndroid Build Coastguard Worker executable_args += [ "host-cmd" ] 429*6777b538SAndroid Build Coastguard Worker } 430*6777b538SAndroid Build Coastguard Worker executable_args += [ 431*6777b538SAndroid Build Coastguard Worker "--cros-cache", 432*6777b538SAndroid Build Coastguard Worker "build/cros_cache/", 433*6777b538SAndroid Build Coastguard Worker "--path-to-outdir", 434*6777b538SAndroid Build Coastguard Worker rebase_path(root_out_dir, "//"), 435*6777b538SAndroid Build Coastguard Worker "-v", 436*6777b538SAndroid Build Coastguard Worker ] 437*6777b538SAndroid Build Coastguard Worker 438*6777b538SAndroid Build Coastguard Worker if (!is_tast && strip_chrome) { 439*6777b538SAndroid Build Coastguard Worker executable_args += [ "--strip-chrome" ] 440*6777b538SAndroid Build Coastguard Worker } 441*6777b538SAndroid Build Coastguard Worker 442*6777b538SAndroid Build Coastguard Worker if (!skip_generating_board_args) { 443*6777b538SAndroid Build Coastguard Worker executable_args += [ 444*6777b538SAndroid Build Coastguard Worker "--board", 445*6777b538SAndroid Build Coastguard Worker cros_board, 446*6777b538SAndroid Build Coastguard Worker ] 447*6777b538SAndroid Build Coastguard Worker 448*6777b538SAndroid Build Coastguard Worker _cros_is_vm = false 449*6777b538SAndroid Build Coastguard Worker foreach(b, string_split(cros_boards_with_qemu_images, ":")) { 450*6777b538SAndroid Build Coastguard Worker if (cros_board == b) { 451*6777b538SAndroid Build Coastguard Worker _cros_is_vm = true 452*6777b538SAndroid Build Coastguard Worker } 453*6777b538SAndroid Build Coastguard Worker } 454*6777b538SAndroid Build Coastguard Worker if (_cros_is_vm) { 455*6777b538SAndroid Build Coastguard Worker executable_args += [ "--use-vm" ] 456*6777b538SAndroid Build Coastguard Worker } else { 457*6777b538SAndroid Build Coastguard Worker executable_args += [ "--flash" ] 458*6777b538SAndroid Build Coastguard Worker } 459*6777b538SAndroid Build Coastguard Worker } 460*6777b538SAndroid Build Coastguard Worker 461*6777b538SAndroid Build Coastguard Worker # If we have public Chromium builds, use public Chromium OS images when 462*6777b538SAndroid Build Coastguard Worker # flashing the test device. 463*6777b538SAndroid Build Coastguard Worker if (!is_chrome_branded) { 464*6777b538SAndroid Build Coastguard Worker executable_args += [ "--public-image" ] 465*6777b538SAndroid Build Coastguard Worker } 466*6777b538SAndroid Build Coastguard Worker 467*6777b538SAndroid Build Coastguard Worker if (deploy_lacros) { 468*6777b538SAndroid Build Coastguard Worker executable_args += [ "--deploy-lacros" ] 469*6777b538SAndroid Build Coastguard Worker } 470*6777b538SAndroid Build Coastguard Worker 471*6777b538SAndroid Build Coastguard Worker if (deploy_chrome && !defined(test_exe)) { 472*6777b538SAndroid Build Coastguard Worker executable_args += [ "--deploy-chrome" ] 473*6777b538SAndroid Build Coastguard Worker } 474*6777b538SAndroid Build Coastguard Worker 475*6777b538SAndroid Build Coastguard Worker # executable_args should be finished, now build the data and deps lists. 476*6777b538SAndroid Build Coastguard Worker deps = [ "//testing/buildbot/filters:chromeos_filters" ] 477*6777b538SAndroid Build Coastguard Worker if (defined(invoker.deps)) { 478*6777b538SAndroid Build Coastguard Worker deps += invoker.deps 479*6777b538SAndroid Build Coastguard Worker } 480*6777b538SAndroid Build Coastguard Worker data = [ 481*6777b538SAndroid Build Coastguard Worker "//.vpython3", 482*6777b538SAndroid Build Coastguard Worker 483*6777b538SAndroid Build Coastguard Worker # We use android test-runner's results libs to construct gtest output 484*6777b538SAndroid Build Coastguard Worker # json. 485*6777b538SAndroid Build Coastguard Worker "//build/android/pylib/__init__.py", 486*6777b538SAndroid Build Coastguard Worker "//build/android/pylib/base/", 487*6777b538SAndroid Build Coastguard Worker "//build/android/pylib/results/", 488*6777b538SAndroid Build Coastguard Worker "//build/chromeos/", 489*6777b538SAndroid Build Coastguard Worker "//build/util/", 490*6777b538SAndroid Build Coastguard Worker "//third_party/chromite/", 491*6777b538SAndroid Build Coastguard Worker ] 492*6777b538SAndroid Build Coastguard Worker 493*6777b538SAndroid Build Coastguard Worker if (defined(invoker.data)) { 494*6777b538SAndroid Build Coastguard Worker data += invoker.data 495*6777b538SAndroid Build Coastguard Worker } 496*6777b538SAndroid Build Coastguard Worker 497*6777b538SAndroid Build Coastguard Worker data_deps = [ "//testing:test_scripts_shared" ] 498*6777b538SAndroid Build Coastguard Worker if (cros_sdk_version != "") { 499*6777b538SAndroid Build Coastguard Worker data_deps += [ ":" + target_name + "_cros_deps__helper" ] 500*6777b538SAndroid Build Coastguard Worker } 501*6777b538SAndroid Build Coastguard Worker if (defined(invoker.data_deps)) { 502*6777b538SAndroid Build Coastguard Worker data_deps += invoker.data_deps 503*6777b538SAndroid Build Coastguard Worker } 504*6777b538SAndroid Build Coastguard Worker } 505*6777b538SAndroid Build Coastguard Worker} 506*6777b538SAndroid Build Coastguard Worker 507*6777b538SAndroid Build Coastguard Workertemplate("tast_test") { 508*6777b538SAndroid Build Coastguard Worker forward_variables_from(invoker, "*") 509*6777b538SAndroid Build Coastguard Worker 510*6777b538SAndroid Build Coastguard Worker # Default the expression to match any chrome-related test. 511*6777b538SAndroid Build Coastguard Worker if (!defined(tast_attr_expr) && !defined(tast_tests)) { 512*6777b538SAndroid Build Coastguard Worker # The following expression filters out all non-critical tests. See the link 513*6777b538SAndroid Build Coastguard Worker # below for more details: 514*6777b538SAndroid Build Coastguard Worker # https://chromium.googlesource.com/chromiumos/platform/tast/+/main/docs/test_attributes.md 515*6777b538SAndroid Build Coastguard Worker tast_attr_expr = "\"group:mainline\" && \"dep:chrome\"" 516*6777b538SAndroid Build Coastguard Worker 517*6777b538SAndroid Build Coastguard Worker if (defined(enable_tast_informational_tests) && 518*6777b538SAndroid Build Coastguard Worker enable_tast_informational_tests) { 519*6777b538SAndroid Build Coastguard Worker tast_attr_expr += " && informational" 520*6777b538SAndroid Build Coastguard Worker } else { 521*6777b538SAndroid Build Coastguard Worker tast_attr_expr += " && !informational" 522*6777b538SAndroid Build Coastguard Worker } 523*6777b538SAndroid Build Coastguard Worker if (!is_chrome_branded) { 524*6777b538SAndroid Build Coastguard Worker tast_attr_expr += " && !\"dep:chrome_internal\"" 525*6777b538SAndroid Build Coastguard Worker } 526*6777b538SAndroid Build Coastguard Worker } else { 527*6777b538SAndroid Build Coastguard Worker assert(defined(tast_attr_expr) != defined(tast_tests), 528*6777b538SAndroid Build Coastguard Worker "Specify one of tast_tests or tast_attr_expr.") 529*6777b538SAndroid Build Coastguard Worker } 530*6777b538SAndroid Build Coastguard Worker 531*6777b538SAndroid Build Coastguard Worker _data_deps = [ 532*6777b538SAndroid Build Coastguard Worker "//:chromiumos_preflight", # Builds the browser. 533*6777b538SAndroid Build Coastguard Worker "//chromeos:cros_chrome_deploy", # Adds additional browser run-time deps. 534*6777b538SAndroid Build Coastguard Worker 535*6777b538SAndroid Build Coastguard Worker # Tools used to symbolize Chrome crash dumps. 536*6777b538SAndroid Build Coastguard Worker # TODO(crbug.com/1156772): Remove these if/when all tests pick them up by 537*6777b538SAndroid Build Coastguard Worker # default. 538*6777b538SAndroid Build Coastguard Worker "//third_party/breakpad:dump_syms", 539*6777b538SAndroid Build Coastguard Worker "//third_party/breakpad:minidump_dump", 540*6777b538SAndroid Build Coastguard Worker "//third_party/breakpad:minidump_stackwalk", 541*6777b538SAndroid Build Coastguard Worker ] 542*6777b538SAndroid Build Coastguard Worker _data = [ "//components/crash/content/tools/generate_breakpad_symbols.py" ] 543*6777b538SAndroid Build Coastguard Worker 544*6777b538SAndroid Build Coastguard Worker if (is_skylab) { 545*6777b538SAndroid Build Coastguard Worker generate_skylab_tast_filter(target_name) { 546*6777b538SAndroid Build Coastguard Worker # chromite.deploy_chrome is needed for sideloading Chrome. 547*6777b538SAndroid Build Coastguard Worker data = _data + [ "//third_party/chromite/" ] 548*6777b538SAndroid Build Coastguard Worker data_deps = _data_deps 549*6777b538SAndroid Build Coastguard Worker 550*6777b538SAndroid Build Coastguard Worker # To disable a test on specific milestones, add it to the appropriate 551*6777b538SAndroid Build Coastguard Worker # collection in the following file 552*6777b538SAndroid Build Coastguard Worker tast_control = "//chromeos/tast_control.gni" 553*6777b538SAndroid Build Coastguard Worker } 554*6777b538SAndroid Build Coastguard Worker } else { 555*6777b538SAndroid Build Coastguard Worker # Append any disabled tests to the expression. 556*6777b538SAndroid Build Coastguard Worker if (defined(tast_disabled_tests)) { 557*6777b538SAndroid Build Coastguard Worker assert(defined(tast_attr_expr), 558*6777b538SAndroid Build Coastguard Worker "tast_attr_expr must be used when specifying tast_disabled_tests.") 559*6777b538SAndroid Build Coastguard Worker foreach(_test_name, tast_disabled_tests) { 560*6777b538SAndroid Build Coastguard Worker tast_attr_expr += " && !\"name:${_test_name}\"" 561*6777b538SAndroid Build Coastguard Worker } 562*6777b538SAndroid Build Coastguard Worker } 563*6777b538SAndroid Build Coastguard Worker if (defined(tast_attr_expr)) { 564*6777b538SAndroid Build Coastguard Worker tast_attr_expr = "( " + tast_attr_expr + " )" 565*6777b538SAndroid Build Coastguard Worker } 566*6777b538SAndroid Build Coastguard Worker generate_runner_script(target_name) { 567*6777b538SAndroid Build Coastguard Worker testonly = true 568*6777b538SAndroid Build Coastguard Worker generated_script = "$root_build_dir/bin/run_${target_name}" 569*6777b538SAndroid Build Coastguard Worker runtime_deps_file = "$root_out_dir/${target_name}.runtime_deps" 570*6777b538SAndroid Build Coastguard Worker deploy_chrome = true 571*6777b538SAndroid Build Coastguard Worker 572*6777b538SAndroid Build Coastguard Worker data_deps = _data_deps 573*6777b538SAndroid Build Coastguard Worker if (!defined(deploy_lacros_chrome)) { 574*6777b538SAndroid Build Coastguard Worker deploy_lacros_chrome = false 575*6777b538SAndroid Build Coastguard Worker } 576*6777b538SAndroid Build Coastguard Worker deploy_lacros = deploy_lacros_chrome 577*6777b538SAndroid Build Coastguard Worker data = _data 578*6777b538SAndroid Build Coastguard Worker if (deploy_lacros_chrome) { 579*6777b538SAndroid Build Coastguard Worker data += [ 580*6777b538SAndroid Build Coastguard Worker # A script needed to launch Lacros in Lacros Tast tests. 581*6777b538SAndroid Build Coastguard Worker "//build/lacros/mojo_connection_lacros_launcher.py", 582*6777b538SAndroid Build Coastguard Worker ] 583*6777b538SAndroid Build Coastguard Worker 584*6777b538SAndroid Build Coastguard Worker # By default, tast tests download a lacros-chrome from a gcs location and 585*6777b538SAndroid Build Coastguard Worker # use it for testing. To support running lacros tast tests from Chromium CI, 586*6777b538SAndroid Build Coastguard Worker # a Var is added to support pointing the tast tests to use a specified 587*6777b538SAndroid Build Coastguard Worker # pre-deployed lacros-chrome. The location is decided by: 588*6777b538SAndroid Build Coastguard Worker # https://source.chromium.org/chromium/chromium/src/+/main:third_party/chromite/scripts/deploy_chrome.py;l=80;drc=86f1234a4be8e9574442e076cdc835897f7bea61 589*6777b538SAndroid Build Coastguard Worker tast_vars = [ "lacros.DeployedBinary=/usr/local/lacros-chrome" ] 590*6777b538SAndroid Build Coastguard Worker } 591*6777b538SAndroid Build Coastguard Worker } 592*6777b538SAndroid Build Coastguard Worker } 593*6777b538SAndroid Build Coastguard Worker} 594*6777b538SAndroid Build Coastguard Worker 595*6777b538SAndroid Build Coastguard Workertemplate("lacros_tast_tests") { 596*6777b538SAndroid Build Coastguard Worker forward_variables_from(invoker, 597*6777b538SAndroid Build Coastguard Worker [ 598*6777b538SAndroid Build Coastguard Worker "tast_attr_expr", 599*6777b538SAndroid Build Coastguard Worker "tast_disabled_tests", 600*6777b538SAndroid Build Coastguard Worker "tast_tests", 601*6777b538SAndroid Build Coastguard Worker "tast_control", 602*6777b538SAndroid Build Coastguard Worker ]) 603*6777b538SAndroid Build Coastguard Worker assert(defined(tast_attr_expr) != defined(tast_tests), 604*6777b538SAndroid Build Coastguard Worker "Specify one of tast_tests or tast_attr_expr.") 605*6777b538SAndroid Build Coastguard Worker 606*6777b538SAndroid Build Coastguard Worker _lacros_data_deps = [ 607*6777b538SAndroid Build Coastguard Worker "//chrome", # Builds the browser. 608*6777b538SAndroid Build Coastguard Worker 609*6777b538SAndroid Build Coastguard Worker # Tools used to symbolize Chrome crash dumps. 610*6777b538SAndroid Build Coastguard Worker # TODO(crbug.com/1156772): Remove these if/when all tests pick them up by 611*6777b538SAndroid Build Coastguard Worker # default. 612*6777b538SAndroid Build Coastguard Worker "//third_party/breakpad:dump_syms", 613*6777b538SAndroid Build Coastguard Worker "//third_party/breakpad:minidump_dump", 614*6777b538SAndroid Build Coastguard Worker "//third_party/breakpad:minidump_stackwalk", 615*6777b538SAndroid Build Coastguard Worker ] 616*6777b538SAndroid Build Coastguard Worker 617*6777b538SAndroid Build Coastguard Worker _lacros_data = [ 618*6777b538SAndroid Build Coastguard Worker "//components/crash/content/tools/generate_breakpad_symbols.py", 619*6777b538SAndroid Build Coastguard Worker 620*6777b538SAndroid Build Coastguard Worker # A script needed to launch Lacros in Lacros Tast tests. 621*6777b538SAndroid Build Coastguard Worker "//build/lacros/mojo_connection_lacros_launcher.py", 622*6777b538SAndroid Build Coastguard Worker ] 623*6777b538SAndroid Build Coastguard Worker 624*6777b538SAndroid Build Coastguard Worker if (is_skylab) { 625*6777b538SAndroid Build Coastguard Worker generate_skylab_tast_filter(target_name) { 626*6777b538SAndroid Build Coastguard Worker data = _lacros_data + [ 627*6777b538SAndroid Build Coastguard Worker "//.vpython3", 628*6777b538SAndroid Build Coastguard Worker "//third_party/chromite/", 629*6777b538SAndroid Build Coastguard Worker ] 630*6777b538SAndroid Build Coastguard Worker data_deps = _lacros_data_deps 631*6777b538SAndroid Build Coastguard Worker 632*6777b538SAndroid Build Coastguard Worker # To disable a test on specific milestones, add it to the appropriate 633*6777b538SAndroid Build Coastguard Worker # collection in the following file 634*6777b538SAndroid Build Coastguard Worker tast_control = "//chromeos/tast_control.gni" 635*6777b538SAndroid Build Coastguard Worker } 636*6777b538SAndroid Build Coastguard Worker } else { 637*6777b538SAndroid Build Coastguard Worker # Append any disabled tests to the expression. 638*6777b538SAndroid Build Coastguard Worker if (defined(tast_disabled_tests)) { 639*6777b538SAndroid Build Coastguard Worker assert(defined(tast_attr_expr), 640*6777b538SAndroid Build Coastguard Worker "tast_attr_expr must be used when specifying tast_disabled_tests.") 641*6777b538SAndroid Build Coastguard Worker foreach(_test, tast_disabled_tests) { 642*6777b538SAndroid Build Coastguard Worker _excluded_test_name_and_board = [] 643*6777b538SAndroid Build Coastguard Worker _excluded_test_name_and_board = string_split(_test, "@") + [ "" ] 644*6777b538SAndroid Build Coastguard Worker _excluded_test_name = _excluded_test_name_and_board[0] 645*6777b538SAndroid Build Coastguard Worker _excluded_board = _excluded_test_name_and_board[1] 646*6777b538SAndroid Build Coastguard Worker if (_excluded_board == "" || _excluded_board == cros_board) { 647*6777b538SAndroid Build Coastguard Worker tast_attr_expr += " && !\"name:${_excluded_test_name}\"" 648*6777b538SAndroid Build Coastguard Worker } 649*6777b538SAndroid Build Coastguard Worker } 650*6777b538SAndroid Build Coastguard Worker } 651*6777b538SAndroid Build Coastguard Worker if (defined(tast_attr_expr)) { 652*6777b538SAndroid Build Coastguard Worker tast_attr_expr = "( " + tast_attr_expr + " )" 653*6777b538SAndroid Build Coastguard Worker } 654*6777b538SAndroid Build Coastguard Worker generate_runner_script(target_name) { 655*6777b538SAndroid Build Coastguard Worker testonly = true 656*6777b538SAndroid Build Coastguard Worker deploy_lacros = true 657*6777b538SAndroid Build Coastguard Worker generated_script = "$root_build_dir/bin/run_${target_name}" 658*6777b538SAndroid Build Coastguard Worker runtime_deps_file = "$root_out_dir/${target_name}.runtime_deps" 659*6777b538SAndroid Build Coastguard Worker 660*6777b538SAndroid Build Coastguard Worker # At build time, Lacros tests don't know whether they'll run on VM or HW, 661*6777b538SAndroid Build Coastguard Worker # and instead, these flags are specified at runtime when invoking the 662*6777b538SAndroid Build Coastguard Worker # generated runner script. 663*6777b538SAndroid Build Coastguard Worker skip_generating_board_args = true 664*6777b538SAndroid Build Coastguard Worker 665*6777b538SAndroid Build Coastguard Worker # By default, tast tests download a lacros-chrome from a gcs location and 666*6777b538SAndroid Build Coastguard Worker # use it for testing. To support running lacros tast tests from Chromium CI, 667*6777b538SAndroid Build Coastguard Worker # a Var is added to support pointing the tast tests to use a specified 668*6777b538SAndroid Build Coastguard Worker # pre-deployed lacros-chrome. The location is decided by: 669*6777b538SAndroid Build Coastguard Worker # https://source.chromium.org/chromium/chromium/src/+/main:third_party/chromite/scripts/deploy_chrome.py;l=80;drc=86f1234a4be8e9574442e076cdc835897f7bea61 670*6777b538SAndroid Build Coastguard Worker tast_vars = [ "lacros.DeployedBinary=/usr/local/lacros-chrome" ] 671*6777b538SAndroid Build Coastguard Worker 672*6777b538SAndroid Build Coastguard Worker data_deps = _lacros_data_deps 673*6777b538SAndroid Build Coastguard Worker 674*6777b538SAndroid Build Coastguard Worker data = _lacros_data 675*6777b538SAndroid Build Coastguard Worker } 676*6777b538SAndroid Build Coastguard Worker } 677*6777b538SAndroid Build Coastguard Worker} 678