blob: 63895692efcd8f450cd50699380c10e7b2507a04 [file] [log] [blame]
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/testing/test_spec.gni")
_default_system_ota_tests =
[ "//garnet/tests/system_ota_tests:system_ota_tests_upgrade" ]
# The service account that allows the test to download build artifacts.
_environment_service_account =
"internal-artifacts-readers@fuchsia-infra.iam.gserviceaccount.com"
# A template that configures a System OTA test against a given release builder.
#
# Parameters
#
# tests
# - Optional: The system ota tests to run. If not specified, this will
# default to running all the system ota tests.
# - Type: list(label)
#
# release_builder
# - Required: Builder from which build artifacts will be downloaded. This has
# the the form of `project/bucket/builder id`, like
# `fuchsia/ci/fuchsia-x64-release`.
# - Type: string
#
# environments
# - Required: What environments this test should target.
# - Type: see //build/testing/test_spec.gni for more details. Note that
# any label and service_account in each environment is ignored.
template("system_ota_test_suite") {
assert(is_linux || is_mac, "system_ota_tests are for linux/mac only")
assert(defined(invoker.release_builder),
"release_builder must be defined for $target_name")
assert(defined(invoker.environments),
"environments must be defined for $target_name")
_tests = _default_system_ota_tests
if (defined(invoker.tests)) {
_tests = invoker.tests
}
_deps = []
foreach(test, _tests) {
_test_name = get_label_info(test, "name")
_test_binary = "$root_out_dir/$_test_name"
_spec_target_name = "${target_name}_${_test_name}_spec"
_deps += [ ":${_spec_target_name}" ]
test_spec(_spec_target_name) {
name = test
location = _test_binary
command = [
rebase_path(_test_binary, root_build_dir),
"-builder-name",
invoker.release_builder,
]
deps = [
test,
]
environments = []
foreach(env, invoker.environments) {
env.service_account = _environment_service_account
environments += [ env ]
}
}
}
# Finally, group all the generated test specs into a group to make it easy to
# reference.
group(target_name) {
testonly = true
deps = _deps
}
}