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

executable("test_app") {
  testonly = true

  sources = [
    "test_app_main.cc",
  ]

  deps = [
    ":lib",
    "$cobalt_root/src/pb",
  ]
}

source_set("lib") {
  testonly = true

  sources = [
    "test_app.cc",
  ]

  configs += [ "$cobalt_root/src/registry:proto_config" ]

  public_deps = [
    "$cobalt_root/src/local_aggregation:event_aggregator_mgr",
    "$cobalt_root/src/logger",
    "$cobalt_root/src/logger:encoder",
    "$cobalt_root/src/logger:undated_event_manager",
    "//third_party/gflags",
    "//third_party/googletest:gtest",
  ]
  deps = [
    "$cobalt_root:registry",
    "$cobalt_root/src:logging",
    "$cobalt_root/src/lib/clearcut:curl_http_client",
    "$cobalt_root/src/lib/util:clock",
    "$cobalt_root/src/lib/util:datetime_util",
    "$cobalt_root/src/lib/util:file_util",
    "$cobalt_root/src/lib/util:posix_file_system",
    "$cobalt_root/src/lib/util:proto_serialization",
    "$cobalt_root/src/logger:project_context_factory",
    "$cobalt_root/src/observation_store",
    "$cobalt_root/src/uploader:shipping_manager",
    "//third_party/abseil-cpp",
    "//third_party/grpc:grpc++",
    "//third_party/protobuf:protobuf_lite",
    "//third_party/tink/cc/util:status",
  ]
}

source_set("tests") {
  testonly = true

  sources = [
    "test_app_test.cc",
  ]

  deps = [
    ":lib",
    "$cobalt_root/src/bin/test_app/test_registry",
    "$cobalt_root/src/logger:logger_test_utils",
    "$cobalt_root/src/logger:project_context_factory",
    "//third_party/abseil-cpp/absl/synchronization",
    "//third_party/gflags",
    "//third_party/googletest:gtest",
    "//third_party/tink/cc/util:status",
  ]
}
