# 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/fidl/fidl.gni")
import("//build/package.gni")
import("//build/testing/environments.gni")

executable("bin") {
  output_name = "instrumentation_benchmarks"
  testonly = true
  sources = [
    "inspect.cc",
    "inspector.cc",
    "test_runner.cc",
  ]
  deps = [
    "//garnet/public/lib/fsl",
    "//src/lib/fxl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fs",
    "//zircon/public/lib/inspect-vmo",
    "//zircon/public/lib/zx",
  ]
  public_deps = [
    "//zircon/public/lib/perftest",
  ]
  libs = [ "zircon" ]
}

package("instrumentation_benchmarks") {
  testonly = true

  deps = [
    ":bin",
  ]

  tests = [
    {
      name = "instrumentation_benchmarks"
      environments = basic_envs
    },
  ]
}
