blob: 52c7d1e4ce24ae53a4d0156762d68b47fd2fcf90 [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/package.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")
import("//src/virtualization/buildtools/linux_paths.gni")
import("//src/virtualization/buildtools/romfs_image.gni")
# Packages required to run the guest integration tests.
guest_packages = [
":guest_integration_tests_utils",
"//garnet/packages/prod:guest_runner",
"//src/virtualization/bin/guest_manager",
"//src/virtualization/packages/debian_guest",
"//src/virtualization/packages/termina_guest",
"//src/virtualization/packages/zircon_guest",
]
group("tests") {
testonly = true
deps = [
":guest_integration_tests",
":guest_integration_tests_bin",
":guest_integration_tests_utils",
":guest_unit_tests",
"virtio_block_test_util",
"virtio_net_test_util",
"virtio_rng_test_util",
"virtio_vsock_test_util",
]
# Ensure guest packages are available in the manifest.
data_deps = guest_packages
}
source_set("logger") {
visibility = [ ":*" ]
sources = [
"logger.cc",
"logger.h",
]
}
source_set("guest_console") {
visibility = [
"//src/connectivity/network/testing/netemul/*",
"//src/virtualization/*",
]
sources = [
"guest_console.cc",
"guest_console.h",
"socket.cc",
"socket.h",
]
deps = [
"//sdk/fidl/fuchsia.netstack",
"//sdk/fidl/fuchsia.virtualization",
"//sdk/lib/sys/cpp",
"//src/lib/fxl",
"//src/lib/inet",
"//zircon/public/lib/fbl",
]
public_deps = [
":logger",
"//zircon/public/lib/zx",
]
}
source_set("fake_netstack") {
visibility = [
"//src/connectivity/network/testing/netemul/*",
"//src/virtualization/*",
]
sources = [
"fake_netstack.cc",
"fake_netstack.h",
]
deps = [
"//src/lib/fxl",
"//src/lib/inet",
"//zircon/public/lib/fbl",
"//zircon/public/lib/fit",
"//zircon/system/public",
]
public_deps = [
"//sdk/fidl/fuchsia.netstack",
"//sdk/lib/fidl/cpp",
"//zircon/public/lib/async-loop-cpp",
"//zircon/public/lib/async-loop-default",
]
}
executable("unit_tests") {
testonly = true
output_name = "guest_unit_tests"
sources = [ "guest_console_test.cc" ]
deps = [
":guest_console",
"//src/lib/fxl:fxl_logging",
"//src/lib/fxl/test:gtest_main",
"//third_party/googletest:gmock",
"//third_party/googletest:gtest",
]
}
source_set("test_main") {
testonly = true
visibility = [ ":*" ]
sources = [ "test_main.cc" ]
deps = [
":logger",
"//src/lib/fxl/test:test_settings",
"//third_party/googletest:gtest",
]
}
source_set("lib") {
visibility = [ ":*" ]
testonly = true
sources = [
"enclosed_guest.cc",
"enclosed_guest.h",
"fake_scenic.cc",
"fake_scenic.h",
"guest_test.h",
"periodic_logger.cc",
"periodic_logger.h",
]
deps = [
":fake_netstack",
":guest_console",
"//garnet/public/lib/fostr",
"//garnet/public/lib/fostr/fidl/fuchsia.ui.gfx",
"//garnet/public/lib/fostr/fidl/fuchsia.ui.scenic",
"//sdk/fidl/fuchsia.sysinfo",
"//sdk/fidl/fuchsia.virtualization",
"//sdk/lib/sys/cpp",
"//src/lib/fxl",
"//src/lib/inet",
"//src/virtualization/bin/vmm:guest_config",
"//src/virtualization/bin/vmm/device",
"//src/virtualization/lib/vsh:client",
"//third_party/googletest:gmock",
"//third_party/googletest:gtest",
]
public_deps = [
"//sdk/fidl/fuchsia.netstack",
"//sdk/fidl/fuchsia.ui.scenic",
"//sdk/lib/sys/cpp/testing:integration",
"//src/virtualization/lib/grpc",
"//src/virtualization/packages/biscotti_guest/third_party/protos:vm_cc_proto",
"//third_party/googletest:gmock",
"//third_party/googletest:gtest",
"//zircon/public/lib/async-cpp",
"//zircon/public/lib/async-loop-cpp",
"//zircon/public/lib/async-loop-default",
"//zircon/public/lib/fbl",
"//zircon/public/lib/fdio",
]
}
executable("guest_integration_tests_bin") {
visibility = [ ":*" ]
output_name = "guest_integration_tests"
testonly = true
sources = [
"core_tests.cc",
"virtio_block_tests.cc",
"virtio_gpu_tests.cc",
"virtio_net_tests.cc",
"virtio_vsock_tests.cc",
]
# Architecture-specific tests.
if (target_cpu != "arm64") {
# TODO(MAC-256): Input tests don't currently work on the ARM Linux images.
sources += [ "virtio_input_tests.cc" ]
}
deps = [
":fake_netstack",
":guest_console",
":lib",
":test_main",
"//sdk/fidl/fuchsia.netstack",
"//sdk/fidl/fuchsia.virtualization",
"//sdk/lib/sys/cpp/testing:integration",
"//src/lib/fxl",
"//src/lib/fxl/test:test_settings",
"//src/lib/inet",
"//src/virtualization/bin/vmm:guest_config",
"//src/virtualization/bin/vmm/device",
"//src/virtualization/bin/vmm/device:qcow_test_data",
"//third_party/googletest:gmock",
"//third_party/googletest:gtest",
]
}
unittest_package("guest_unit_tests") {
deps = [ ":unit_tests" ]
tests = [
{
name = "guest_unit_tests"
environments = basic_envs
},
]
}
icd_filename = "libvulkan_intel.so"
icd_manifest = "${target_gen_dir}/magma.json"
action("icd_manifest") {
visibility = [ ":*" ]
script = "//src/graphics/lib/magma/scripts/gen_icd_manifest.sh"
args = [
"${icd_filename}",
rebase_path(icd_manifest, root_build_dir),
]
outputs = [ icd_manifest ]
}
romfs_image("extras") {
testonly = true
deps = [
":icd_manifest",
"//src/graphics/lib/magma/tests/integration:virtmagma_abi_conformance_tests(${linux_exe_toolchain})",
"//src/graphics/lib/magma/tests_linux/unit_tests:virtmagma_unit_tests_linux(${linux_exe_toolchain})",
"//src/graphics/lib/magma/tests_linux/unit_tests:virtmagma_vulkan_unit_tests(${linux_exe_toolchain})",
"//src/lib/vulkan(${linux_lib_toolchain})",
]
inputs = [
"${icd_manifest}",
"${linux_lib_path}/libvulkan.so", # Vulkan Loader
"${linux_exe_path}/virtmagma_unit_tests_linux",
"${linux_exe_path}/virtmagma_vulkan_unit_tests",
"${linux_exe_path}/virtmagma_abi_conformance_tests",
]
if (current_cpu == "x64") {
deps += [ "//third_party/mesa/src/intel/vulkan:vulkan_intel(${linux_lib_toolchain})" ]
inputs += [ "${linux_lib_path}/${icd_filename}" ]
}
output = "$target_out_dir/linux/extras.img"
}
_linux_tests_label = "//src/virtualization/packages/debian_guest:tests"
test_package("guest_integration_tests") {
deps = [
":extras",
":guest_integration_tests_bin",
_linux_tests_label,
]
resources = [
{
path = get_label_info(_linux_tests_label, "target_out_dir") +
"/debian/tests.img"
dest = "linux_tests.img"
},
{
path = "$target_out_dir/linux/extras.img"
dest = "extras.img"
},
]
# Integration tests rely on launching Debian, Zircon and the guest_manager.
data_deps = guest_packages
tests = [
{
name = "guest_integration_tests"
# TODO(fxbug.dev/50820): Fix on ASan and switch back to [ nuc_env ].
environments = nuc_env_fails_on_asan
},
]
}
package("guest_integration_tests_utils") {
deps = [
"virtio_block_test_util",
"virtio_net_test_util",
"virtio_rng_test_util",
"virtio_vsock_test_util",
]
meta = [
{
path =
rebase_path("virtio_block_test_util/meta/virtio_block_test_util.cmx")
dest = "virtio_block_test_util.cmx"
},
{
path = rebase_path("virtio_rng_test_util/meta/virtio_rng_test_util.cmx")
dest = "virtio_rng_test_util.cmx"
},
{
path = rebase_path("virtio_net_test_util/meta/virtio_net_test_util.cmx")
dest = "virtio_net_test_util.cmx"
},
{
path =
rebase_path("virtio_vsock_test_util/meta/virtio_vsock_test_util.cmx")
dest = "virtio_vsock_test_util.cmx"
},
]
binaries = [
{
name = "virtio_block_test_util"
},
{
name = "virtio_net_test_util"
},
{
name = "virtio_rng_test_util"
},
{
name = "virtio_vsock_test_util"
},
]
}
# This should be merged into |guest_integration_tests| once the termina guest is stable in CQ.
executable("termina_integration_tests_bin") {
visibility = [ ":*" ]
output_name = "termina_integration_tests"
testonly = true
sources = [
"virtio_magma_tests.cc",
"virtio_wl_tests.cc",
]
deps = [
":lib",
":test_main",
"//third_party/googletest:gtest",
]
}
group("termina") {
testonly = true
deps = guest_packages
deps += [ ":termina_integration_tests" ]
}
test_package("termina_integration_tests") {
deps = [
":extras",
":termina_integration_tests_bin",
_linux_tests_label,
]
resources = [
{
path = get_label_info(_linux_tests_label, "target_out_dir") +
"/debian/tests.img"
dest = "linux_tests.img"
},
{
path = "$target_out_dir/linux/extras.img"
dest = "extras.img"
},
]
tests = [
{
name = "termina_integration_tests"
# TODO(37320): The tests are temporarily disabled for vim2_env due to an unresolved bug.
environments = [ nuc_env ]
},
]
}