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

group("tests") {
  testonly = true
  deps = [
    ":basic_integration_test_app",
    ":integration_test_utils",
    ":integration_test_utils_with_trace_with_static_engine",
    ":nested_environment_test",
    ":run_integration_test",
    ":run_test",
    ":self_contained_provider",
    ":trace_integration_tests",
    ":trace_tests",
    ":trace_tests_bin",
    ":two_providers_one_engine",
    ":two_providers_two_engines_test_app",
  ]
}

source_set("component_context") {
  testonly = true

  sources = [
    "component_context.cc",
    "component_context.h",
  ]

  deps = [
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/zx",
  ]

  public_deps = [
    "//garnet/public/lib/gtest",
    "//sdk/lib/sys/cpp",
  ]
}

# Generic main entry point target for GTest executables.
# This augments src/lib/fxl/test by adding component context.
source_set("gtest_main") {
  testonly = true

  sources = [ "gtest_main.cc" ]

  deps = [
    "//src/lib/fxl",
    "//src/lib/fxl/test:test_settings",
  ]

  public_deps = [
    ":component_context",
    "//third_party/googletest:gtest",
  ]
}

executable("trace_tests_bin") {
  testonly = true

  output_name = "trace_tests"

  deps = [
    ":gtest_main",
    "//garnet/bin/trace:unittests",
    "//garnet/lib/measure:unittests",
  ]

  # TODO(46850): Fix the leaks and remove this.
  deps += [ "//build/config/sanitizers:suppress-lsan.DO-NOT-USE-THIS" ]
}

source_set("run_test") {
  testonly = true

  sources = [
    "run_test.cc",
    "run_test.h",
  ]

  public_deps = [
    "//sdk/lib/sys/cpp",
    "//zircon/public/lib/zx",
  ]

  deps = [
    ":component_context",
    ":integration_test_utils",
    "//garnet/bin/trace:spec",
    "//src/developer/tracing/lib/test_utils",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/fdio",
  ]
}

source_set("integration_test_utils") {
  testonly = true

  sources = [
    "integration_test_utils.cc",
    "integration_test_utils.h",
  ]

  public_deps = [
    "//garnet/bin/trace:spec",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider",
    "//zircon/public/lib/zx",
  ]

  deps = [
    "//src/lib/fxl",
    "//third_party/rapidjson",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/trace",
    "//zircon/public/lib/trace-reader",
  ]
}

# Same as "integration_test_utils" except uses trace-with-static-engine.
# This is done in order to ensure trace-engine-static is used.
source_set("integration_test_utils_with_trace_with_static_engine") {
  testonly = true

  defines = [ "USE_STATIC_ENGINE" ]

  sources = [
    "integration_test_utils.cc",
    "integration_test_utils.h",
  ]

  public_deps = [
    "//garnet/bin/trace:spec",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider-with-static-engine",
    "//zircon/public/lib/zx",
  ]

  deps = [
    "//src/lib/fxl",
    "//third_party/rapidjson",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/trace-reader",
    "//zircon/public/lib/trace-with-static-engine",
  ]
}

executable("trace_integration_tests") {
  testonly = true
  output_name = "trace_integration_tests"

  sources = [ "trace_integration_tests.cc" ]

  deps = [
    ":gtest_main",
    ":integration_test_utils",
    ":run_test",
    "//src/developer/tracing/lib/test_utils",
    "//src/lib/fxl/test:test_settings",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
  ]

  # TODO(46850): Fix the leaks and remove this.
  deps += [ "//build/config/sanitizers:suppress-lsan.DO-NOT-USE-THIS" ]
}

executable("run_integration_test") {
  testonly = true
  output_name = "run_integration_test"

  sources = [ "run_integration_test.cc" ]

  deps = [
    ":component_context",
    ":integration_test_utils",
    ":run_test",
    "//sdk/lib/sys/cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
  ]
}

executable("basic_integration_test_app") {
  testonly = true
  output_name = "basic_integration_test_app"

  sources = [
    "basic_integration_tests.cc",
    "basic_integration_tests.h",
    "fill_buffer_integration_test.cc",
    "integration_test_main.cc",
    "simple_integration_test.cc",
  ]

  deps = [
    ":integration_test_utils",
    "//garnet/lib/measure",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/trace",
    "//zircon/public/lib/trace-provider",
    "//zircon/public/lib/zx",
  ]

  # TODO(46850): Fix the leaks and remove this.
  deps += [ "//build/config/sanitizers:suppress-lsan.DO-NOT-USE-THIS" ]
}

executable("two_providers_one_engine") {
  testonly = true
  output_name = "two_providers_one_engine"

  sources = [ "two_providers_one_engine.cc" ]

  deps = [
    "//src/lib/fxl",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/trace",
    "//zircon/public/lib/trace-provider",
    "//zircon/public/lib/zx",
  ]
}

shared_library("self_contained_provider") {
  testonly = true

  sources = [
    "self_contained_provider.cc",
    "self_contained_provider.h",
  ]

  deps = [
    ":integration_test_utils_with_trace_with_static_engine",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/trace-provider-fdio-connect",
    "//zircon/public/lib/trace-provider-with-static-engine",
    "//zircon/public/lib/trace-with-static-engine",
  ]
}

executable("two_providers_two_engines_test_app") {
  testonly = true
  output_name = "two_providers_two_engines_test_app"

  sources = [
    "integration_test_main.cc",
    "self_contained_provider.h",
    "two_providers_two_engines.cc",
  ]

  deps = [
    ":integration_test_utils",
    ":self_contained_provider",
    "//garnet/bin/trace:spec",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/trace",
    "//zircon/public/lib/trace-provider",
    "//zircon/public/lib/zx",
  ]
}

executable("nested_environment_test") {
  testonly = true
  output_name = "nested_environment_test"

  sources = [ "nested_environment_test.cc" ]

  deps = [
    "//src/lib/fxl",
    "//zircon/public/lib/task-utils",
    "//zircon/public/lib/zx",
  ]

  # TODO(46850): Fix the leaks and remove this.
  deps += [ "//build/config/sanitizers:suppress-lsan.DO-NOT-USE-THIS" ]
}

executable("return_1234") {
  testonly = true
  output_name = "return_1234"

  sources = [ "return_1234.cc" ]
}

executable("return_child_result_tests") {
  testonly = true
  output_name = "return_child_result_tests"

  sources = [ "return_child_result_tests.cc" ]

  deps = [
    ":gtest_main",
    ":integration_test_utils",
    ":run_test",
    "//src/developer/tracing/lib/test_utils",
    "//third_party/googletest:gtest",
  ]
}

executable("run_awhile") {
  testonly = true
  output_name = "run_awhile"

  sources = [ "run_awhile.cc" ]

  deps = [ "//zircon/public/lib/zx" ]
}

executable("detach_tests") {
  testonly = true
  output_name = "detach_tests"

  sources = [ "detach_tests.cc" ]

  deps = [
    ":gtest_main",
    ":integration_test_utils",
    ":run_test",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/zx",
  ]
}

executable("ktrace_integration_tests") {
  testonly = true
  output_name = "ktrace_integration_tests"

  sources = [ "ktrace_integration_tests.cc" ]

  deps = [
    ":gtest_main",
    ":integration_test_utils",
    ":run_test",
    "//src/developer/tracing/lib/test_utils",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/trace-reader",
    "//zircon/public/lib/zx",
  ]
}

executable("shared_provider_app") {
  testonly = true

  sources = [ "shared_provider.cc" ]

  deps = [
    ":integration_test_utils",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/trace",
    "//zircon/public/lib/trace-provider-so",
    "//zircon/public/lib/zx",
  ]
}

executable("shared_provider_integration_tests") {
  testonly = true

  sources = [ "shared_provider_integration_tests.cc" ]

  deps = [
    ":gtest_main",
    ":integration_test_utils",
    ":run_test",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/trace-reader",
    "//zircon/public/lib/zx",
  ]
}

executable("provider_destruction_app") {
  testonly = true

  sources = [ "provider_destruction.cc" ]

  deps = [
    ":integration_test_utils",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/trace",
    "//zircon/public/lib/trace-provider",
    "//zircon/public/lib/zx",
  ]
}

executable("provider_destruction_tests") {
  testonly = true

  sources = [ "provider_destruction_tests.cc" ]

  deps = [
    ":gtest_main",
    ":integration_test_utils",
    ":run_test",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/trace-reader",
    "//zircon/public/lib/zx",
  ]
}

test_package("trace_tests") {
  rootjob_svc = "//build"

  deps = [
    ":basic_integration_test_app",
    ":detach_tests",
    ":ktrace_integration_tests",
    ":nested_environment_test",
    ":provider_destruction_app",
    ":provider_destruction_tests",
    ":return_1234",
    ":return_child_result_tests",
    ":run_awhile",
    ":run_integration_test",
    ":shared_provider_app",
    ":shared_provider_integration_tests",
    ":trace_integration_tests",
    ":trace_tests_bin",
    ":two_providers_one_engine",
    ":two_providers_two_engines_test_app",
  ]

  tests = [
    {
      name = "detach_tests"
      environments = basic_envs
    },
    {
      name = "ktrace_integration_tests"
      environments = basic_envs
    },
    {
      name = "provider_destruction_tests"
      environments = basic_envs
    },
    {
      name = "return_child_result_tests"
      environments = basic_envs
    },
    {
      name = "shared_provider_integration_tests"
      environments = basic_envs
    },
    {
      name = "trace_integration_tests"
      environments = basic_envs
    },
    {
      name = "trace_tests"
      environments = basic_envs
    },
  ]

  binaries = [
    {
      name = "basic_integration_test_app"
    },
    {
      name = "nested_environment_test"
    },
    {
      name = "provider_destruction_app"
    },
    {
      name = "return_1234"
    },
    {
      name = "run_awhile"
    },
    {
      name = "run_integration_test"
    },
    {
      name = "shared_provider_app"
    },
    {
      name = "two_providers_one_engine"
    },
    {
      name = "two_providers_two_engines_test_app"
    },
  ]

  # Since this is a "test_package" there is no need to list the cmx files
  # for the "tests" entries.
  meta = [
    {
      path = rebase_path("meta/basic_integration_test_app.cmx")
      dest = "basic_integration_test_app.cmx"
    },
    {
      path = rebase_path("meta/run_integration_test.cmx")
      dest = "run_integration_test.cmx"
    },
    {
      path = rebase_path("meta/nested_environment_test.cmx")
      dest = "nested_environment_test.cmx"
    },
    {
      path = rebase_path("meta/provider_destruction_app.cmx")
      dest = "provider_destruction_app.cmx"
    },
    {
      path = rebase_path("meta/shared_provider_app.cmx")
      dest = "shared_provider_app.cmx"
    },
    {
      path = rebase_path("meta/two_providers_two_engines_test_app.cmx")
      dest = "two_providers_two_engines_test_app.cmx"
    },
  ]

  resources = [
    {
      path = rebase_path("oneshot.tspec")
      dest = "oneshot.tspec"
    },
    {
      path = rebase_path("circular.tspec")
      dest = "circular.tspec"
    },
    {
      path = rebase_path("streaming.tspec")
      dest = "streaming.tspec"
    },
    {
      path = rebase_path("simple.tspec")
      dest = "simple.tspec"
    },
    {
      path = rebase_path("nested_environment_test.tspec")
      dest = "nested_environment_test.tspec"
    },
    {
      path = rebase_path("two_providers_two_engines.tspec")
      dest = "two_providers_two_engines.tspec"
    },
  ]
}
