# Copyright 2021 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/rust/rustc_test.gni")

fuchsia_unittest_package("tests") {
  package_name = "tcpdump-integration-test"
  manifest = "meta/tcpdump-integration-test.cml"
  deps = [
    ":bin",

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

    # The tests depend `fuchsia.posix.socket/Provider` and
    # `fuchsia.posix.socket.packet/Provider` which the netstack exposes.
    "//src/connectivity/network/netstack:component-debug",

    # TCPDump is under test.
    "//third_party/tcpdump:bin",
  ]
}

rustc_test("bin") {
  edition = "2021"
  output_name = "tcpdump_integration_test"
  deps = [
    "//sdk/fidl/fuchsia.net:fuchsia.net-rustc",
    "//sdk/fidl/fuchsia.net.debug:fuchsia.net.debug-rustc",
    "//sdk/fidl/fuchsia.net.interfaces.admin:fuchsia.net.interfaces.admin-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.posix.socket.packet:fuchsia.posix.socket.packet-rustc",
    "//src/connectivity/lib/net-declare",
    "//src/connectivity/lib/net-types",
    "//src/connectivity/lib/packet-formats",
    "//src/connectivity/network/testing/netemul/fidl:fuchsia.netemul-rustc",
    "//src/connectivity/network/testing/netemul/rust:lib",
    "//src/connectivity/network/tests/integration/common:netstack_testing_common",
    "//src/connectivity/network/tests/integration/macros:netstack_testing_macros",
    "//src/lib/async-utils",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/network/fidl_fuchsia_net_interfaces_ext",
    "//src/lib/network/packet",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:libc",
    "//third_party/rust_crates:regex",
  ]
  sources = [ "src/lib.rs" ]
  configs -= [ "//build/config/rust:allow_unused_results" ]
}
