# 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/test/test_package.gni")

executable("netstack_integration_test") {
  testonly = true

  sources = [
    "netstack_add_eth_test.cc",
    "netstack_filter_test.cc",
  ]

  deps = [
    "//garnet/lib/inet",
    "//garnet/public/fidl/fuchsia.net.filter",
    "//garnet/public/fidl/fuchsia.netstack",
    "//garnet/public/lib/component/cpp/testing",
    "//third_party/googletest:gtest_main",
    "//zircon/public/banjo/ddk-protocol-ethernet",
    "//zircon/public/fidl/fuchsia-net-stack",
    "//zircon/public/fidl/zircon-ethernet",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/zx",
  ]
}

test_package("netstack_integration_tests") {
  deps = [
    ":netstack_integration_test",
  ]

  tests = [
    {
      name = "netstack_integration_test"
    },
  ]
}
