blob: 692596905dfa891505c8a516a63693cd83d66e92 [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.gni")
import("//build/config/fuchsia/zircon_images.gni")
import("//build/rust/rustc_macro.gni")
import("//build/rust/rustc_test.gni")
import("//build/test.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")
import("//src/sys/build/components.gni")
group("tests") {
testonly = true
deps = [
":netstack-integration-tests",
":netstack_bsdsocket_c_api_test($host_toolchain)",
":netstack_c_api_tests",
":netstack_external_network_test_client($host_toolchain)",
":netstack_if_nameindex_test($host_toolchain)",
"benchmarks",
"getifaddrs:tests",
"integration:tests",
]
}
rustc_test("netstack_integration_test_bin") {
name = "netstack_integration_test"
edition = "2018"
deps = [
":netstack_testing_macros",
"//sdk/fidl/fuchsia.cobalt:fuchsia.cobalt-rustc",
"//sdk/fidl/fuchsia.hardware.ethernet:fuchsia.hardware.ethernet-rustc",
"//sdk/fidl/fuchsia.hardware.ethertap:fuchsia.hardware.ethertap-rustc",
"//sdk/fidl/fuchsia.hardware.network:fuchsia.hardware.network-rustc",
"//sdk/fidl/fuchsia.inspect.deprecated:fuchsia.inspect.deprecated-rustc",
"//sdk/fidl/fuchsia.net:fuchsia.net-rustc",
"//sdk/fidl/fuchsia.net.dhcp:fuchsia.net.dhcp-rustc",
"//sdk/fidl/fuchsia.net.filter:fuchsia.net.filter-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.posix.socket:fuchsia.posix.socket-rustc",
"//sdk/fidl/fuchsia.stash:fuchsia.stash-rustc",
"//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
"//src/connectivity/lib/net-declare",
"//src/connectivity/lib/net-types",
"//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/connectivity/network/tun/fidl:fidl-rustc",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-component",
"//src/lib/network/fidl_fuchsia_net_ext",
"//src/lib/network/fidl_fuchsia_net_stack_ext",
"//src/lib/network/packet",
"//src/lib/network/packet-formats",
"//src/lib/zerocopy",
"//src/lib/zircon/rust:fuchsia-zircon",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:futures",
"//third_party/rust_crates:libc",
"//third_party/rust_crates:paste",
"//third_party/rust_crates:pin-utils",
"//third_party/rust_crates:socket2",
"//third_party/rust_crates:thiserror",
]
# TODO(46769): Fix the leaks and remove this.
non_rust_deps = [ "//build/config/sanitizers:suppress-lsan.DO-NOT-USE-THIS" ]
}
rustc_macro("netstack_testing_macros") {
source_root = "src/proc_macros.rs"
deps = [
"//third_party/rust_crates:proc-macro-hack",
"//third_party/rust_crates:proc-macro2",
"//third_party/rust_crates:quote",
"//third_party/rust_crates:syn",
]
}
rustc_test("netstack_cobalt_integration_test_bin") {
name = "netstack_cobalt_integration_test"
edition = "2018"
source_root = "src/cobalt.rs"
deps = [
"//sdk/fidl/fuchsia.cobalt:fuchsia.cobalt-rustc",
"//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",
]
}
fuchsia_component("netstack_integration_test") {
testonly = true
manifest = "meta/netstack_integration_test.cmx"
deps = [
":netstack_integration_test_bin",
# netemul is used to create hermetic environments.
"//src/connectivity/network/testing/netemul",
]
}
fuchsia_component("netstack_cobalt_integration_test") {
testonly = true
manifest = "meta/netstack_cobalt_integration_test.cmx"
deps = [ ":netstack_cobalt_integration_test_bin" ]
}
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"
},
]
}
fuchsia_test_package("netstack-integration-tests-inner") {
package_name = "netstack-integration-tests"
test_components = [
":netstack_cobalt_integration_test",
":netstack_integration_test",
]
deps = [
# dhcpd is used to test DHCP address acquisition.
":dhcpd-testing-configs",
"//src/connectivity/network/dhcp:component",
# dns_resolver integration with netstack is tested.
"//src/connectivity/network/dns:component",
# netcfg integration with netstack is tested.
":netcfg-netemul-config",
"//src/connectivity/network/netcfg:component-netemul",
# netstack3 is under test.
"//src/connectivity/network/netstack3:component",
# network_manager integration with netstack is tested.
"//src/connectivity/management/network-manager:component-netemul",
]
}
config_data("dhcpd-testing-configs") {
testonly = true
for_pkg = "netstack-integration-tests"
sources = [
"//src/connectivity/network/dhcp/data/bound_device_test_config_eth2.json",
"//src/connectivity/network/dhcp/data/bound_device_test_config_eth3.json",
"//src/connectivity/network/dhcp/data/default_config.json",
"//src/connectivity/network/dhcp/data/test_config.json",
]
outputs = [ "dhcpd-testing/{{source_file_part}}" ]
}
config_data("netcfg-netemul-config") {
testonly = true
for_pkg = "netstack-integration-tests"
sources = [ "//src/connectivity/network/netcfg/config/empty.json" ]
outputs = [ "netcfg/empty.json" ]
}
# 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",
# netstack is under test.
"//src/connectivity/network/netstack",
# mock_cobalt provides fuchsia.cobalt.LoggerFactory and fuchsia.cobalt.test.LoggerQuerier.
"//src/cobalt/bin/testing/mock_cobalt",
]
}
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 = [
"//sdk/fidl/fuchsia.posix.socket:fuchsia.posix.socket_llcpp",
"//sdk/lib/fdio",
"//src/lib/fxl/test:gtest_main",
"//src/lib/testing/predicates",
"//zircon/public/lib/fbl",
"//zircon/public/lib/sync",
]
}
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/fidl/fuchsia.device:fuchsia.device_llcpp",
"//sdk/lib/sys/cpp",
"//src/lib/fxl/test:gtest_main",
]
}
test("name_provider_service_not_present_test") {
sources = [ "name_provider_service_not_present_test.cc" ]
deps = [
":device_name_provider",
"//sdk/fidl/fuchsia.device",
"//src/lib/fxl/test:gtest_main",
]
}
# 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",
]
}
fuchsia_component("connect") {
testonly = true
manifest = "meta/connect.cmx"
deps = [ "connect" ]
}
fuchsia_component("connect-test") {
testonly = true
manifest = "meta/connect_test.cmx"
deps = [ ":connect" ]
}
fuchsia_component("netstack-external-network-test-client") {
testonly = true
manifest = "meta/netstack_external_network_test_client.cmx"
deps = [ ":netstack_external_network_test_client" ]
}
fuchsia_component("netstack-external-network-test") {
testonly = true
manifest = "meta/netstack_external_network_test.cmx"
deps = [ ":netstack-external-network-test-client" ]
}
fuchsia_component("name-provider-no-network-test") {
testonly = true
manifest = "meta/name_provider_no_network_test.cmx"
deps = [ ":name_provider_no_network_test" ]
}
fuchsia_component("name-provider-service-not-present-test") {
testonly = true
manifest = "meta/name_provider_service_not_present_test.cmx"
deps = [ ":name_provider_service_not_present_test" ]
}
fuchsia_component("netstack-bsdsocket-c-api-test") {
testonly = true
manifest = "meta/netstack_bsdsocket_c_api_test.cmx"
deps = [ ":netstack_bsdsocket_c_api_test" ]
}
fuchsia_component("netstack-fuchsia-c-api-test") {
testonly = true
manifest = "meta/netstack_fuchsia_c_api_test.cmx"
deps = [ ":netstack_fuchsia_c_api_test" ]
}
fuchsia_component("netstack-if-nameindex-test") {
testonly = true
manifest = "meta/netstack_if_nameindex_test.cmx"
deps = [ ":netstack_if_nameindex_test" ]
}
fuchsia_component("netstack-no-network-test") {
testonly = true
manifest = "meta/netstack_no_network_test.cmx"
deps = [ ":netstack_no_network_test" ]
}
fuchsia_test_package("netstack_c_api_tests_inner") {
package_name = "netstack-c-api-tests"
test_components = [
":connect-test",
":name-provider-no-network-test",
":name-provider-service-not-present-test",
":netstack-external-network-test",
":netstack-bsdsocket-c-api-test",
":netstack-fuchsia-c-api-test",
":netstack-if-nameindex-test",
":netstack-no-network-test",
]
test_specs = {
environments = [ emu_env ]
}
visibility = [ ":*" ]
}