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

group("tests") {
  testonly = true
  deps = [ ":trace_manager_tests" ]
}

executable("trace_manager_tests_bin") {
  testonly = true

  output_name = "trace_manager_tests"

  sources = [
    "fake_provider.cc",
    "fake_provider.h",
    "init_to_fini_tests.cc",
    "initialize_tests.cc",
    "provider_tests.cc",
    "start_tests.cc",
    "stop_tests.cc",
    "terminate_tests.cc",
    "trace_manager_test.cc",
    "trace_manager_test.h",
  ]

  deps = [
    "//garnet/bin/trace_manager:lib",
    "//garnet/public/lib/gtest",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/cpp/testing:unit",
    "//src/lib/fxl/test:gtest_main",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/trace-provider",
  ]
}

test_package("trace_manager_tests") {
  deps = [ ":trace_manager_tests_bin" ]

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

  resources = [
    {
      path = rebase_path("tracing.config")
      dest = "tracing.config"
    },
  ]
}
