[audio_core][test] Split each test into a different component/executable
Prior CLs have started to organize integration tests by API, so that,
for example, audio_capturer_test.cc tests the AudioCapturer API. Since
there is no dependency across source files, each source file can be
compiled into a separate executable. This is conceptually cleaner and in
theory makes test execution more incremental (although the current build
infrastructure cannot execute tests incrementally).
Bug: 50645
Change-Id: Icd2cef9f9d68f6555b531b1b246f2e7918f25e74
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/404872
Commit-Queue: Tom Bergan <tombergan@google.com>
Reviewed-by: Tim Detwiler <tjdetwiler@google.com>
Testability-Review: Tim Detwiler <tjdetwiler@google.com>
diff --git a/garnet/bin/run_test_component/max_severity_fuchsia.json b/garnet/bin/run_test_component/max_severity_fuchsia.json
index d593364..b35224c 100644
--- a/garnet/bin/run_test_component/max_severity_fuchsia.json
+++ b/garnet/bin/run_test_component/max_severity_fuchsia.json
@@ -37,7 +37,11 @@
"max_severity": "ERROR"
},
{
- "url": "fuchsia-pkg://fuchsia.com/audio-core-api-tests#meta/audio-core-api-tests.cmx",
+ "url": "fuchsia-pkg://fuchsia.com/audio-core-api-tests#meta/audio-renderer-test.cmx",
+ "max_severity": "ERROR"
+ },
+ {
+ "url": "fuchsia-pkg://fuchsia.com/audio-core-api-tests#meta/audio-tuner-test.cmx",
"max_severity": "ERROR"
},
{
diff --git a/src/media/audio/audio_core/test/api/BUILD.gn b/src/media/audio/audio_core/test/api/BUILD.gn
index 3cd06ab..cd20b5f 100644
--- a/src/media/audio/audio_core/test/api/BUILD.gn
+++ b/src/media/audio/audio_core/test/api/BUILD.gn
@@ -2,57 +2,71 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-# This directory contains two kinds of audio_core integration tests, in two
-# different binaries:
-#
-# audio-core-api-tests
-# Validates the "control plane" subset of the API. These tests do not
-# check how data flows through the system.
-#
-# audio-core-api-pipeline-tests
-# Validates the flow of audio data. Verifying correct data flow requires
-# timers, so these tests are run on real hardware only.
-# TODO(50645): this binary doesn't exist yet
-#
-# For convenience, both tests are available in the same package.
+import("//build/testing/environments.gni")
+import("//src/media/audio/audio_core/test/api/api_test_component.gni")
+import("//src/sys/build/fuchsia_test_package.gni")
-import("//build/test/test_package.gni")
-
-test_package("audio-core-api-tests") {
- deps = [ ":audio-core-api-tests-bin" ]
-
- tests = [
- {
- name = "audio-core-api-tests"
- environments = basic_envs
- },
- ]
+audio_core_api_test_component("activity-reporter-test") {
+ sources = [ "activity_reporter_test.cc" ]
}
-executable("audio-core-api-tests-bin") {
- testonly = true
- output_name = "audio-core-api-tests"
-
- sources = [
- "activity_reporter_test.cc",
- "audio_capturer_test.cc",
- "audio_renderer_test.cc",
- "audio_tuner_test.cc",
- "gain_control_test.cc",
- "usage_gain_reporter_test.cc",
- "usage_reporter_test.cc",
- "volume_control.cc",
- ]
-
+audio_core_api_test_component("audio-capturer-test") {
+ sources = [ "audio_capturer_test.cc" ]
deps = [
- "//sdk/fidl/fuchsia.media",
- "//sdk/fidl/fuchsia.virtualaudio",
"//sdk/lib/media/audio/cpp",
- "//src/lib/fxl/test:gtest_main",
"//src/media/audio/lib/clock:clone_mono",
"//src/media/audio/lib/clock/testing",
- "//src/media/audio/lib/logging",
- "//src/media/audio/lib/test:hermetic_audio_test",
- "//third_party/googletest:gmock",
]
}
+
+audio_core_api_test_component("audio-renderer-test") {
+ sources = [ "audio_renderer_test.cc" ]
+ deps = [
+ "//sdk/lib/media/audio/cpp",
+ "//src/media/audio/lib/clock:clone_mono",
+ "//src/media/audio/lib/clock/testing",
+ ]
+}
+
+audio_core_api_test_component("audio-tuner-test") {
+ sources = [ "audio_tuner_test.cc" ]
+ deps = [ "//sdk/fidl/fuchsia.media.tuning" ]
+}
+
+audio_core_api_test_component("gain-control-test") {
+ sources = [ "gain_control_test.cc" ]
+}
+
+audio_core_api_test_component("usage-gain-reporter-test") {
+ sources = [ "usage_gain_reporter_test.cc" ]
+ deps = [ "//sdk/fidl/fuchsia.media.audio" ]
+}
+
+audio_core_api_test_component("usage-reporter-test") {
+ sources = [ "usage_reporter_test.cc" ]
+}
+
+audio_core_api_test_component("volume-control-test") {
+ sources = [ "volume_control_test.cc" ]
+}
+
+# These tests can run anywhere, including in emulators.
+fuchsia_test_package("audio-core-api-tests") {
+ test_components = [
+ ":activity-reporter-test",
+ ":audio-capturer-test",
+ ":audio-renderer-test",
+ ":audio-tuner-test",
+ ":gain-control-test",
+ ":usage-gain-reporter-test",
+ ":usage-reporter-test",
+ ":volume-control-test",
+ ]
+}
+# TODO(50645): add after tests have been moved
+# These tests must run on real hardware because they depend on real time.
+#fuchsia_test_package("audio-core-api-tests-hw-only") {
+# test_specs = [
+# environments = hardware_envs
+# ]
+#}
diff --git a/src/media/audio/audio_core/test/api/activity_reporter_test.cc b/src/media/audio/audio_core/test/api/activity_reporter_test.cc
index c4cbe0f..cb15923 100644
--- a/src/media/audio/audio_core/test/api/activity_reporter_test.cc
+++ b/src/media/audio/audio_core/test/api/activity_reporter_test.cc
@@ -3,9 +3,6 @@
// found in the LICENSE file.
#include <fuchsia/media/cpp/fidl.h>
-#include <fuchsia/media/tuning/cpp/fidl.h>
-#include <fuchsia/virtualaudio/cpp/fidl.h>
-#include <lib/zx/vmo.h>
#include <cmath>
diff --git a/src/media/audio/audio_core/test/api/api_test_component.gni b/src/media/audio/audio_core/test/api/api_test_component.gni
new file mode 100644
index 0000000..ca50adc
--- /dev/null
+++ b/src/media/audio/audio_core/test/api/api_test_component.gni
@@ -0,0 +1,75 @@
+# 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.
+
+import("//src/sys/build/fuchsia_component.gni")
+
+# Defines an API integration test.
+#
+# This template creates a fuchsia_component with the given name, where the
+# component contains a test executable built from sources and deps, along with
+# an auto-generated manifest for the test executable. By default, the deps
+# include libraries that will be needed by all tests in this directory.
+#
+# Example:
+# ```
+# audio_core_api_test_comonent(name) {
+# sources = ["foo_test.cc"]
+# deps = ["//lib"]
+# }
+# ```
+#
+# Parameters
+#
+# sources (required)
+# List of source files to include in this test component.
+# Type: list(path)
+#
+# deps (optional)
+# List of dependencies files to include in this test component.
+# Type: list(target)
+#
+template("audio_core_api_test_component") {
+ assert(defined(invoker.sources) && invoker.sources != [],
+ "sources must be non-empty")
+
+ binary = "${target_name}-bin"
+ cmx_target = "${target_name}_cmx"
+ cmx_output = "${target_gen_dir}/${target_name}.cmx"
+
+ generated_file(cmx_target) {
+ contents = read_file("meta/audio-core-api-tests.cmx", "string")
+ contents = string_replace(contents, "{binary}", binary)
+ outputs = [ cmx_output ]
+ output_conversion = "string"
+ testonly = true
+ }
+
+ fuchsia_component(target_name) {
+ testonly = true
+ manifest = get_target_outputs(":${cmx_target}")
+ manifest = manifest[0]
+ deps = [
+ ":${cmx_target}",
+ ":${target_name}-bin",
+ ]
+ }
+
+ executable("${target_name}-bin") {
+ forward_variables_from(invoker,
+ [
+ "deps",
+ "sources",
+ ])
+ if (!defined(deps)) {
+ deps = []
+ }
+ deps += [
+ "//sdk/fidl/fuchsia.media",
+ "//src/lib/fxl/test:gtest_main",
+ "//src/media/audio/lib/test:hermetic_audio_test",
+ "//third_party/googletest:gmock",
+ ]
+ testonly = true
+ }
+}
diff --git a/src/media/audio/audio_core/test/api/audio_capturer_test.cc b/src/media/audio/audio_core/test/api/audio_capturer_test.cc
index 2a03c26..bda5109 100644
--- a/src/media/audio/audio_core/test/api/audio_capturer_test.cc
+++ b/src/media/audio/audio_core/test/api/audio_capturer_test.cc
@@ -9,7 +9,6 @@
#include "lib/media/audio/cpp/types.h"
#include "src/media/audio/lib/clock/clone_mono.h"
#include "src/media/audio/lib/clock/testing/clock_test.h"
-#include "src/media/audio/lib/logging/logging.h"
#include "src/media/audio/lib/test/hermetic_audio_test.h"
namespace media::audio::test {
diff --git a/src/media/audio/audio_core/test/api/audio_tuner_test.cc b/src/media/audio/audio_core/test/api/audio_tuner_test.cc
index 5567896..89abd73 100644
--- a/src/media/audio/audio_core/test/api/audio_tuner_test.cc
+++ b/src/media/audio/audio_core/test/api/audio_tuner_test.cc
@@ -4,7 +4,6 @@
#include <fuchsia/media/cpp/fidl.h>
#include <fuchsia/media/tuning/cpp/fidl.h>
-#include <fuchsia/virtualaudio/cpp/fidl.h>
#include <cmath>
diff --git a/src/media/audio/audio_core/test/api/meta/audio-core-api-tests.cmx b/src/media/audio/audio_core/test/api/meta/audio-core-api-tests.cmx
index 206f870..5532f29 100644
--- a/src/media/audio/audio_core/test/api/meta/audio-core-api-tests.cmx
+++ b/src/media/audio/audio_core/test/api/meta/audio-core-api-tests.cmx
@@ -10,7 +10,7 @@
}
},
"program": {
- "binary": "test/audio-core-api-tests"
+ "binary": "bin/{binary}"
},
"sandbox": {
"features": [
diff --git a/src/media/audio/audio_core/test/api/usage_gain_reporter_test.cc b/src/media/audio/audio_core/test/api/usage_gain_reporter_test.cc
index f8662db..b92aa59 100644
--- a/src/media/audio/audio_core/test/api/usage_gain_reporter_test.cc
+++ b/src/media/audio/audio_core/test/api/usage_gain_reporter_test.cc
@@ -2,9 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <fuchsia/media/audio/cpp/fidl.h>
#include <fuchsia/media/cpp/fidl.h>
-#include <fuchsia/media/tuning/cpp/fidl.h>
-#include <fuchsia/virtualaudio/cpp/fidl.h>
#include <cmath>
#include <memory>
diff --git a/src/media/audio/audio_core/test/api/usage_reporter_test.cc b/src/media/audio/audio_core/test/api/usage_reporter_test.cc
index e3619e6..a4f074c 100644
--- a/src/media/audio/audio_core/test/api/usage_reporter_test.cc
+++ b/src/media/audio/audio_core/test/api/usage_reporter_test.cc
@@ -3,8 +3,6 @@
// found in the LICENSE file.
#include <fuchsia/media/cpp/fidl.h>
-#include <fuchsia/media/tuning/cpp/fidl.h>
-#include <fuchsia/virtualaudio/cpp/fidl.h>
#include <cmath>
diff --git a/src/media/audio/audio_core/test/api/volume_control.cc b/src/media/audio/audio_core/test/api/volume_control_test.cc
similarity index 97%
rename from src/media/audio/audio_core/test/api/volume_control.cc
rename to src/media/audio/audio_core/test/api/volume_control_test.cc
index 43113bd..210b189 100644
--- a/src/media/audio/audio_core/test/api/volume_control.cc
+++ b/src/media/audio/audio_core/test/api/volume_control_test.cc
@@ -3,8 +3,6 @@
// found in the LICENSE file.
#include <fuchsia/media/cpp/fidl.h>
-#include <fuchsia/media/tuning/cpp/fidl.h>
-#include <fuchsia/virtualaudio/cpp/fidl.h>
#include <cmath>