blob: 97b6e3092c688e4e9566cd49ab4236e4ab6c3b99 [file] [log] [blame]
# Copyright 2016 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/go/go_library.gni")
import("//build/go/go_test.gni")
import("//build/go/toolchain.gni")
import("//build/package.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")
import("//src/sys/build/components.gni")
import("//third_party/cobalt/metrics_registry.gni")
import("gentool/generated.gni")
fuchsia_component("component") {
component_name = "netstack"
manifest = "meta/netstack.cmx"
deps = [ "//garnet/go/src/grand_unified_binary" ]
}
fuchsia_component("component-debug") {
testonly = true
component_name = "netstack-debug"
manifest = "meta/netstack_debug.cmx"
deps = [ "//garnet/go/src/grand_unified_binary" ]
}
fuchsia_package("netstack") {
deps = [ ":component" ]
}
package("tools") {
deps = [ "//garnet/go/src/grand_unified_binary" ]
binaries = [
{
name = "ifconfig"
source = "grand_unified_binary"
shell = true
},
]
}
metrics_registry("networking_metrics") {
# This must match the ID of our Cobalt project as specified in:
# third_party/cobalt_config/projects.yaml
project_id = 1
go_package_name = "networking_metrics"
generate_go = true
generate_rust = true
generate_binarypb = false
}
test_package("netstack_gotests") {
deps = [
":netstack_bench_test",
":netstack_fidlconv_test",
":netstack_filter_test",
":netstack_link_bridge_test",
":netstack_link_eth_test",
":netstack_link_fifo_test",
":netstack_link_netdevice_test",
":netstack_test",
"ifconfig:netstack_ifconfig_test",
"util:netstack_util_test",
]
tests = [
{
name = "netstack_bench_test"
environments = [ emu_env ]
},
{
name = "netstack_fidlconv_test"
environments = [ emu_env ]
},
{
name = "netstack_filter_test"
environments = [ emu_env ]
},
{
name = "netstack_link_bridge_test"
environments = [ emu_env ]
},
{
name = "netstack_link_eth_test"
environments = [ emu_env ]
},
{
name = "netstack_link_netdevice_test"
environments = [ emu_env ]
},
{
name = "netstack_link_fifo_test"
environments = [ emu_env ]
},
{
name = "netstack_test"
environments = [ emu_env ]
},
{
name = "netstack_util_test"
environments = [ emu_env ]
},
{
name = "netstack_ifconfig_test"
environments = [ emu_env ]
},
]
}
generated_go("gen/netstack") {
definitions = [
{
src = "link/eth/handler.json"
package = "link/eth"
template = "link/fifo/gen/handler.tmpl"
copy = [ "link/fifo/gen/fifo_entry.go" ]
},
{
src = "link/eth/entries.json"
package = "link/eth"
template = "link/fifo/gen/entries.tmpl"
},
{
src = "link/netdevice/handler.json"
package = "link/netdevice"
template = "link/fifo/gen/handler.tmpl"
},
{
src = "link/netdevice/entries.json"
package = "link/netdevice"
template = "link/fifo/gen/entries.tmpl"
},
]
}
go_library("netstack_lib") {
name = "go.fuchsia.dev/fuchsia/src/connectivity/network/netstack/..."
deps = [
":gen/netstack",
":networking_metrics_golib",
"//garnet/go/src/fidlext/fuchsia/hardware/ethernet:fidlext_fuchsia_hardware_ethernet_fake_lib($go_toolchain)",
"//sdk/fidl/fuchsia.cobalt($go_toolchain)",
"//sdk/fidl/fuchsia.device($go_toolchain)",
"//sdk/fidl/fuchsia.hardware.ethernet($go_toolchain)",
"//sdk/fidl/fuchsia.hardware.network($go_toolchain)",
"//sdk/fidl/fuchsia.inspect.deprecated($go_toolchain)",
"//sdk/fidl/fuchsia.net($go_toolchain)",
"//sdk/fidl/fuchsia.net.dhcp($go_toolchain)",
"//sdk/fidl/fuchsia.net.filter($go_toolchain)",
"//sdk/fidl/fuchsia.net.interfaces($go_toolchain)",
"//sdk/fidl/fuchsia.net.name($go_toolchain)",
"//sdk/fidl/fuchsia.net.neighbor($go_toolchain)",
"//sdk/fidl/fuchsia.net.routes($go_toolchain)",
"//sdk/fidl/fuchsia.net.stack($go_toolchain)",
"//sdk/fidl/fuchsia.net.tun($go_toolchain)",
"//sdk/fidl/fuchsia.netstack($go_toolchain)",
"//sdk/fidl/fuchsia.posix($go_toolchain)",
"//sdk/fidl/fuchsia.posix.socket($go_toolchain)",
"//sdk/fidl/fuchsia.stash($go_toolchain)",
"//sdk/fidl/fuchsia.sys($go_toolchain)",
"//src/lib/component",
"//src/lib/syslog/go",
"//third_party/golibs:github.com/google/btree",
"//third_party/golibs:github.com/google/go-cmp",
"//third_party/golibs:go.uber.org/multierr",
"//third_party/golibs:golang.org/x/net",
"//third_party/golibs:golang.org/x/time",
"//third_party/golibs:gvisor.dev/gvisor",
]
}
go_test("netstack_bench_test") {
gopackages =
[ "go.fuchsia.dev/fuchsia/src/connectivity/network/netstack/bench" ]
deps = [ ":netstack_lib" ]
}
go_test("netstack_fidlconv_test") {
gopackages =
[ "go.fuchsia.dev/fuchsia/src/connectivity/network/netstack/fidlconv" ]
deps = [ ":netstack_lib" ]
}
go_test("netstack_filter_test") {
gopackages =
[ "go.fuchsia.dev/fuchsia/src/connectivity/network/netstack/filter" ]
deps = [ ":netstack_lib" ]
}
go_test("netstack_link_bridge_test") {
gopackages =
[ "go.fuchsia.dev/fuchsia/src/connectivity/network/netstack/link/bridge" ]
deps = [ ":netstack_lib" ]
}
go_test("netstack_link_eth_test") {
gopackages =
[ "go.fuchsia.dev/fuchsia/src/connectivity/network/netstack/link/eth" ]
deps = [ ":netstack_lib" ]
}
generated_go("entries_gen_test") {
definitions = [
{
src = "link/fifo/test_entries.json"
package = "entries"
template = "link/fifo/gen/entries.tmpl"
},
]
}
go_test("netstack_link_fifo_test") {
gopackages =
[ "go.fuchsia.dev/fuchsia/src/connectivity/network/netstack/link/fifo" ]
deps = [
":entries_gen_test",
":netstack_lib",
]
}
go_test("netstack_link_netdevice_test") {
gopackages = [
"go.fuchsia.dev/fuchsia/src/connectivity/network/netstack/link/netdevice",
]
deps = [ ":netstack_lib" ]
}
go_test("netstack_test") {
gopackages = [ "go.fuchsia.dev/fuchsia/src/connectivity/network/netstack" ]
deps = [ ":netstack_lib" ]
}
group("tests") {
testonly = true
deps = [
":netstack_gotests",
"dhcp:netstack_dhcp_gotests",
"dns:netstack_dns_gotests",
"inspect/validator:tests",
"routes:netstack_routes_gotests",
"tests",
"util:netstack_util_test($host_toolchain)",
"//src/connectivity/network/tun/network-tun",
]
}