# Copyright 2020 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.

visibility = [ "$cobalt_root/*" ]

import("//third_party/protobuf/proto_library.gni")

proto_library("proto") {
  proto_in_dir = "$cobalt_root"
  sources = [ "local_aggregation.proto" ]
  import_protobuf_full = true
  generate_python = false
  cc_generator_options = "lite"

  # deps = [ "$cobalt_root/src/registry:cobalt_registry_proto" ]

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

source_set("tests") {
  testonly = true
  deps = [
    ":backfill_manager",
    ":local_aggregation",
    ":observation_generator",
    ":proto",
    "$cobalt_root/src/algorithms/random:test_secure_random",
    "$cobalt_root/src/lib/util:clock",
    "$cobalt_root/src/lib/util:datetime_util",
    "$cobalt_root/src/lib/util/testing:test_with_files",
    "$cobalt_root/src/local_aggregation_1_1/testing:test_registry",
    "$cobalt_root/src/logger:event_record",
    "$cobalt_root/src/logger:logger_test_utils",
    "$cobalt_root/src/logger:project_context_factory",
    "$cobalt_root/src/system_data:client_secret",
    "$cobalt_root/src/system_data:fake_system_data",
    "aggregation_procedures",
    "aggregation_procedures:tests",
    "local_aggregate_storage",
    "local_aggregate_storage:tests",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
  sources = [
    "backfill_manager_test.cc",
    "local_aggregation_test.cc",
    "observation_generator_test.cc",
  ]
}

source_set("local_aggregation") {
  sources = [
    "local_aggregation.cc",
    "local_aggregation.h",
  ]
  deps = [
    ":observation_generator",
    "$cobalt_root/src/lib/util:datetime_util",
    "$cobalt_root/src/logger:encoder",
    "$cobalt_root/src/logger:event_record",
    "$cobalt_root/src/logger:privacy_encoder",
    "$cobalt_root/src/logger:project_context_factory",
    "$cobalt_root/src/pb:metadata_builder",
    "$cobalt_root/src/public:cobalt_config",
    "aggregation_procedures",
    "local_aggregate_storage",
  ]
  public_deps = [ "$cobalt_root/src/logger:observation_writer" ]
  configs += [ "$cobalt_root:cobalt_config" ]
}

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

  deps = [
    "$cobalt_root/src/lib/util:datetime_util",
    "aggregation_procedures",
  ]
}

source_set("observation_generator") {
  sources = [
    "observation_generator.cc",
    "observation_generator.h",
  ]
  deps = [
    ":backfill_manager",
    "$cobalt_root/src/lib/util:clock",
    "$cobalt_root/src/lib/util:datetime_util",
    "$cobalt_root/src/logger:project_context_factory",
    "$cobalt_root/src/pb:metadata_builder",
    "aggregation_procedures",
    "local_aggregate_storage",
  ]
  public_deps = [
    "$cobalt_root/src/logger:observation_writer",
    "$cobalt_root/src/logger:privacy_encoder",
  ]
}
