# 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/go/go_library.gni")
import("//build/go/go_test.gni")

go_library("bench") {
  deps = [ "//src/connectivity/network/netstack/util" ]

  sources = [ "bench_test.go" ]
}

go_test("bench_test") {
  library = ":bench"
}

fuchsia_unittest_package("netstack-bench-gotests") {
  deps = [ ":bench_test" ]
  manifest = "meta/bench_test.cml"
}

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