# Copyright 2018 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_config/metrics_registry.gni")

metrics_registry("test_metrics_registry") {
  project_name = "test_app2"
  generate_cc = true
  namespace = "cobalt_test_metrics"
}

source_set("cpp") {
  sources = [
    "observation.h",
    "observations_collector.cc",
    "observations_collector.h",
  ]

  public_configs = [ "//garnet/public:config" ]
}

source_set("cobalt_logger") {
  sources = [
    "cobalt_logger.cc",
    "cobalt_logger.h",
    "cobalt_logger_impl.cc",
    "cobalt_logger_impl.h",
  ]

  public_deps = [
    "//garnet/public/lib/syslog/cpp",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl",
    "//zircon/public/fidl/fuchsia-cobalt",
    "//zircon/public/lib/fit",
  ]

  deps = [
    "//garnet/public/lib/backoff",
    "//garnet/public/lib/callback",
  ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "cobalt_event_builder_unittest.cc",
    "cobalt_logger_unittest.cc",
    "observations_collector_test.cc",
    "project_profile_unittest.cc",
  ]

  public_deps = [
    "//garnet/public/lib/gtest",
    "//garnet/public/lib/svc/cpp",
  ]

  deps = [
    ":cobalt_event_builder",
    ":cobalt_logger",
    ":cpp",
    ":project_profile",
    ":test_metrics_registry_cc",
    "//sdk/lib/sys/cpp/testing:unit",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/async-testing",
  ]
}

source_set("project_profile") {
  sources = [
    "project_profile.cc",
    "project_profile.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  public_deps = [
    "//zircon/public/fidl/fuchsia-cobalt",
  ]
  deps = [
    "//garnet/public/lib/fsl",
    "//third_party/cobalt/util/crypto_util",
  ]
}

source_set("cobalt_event_builder") {
  sources = [
    "cobalt_event_builder.cc",
    "cobalt_event_builder.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  public_deps = [
    "//zircon/public/fidl/fuchsia-cobalt",
  ]
}
