# Copyright 2019 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/components.gni")
import("//build/config.gni")

group("tests") {
  testonly = true
  deps = [ ":netstack-integration-tests" ]
}

tests = [
  "bridge",
  "device",
  "dhcp",
  "dns",
  "fidl",
  "forwarding",
  "inspect",
  "ipv4",
  "ipv6",
  "management",
  "reachability",
  "socket",
  "sys",
]

foreach(test, tests) {
  name = "netstack-${test}-integration-test"
  fuchsia_test_component(name) {
    manifest = "meta/${name}.cml"
    deps = [ test ]
  }
}

fuchsia_test_package("netstack-integration-tests") {
  test_components = []
  foreach(test, tests) {
    test_components += [ ":netstack-${test}-integration-test" ]
  }

  deps = [
    # netemul-sandbox-v2 is used to create hermetic test realms.
    "//src/connectivity/network/testing/netemul/service:netemul-sandbox",

    # netstack is under test.
    "//src/connectivity/network/netstack:component",
    "//src/connectivity/network/netstack:component-debug",
    "//src/connectivity/network/netstack:component-with-fast-udp-debug",

    # netstack3 is under test.
    "//src/connectivity/network/netstack3:component",

    # reachability monitor is under test.
    "//src/connectivity/network/reachability:component",

    # sampler config is tested as part of inspect integration tests.
    ":sampler-config",

    # stash_secure is used by dhcpd and netstack.
    "//src/sys/stash:stash_secure_v2",

    # dhcpd is used to test DHCP address acquisition.
    "//src/connectivity/network/dhcp:component",

    # DHCPv6 client is under test.
    "//src/connectivity/network/dhcpv6/client:component",

    # dns_resolver integration with netstack is tested.
    "//src/connectivity/network/dns:component_with_fake_time",

    # the DNS resolver under test uses the fake clock.
    "//src/lib/fake-clock/svc",

    # netcfg integration with netstack is tested.
    ":netcfg-netemul-config",
    ":netcfg-with-dhcpv6-netemul-config",
    ":netcfg-with-forwarding-netemul-config",
    "//src/connectivity/network/netcfg:component-advanced",
    "//src/connectivity/network/netcfg:component-basic",
  ]
}

resource("netcfg-netemul-config") {
  testonly = true
  sources = [ "management/config/empty.json" ]
  outputs = [ "netcfg/empty.json" ]
}

resource("netcfg-with-dhcpv6-netemul-config") {
  testonly = true
  sources = [ "management/config/dhcpv6.json" ]
  outputs = [ "netcfg/dhcpv6.json" ]
}

resource("netcfg-with-forwarding-netemul-config") {
  testonly = true
  sources = [ "management/config/forwarding.json" ]
  outputs = [ "netcfg/forwarding.json" ]
}

resource("sampler-config") {
  sources = [ "//src/diagnostics/config/sampler/netstack.json" ]
  outputs = [ "data/sampler-config/netstack.json" ]
}
