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

group("tools") {
  testonly = true
  public_deps = [
    "//garnet/go/src/fidl",
    "//garnet/go/src/fidlmerge:host",
    "//garnet/packages/prod:cmdutils",
    "//garnet/packages/prod:debug_agent",
    "//garnet/packages/prod:far",
    "//garnet/packages/prod:iquery",
    "//garnet/packages/prod:run",
    "//garnet/packages/prod:tracing",
    "//garnet/packages/testing:all",
    "//garnet/packages/tools:all",
    "//src/camera:tools",
    "//src/connectivity/network/dhcpd-cli",
    "//src/connectivity/network/netdump",
    "//src/connectivity/network/netstack:tools",
    "//src/connectivity/overnet/overnetstack",
    "//src/connectivity/overnet/tools",
    "//src/connectivity/wlan:tools",
    "//src/developer/debug/zxdb:zxdb_host",
    "//src/developer/development-bridge:ffx",
    "//src/developer/exception_broker/limbo_client",
    "//src/developer/feedback/bugreport",
    "//src/developer/kcounter_inspect",
    "//src/developer/memory/mem",
    "//src/developer/remote-control:pkg",
    "//src/developer/remote-control-runner:pkg",
    "//src/developer/system_monitor/bin/dockyard_host:host_tools",
    "//src/developer/system_monitor/bin/harvester:system_monitor_harvester",
    "//src/devices/bind/debugger",
    "//src/devices/tools/banjo:banjo_bin",
    "//src/diagnostics/tool:diag_tool_host($host_toolchain)",
    "//src/diagnostics/triage:install($host_toolchain)",
    "//src/graphics/lib/magma:magma-tools",
    "//src/lib/icu:tools",
    "//src/media/bundles:tools",
    "//src/recovery/factory_reset:tools",
    "//src/sys/component_manager_for_test",
    "//src/sys/locate",
    "//src/sys/pkg/bin/pm",
    "//src/sys/pkg/bin/pm:host",
    "//src/sys/run_test_suite",
    "//src/sys/tools/cs",
    "//src/sys/tools/runmany",
    "//src/ui/tools/tiles_ctl",
    "//third_party/curl",
    "//third_party/iperf",
    "//third_party/openssh-portable:openssh-tools",
    "//tools",
    "//tools/fidl/gidl:host",
    "//tools/whereiscl:host($host_toolchain)",
  ]
}

group("infratools") {
  testonly = true
  public_deps = [ "//tools:infratools" ]
}

group("tests") {
  testonly = true
  public_deps = [
    "//examples:tests",
    "//garnet/packages/tests:all",
    "//scripts:tests",
    "//src:host_tests",
    "//src:tests",
    "//tools:tests",
    "//topaz:tests",
  ]
}

group("kitchen_sink") {
  testonly = true
  public_deps = [
    ":tests",
    "//bundles:tools",
    "//examples",
    "//garnet/packages:all",
    "//garnet/packages/config:amber",
    "//garnet/packages/config:network",
    "//garnet/packages/config:openssh_keys",
    "//garnet/packages/config:thermd",
    "//src/connectivity/telephony",
    "//src/media/audio/bundles:virtual_audio_driver",
    "//src/media/bundles:examples",
    "//src/media/bundles:services",
    "//src/media/bundles:tools",
    "//topaz",
  ]
}

# While we don't necessarily want to run all tests on devices with limited flash, we should run a
# few amlogic-HW-dependent tests on astro and/or sherlock.  This list is those tests.  This list
# intentionally doesn't include all of :tests above.
group("amlogic_hw_dependent_tests") {
  testonly = true

  public_deps = [
    # Verify communication with amlogic optee.
    "//src/security/tee_manager:optee_smoke_test",

    # Test amlogic-video h264 decode.  Can also work in QEMU using SW decode, but when decode HW is
    # present we'll use that to decode.
    "//src/media/codec/examples:use_h264_decoder_test",

    # Test amlogic-video h264 decode without output buffers mapped for CPU access.
    "//src/media/codec/examples:use_h264_decoder_secure_output_test",

    # Test amlogic-video vp9 decode.
    "//src/media/codec/examples:use_vp9_decoder_test",

    # Test amlogic-video vp9 decode with max output frame count, on environments that
    # have enough contiguous SYSTEM_RAM configured for sysmem.
    "//src/media/codec/examples:use_vp9_decoder_24_output_frames_test",

    # Test amlogic-video vp9 decode.  This uses the same test executable as
    # VP9 decode conformance tests.
    "//src/media/codec/examples:vp9-decoder-conformance-test--bear-vp9",
  ]
}
