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

import("//build/dart/test.gni")
import("//build/testing/environments.gni")
import("//build/testing/host_test_data.gni")

dart_test("sl4f_test") {
  sources = [
    "audio_test.dart",
    "client_test.dart",
    "component_test.dart",
    "device_log_test.dart",
    "diagnostics_test.dart",
    "dump_test.dart",
    "performance_test.dart",
    "storage_test.dart",
    "tcp_proxy_test.dart",
    "time_test.dart",
  ]

  deps = [
    "//sdk/testing/sl4f/client",
    "//third_party/dart-pkg/pub/http",
    "//third_party/dart-pkg/pub/logging",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]

  non_dart_deps = [ ":runtime_deps($host_toolchain)" ]

  environments = [
    nuc7_env,
    nuc11_env,

    # The astro environment has tags as it is still to be run on an FYI builder.
    {
      dimensions = {
        device_type = "Astro"
      }
      tags = [ "e2e-fyi" ]
    },
  ]
}

dart_test("sl4f_test_astro_only") {
  sources = [ "setui_test.dart" ]

  deps = [
    "//sdk/testing/sl4f/client",
    "//third_party/dart-pkg/pub/http",
    "//third_party/dart-pkg/pub/logging",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]

  non_dart_deps = [ ":runtime_deps($host_toolchain)" ]

  environments = [
    # The astro environment has tags as it is still to be run on an FYI builder.
    {
      dimensions = {
        device_type = "Astro"
      }
      tags = [ "e2e-fyi" ]
    },
  ]
}

dart_test("sl4f_astro_performance_test") {
  sources = [ "performance_astro_test.dart" ]

  deps = [
    "//sdk/testing/sl4f/client",
    "//third_party/dart-pkg/pub/http",
    "//third_party/dart-pkg/pub/logging",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]

  non_dart_deps = [ ":runtime_deps($host_toolchain)" ]

  environments = [
    astro_env,

    # The astro environment has tags as it is still to be run on an FYI builder.
    {
      dimensions = {
        device_type = "Astro"
      }
      tags = [ "e2e-fyi" ]
    },
  ]
}

if (is_host) {
  host_test_data("runtime_deps") {
    sources = [ "$root_out_dir/trace2json" ]

    outputs = [ "$target_gen_dir/runtime_deps/{{source_file_part}}" ]

    deps = [ "//src/performance/trace2json:bin" ]
  }
}

group("test") {
  testonly = true

  deps = [
    ":sl4f_astro_performance_test($host_toolchain)",
    ":sl4f_test($host_toolchain)",
    ":sl4f_test_astro_only($host_toolchain)",

    # used to test sl4f launch component.
    "//src/tests/end_to_end/sl4f/testing:sl4f-testing",
  ]
}
