# Copyright 2017 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("//third_party/cobalt/metrics_registry.gni")

group("testapp") {
  testonly = true
  public_deps = [
    ":cobalt_testapp",
    ":fake_timekeeper",
  ]
}

metrics_registry("testapp_metrics_registry") {
  # This must match the ID of our Cobalt project as specified in:
  # third_party/cobalt_config/projects.yaml
  project_id = 657579885
  namespace = "cobalt_registry"
  features = [ "testing" ]
  generate_cc = true
}

metrics_registry("prober_metrics_registry") {
  # This must match the ID of our Cobalt project as specified in:
  # third_party/cobalt_config/projects.yaml
  project_id = 929352809
  namespace = "cobalt_prober_registry"
  generate_cc = true
}

executable("cobalt_testapp") {
  output_name = "cobalt_testapp"
  sources = [
    "cobalt_testapp.cc",
    "cobalt_testapp.h",
    "cobalt_testapp_logger.cc",
    "cobalt_testapp_logger.h",
    "cobalt_testapp_main.cc",
    "tests.cc",
    "tests.h",
  ]

  deps = [
    ":prober_metrics_registry_cc",
    ":testapp_metrics_registry_cc",
    "//garnet/public/lib/svc/cpp",
    "//sdk/fidl/fuchsia.cobalt",
    "//sdk/fidl/fuchsia.time",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/cobalt/bin/utils:base64",
    "//src/lib/cobalt/cpp:cobalt_event_builder",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//third_party/cobalt/src/lib/util:clock",
    "//third_party/cobalt/src/lib/util:datetime_util",
    "//third_party/cobalt/src/registry:cobalt_registry_proto",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]

  configs += [ "//third_party/cobalt:cobalt_config" ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

source_set("fake_timekeeper_lib") {
  sources = [ "fake_timekeeper.h" ]

  public_deps = [
    "//sdk/fidl/fuchsia.time",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
  ]
}

executable("fake_timekeeper") {
  sources = [ "fake_timekeeper_main.cc" ]

  deps = [
    ":fake_timekeeper_lib",
    "//sdk/fidl/fuchsia.time",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}
