blob: a019e42580d694eae23b60a6b7187e01c01a0f4f [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/config/fuchsia/zircon_images.gni")
import("//build/rust/rustc_test.gni")
import("//build/test.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")
group("tests") {
testonly = true
deps = [
":netstack_bsdsocket_c_api_test($host_toolchain)",
":netstack_c_api_tests",
":netstack_external_network_test_client($host_toolchain)",
":netstack_if_nameindex_test($host_toolchain)",
":netstack_integration_tests",
"benchmarks",
"integration:tests",
]
}
rustc_test("netstack_fidl_integration_test") {
edition = "2018"
deps = [
"//garnet/lib/rust/fidl_fuchsia_net_ext",
"//garnet/lib/rust/fidl_fuchsia_net_stack_ext",
"//sdk/fidl/fuchsia.hardware.ethernet:fuchsia.hardware.ethernet-rustc",
"//sdk/fidl/fuchsia.inspect.deprecated:fuchsia.inspect.deprecated-rustc",
"//sdk/fidl/fuchsia.net.dhcp:fuchsia.net.dhcp-rustc",
"//sdk/fidl/fuchsia.net.name:fuchsia.net.name-rustc",
"//sdk/fidl/fuchsia.net.stack:fuchsia.net.stack-rustc",
"//sdk/fidl/fuchsia.netstack:fuchsia.netstack-rustc",
"//sdk/fidl/fuchsia.stash:fuchsia.stash-rustc",
"//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
"//src/connectivity/network/testing/netemul/lib/fidl:environment-rustc",
"//src/connectivity/network/testing/netemul/lib/fidl:network-rustc",
"//src/connectivity/network/testing/netemul/lib/fidl:sandbox-rustc",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:thiserror",
"//zircon/system/fidl/fuchsia-cobalt:fuchsia-cobalt-rustc",
"//zircon/system/fidl/fuchsia-net:fuchsia-net-rustc",
"//zircon/system/fidl/fuchsia-posix-socket:fuchsia-posix-socket-rustc",
]
# TODO(46769): Fix the leaks and remove this.
non_rust_deps = [ "//build/config/sanitizers:suppress-lsan.DO-NOT-USE-THIS" ]
}
rustc_test("netstack_cobalt_integration_test") {
edition = "2018"
source_root = "src/cobalt.rs"
deps = [
"//sdk/fidl/fuchsia.cobalt.test:fuchsia.cobalt.test-rustc",
"//sdk/fidl/fuchsia.net.stack:fuchsia.net.stack-rustc",
"//src/connectivity/network/netstack:networking_metrics_rustlib",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/syslog/rust:syslog",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:itertools",
"//zircon/system/fidl/fuchsia-cobalt:fuchsia-cobalt-rustc",
]
}
zircon_extras_manifest("device_name_provider_manifest") {
visibility = [ ":*" ]
manifest = "image"
patterns = [ "bin/device-name-provider" ]
}
package("device_name_provider") {
deps = [ ":device_name_provider_manifest" ]
extra = get_target_outputs(":device_name_provider_manifest")
meta = [
{
path = rebase_path("meta/device_name_provider.cmx")
dest = "device_name_provider.cmx"
},
]
}
# This target contains the test package netstack_integration_tests and the
# dependencies needed in the image/universe to run the tests within it.
# There's currently no way to express a dependency between packages in the build
# system, so we aggregate all the dependencies in this group target.
# See bug 36293 for more details.
group("netstack_integration_tests") {
testonly = true
deps = [
":netstack_integration_tests_inner",
# device_name_provider provides fuchsia.device.NameProvider.
":device_name_provider",
# dhcpd is used to test DHCP address acquisition.
"//src/connectivity/network/dhcp:dhcpd-testing",
# netstack{,3} is under test.
"//src/connectivity/network/netstack",
"//src/connectivity/network/netstack3",
# netemul is used to create hermetic environments.
"//src/connectivity/network/testing/netemul",
# mock_cobalt provides fuchsia.cobalt.LoggerFactory and fuchsia.cobalt.test.LoggerQuerier.
"//src/cobalt/bin/testing/mock_cobalt",
# dns_resolver integration with netstack is tested.
"//src/connectivity/network/dns:dns-resolver",
]
}
test_package("netstack_integration_tests_inner") {
package_name = "netstack_integration_tests"
deps = [
":netstack_cobalt_integration_test",
":netstack_fidl_integration_test",
]
visibility = [ ":*" ]
tests = [
{
name = "netstack_cobalt_integration_test"
environments = [ qemu_env ]
},
{
name = "netstack_fidl_integration_test"
environments = [ qemu_env ]
},
]
}
test("netstack_bsdsocket_c_api_test") {
if (is_linux || is_fuchsia) {
sources = [
"bsdsocket_test.cc",
"util.cc",
"util.h",
]
# TODO(46920): UBSan has found an instance of undefined behavior in this target.
# Disable UBSan for this target temporarily until it is migrated into CI/CQ.
configs += [ "//build/config:temporarily_disable_ubsan_do_not_use" ]
}
deps = [
"//src/lib/fxl/test:gtest_main",
"//zircon/public/lib/fbl",
]
}
test("netstack_if_nameindex_test") {
if (is_linux || is_fuchsia) {
sources = [ "if_nameindex_test.cc" ]
}
deps = [ "//src/lib/fxl/test:gtest_main" ]
}
test("netstack_external_network_test_client") {
if (is_linux || is_fuchsia) {
sources = [ "external_network_test_client.cc" ]
}
deps = [ "//src/lib/fxl/test:gtest_main" ]
}
test("netstack_fuchsia_c_api_test") {
sources = [
"fdio_test.cc",
"util.cc",
"util.h",
]
deps = [
"//src/lib/fxl/test:gtest_main",
"//src/lib/testing/predicates",
"//zircon/public/lib/fbl",
"//zircon/public/lib/fdio",
"//zircon/public/lib/sync",
"//zircon/system/fidl/fuchsia-posix-socket:llcpp",
]
}
test("netstack_no_network_test") {
sources = [ "no_network_test.cc" ]
deps = [ "//src/lib/fxl/test:gtest_main" ]
}
test("name_provider_no_network_test") {
sources = [ "name_provider_no_network_test.cc" ]
deps = [
":device_name_provider",
"//sdk/lib/sys/cpp",
"//src/lib/fxl/test:gtest_main",
"//zircon/system/fidl/fuchsia-device:fuchsia-device_llcpp",
]
}
test("name_provider_service_not_present_test") {
sources = [ "name_provider_service_not_present_test.cc" ]
deps = [
":device_name_provider",
"//src/lib/fxl/test:gtest_main",
"//zircon/system/fidl/fuchsia-device",
]
}
group("netemul_empty_binaries") {
write_file("$root_out_dir/connect_test", "")
write_file("$root_out_dir/netstack_external_network_test", "")
}
# This target contains the test package netstack_c_api_tests and the
# dependencies needed in the image/universe to run the tests within it.
# There's currently no way to express a dependency between packages in the build
# system, so we aggregate all the dependencies in this group target.
# See bug 36293 for more details.
group("netstack_c_api_tests") {
testonly = true
deps = [
":netstack_c_api_tests_inner",
# device_name_provider provides fuchsia.device.NameProvider.
":device_name_provider",
# netstack is under test.
"//src/connectivity/network/netstack",
# netemul is used to create hermetic environments.
"//src/connectivity/network/testing/netemul",
# cat is used to test FD passing.
"//third_party/sbase:cat",
]
}
test_package("netstack_c_api_tests_inner") {
package_name = "netstack_c_api_tests"
deps = [
":name_provider_no_network_test",
":name_provider_service_not_present_test",
":netemul_empty_binaries",
":netstack_bsdsocket_c_api_test",
":netstack_external_network_test_client",
":netstack_fuchsia_c_api_test",
":netstack_if_nameindex_test",
":netstack_no_network_test",
"connect",
]
visibility = [ ":*" ]
binaries = [
{
name = "connect"
},
{
name = "netstack_external_network_test_client"
},
]
meta = [
{
path = rebase_path("meta/connect.cmx")
dest = "connect.cmx"
},
{
path = rebase_path("meta/netstack_external_network_test_client.cmx")
dest = "netstack_external_network_test_client.cmx"
},
]
tests = [
{
name = "connect_test"
environments = [ qemu_env ]
},
{
name = "name_provider_service_not_present_test"
environments = [ qemu_env ]
},
{
name = "name_provider_no_network_test"
environments = [ qemu_env ]
},
{
name = "netstack_bsdsocket_c_api_test"
environments = [ qemu_env ]
},
{
name = "netstack_if_nameindex_test"
environments = [ qemu_env ]
},
{
name = "netstack_external_network_test"
environments = [ qemu_env ]
},
{
name = "netstack_fuchsia_c_api_test"
environments = [ qemu_env ]
},
{
name = "netstack_no_network_test"
environments = [ qemu_env ]
},
]
}