# 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("//build/fuzzing/fuzzer.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")
import("//src/sys/build/components.gni")
import("//third_party/protobuf/proto_library.gni")

group("tests") {
  testonly = true
  deps = [
    ":cobalt-manual-tests",
    ":cobalt_tests",
    "app",
    "system-metrics",
    "testapp",
    "testing",
    "utils",
  ]
}

test_package("cobalt_tests") {
  deps = [
    "app:app",
    "app:cobalt_app_unittests",
    "app:global_metrics_registry",
    "app:testapp_metrics_registry",
    "system-metrics:cobalt_system_metrics_unittests",
    "testapp:testapp",
    "utils:cobalt_utils_unittests",
  ]

  binaries = [
    {
      name = "fake_timekeeper"
    },
  ]

  meta = [
    {
      path = "testapp/meta/timekeeper.cmx"
      dest = "cobalt_fake_timekeeper.cmx"
    },
  ]

  tests = [
    {
      name = "cobalt_app_unittests"
      environments = basic_envs
    },

    {
      name = "cobalt_system_metrics_unittests"
      environments = basic_envs
    },

    {
      name = "cobalt_utils_unittests"
      environments = basic_envs
    },

    {
      name = "cobalt_testapp"
      dest = "cobalt_testapp_no_network"
      environments = basic_envs
    },
  ]

  resources = [
    {
      # Cobalt 1.0 analyzer public key for devel environment.
      path = rebase_path("//third_party/cobalt/keys/analyzer_public.cobalt_key")
      dest = "keys/analyzer_devel_public"
    },
    {
      # Cobalt 1.0 shuffler public key for devel environment.
      path = rebase_path("//third_party/cobalt/keys/shuffler_public.cobalt_key")
      dest = "keys/shuffler_devel_public"
    },
    {
      path = rebase_path(
              get_label_info("app:testapp_metrics_registry", "target_gen_dir") +
              "/testapp_metrics_registry.pb")
      dest = "testapp_metrics_registry.pb"
    },
    {
      path = rebase_path("system-metrics/log_stats_component_allowlist.txt")
      dest = "log_stats_component_allowlist.txt"
    },
  ]
}

fuchsia_component("cobalt-testapp") {
  testonly = true
  manifest = "meta/cobalt_testapp.cmx"
  deps = [ "testapp:cobalt_testapp" ]
}

# Tests that should not be run on any bot.
fuchsia_test_package("cobalt-manual-tests") {
  test_components = [ ":cobalt-testapp" ]
  test_specs = {
    environments = []
  }
}

test_package("cobalt_tests_do_not_run_manually") {
  deps = [ "testapp:cobalt_testapp" ]

  binaries = [
    # Referred to by cobalt_testapp_for_prober_do_not_run_manually.cmx
    {
      name = "cobalt_testapp"
    },
  ]

  tests = [
    {
      name =
          rebase_path("meta/cobalt_testapp_for_prober_do_not_run_manually.cmx")
      dest = "cobalt_testapp_for_prober_do_not_run_manually"

      # We don't want to run this version of cobalt_testapp in the Fuchsia
      # CI/CQ  because it uses the real network. We run cobalt_testapp_no_network
      # instead. This version is run in the Cobalt Prober.
      # It should not be run outside of CI, since it populates a test pipeline
      # whose output is inspected.
      environments = [
        {
          dimensions = {
            device_type = "Astro"
          }
          tags = [ "cobalt-prober" ]
        },
        {
          dimensions = {
            device_type = "Intel NUC Kit NUC7i5DNHE"
          }
          tags = [ "cobalt-prober" ]
        },
      ]
    },
  ]
}

package("cobalt-prober-do-not-run-manually") {
  deps = [ "testapp:cobalt_testapp" ]

  binaries = [
    # Referred to by cobalt_testapp_for_prober_do_not_run_manually.cmx
    {
      name = "cobalt_testapp"
    },
  ]
  meta = [
    {
      path =
          rebase_path("meta/cobalt_testapp_for_prober_do_not_run_manually.cmx")
      dest = "cobalt_testapp_for_prober_do_not_run_manually.cmx"
    },
  ]
}

fuzzers_package("cobalt_fuzzers") {
  fuzzers = [
    "app/fuzzer:logger_factory_fuzzer",
    "app/fuzzer:logger_fuzzer",
    "app/fuzzer:system_data_updater_fuzzer",
  ]
}
