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

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

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.metrics",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/syslog/cpp",
    "//src/cobalt/bin/utils:base64",
    "//src/cobalt/bin/utils:status_utils",
    "//src/lib/cobalt/cpp:cobalt_event_builder",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//third_party/cobalt/src/lib/util:datetime_util",
    "//third_party/cobalt/src/public/lib:clock_interfaces",
    "//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" ]
}
