| # 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/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.virtualization", |
| "//sdk/lib/sys/cpp", |
| "//src/lib/fxl", |
| "//src/lib/inet", |
| "//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/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 = "//garnet/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", |
| "//garnet/lib/magma/tests/integration:magma_abi_conformance_tests(${linux_exe_toolchain})", |
| "//garnet/lib/magma/tests_linux/unit_tests:virtmagma_unit_tests_linux(${linux_exe_toolchain})", |
| "//garnet/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}/magma_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(37320): The tests are temporarily disabled for vim2_env due to an unresolved bug. |
| environments = [ nuc_env ] |
| }, |
| ] |
| } |
| |
| 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 ] |
| }, |
| ] |
| } |