# 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/protobuf/proto_library.gni")
import("$cobalt_root/metrics_registry.gni")

visibility = [ "$cobalt_root/*" ]

metrics_registry("internal_metrics_config") {
  # This must match the IDs of our Cobalt project as specified in:
  # third_party/cobalt_config/projects.yaml
  customer_id = 2147483647
  project_id = 205836624
  namespace = "cobalt.logger"
  features = [ "generate-config-base64" ]
  dimension_name_maps_for_metric_ids = [ "15" ]

  generate_cc = true
}

source_set("event_record") {
  sources = [ "event_record.h" ]

  public_configs = [
    "$cobalt_root:cobalt_config",
    "$cobalt_root/src/registry:proto_config",
  ]

  deps = [
    "$cobalt_root/src/lib/util:status_builder",
    "$cobalt_root/src/public/lib:registry_identifiers",
  ]
  public_deps = [
    ":project_context",
    "$cobalt_root/src/lib/util:datetime_util",
    "$cobalt_root/src/lib/util:not_null",
    "$cobalt_root/src/pb",
    "$cobalt_root/src/registry:cobalt_registry_proto",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

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

  public_configs = [
    "$cobalt_root:cobalt_config",
    "$cobalt_root/src/registry:proto_config",
  ]

  deps = [
    "$cobalt_root/src/lib/util:status_builder",
    "$cobalt_root/src/public/lib:registry_identifiers",
    "//third_party/abseil-cpp/absl/strings",
  ]
  public_deps = [
    "$cobalt_root/src:logging",
    "$cobalt_root/src/public/lib/statusor",
    "$cobalt_root/src/registry:cobalt_registry_proto",
    "$cobalt_root/src/registry:project_configs",
  ]
}

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

  public_configs = [
    "$cobalt_root:cobalt_config",
    "$cobalt_root/src/registry:proto_config",
  ]

  deps = [
    "$cobalt_root/src/public/lib:registry_identifiers",
    "$cobalt_root/src/registry:cobalt_registry_proto",

    # This is for base64 decoding.
    "//third_party/abseil-cpp/absl/strings",
  ]

  public_deps = [
    ":project_context",
    "$cobalt_root/src/lib/util:not_null",
  ]
}

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

  public_configs = [ "$cobalt_root:cobalt_config" ]

  public_deps = [
    "$cobalt_root/src/pb",
    "$cobalt_root/src/public/lib/statusor",
  ]
}

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

  public_configs = [ "$cobalt_root:cobalt_config" ]

  public_deps = [
    "$cobalt_root/src:logging",
    "$cobalt_root/src:tracing",
    "$cobalt_root/src/lib/crypto_util",
    "$cobalt_root/src/lib/util:encrypted_message_util",
    "$cobalt_root/src/observation_store",
    "$cobalt_root/src/observation_store:observation_store_update_recipient",
    "$cobalt_root/src/pb",
  ]
}

source_set("logger_interface") {
  sources = [
    "at_time_point_logger_interface.h",
    "logger_interface.h",
    "types.h",
  ]

  public_configs = [ "$cobalt_root:cobalt_config" ]

  public_deps = [
    ":internal_metrics_config_cc",
    "$cobalt_root/src/pb",
    "$cobalt_root/src/public/lib:status",
    "$cobalt_root/src/registry:cobalt_registry_proto",
  ]
}

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

  public_configs = [ "$cobalt_root:cobalt_config" ]

  public_deps = [
    ":internal_metrics_config_cc",
    ":logger_interface",
    "$cobalt_root/src:logging",
    "$cobalt_root/src/lib/util:not_null",
    "$cobalt_root/src/lib/util:protected_fields",
    "$cobalt_root/src/public:diagnostics_interface",
    "$cobalt_root/src/public/lib:registry_identifiers",
    "//third_party/abseil-cpp",
  ]
}

source_set("event_loggers") {
  visibility = []
  visibility = [
    ":event_loggers_test",
    ":logger",
    ":undated_event_manager",
  ]

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

  public_configs = [ "$cobalt_root:cobalt_config" ]

  deps = [
    "$cobalt_root/src/lib/util:status_builder",
    "$cobalt_root/src/public/lib/statusor",
  ]

  public_deps = [
    ":encoder",
    ":event_record",
    ":observation_writer",
    "$cobalt_root/src:tracing",
    "$cobalt_root/src/local_aggregation:local_aggregation",
    "$cobalt_root/src/local_aggregation:proto",
    "$cobalt_root/src/public/lib:status",
  ]
}

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

  public_configs = [ "$cobalt_root:cobalt_config" ]

  public_deps = [
    ":encoder",
    ":event_loggers",
    ":event_record",
    ":event_vector_index",
    ":internal_metrics",
    ":logger_interface",
    ":observation_writer",
    ":undated_event_manager",
    "$cobalt_root/src/lib/util:clock",
    "$cobalt_root/src/local_aggregation:local_aggregation",
  ]

  visibility += [ "//src/cobalt/bin/app:lib" ]
}

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

  public_configs = [ "$cobalt_root:cobalt_config" ]

  public_deps = [
    ":encoder",
    ":event_loggers",
    ":event_record",
    ":internal_metrics",
    ":logger_interface",
    ":observation_writer",
    "$cobalt_root/src/lib/util:clock",
    "//third_party/protobuf:protobuf_lite",
  ]
}

source_set("fake_logger") {
  testonly = true
  sources = [
    "fake_logger.cc",
    "fake_logger.h",
  ]
  deps = [
    ":project_context_factory",
    "$cobalt_root/src/lib/util:consistent_proto_store",
    "$cobalt_root/src/lib/util:posix_file_system",
    "$cobalt_root/src/logger:logger_interface",
    "$cobalt_root/src/public/lib:status",
    "$cobalt_root/src/registry:project_configs",
    "//third_party/googletest:gtest",
  ]
  public_configs = [ "$cobalt_root:cobalt_config" ]
  visibility += [ "//src/cobalt/bin/app:cobalt_app_unittests" ]
}

source_set("logger_test_utils") {
  testonly = true
  sources = [
    "logger_test_utils.cc",
    "logger_test_utils.h",
  ]
  deps = [
    ":encoder",
    ":fake_logger",
    ":project_context_factory",
    "$cobalt_root/src/lib/crypto_util",
    "$cobalt_root/src/lib/util:consistent_proto_store",
    "$cobalt_root/src/lib/util:encrypted_message_util",
    "$cobalt_root/src/lib/util:posix_file_system",
    "$cobalt_root/src/observation_store",
    "$cobalt_root/src/observation_store:observation_store_update_recipient",
    "$cobalt_root/src/public/lib:status",
    "$cobalt_root/src/registry:project_configs",
    "$cobalt_root/src/system_data:client_secret",
    "//third_party/googletest:gtest",
  ]
  public_configs = [ "$cobalt_root:cobalt_config" ]
  visibility += [ "//src/cobalt/bin/app:cobalt_app_unittests" ]
}

source_set("event_loggers_test") {
  testonly = true

  sources = [ "event_loggers_test.cc" ]

  deps = [
    "$cobalt_root/src/lib/util:clock",
    "$cobalt_root/src/local_aggregation/local_aggregate_storage",
    "$cobalt_root/src/logger/test_registries:test_registry",
    "$cobalt_root/src/system_data:client_secret",
  ]

  public_deps = [
    ":event_loggers",
    ":logger_test_utils",
    "$cobalt_root/src/lib/util/testing:test_with_files",
    "$cobalt_root/src/local_aggregation:local_aggregation",
    "$cobalt_root/src/system_data:fake_system_data",
    "//third_party/googletest:gtest",
    "//third_party/protobuf:protobuf_lite",
  ]
}

source_set("logger_test") {
  testonly = true

  sources = [ "logger_test.cc" ]

  deps = [
    "$cobalt_root/src/lib/util:hash",
    "$cobalt_root/src/local_aggregation/testing:test_local_aggregation",
    "$cobalt_root/src/logger:fake_logger",
    "$cobalt_root/src/logger/test_registries:all_report_types_test_registry",
    "$cobalt_root/src/logger/test_registries:test_registry",
    "$cobalt_root/src/system_data:client_secret",
  ]

  public_deps = [
    ":logger",
    ":logger_test_utils",
    "$cobalt_root/src/lib/util/testing:test_with_files",
    "$cobalt_root/src/system_data:fake_system_data",
    "//third_party/googletest:gtest",
  ]
}

source_set("undated_event_manager_test") {
  testonly = true

  sources = [ "undated_event_manager_test.cc" ]

  deps = [
    "$cobalt_root/src/local_aggregation/testing:test_local_aggregation",
    "$cobalt_root/src/logger:fake_logger",
    "$cobalt_root/src/logger/test_registries:all_report_types_test_registry",
    "$cobalt_root/src/system_data:client_secret",
    "$cobalt_root/src/system_data:fake_system_data",
  ]

  public_deps = [
    ":internal_metrics_config_cc",
    ":logger_test_utils",
    ":undated_event_manager",
    "$cobalt_root/src/lib/util/testing:test_with_files",
    "//third_party/googletest:gtest",
  ]
}

source_set("encoder_test") {
  testonly = true
  sources = [ "encoder_test.cc" ]
  deps = [
    ":encoder",
    "//third_party/googletest:gtest",
  ]
}

source_set("project_context_test") {
  testonly = true
  sources = [ "project_context_test.cc" ]
  public_deps = [
    ":project_context",
    "$cobalt_root/src/pb",
    "test_registries:empty_test_registry",
    "test_registries:multiple_project_context_test_registry_directories",
    "test_registries:project_context_test_registry",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/googletest:gtest",
  ]
  deps = [ "$cobalt_root/src/public/lib:registry_identifiers" ]
}

source_set("project_context_factory_test") {
  testonly = true
  sources = [ "project_context_factory_test.cc" ]
  public_deps = [
    ":project_context_factory",
    "$cobalt_root/src/public/lib:registry_identifiers",
    "test_registries/project_context_factory_test_registry:a",
    "test_registries/project_context_factory_test_registry:b",
    "test_registries/project_context_factory_test_registry:c",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/googletest:gtest",
  ]
}

source_set("internal_metrics_test") {
  testonly = true

  sources = [ "internal_metrics_test.cc" ]

  deps = [ ":fake_logger" ]

  public_deps = [
    ":internal_metrics",
    ":logger_test_utils",
    "$cobalt_root/src/public/lib:registry_identifiers",
    "//third_party/abseil-cpp",
    "//third_party/googletest:gtest",
    "//third_party/tink/cc/util:status",
  ]
}

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

  public_deps = [
    "$cobalt_root/src/public/lib/statusor",
    "$cobalt_root/src/registry:cobalt_registry_proto",
  ]
}

source_set("event_vector_index_test") {
  testonly = true

  sources = [ "event_vector_index_test.cc" ]
  public_deps = [
    ":event_vector_index",
    "$cobalt_root/src/registry:cobalt_registry_proto",
    "//third_party/googletest:gtest",
  ]
}

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

  public_deps = [
    ":event_vector_index",
    "$cobalt_root/src/algorithms/privacy:count_min",
    "$cobalt_root/src/algorithms/privacy:numeric_encoding",
    "$cobalt_root/src/algorithms/privacy:poisson",
    "$cobalt_root/src/algorithms/random:random",
    "$cobalt_root/src/lib/client/cpp:buckets_config",
    "$cobalt_root/src/pb",
    "$cobalt_root/src/public/lib/statusor",
    "$cobalt_root/src/registry:cobalt_registry_proto",
  ]
}

source_set("privacy_encoder_test") {
  testonly = true

  sources = [ "privacy_encoder_test.cc" ]

  deps = [
    ":privacy_encoder",
    "$cobalt_root/src/algorithms/privacy:count_min",
    "$cobalt_root/src/algorithms/random:test_secure_random",
    "$cobalt_root/src/lib/util:hash",
    "$cobalt_root/src/public/lib/statusor",
    "$cobalt_root/src/registry:cobalt_registry_proto",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

group("tests") {
  testonly = true

  deps = [
    ":encoder_test",
    ":event_loggers_test",
    ":event_vector_index_test",
    ":internal_metrics_test",
    ":logger_test",
    ":privacy_encoder_test",
    ":project_context_factory_test",
    ":project_context_test",
    ":undated_event_manager_test",
  ]
}
