blob: 90606268f518cbb0ad4a8d8f44ba200e4d5ac392 [file] [log] [blame]
# Copyright 2020 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/fidl/fidl.gni")
import("//build/fidl/toolchain.gni")
import("//build/host.gni")
import("//build/python/python_host_test.gni")
import("//build/testing/environments.gni")
import("//build/testing/host_test_data.gni")
if (is_host) {
python_host_test("fidlcat_e2e_tests") {
main_source = "fidlcat_e2e_tests.py"
extra_args = [ "-v" ]
deps = [
":runtime_deps",
"//src/developer/ffx:test_data",
"//src/developer/ffx/plugins/debug:ffx_debug_plugin_tool_test_data",
]
# Runs on "main" builders (try and ci) in QEMU environments, but only on x64, as we don't
# support running host test on arm64 host.
# TODO(https://fxbug.dev/42051651): fix the timeout issue with asan on.
# TODO: enable the test on other arm64 targets.
environments = []
if (target_cpu == "x64" && !is_asan) {
environments = [ emu_env ]
}
}
}
# Extract the symbols for the given ELF file from the .build-id directory.
template("generate_symbols") {
assert(defined(invoker.library_label), "Must define 'library_label'")
assert(defined(invoker.library_path), "Must define 'library_path'")
assert(defined(invoker.output), "Must define 'output'")
action(target_name) {
deps = [ invoker.library_label ]
inputs = [
invoker.library_path,
"//build/images/elfinfo.py",
]
outputs = [ invoker.output ]
script = "generate_debug.sh"
depfile = "${invoker.output}.d"
args = [
"--python-path",
rebase_path(python_exe_src, root_build_dir),
"--build-id-dir",
rebase_path("$root_build_dir/.build-id", root_build_dir),
"--build-id-script",
rebase_path("//build/images/elfinfo.py", root_build_dir),
"--binary",
rebase_path(invoker.library_path, root_build_dir),
"--output",
rebase_path(invoker.output, root_build_dir),
"--depfile",
rebase_path(depfile, root_build_dir),
]
}
}
generate_symbols("echo_client_sym") {
library_label = "//src/testing/fidl/echo_realm_placeholder/echo_client:bin($target_toolchain)"
library_path = "$root_build_dir/echo_client_placeholder"
output = "$target_gen_dir/echo_realm_placeholder/echo_client.debug"
}
# Examples FIDL library required by save/replay .proto tests recorded against
# legacy FIDL examples
fidl("echo") {
testonly = true
name = "fidl.examples.echo"
visibility = [ ":*" ]
sources = [ "echo.test.fidl" ]
}
if (is_host) {
host_test_data("test_data") {
sources = [
# We have to list all required FIDL IR explicitly here or they will not be
# present when we execute the test.
# This must be kept in sync with the list of FIDL IR in the test itself.
"$root_build_dir/fidling/gen/sdk/fidl/fuchsia.io/fuchsia.io.fidl.json",
"$root_build_dir/fidling/gen/sdk/fidl/fuchsia.mem/fuchsia.mem.fidl.json",
"$root_build_dir/fidling/gen/src/testing/fidl/placeholders.fidl.json",
"$root_build_dir/fidling/gen/src/tests/end_to_end/fidlcat/echo.fidl.json",
# Debug symbol
"$target_gen_dir/echo_realm_placeholder/echo_client.debug",
# Previous saved test data.
"//src/tests/end_to_end/fidlcat/echo.pb",
"//src/tests/end_to_end/fidlcat/echo_client.pb",
"//src/tests/end_to_end/fidlcat/echo_client_sync.pb",
"//src/tests/end_to_end/fidlcat/echo_sync_crash.pb",
"//src/tests/end_to_end/fidlcat/snapshot.pb",
]
outputs =
[ "$root_out_dir/test_data/fidlcat_e2e_tests/{{source_file_part}}" ]
deps = [
":echo($fidl_toolchain)",
":echo_client_sym",
"//sdk/fidl/fuchsia.io($fidl_toolchain)",
"//sdk/fidl/fuchsia.mem($fidl_toolchain)",
"//src/testing/fidl:placeholders($fidl_toolchain)",
]
}
host_test_data("test_tools") {
sources = [
"$root_out_dir/ffx",
"$root_out_dir/fidlcat",
]
deps = [
"//src/developer/ffx:ffx_bin",
"//tools/fidlcat",
]
}
group("runtime_deps") {
testonly = true
deps = [
":test_data",
":test_tools",
"//src/developer/debug/debug_agent($target_toolchain)",
"//src/testing/fidl/echo_realm_placeholder($target_toolchain)",
]
}
}
group("tests") {
testonly = true
deps = [ ":fidlcat_e2e_tests($host_toolchain)" ]
}