blob: 375f0399282e5e856fe2b4a3e2555ddd8a84d007 [file] [log] [blame]
# Copyright 2018 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/cipd.gni")
import("//build/components.gni")
import("//src/media/audio/audio_core/package.gni")
import("//src/virtualization/buildtools/linux_paths.gni")
import("//src/virtualization/buildtools/romfs_image.gni")
guest_packages = [
"//src/virtualization/bin/guest_manager:debian_guest_manager",
"//src/virtualization/bin/guest_manager:zircon_guest_manager",
# TODO(https://fxbug.dev/42073215): when
# fuchsia.component.test/Realm.InitMutableConfigFromPackage works with
# subpackaged components, replace with:
# "//src/virtualization/bin/termina_guest_manager",
"//src/virtualization/packages/termina_guest",
]
linux_tests_label = "//src/virtualization/packages/debian_guest:tests"
resource("debian_tests_img") {
sources = [ get_label_info(linux_tests_label, "target_out_dir") +
"/debian/tests.romfs" ]
outputs = [ "data/linux_tests.img" ]
deps = [ linux_tests_label ]
}
termina_extras_label = "//src/virtualization/packages/termina_guest:extras"
resource("termina_extras_img") {
sources =
[ get_label_info(termina_extras_label, "target_out_dir") + "/vm_extras" ]
outputs = [ "data/vm_extras.img" ]
deps = [ termina_extras_label ]
}
group("tests") {
testonly = true
deps = [
":termina_container_tests_pkg",
":virtualization_balloon_tests_pkg",
":virtualization_block_tests_pkg",
":virtualization_core_tests_pkg",
":virtualization_gpu_tests_pkg",
":virtualization_input_tests_pkg",
":virtualization_mem_tests_pkg",
":virtualization_net_tests_pkg",
":virtualization_shutdown_tests_pkg",
":virtualization_test_utils_pkg",
":virtualization_vsock_tests_pkg",
"hypervisor",
"lib:tests",
"smoke",
"virtio_input_test_util:tests($host_toolchain)",
]
# TODO(https://fxbug.dev/42076911): These tests currently do not work on arm64.
if (current_cpu == "x64") {
deps += [
# TODO(https://fxbug.dev/42142945): These tests needs to be reworked so that they
# interact correctly with Scenic.
":virtualization_magma_tests_pkg",
":virtualization_sound_tests_pkg",
]
}
}
group("build_only") {
deps = [
# The zircon test utils binaries touch a lot of FIDL interfaces so we want
# to build them in CQ to test for build regressions.
"//src/virtualization/tests:virtualization_test_utils_pkg",
]
}
group("test_images") {
testonly = true
deps = [
":debian_tests_img",
":linux_extras_img",
":termina_extras_img",
linux_tests_label,
termina_extras_label,
# TODO(https://fxbug.dev/42073215): when
# fuchsia.component.test/Realm.InitMutableConfigFromPackage works with
# subpackaged components, remove this line.
"//src/virtualization/bin/termina_guest_manager:termina_guest_manager_cmp",
]
}
executable("virtualization_core_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "core_tests.cc" ]
deps = [
"lib",
"lib:guest_console",
"lib:test_main",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//src/lib/json_parser",
"//third_party/googletest:gmock",
"//third_party/re2",
]
}
fuchsia_test_component("virtualization_core_tests_cmp") {
component_name = "virtualization_core_tests"
deps = [
":test_images",
":virtualization_core_tests",
]
manifest = "meta/virtualization_core_tests.cml"
test_type = "system"
}
fuchsia_test_package("virtualization_core_tests_pkg") {
package_name = "virtualization-core-tests"
test_components = [ ":virtualization_core_tests_cmp" ]
subpackages = guest_packages
test_specs = {
environments = guest_envs
log_settings = {
max_severity = "ERROR"
}
}
}
executable("virtualization_shutdown_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "shutdown_tests.cc" ]
deps = [
"lib",
"lib:guest_console",
"lib:test_main",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//third_party/googletest:gmock",
]
}
fuchsia_test_component("virtualization_shutdown_tests_cmp") {
component_name = "virtualization_shutdown_tests"
deps = [
":test_images",
":virtualization_shutdown_tests",
]
manifest = "meta/virtualization_shutdown_tests.cml"
test_type = "system"
}
fuchsia_test_package("virtualization_shutdown_tests_pkg") {
package_name = "virtualization_shutdown_tests"
test_components = [ ":virtualization_shutdown_tests_cmp" ]
subpackages = guest_packages
test_specs = {
environments = guest_envs
log_settings = {
max_severity = "ERROR"
}
}
}
executable("virtualization_balloon_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "virtio_balloon_tests.cc" ]
deps = [
"lib",
"lib:guest_console",
"lib:test_main",
"//sdk/fidl/fuchsia.kernel:fuchsia.kernel_cpp",
"//sdk/lib/component/incoming/cpp",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//src/lib/json_parser",
"//third_party/googletest:gmock",
"//third_party/re2",
]
}
fuchsia_test_component("virtualization_balloon_tests_cmp") {
component_name = "virtualization_balloon_tests"
deps = [
":test_images",
":virtualization_balloon_tests",
]
manifest = "meta/virtualization_balloon_tests.cml"
test_type = "system"
}
fuchsia_test_package("virtualization_balloon_tests_pkg") {
package_name = "virtualization_balloon_tests"
test_components = [ ":virtualization_balloon_tests_cmp" ]
subpackages = guest_packages
test_specs = {
environments = guest_envs
log_settings = {
max_severity = "ERROR"
}
}
}
executable("virtualization_block_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "virtio_block_tests.cc" ]
deps = [
"lib",
"lib:guest_console",
"lib:test_main",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//src/virtualization/bin/vmm/device:lib",
"//src/virtualization/bin/vmm/device:qcow_test_data",
"//third_party/googletest:gmock",
]
}
fuchsia_test_component("virtualization_block_tests_cmp") {
component_name = "virtualization_block_tests"
deps = [
":test_images",
":virtualization_block_tests",
]
manifest = "meta/virtualization_block_tests.cml"
test_type = "system"
}
fuchsia_test_package("virtualization_block_tests_pkg") {
package_name = "virtualization-block-tests"
test_components = [ ":virtualization_block_tests_cmp" ]
subpackages = guest_packages
test_specs = {
environments = guest_envs
log_settings = {
max_severity = "ERROR"
}
}
}
executable("virtualization_gpu_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "virtio_gpu_tests.cc" ]
deps = [
"lib:guest_console",
"lib:lib",
"lib:periodic_logger",
"lib:test_main",
"//sdk/fidl/fuchsia.ui.test.input:fuchsia.ui.test.input_cpp",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//third_party/googletest:gmock",
"//third_party/rapidjson",
]
}
fuchsia_test_component("virtualization_gpu_tests_cmp") {
component_name = "virtualization_gpu_tests"
deps = [
":test_images",
":virtualization_gpu_tests",
]
manifest = "meta/virtualization_gpu_tests.cml"
test_type = "system"
}
fuchsia_test_package("virtualization_gpu_tests_pkg") {
package_name = "virtualization-gpu-tests"
test_components = [ ":virtualization_gpu_tests_cmp" ]
subpackages = guest_packages
test_specs = {
environments = guest_vulkan_envs
log_settings = {
max_severity = "ERROR"
}
}
}
executable("virtualization_input_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "virtio_input_tests.cc" ]
deps = [
"lib",
"lib:guest_console",
"lib:test_main",
"//sdk/fidl/fuchsia.ui.test.input:fuchsia.ui.test.input_cpp",
"//sdk/lib/sys/component/cpp/testing:cpp",
]
}
fuchsia_test_component("virtualization_input_tests_cmp") {
component_name = "virtualization_input_tests"
deps = [
":test_images",
":virtualization_input_tests",
]
manifest = "meta/virtualization_input_tests.cml"
test_type = "system"
}
fuchsia_test_package("virtualization_input_tests_pkg") {
package_name = "virtualization-input-tests"
test_components = [ ":virtualization_input_tests_cmp" ]
subpackages = guest_packages
test_specs = {
# Require vulkan for UITestManager
environments = guest_vulkan_envs
log_settings = {
max_severity = "ERROR"
}
}
}
executable("virtualization_net_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "virtio_net_tests.cc" ]
deps = [
"lib",
"lib:guest_console",
"lib:test_main",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//src/lib/inet",
"//third_party/googletest:gmock",
]
}
fuchsia_test_component("virtualization_net_tests_cmp") {
component_name = "virtualization_net_tests"
deps = [
":test_images",
":virtualization_net_tests",
]
manifest = "meta/virtualization_net_tests.cml"
test_type = "system"
}
fuchsia_test_package("virtualization_net_tests_pkg") {
package_name = "virtualization-net-tests"
test_components = [ ":virtualization_net_tests_cmp" ]
subpackages = guest_packages
test_specs = {
environments = guest_envs
log_settings = {
max_severity = "ERROR"
}
}
}
executable("virtualization_sound_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "virtio_sound_tests.cc" ]
deps = [
"lib",
"lib:guest_console",
"lib:test_main",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//src/lib/files",
"//src/media/audio/audio_core/testing/integration:hermetic_audio_test",
"//src/media/audio/lib/format",
"//third_party/googletest:gmock",
]
}
fuchsia_test_component("virtualization_sound_tests_cmp") {
component_name = "virtualization_sound_tests"
deps = [
":test_images",
":virtualization_sound_tests",
]
manifest = "meta/virtualization_sound_tests.cml"
test_type = "system"
}
audio_core_test_package("virtualization_sound_tests_pkg") {
package_name = "virtualization-sound-tests"
test_components = [ ":virtualization_sound_tests_cmp" ]
subpackages = guest_packages
test_specs = {
environments = guest_envs
log_settings = {
max_severity = "ERROR"
}
}
audio_core_manifest_shards =
[ "//src/media/audio/audio_core/meta/audio_core.shard.ultrasound.cml" ]
}
executable("virtualization_vsock_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "virtio_vsock_tests.cc" ]
deps = [
"lib",
"lib:guest_console",
"lib:test_main",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//third_party/googletest:gmock",
]
}
fuchsia_test_component("virtualization_vsock_tests_cmp") {
component_name = "virtualization_vsock_tests"
deps = [
":test_images",
":virtualization_vsock_tests",
]
manifest = "meta/virtualization_vsock_tests.cml"
test_type = "system"
}
fuchsia_test_package("virtualization_vsock_tests_pkg") {
package_name = "virtualization-vsock-tests"
test_components = [ ":virtualization_vsock_tests_cmp" ]
subpackages = guest_packages
test_specs = {
environments = guest_envs
log_settings = {
max_severity = "ERROR"
}
}
}
executable("virtualization_mem_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "virtio_mem_tests.cc" ]
deps = [
"lib",
"lib:guest_console",
"lib:test_main",
"//sdk/fidl/fuchsia.kernel:fuchsia.kernel_cpp",
"//sdk/lib/component/incoming/cpp",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//src/lib/json_parser",
"//third_party/googletest:gmock",
"//third_party/re2",
]
}
fuchsia_test_component("virtualization_mem_tests_cmp") {
component_name = "virtualization_mem_tests"
deps = [
":test_images",
":virtualization_mem_tests",
]
manifest = "meta/virtualization_mem_tests.cml"
test_type = "system"
}
fuchsia_test_package("virtualization_mem_tests_pkg") {
package_name = "virtualization_mem_tests"
test_components = [ ":virtualization_mem_tests_cmp" ]
subpackages = guest_packages
test_specs = {
environments = guest_envs
log_settings = {
max_severity = "ERROR"
}
}
}
fuchsia_component("virtio_block_test_util_cmp") {
component_name = "virtio_block_test_util"
deps = [ "virtio_block_test_util" ]
manifest = "virtio_block_test_util/meta/virtio_block_test_util.cml"
}
fuchsia_component("virtio_gpu_test_util_cmp") {
component_name = "virtio_gpu_test_util"
deps = [ "virtio_gpu_test_util" ]
manifest = "virtio_gpu_test_util/meta/virtio_gpu_test_util.cml"
}
fuchsia_component("virtio_rng_test_util_cmp") {
component_name = "virtio_rng_test_util"
deps = [ "virtio_rng_test_util" ]
manifest = "virtio_rng_test_util/meta/virtio_rng_test_util.cml"
}
fuchsia_component("virtio_net_test_util_cmp") {
component_name = "virtio_net_test_util"
deps = [ "virtio_net_test_util" ]
manifest = "virtio_net_test_util/meta/virtio_net_test_util.cml"
}
fuchsia_component("virtio_vsock_test_util_cmp") {
component_name = "virtio_vsock_test_util"
deps = [ "virtio_vsock_test_util" ]
manifest = "virtio_vsock_test_util/meta/virtio_vsock_test_util.cml"
}
fuchsia_component("memory_test_util_cmp") {
component_name = "memory_test_util"
deps = [ "memory_test_util" ]
manifest = "memory_test_util/meta/memory_test_util.cml"
}
fuchsia_shell_package("virtualization_test_utils_pkg") {
package_name = "virtualization-test-utils"
deps = [
":memory_test_util_cmp",
":virtio_block_test_util_cmp",
":virtio_gpu_test_util_cmp",
":virtio_net_test_util_cmp",
":virtio_rng_test_util_cmp",
":virtio_vsock_test_util_cmp",
]
}
romfs_image("extras") {
testonly = true
deps = [
"//src/graphics/magma/tests/integration:virtmagma_conformance_tests(${linux_exe_toolchain})",
"//src/graphics/magma/tests_linux/unit_tests:virtmagma_vulkan_unit_tests(${linux_exe_toolchain})",
]
inputs = [
"${linux_exe_path}/virtmagma_vulkan_unit_tests",
"${linux_exe_path}/virtmagma_conformance_tests",
"//src/virtualization/tests/testdata/stereo_ramp_48khz_16bit.wav",
]
# We don't run the container tests on arm64, so don't provide any container images to reduce the
# size of the tests.
#
# We also need internal_access because otherwise CIPD will not be able to resolve these files.
if (internal_access && target_cpu == "x64") {
inputs += [
"//prebuilt/virtualization/packages/termina_guest/container/${target_cpu}/lxd.tar.xz",
"//prebuilt/virtualization/packages/termina_guest/container/${target_cpu}/rootfs.tar.xz",
]
}
output = "$target_out_dir/linux/extras.img"
}
executable("virtualization_magma_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "virtio_magma_tests.cc" ]
deps = [
"lib",
"lib:test_main",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//third_party/googletest:gtest",
]
}
resource("linux_extras_img") {
testonly = true
sources = [ "$target_out_dir/linux/extras.img" ]
outputs = [ "data/extras.img" ]
deps = [ ":extras" ]
}
fuchsia_test_component("virtualization_magma_tests_cmp") {
component_name = "virtualization_magma_tests"
deps = [
":test_images",
":virtualization_magma_tests",
]
manifest = "meta/virtualization_magma_tests.cml"
test_type = "system"
}
fuchsia_test_package("virtualization_magma_tests_pkg") {
package_name = "virtualization_magama_tests"
test_components = [ ":virtualization_magma_tests_cmp" ]
subpackages = guest_packages
test_specs = {
environments = [ nuc_env ]
log_settings = {
max_severity = "ERROR"
}
}
}
executable("termina_container_tests") {
visibility = [ ":*" ]
testonly = true
sources = [ "termina_container_tests.cc" ]
deps = [
"lib",
"lib:test_main",
"//sdk/lib/sys/component/cpp/testing:cpp",
"//third_party/googletest:gtest",
]
}
fuchsia_test_component("termina_container_tests_cmp") {
component_name = "termina_container_tests"
deps = [
":termina_container_tests",
":test_images",
]
manifest = "meta/termina_container_tests.cml"
test_type = "system"
}
fuchsia_test_package("termina_container_tests_pkg") {
package_name = "termina_container_tests"
test_components = [ ":termina_container_tests_cmp" ]
subpackages = guest_packages
test_specs = {
if (is_debug) {
# See https://fxbug.dev/42062247 for test timeouts when starting the container.
timeout_secs = 420
}
environments = [ nuc_env ]
log_settings = {
max_severity = "ERROR"
}
}
}