# 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_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/zx",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]

  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" ]

  # 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:options",
    "//sdk/lib/fdio",
    "//src/developer/tracing/lib/test_utils",
    "//src/lib/fxl",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

source_set("integration_test_utils") {
  testonly = true

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

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

  deps = [
    "//sdk/lib/fdio",
    "//src/lib/fxl",
    "//zircon/public/lib/async-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/trace",
    "//zircon/system/ulib/trace-reader",

    # TODO(57392): Move it back to //third_party once unification completes.
    "//zircon/third_party/rapidjson",
  ]
}

# 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:options",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/trace-provider:trace-provider-with-static-engine",
    "//zircon/system/ulib/trace-reader",
  ]

  deps = [
    "//sdk/lib/fdio",
    "//src/lib/fxl",
    "//zircon/public/lib/async-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/trace:trace-with-static-engine",
    "//zircon/system/ulib/trace-reader",

    # TODO(57392): Move it back to //third_party once unification completes.
    "//zircon/third_party/rapidjson",
  ]
}

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/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]

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

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

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

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

  # 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/zx",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/trace",
    "//zircon/system/ulib/trace-provider",
  ]
}

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/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/trace:trace-with-static-engine",
    "//zircon/system/ulib/trace-provider:trace-provider-fdio-connect",
    "//zircon/system/ulib/trace-provider:trace-provider-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:options",
    "//src/lib/fxl",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/trace",
    "//zircon/system/ulib/trace-provider",
  ]
}

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

  sources = [
    "integration_test_main.cc",
    "nested_environment_test.cc",
  ]

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

  # 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/zx",
    "//zircon/system/ulib/trace-reader",
  ]
}

executable("shared_provider_app") {
  testonly = true

  sources = [ "shared_provider.cc" ]

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

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/zx",
    "//zircon/system/ulib/trace-reader",
  ]
}

executable("provider_destruction_app") {
  testonly = true

  sources = [ "provider_destruction.cc" ]

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

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/zx",
    "//zircon/system/ulib/trace-reader",
  ]
}

test_package("trace_tests") {
  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",
    ":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 = "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/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"
    },
  ]
}
