From 3d6e88e6acb0174b1e0707513f9ed87bcef7daf9 Mon Sep 17 00:00:00 2001 From: Jeremy Leconte Date: Wed, 31 May 2023 10:10:44 +0200 Subject: [PATCH] Remove low_bandwidth_audio_test. Change-Id: Ide4d34e1dada9dc1448f89a79cc7b803ea4b5f46 Bug: b/284448060 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/307160 Reviewed-by: Henrik Lundin Reviewed-by: Mirko Bonadei Commit-Queue: Jeremy Leconte Reviewed-by: Henrik Lundin Cr-Commit-Position: refs/heads/main@{#40191} --- BUILD.gn | 1 - PRESUBMIT.py | 1 - audio/BUILD.gn | 100 ----- audio/test/OWNERS | 3 - audio/test/low_bandwidth_audio_test.cc | 111 ------ audio/test/low_bandwidth_audio_test.py | 365 ------------------ audio/test/low_bandwidth_audio_test_flags.cc | 28 -- audio/test/pc_low_bandwidth_audio_test.cc | 174 --------- .../low_bandwidth_audio_test_test.py | 239 ------------ infra/specs/gn_isolate_map.pyl | 9 - .../coverage/generate_coverage_command.py | 9 +- 11 files changed, 4 insertions(+), 1036 deletions(-) delete mode 100644 audio/test/OWNERS delete mode 100644 audio/test/low_bandwidth_audio_test.cc delete mode 100755 audio/test/low_bandwidth_audio_test.py delete mode 100644 audio/test/low_bandwidth_audio_test_flags.cc delete mode 100644 audio/test/pc_low_bandwidth_audio_test.cc delete mode 100755 audio/test/unittests/low_bandwidth_audio_test_test.py diff --git a/BUILD.gn b/BUILD.gn index 3f3e49630e..a13df86db3 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -102,7 +102,6 @@ if (!build_with_chromium) { } if (rtc_enable_protobuf) { deps += [ - "audio:low_bandwidth_audio_perf_test", "logging:rtc_event_log_rtp_dump", "tools_webrtc/perf:webrtc_dashboard_upload", ] diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 796103667a..4fbee0e32d 100755 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -828,7 +828,6 @@ def RunPythonTests(input_api, output_api): test_directories = [ input_api.PresubmitLocalPath(), Join('rtc_tools', 'py_event_log_analyzer'), - Join('audio', 'test', 'unittests'), ] + [ root for root, _, files in os.walk(Join('tools_webrtc')) if any( f.endswith('_test.py') and f not in excluded_files for f in files) diff --git a/audio/BUILD.gn b/audio/BUILD.gn index 654cdbce0e..ec09e5a350 100644 --- a/audio/BUILD.gn +++ b/audio/BUILD.gn @@ -247,104 +247,4 @@ if (rtc_include_tests) { ] absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] } - - if (rtc_enable_protobuf && !build_with_chromium) { - rtc_test("low_bandwidth_audio_test") { - testonly = true - - sources = [ - "test/low_bandwidth_audio_test.cc", - "test/low_bandwidth_audio_test_flags.cc", - "test/pc_low_bandwidth_audio_test.cc", - ] - - deps = [ - ":audio_end_to_end_test", - "../api:create_network_emulation_manager", - "../api:create_peerconnection_quality_test_fixture", - "../api:network_emulation_manager_api", - "../api:peer_connection_quality_test_fixture_api", - "../api:simulated_network_api", - "../api:time_controller", - "../api/test/metrics:chrome_perf_dashboard_metrics_exporter", - "../api/test/metrics:global_metrics_logger_and_exporter", - "../api/test/metrics:metrics_exporter", - "../api/test/metrics:stdout_metrics_exporter", - "../api/test/pclf:media_configuration", - "../api/test/pclf:media_quality_test_params", - "../api/test/pclf:peer_configurer", - "../call:simulated_network", - "../common_audio", - "../system_wrappers", - "../test:fileutils", - "../test:test_common", - "../test:test_main", - "../test:test_support", - "../test:video_test_constants", - "../test/pc/e2e:network_quality_metrics_reporter", - "//testing/gtest", - ] - absl_deps = [ - "//third_party/abseil-cpp/absl/flags:flag", - "//third_party/abseil-cpp/absl/strings", - ] - if (is_android) { - use_default_launcher = false - deps += [ - "//build/android/gtest_apk:native_test_instrumentation_test_runner_java", - "//testing/android/native_test:native_test_java", - "//testing/android/native_test:native_test_support", - ] - } - data = [ - "../resources/voice_engine/audio_tiny16.wav", - "../resources/voice_engine/audio_tiny48.wav", - ] - } - - group("low_bandwidth_audio_perf_test") { - testonly = true - - deps = [ - ":low_bandwidth_audio_test", - "//third_party/catapult/tracing/tracing/proto:histogram_proto", - "//third_party/protobuf:py_proto_runtime", - ] - - data = [ - "test/low_bandwidth_audio_test.py", - "../resources/voice_engine/audio_tiny16.wav", - "../resources/voice_engine/audio_tiny48.wav", - "${root_out_dir}/pyproto/tracing/tracing/proto/histogram_pb2.py", - ] - - # TODO(http://crbug.com/1029452): Create a cleaner target with just the - # tracing python code. We don't need Polymer for instance. - data_deps = [ "//third_party/catapult/tracing:convert_chart_json" ] - - if (is_win) { - data += [ "${root_out_dir}/low_bandwidth_audio_test.exe" ] - } else { - data += [ "${root_out_dir}/low_bandwidth_audio_test" ] - } - - if (is_linux || is_chromeos || is_android || is_fuchsia) { - data += [ - "../tools_webrtc/audio_quality/linux/PolqaOem64", - "../tools_webrtc/audio_quality/linux/pesq", - ] - } - if (is_win) { - data += [ - "../tools_webrtc/audio_quality/win/PolqaOem64.dll", - "../tools_webrtc/audio_quality/win/PolqaOem64.exe", - "../tools_webrtc/audio_quality/win/pesq.exe", - "../tools_webrtc/audio_quality/win/vcomp120.dll", - ] - } - if (is_mac) { - data += [ "../tools_webrtc/audio_quality/mac/pesq" ] - } - } - } } diff --git a/audio/test/OWNERS b/audio/test/OWNERS deleted file mode 100644 index 3754d4823a..0000000000 --- a/audio/test/OWNERS +++ /dev/null @@ -1,3 +0,0 @@ -# Script to launch low_bandwidth_audio_test. -per-file low_bandwidth_audio_test.py=mbonadei@webrtc.org -per-file low_bandwidth_audio_test.py=jleconte@webrtc.org diff --git a/audio/test/low_bandwidth_audio_test.cc b/audio/test/low_bandwidth_audio_test.cc deleted file mode 100644 index 903f482e71..0000000000 --- a/audio/test/low_bandwidth_audio_test.cc +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "absl/flags/declare.h" -#include "absl/flags/flag.h" -#include "api/test/simulated_network.h" -#include "audio/test/audio_end_to_end_test.h" -#include "system_wrappers/include/sleep.h" -#include "test/testsupport/file_utils.h" -#include "test/video_test_constants.h" - -ABSL_DECLARE_FLAG(int, sample_rate_hz); -ABSL_DECLARE_FLAG(bool, quick); - -namespace webrtc { -namespace test { -namespace { - -std::string FileSampleRateSuffix() { - return std::to_string(absl::GetFlag(FLAGS_sample_rate_hz) / 1000); -} - -class AudioQualityTest : public AudioEndToEndTest { - public: - AudioQualityTest() = default; - - private: - std::string AudioInputFile() const { - return test::ResourcePath( - "voice_engine/audio_tiny" + FileSampleRateSuffix(), "wav"); - } - - std::string AudioOutputFile() const { - const ::testing::TestInfo* const test_info = - ::testing::UnitTest::GetInstance()->current_test_info(); - return webrtc::test::OutputPath() + "LowBandwidth_" + test_info->name() + - "_" + FileSampleRateSuffix() + ".wav"; - } - - std::unique_ptr CreateCapturer() override { - return TestAudioDeviceModule::CreateWavFileReader(AudioInputFile()); - } - - std::unique_ptr CreateRenderer() override { - return TestAudioDeviceModule::CreateBoundedWavFileWriter( - AudioOutputFile(), absl::GetFlag(FLAGS_sample_rate_hz)); - } - - void PerformTest() override { - if (absl::GetFlag(FLAGS_quick)) { - // Let the recording run for a small amount of time to check if it works. - SleepMs(1000); - } else { - // Sleep for whole audio duration which is 5.4 seconds. - SleepMs(5400); - } - } - - void OnStreamsStopped() override { - const ::testing::TestInfo* const test_info = - ::testing::UnitTest::GetInstance()->current_test_info(); - - // Output information about the input and output audio files so that further - // processing can be done by an external process. - printf("TEST %s %s %s\n", test_info->name(), AudioInputFile().c_str(), - AudioOutputFile().c_str()); - } -}; - -class Mobile2GNetworkTest : public AudioQualityTest { - void ModifyAudioConfigs(AudioSendStream::Config* send_config, - std::vector* - receive_configs) override { - send_config->send_codec_spec = AudioSendStream::Config::SendCodecSpec( - test::VideoTestConstants::kAudioSendPayloadType, - {"OPUS", - 48000, - 2, - {{"maxaveragebitrate", "6000"}, {"ptime", "60"}, {"stereo", "1"}}}); - } - - BuiltInNetworkBehaviorConfig GetSendTransportConfig() const override { - BuiltInNetworkBehaviorConfig pipe_config; - pipe_config.link_capacity_kbps = 12; - pipe_config.queue_length_packets = 1500; - pipe_config.queue_delay_ms = 400; - return pipe_config; - } -}; -} // namespace - -using LowBandwidthAudioTest = CallTest; - -TEST_F(LowBandwidthAudioTest, GoodNetworkHighBitrate) { - AudioQualityTest test; - RunBaseTest(&test); -} - -TEST_F(LowBandwidthAudioTest, Mobile2GNetwork) { - Mobile2GNetworkTest test; - RunBaseTest(&test); -} -} // namespace test -} // namespace webrtc diff --git a/audio/test/low_bandwidth_audio_test.py b/audio/test/low_bandwidth_audio_test.py deleted file mode 100755 index 07065e2c8d..0000000000 --- a/audio/test/low_bandwidth_audio_test.py +++ /dev/null @@ -1,365 +0,0 @@ -#!/usr/bin/env vpython3 -# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. -# -# Use of this source code is governed by a BSD-style license -# that can be found in the LICENSE file in the root of the source -# tree. An additional intellectual property rights grant can be found -# in the file PATENTS. All contributing project authors may -# be found in the AUTHORS file in the root of the source tree. -""" -This script is the wrapper that runs the low-bandwidth audio test. - -After running the test, post-process steps for calculating audio quality of the -output files will be performed. -""" - -import argparse -import collections -import json -import logging -import os -import re -import shutil -import subprocess -import sys - -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -SRC_DIR = os.path.normpath(os.path.join(SCRIPT_DIR, os.pardir, os.pardir)) - -NO_TOOLS_ERROR_MESSAGE = ( - 'Could not find PESQ or POLQA at %s.\n' - '\n' - 'To fix this run:\n' - ' python %s %s\n' - '\n' - 'Note that these tools are Google-internal due to licensing, so in order ' - 'to use them you will have to get your own license and manually put them ' - 'in the right location.\n' - 'See https://cs.chromium.org/chromium/src/third_party/webrtc/tools_webrtc/' - 'download_tools.py?rcl=bbceb76f540159e2dba0701ac03c514f01624130&l=13') - - -def _LogCommand(command): - logging.info('Running %r', command) - return command - - -def _ParseArgs(): - parser = argparse.ArgumentParser(description='Run low-bandwidth audio tests.') - parser.add_argument('build_dir', - help='Path to the build directory (e.g. out/Release).') - parser.add_argument('--remove', - action='store_true', - help='Remove output audio files after testing.') - parser.add_argument( - '--android', - action='store_true', - help='Perform the test on a connected Android device instead.') - parser.add_argument('--adb-path', help='Path to adb binary.', default='adb') - parser.add_argument('--num-retries', - default='0', - help='Number of times to retry the test on Android.') - parser.add_argument( - '--isolated-script-test-perf-output', - default=None, - help='Path to store perf results in histogram proto format.') - parser.add_argument( - '--isolated-script-test-output', - default=None, - help='Path to output an empty JSON file which Chromium infra requires.') - - return parser.parse_known_args() - - -def _GetPlatform(): - if sys.platform == 'win32': - return 'win' - if sys.platform == 'darwin': - return 'mac' - if sys.platform.startswith('linux'): - return 'linux' - raise AssertionError('Unknown platform %s' % sys.platform) - - -def _GetExtension(): - return '.exe' if sys.platform == 'win32' else '' - - -def _GetPathToTools(): - tools_dir = os.path.join(SRC_DIR, 'tools_webrtc') - toolchain_dir = os.path.join(tools_dir, 'audio_quality') - - platform = _GetPlatform() - ext = _GetExtension() - - pesq_path = os.path.join(toolchain_dir, platform, 'pesq' + ext) - if not os.path.isfile(pesq_path): - pesq_path = None - - polqa_path = os.path.join(toolchain_dir, platform, 'PolqaOem64' + ext) - if not os.path.isfile(polqa_path): - polqa_path = None - - if (platform != 'mac' and not polqa_path) or not pesq_path: - logging.error(NO_TOOLS_ERROR_MESSAGE, toolchain_dir, - os.path.join(tools_dir, 'download_tools.py'), toolchain_dir) - - return pesq_path, polqa_path - - -def ExtractTestRuns(lines, echo=False): - """Extracts information about tests from the output of a test runner. - - Produces tuples - (android_device, test_name, reference_file, degraded_file, cur_perf_results). - """ - for line in lines: - if echo: - sys.stdout.write(line) - - # Output from Android has a prefix with the device name. - android_prefix_re = r'(?:I\b.+\brun_tests_on_device\((.+?)\)\s*)?' - test_re = r'^' + android_prefix_re + (r'TEST (\w+) ([^ ]+?) ([^\s]+)' - r' ?([^\s]+)?\s*$') - - match = re.search(test_re, line) - if match: - yield match.groups() - - -def _GetFile(file_path, - out_dir, - move=False, - android=False, - adb_prefix=('adb', )): - out_file_name = os.path.basename(file_path) - out_file_path = os.path.join(out_dir, out_file_name) - - if android: - # Pull the file from the connected Android device. - adb_command = adb_prefix + ('pull', file_path, out_dir) - subprocess.check_call(_LogCommand(adb_command)) - if move: - # Remove that file. - adb_command = adb_prefix + ('shell', 'rm', file_path) - subprocess.check_call(_LogCommand(adb_command)) - elif os.path.abspath(file_path) != os.path.abspath(out_file_path): - if move: - shutil.move(file_path, out_file_path) - else: - shutil.copy(file_path, out_file_path) - - return out_file_path - - -def _RunPesq(executable_path, - reference_file, - degraded_file, - sample_rate_hz=16000): - directory = os.path.dirname(reference_file) - assert os.path.dirname(degraded_file) == directory - - # Analyze audio. - command = [ - executable_path, - '+%d' % sample_rate_hz, - os.path.basename(reference_file), - os.path.basename(degraded_file) - ] - # Need to provide paths in the current directory due to a bug in PESQ: - # On Mac, for some 'path/to/file.wav', if 'file.wav' is longer than - # 'path/to', PESQ crashes. - out = subprocess.check_output(_LogCommand(command), - cwd=directory, - universal_newlines=True, - stderr=subprocess.STDOUT) - - # Find the scores in stdout of PESQ. - match = re.search( - r'Prediction \(Raw MOS, MOS-LQO\):\s+=\s+([\d.]+)\s+([\d.]+)', out) - if match: - raw_mos, _ = match.groups() - return {'pesq_mos': (raw_mos, 'unitless')} - logging.error('PESQ: %s', out.splitlines()[-1]) - return {} - - -def _RunPolqa(executable_path, reference_file, degraded_file): - # Analyze audio. - command = [ - executable_path, '-q', '-LC', 'NB', '-Ref', reference_file, '-Test', - degraded_file - ] - process = subprocess.Popen(_LogCommand(command), - universal_newlines=True, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - out, err = process.communicate() - - # Find the scores in stdout of POLQA. - match = re.search(r'\bMOS-LQO:\s+([\d.]+)', out) - - if process.returncode != 0 or not match: - if process.returncode == 2: - logging.warning('%s (2)', err.strip()) - logging.warning('POLQA license error, skipping test.') - else: - logging.error('%s (%d)', err.strip(), process.returncode) - return {} - - mos_lqo, = match.groups() - return {'polqa_mos_lqo': (mos_lqo, 'unitless')} - - -def _MergeInPerfResultsFromCcTests(histograms, run_perf_results_file): - from tracing.value import histogram_set - - cc_histograms = histogram_set.HistogramSet() - with open(run_perf_results_file, 'rb') as f: - contents = f.read() - if not contents: - return - - cc_histograms.ImportProto(contents) - - histograms.Merge(cc_histograms) - - -Analyzer = collections.namedtuple( - 'Analyzer', ['name', 'func', 'executable', 'sample_rate_hz']) - - -def _ConfigurePythonPath(args): - script_dir = os.path.dirname(os.path.realpath(__file__)) - checkout_root = os.path.abspath(os.path.join(script_dir, os.pardir, - os.pardir)) - - # TODO(https://crbug.com/1029452): Use a copy rule and add these from the - # out dir like for the third_party/protobuf code. - sys.path.insert( - 0, os.path.join(checkout_root, 'third_party', 'catapult', 'tracing')) - - # The low_bandwidth_audio_perf_test gn rule will build the protobuf stub - # for python, so put it in the path for this script before we attempt to - # import it. - histogram_proto_path = os.path.join(os.path.abspath(args.build_dir), - 'pyproto', 'tracing', 'tracing', 'proto') - sys.path.insert(0, histogram_proto_path) - proto_stub_path = os.path.join(os.path.abspath(args.build_dir), 'pyproto') - sys.path.insert(0, proto_stub_path) - - # Fail early in case the proto hasn't been built. - try: - #pylint: disable=unused-import - import histogram_pb2 - except ImportError as e: - raise ImportError('Could not import histogram_pb2. You need to build the ' - 'low_bandwidth_audio_perf_test target before invoking ' - 'this script. Expected to find ' - 'histogram_pb2.py in %s.' % histogram_proto_path) from e - - -def main(): - logging.basicConfig(format='%(asctime)s %(levelname)-8s %(message)s', - level=logging.INFO, - datefmt='%Y-%m-%d %H:%M:%S') - logging.info('Invoked with %s', str(sys.argv)) - - args, extra_test_args = _ParseArgs() - - _ConfigurePythonPath(args) - - # Import catapult modules here after configuring the pythonpath. - from tracing.value import histogram_set - from tracing.value.diagnostics import reserved_infos - from tracing.value.diagnostics import generic_set - - pesq_path, polqa_path = _GetPathToTools() - if pesq_path is None: - return 1 - - out_dir = os.path.join(args.build_dir, '..') - if args.android: - test_command = [ - os.path.join(args.build_dir, 'bin', 'run_low_bandwidth_audio_test'), - '-v', '--num-retries', args.num_retries - ] - else: - test_command = [os.path.join(args.build_dir, 'low_bandwidth_audio_test')] - - analyzers = [Analyzer('pesq', _RunPesq, pesq_path, 16000)] - # Check if POLQA can run at all, or skip the 48 kHz tests entirely. - example_path = os.path.join(SRC_DIR, 'resources', 'voice_engine', - 'audio_tiny48.wav') - if polqa_path and _RunPolqa(polqa_path, example_path, example_path): - analyzers.append(Analyzer('polqa', _RunPolqa, polqa_path, 48000)) - - histograms = histogram_set.HistogramSet() - for analyzer in analyzers: - # Start the test executable that produces audio files. - test_process = subprocess.Popen(_LogCommand(test_command + [ - '--sample_rate_hz=%d' % analyzer.sample_rate_hz, - '--test_case_prefix=%s' % analyzer.name, - ] + extra_test_args), - universal_newlines=True, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - perf_results_file = None - try: - lines = iter(test_process.stdout.readline, '') - for result in ExtractTestRuns(lines, echo=True): - (android_device, test_name, reference_file, degraded_file, - perf_results_file) = result - - adb_prefix = (args.adb_path, ) - if android_device: - adb_prefix += ('-s', android_device) - - reference_file = _GetFile(reference_file, - out_dir, - android=args.android, - adb_prefix=adb_prefix) - degraded_file = _GetFile(degraded_file, - out_dir, - move=True, - android=args.android, - adb_prefix=adb_prefix) - - analyzer_results = analyzer.func(analyzer.executable, reference_file, - degraded_file) - for metric, (value, units) in list(analyzer_results.items()): - hist = histograms.CreateHistogram(metric, units, [value]) - user_story = generic_set.GenericSet([test_name]) - hist.diagnostics[reserved_infos.STORIES.name] = user_story - - # Output human readable results. - print('RESULT %s: %s= %s %s' % (metric, test_name, value, units)) - - if args.remove: - os.remove(reference_file) - os.remove(degraded_file) - finally: - test_process.terminate() - if perf_results_file: - perf_results_file = _GetFile(perf_results_file, - out_dir, - move=True, - android=args.android, - adb_prefix=adb_prefix) - _MergeInPerfResultsFromCcTests(histograms, perf_results_file) - if args.remove: - os.remove(perf_results_file) - - if args.isolated_script_test_perf_output: - with open(args.isolated_script_test_perf_output, 'wb') as f: - f.write(histograms.AsProto().SerializeToString()) - - if args.isolated_script_test_output: - with open(args.isolated_script_test_output, 'w') as f: - json.dump({"version": 3}, f) - - return test_process.wait() - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/audio/test/low_bandwidth_audio_test_flags.cc b/audio/test/low_bandwidth_audio_test_flags.cc deleted file mode 100644 index 9d93790d3d..0000000000 --- a/audio/test/low_bandwidth_audio_test_flags.cc +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2019 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ -// #ifndef AUDIO_TEST_LOW_BANDWIDTH_AUDIO_TEST_FLAGS_H_ -// #define AUDIO_TEST_LOW_BANDWIDTH_AUDIO_TEST_FLAGS_H_ - -#include "absl/flags/flag.h" - -ABSL_FLAG(int, - sample_rate_hz, - 16000, - "Sample rate (Hz) of the produced audio files."); - -ABSL_FLAG(bool, - quick, - false, - "Don't do the full audio recording. " - "Used to quickly check that the test runs without crashing."); - -ABSL_FLAG(std::string, test_case_prefix, "", "Test case prefix."); - -// #endif // AUDIO_TEST_LOW_BANDWIDTH_AUDIO_TEST_FLAGS_H_ diff --git a/audio/test/pc_low_bandwidth_audio_test.cc b/audio/test/pc_low_bandwidth_audio_test.cc deleted file mode 100644 index 083aedf76e..0000000000 --- a/audio/test/pc_low_bandwidth_audio_test.cc +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (c) 2019 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include - -#include "absl/flags/declare.h" -#include "absl/flags/flag.h" -#include "absl/strings/string_view.h" -#include "api/test/create_network_emulation_manager.h" -#include "api/test/create_peerconnection_quality_test_fixture.h" -#include "api/test/metrics/chrome_perf_dashboard_metrics_exporter.h" -#include "api/test/metrics/global_metrics_logger_and_exporter.h" -#include "api/test/metrics/metrics_exporter.h" -#include "api/test/metrics/stdout_metrics_exporter.h" -#include "api/test/network_emulation_manager.h" -#include "api/test/pclf/media_configuration.h" -#include "api/test/pclf/media_quality_test_params.h" -#include "api/test/pclf/peer_configurer.h" -#include "api/test/peerconnection_quality_test_fixture.h" -#include "api/test/simulated_network.h" -#include "api/test/time_controller.h" -#include "call/simulated_network.h" -#include "test/gtest.h" -#include "test/pc/e2e/network_quality_metrics_reporter.h" -#include "test/testsupport/file_utils.h" - -ABSL_DECLARE_FLAG(std::string, test_case_prefix); -ABSL_DECLARE_FLAG(int, sample_rate_hz); -ABSL_DECLARE_FLAG(bool, quick); - -namespace webrtc { -namespace test { - -using ::webrtc::webrtc_pc_e2e::AudioConfig; -using ::webrtc::webrtc_pc_e2e::PeerConfigurer; -using ::webrtc::webrtc_pc_e2e::RunParams; - -namespace { - -constexpr int kTestDurationMs = 5400; -constexpr int kQuickTestDurationMs = 100; - -std::string GetMetricTestCaseName() { - const ::testing::TestInfo* const test_info = - ::testing::UnitTest::GetInstance()->current_test_info(); - std::string test_case_prefix(absl::GetFlag(FLAGS_test_case_prefix)); - if (test_case_prefix.empty()) { - return test_info->name(); - } - return test_case_prefix + "_" + test_info->name(); -} - -std::unique_ptr -CreateTestFixture(absl::string_view test_case_name, - TimeController& time_controller, - std::pair network_links, - rtc::FunctionView alice_configurer, - rtc::FunctionView bob_configurer) { - auto fixture = webrtc_pc_e2e::CreatePeerConnectionE2EQualityTestFixture( - std::string(test_case_name), time_controller, - /*audio_quality_analyzer=*/nullptr, - /*video_quality_analyzer=*/nullptr); - auto alice = std::make_unique( - network_links.first->network_dependencies()); - auto bob = std::make_unique( - network_links.second->network_dependencies()); - alice_configurer(alice.get()); - bob_configurer(bob.get()); - fixture->AddPeer(std::move(alice)); - fixture->AddPeer(std::move(bob)); - fixture->AddQualityMetricsReporter( - std::make_unique( - network_links.first, network_links.second, - test::GetGlobalMetricsLogger())); - return fixture; -} - -std::string FileSampleRateSuffix() { - return std::to_string(absl::GetFlag(FLAGS_sample_rate_hz) / 1000); -} - -std::string AudioInputFile() { - return test::ResourcePath("voice_engine/audio_tiny" + FileSampleRateSuffix(), - "wav"); -} - -std::string AudioOutputFile() { - const ::testing::TestInfo* const test_info = - ::testing::UnitTest::GetInstance()->current_test_info(); - return webrtc::test::OutputPath() + "PCLowBandwidth_" + test_info->name() + - "_" + FileSampleRateSuffix() + ".wav"; -} - -std::string PerfResultsOutputFile() { - return webrtc::test::OutputPath() + "PCLowBandwidth_perf_" + - FileSampleRateSuffix() + ".pb"; -} - -void LogTestResults() { - std::string perf_results_output_file = PerfResultsOutputFile(); - std::vector> exporters; - exporters.push_back(std::make_unique()); - exporters.push_back(std::make_unique( - perf_results_output_file)); - EXPECT_TRUE( - ExportPerfMetric(*GetGlobalMetricsLogger(), std::move(exporters))); - - const ::testing::TestInfo* const test_info = - ::testing::UnitTest::GetInstance()->current_test_info(); - - // Output information about the input and output audio files so that further - // processing can be done by an external process. - printf("TEST %s %s %s %s\n", test_info->name(), AudioInputFile().c_str(), - AudioOutputFile().c_str(), perf_results_output_file.c_str()); -} - -} // namespace - -TEST(PCLowBandwidthAudioTest, PCGoodNetworkHighBitrate) { - std::unique_ptr network_emulation_manager = - CreateNetworkEmulationManager(); - auto fixture = CreateTestFixture( - GetMetricTestCaseName(), *network_emulation_manager->time_controller(), - network_emulation_manager->CreateEndpointPairWithTwoWayRoutes( - BuiltInNetworkBehaviorConfig()), - [](PeerConfigurer* alice) { - AudioConfig audio; - audio.stream_label = "alice-audio"; - audio.input_file_name = AudioInputFile(); - audio.output_dump_file_name = AudioOutputFile(); - audio.sampling_frequency_in_hz = absl::GetFlag(FLAGS_sample_rate_hz); - alice->SetAudioConfig(std::move(audio)); - }, - [](PeerConfigurer* bob) {}); - fixture->Run(RunParams(TimeDelta::Millis( - absl::GetFlag(FLAGS_quick) ? kQuickTestDurationMs : kTestDurationMs))); - LogTestResults(); -} - -TEST(PCLowBandwidthAudioTest, PC40kbpsNetwork) { - std::unique_ptr network_emulation_manager = - CreateNetworkEmulationManager(); - BuiltInNetworkBehaviorConfig config; - config.link_capacity_kbps = 40; - config.queue_length_packets = 1500; - config.queue_delay_ms = 400; - config.loss_percent = 1; - auto fixture = CreateTestFixture( - GetMetricTestCaseName(), *network_emulation_manager->time_controller(), - network_emulation_manager->CreateEndpointPairWithTwoWayRoutes(config), - [](PeerConfigurer* alice) { - AudioConfig audio; - audio.stream_label = "alice-audio"; - audio.input_file_name = AudioInputFile(); - audio.output_dump_file_name = AudioOutputFile(); - audio.sampling_frequency_in_hz = absl::GetFlag(FLAGS_sample_rate_hz); - alice->SetAudioConfig(std::move(audio)); - }, - [](PeerConfigurer* bob) {}); - fixture->Run(RunParams(TimeDelta::Millis( - absl::GetFlag(FLAGS_quick) ? kQuickTestDurationMs : kTestDurationMs))); - LogTestResults(); -} - -} // namespace test -} // namespace webrtc diff --git a/audio/test/unittests/low_bandwidth_audio_test_test.py b/audio/test/unittests/low_bandwidth_audio_test_test.py deleted file mode 100755 index be72fcbfdd..0000000000 --- a/audio/test/unittests/low_bandwidth_audio_test_test.py +++ /dev/null @@ -1,239 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. -# -# Use of this source code is governed by a BSD-style license -# that can be found in the LICENSE file in the root of the source -# tree. An additional intellectual property rights grant can be found -# in the file PATENTS. All contributing project authors may -# be found in the AUTHORS file in the root of the source tree. - -from __future__ import absolute_import -import os -import unittest -import sys - -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -PARENT_DIR = os.path.join(SCRIPT_DIR, os.pardir) -sys.path.append(PARENT_DIR) -import low_bandwidth_audio_test - - -class TestExtractTestRuns(unittest.TestCase): - def _TestLog(self, log, *expected): - self.assertEqual( - tuple(low_bandwidth_audio_test.ExtractTestRuns(log.splitlines(True))), - expected) - - def testLinux(self): - self._TestLog( - LINUX_LOG, - (None, 'GoodNetworkHighBitrate', - '/webrtc/src/resources/voice_engine/audio_tiny16.wav', - '/webrtc/src/out/LowBandwidth_GoodNetworkHighBitrate.wav', None), - (None, 'Mobile2GNetwork', - '/webrtc/src/resources/voice_engine/audio_tiny16.wav', - '/webrtc/src/out/LowBandwidth_Mobile2GNetwork.wav', None), - (None, 'PCGoodNetworkHighBitrate', - '/webrtc/src/resources/voice_engine/audio_tiny16.wav', - '/webrtc/src/out/PCLowBandwidth_PCGoodNetworkHighBitrate.wav', - '/webrtc/src/out/PCLowBandwidth_perf_48.json'), - (None, 'PCMobile2GNetwork', - '/webrtc/src/resources/voice_engine/audio_tiny16.wav', - '/webrtc/src/out/PCLowBandwidth_PCMobile2GNetwork.wav', - '/webrtc/src/out/PCLowBandwidth_perf_48.json')) - - def testAndroid(self): - self._TestLog( - ANDROID_LOG, - ('ddfa6149', 'Mobile2GNetwork', - '/sdcard/chromium_tests_root/resources/voice_engine/audio_tiny16.wav', - '/sdcard/chromium_tests_root/LowBandwidth_Mobile2GNetwork.wav', None), - ('TA99205CNO', 'GoodNetworkHighBitrate', - '/sdcard/chromium_tests_root/resources/voice_engine/audio_tiny16.wav', - '/sdcard/chromium_tests_root/LowBandwidth_GoodNetworkHighBitrate.wav', - None), - ('ddfa6149', 'PCMobile2GNetwork', - '/sdcard/chromium_tests_root/resources/voice_engine/audio_tiny16.wav', - '/sdcard/chromium_tests_root/PCLowBandwidth_PCMobile2GNetwork.wav', - '/sdcard/chromium_tests_root/PCLowBandwidth_perf_48.json'), - ('TA99205CNO', 'PCGoodNetworkHighBitrate', - '/sdcard/chromium_tests_root/resources/voice_engine/audio_tiny16.wav', - ('/sdcard/chromium_tests_root/' - 'PCLowBandwidth_PCGoodNetworkHighBitrate.wav'), - '/sdcard/chromium_tests_root/PCLowBandwidth_perf_48.json')) - - -LINUX_LOG = r'''\ -[==========] Running 2 tests from 1 test case. -[----------] Global test environment set-up. -[----------] 2 tests from LowBandwidthAudioTest -[ RUN ] LowBandwidthAudioTest.GoodNetworkHighBitrate -TEST GoodNetworkHighBitrate /webrtc/src/resources/voice_engine/audio_tiny16.wav /webrtc/src/out/LowBandwidth_GoodNetworkHighBitrate.wav -[ OK ] LowBandwidthAudioTest.GoodNetworkHighBitrate (5932 ms) -[ RUN ] LowBandwidthAudioTest.Mobile2GNetwork -TEST Mobile2GNetwork /webrtc/src/resources/voice_engine/audio_tiny16.wav /webrtc/src/out/LowBandwidth_Mobile2GNetwork.wav -[ OK ] LowBandwidthAudioTest.Mobile2GNetwork (6333 ms) -[----------] 2 tests from LowBandwidthAudioTest (12265 ms total) -[----------] 2 tests from PCLowBandwidthAudioTest -[ RUN ] PCLowBandwidthAudioTest.PCGoodNetworkHighBitrate -TEST PCGoodNetworkHighBitrate /webrtc/src/resources/voice_engine/audio_tiny16.wav /webrtc/src/out/PCLowBandwidth_PCGoodNetworkHighBitrate.wav /webrtc/src/out/PCLowBandwidth_perf_48.json -[ OK ] PCLowBandwidthAudioTest.PCGoodNetworkHighBitrate (5932 ms) -[ RUN ] PCLowBandwidthAudioTest.PCMobile2GNetwork -TEST PCMobile2GNetwork /webrtc/src/resources/voice_engine/audio_tiny16.wav /webrtc/src/out/PCLowBandwidth_PCMobile2GNetwork.wav /webrtc/src/out/PCLowBandwidth_perf_48.json -[ OK ] PCLowBandwidthAudioTest.PCMobile2GNetwork (6333 ms) -[----------] 2 tests from PCLowBandwidthAudioTest (12265 ms total) - -[----------] Global test environment tear-down -[==========] 2 tests from 1 test case ran. (12266 ms total) -[ PASSED ] 2 tests. -''' - -ANDROID_LOG = r'''\ -I 0.000s Main command: /webrtc/src/build/android/test_runner.py gtest --suite low_bandwidth_audio_test --output-directory /webrtc/src/out/debug-android --runtime-deps-path /webrtc/src/out/debug-android/gen.runtime/webrtc/audio/low_bandwidth_audio_test__test_runner_script.runtime_deps -v -I 0.007s Main [host]> /webrtc/src/third_party/android_sdk/public/build-tools/24.0.2/aapt dump xmltree /webrtc/src/out/debug-android/low_bandwidth_audio_test_apk/low_bandwidth_audio_test-debug.apk AndroidManifest.xml -I 0.028s TimeoutThread-1-for-MainThread [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb devices -I 0.062s TimeoutThread-1-for-prepare_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO wait-for-device -I 0.063s TimeoutThread-1-for-prepare_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 wait-for-device -I 0.102s TimeoutThread-1-for-prepare_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( ( c=/data/local/tmp/cache_token;echo $EXTERNAL_STORAGE;cat $c 2>/dev/null||echo;echo "77611072-160c-11d7-9362-705b0f464195">$c &&getprop )>/data/local/tmp/temp_file-5ea34389e3f92 );echo %$?' -I 0.105s TimeoutThread-1-for-prepare_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( ( c=/data/local/tmp/cache_token;echo $EXTERNAL_STORAGE;cat $c 2>/dev/null||echo;echo "77618afc-160c-11d7-bda4-705b0f464195">$c &&getprop )>/data/local/tmp/temp_file-b995cef6e0e3d );echo %$?' -I 0.204s TimeoutThread-1-for-prepare_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 pull /data/local/tmp/temp_file-b995cef6e0e3d /tmp/tmpieAgDj/tmp_ReadFileWithPull -I 0.285s TimeoutThread-1-for-prepare_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( test -d /storage/emulated/legacy );echo %$?' -I 0.285s TimeoutThread-1-for-delete_temporary_file(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell 'rm -f /data/local/tmp/temp_file-b995cef6e0e3d' -I 0.302s TimeoutThread-1-for-prepare_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO pull /data/local/tmp/temp_file-5ea34389e3f92 /tmp/tmpvlyG3I/tmp_ReadFileWithPull -I 0.352s TimeoutThread-1-for-prepare_device(ddfa6149) condition 'sd_card_ready' met (0.3s) -I 0.353s TimeoutThread-1-for-prepare_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( pm path android );echo %$?' -I 0.369s TimeoutThread-1-for-prepare_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( test -d /sdcard );echo %$?' -I 0.370s TimeoutThread-1-for-delete_temporary_file(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell 'rm -f /data/local/tmp/temp_file-5ea34389e3f92' -I 0.434s TimeoutThread-1-for-prepare_device(TA99205CNO) condition 'sd_card_ready' met (0.4s) -I 0.434s TimeoutThread-1-for-prepare_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( pm path android );echo %$?' -I 1.067s TimeoutThread-1-for-prepare_device(ddfa6149) condition 'pm_ready' met (1.0s) -I 1.067s TimeoutThread-1-for-prepare_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( getprop sys.boot_completed );echo %$?' -I 1.115s TimeoutThread-1-for-prepare_device(ddfa6149) condition 'boot_completed' met (1.1s) -I 1.181s TimeoutThread-1-for-prepare_device(TA99205CNO) condition 'pm_ready' met (1.1s) -I 1.181s TimeoutThread-1-for-prepare_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( getprop sys.boot_completed );echo %$?' -I 1.242s TimeoutThread-1-for-prepare_device(TA99205CNO) condition 'boot_completed' met (1.2s) -I 1.268s TimeoutThread-1-for-individual_device_set_up(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( pm path org.chromium.native_test );echo %$?' -I 1.269s TimeoutThread-1-for-individual_device_set_up(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( pm path org.chromium.native_test );echo %$?' -I 2.008s calculate_device_checksums [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( a=/data/local/tmp/md5sum/md5sum_bin;! [[ $(ls -l $a) = *1225256* ]]&&exit 2;export LD_LIBRARY_PATH=/data/local/tmp/md5sum;$a /data/app/org.chromium.native_test-2/base.apk;: );echo %$?' -I 2.008s calculate_host_checksums [host]> /webrtc/src/out/debug-android/md5sum_bin_host /webrtc/src/out/debug-android/low_bandwidth_audio_test_apk/low_bandwidth_audio_test-debug.apk -I 2.019s calculate_device_checksums [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( a=/data/local/tmp/md5sum/md5sum_bin;! [[ $(ls -l $a) = *1225256* ]]&&exit 2;export LD_LIBRARY_PATH=/data/local/tmp/md5sum;$a /data/app/org.chromium.native_test-1/base.apk;: );echo %$?' -I 2.020s calculate_host_checksums [host]> /webrtc/src/out/debug-android/md5sum_bin_host /webrtc/src/out/debug-android/low_bandwidth_audio_test_apk/low_bandwidth_audio_test-debug.apk -I 2.172s TimeoutThread-1-for-individual_device_set_up(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( p=org.chromium.native_test;if [[ "$(ps)" = *$p* ]]; then am force-stop $p; fi );echo %$?' -I 2.183s TimeoutThread-1-for-individual_device_set_up(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( p=org.chromium.native_test;if [[ "$(ps)" = *$p* ]]; then am force-stop $p; fi );echo %$?' -I 2.290s calculate_device_checksums [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( a=/data/local/tmp/md5sum/md5sum_bin;! [[ $(ls -l $a) = *1225256* ]]&&exit 2;export LD_LIBRARY_PATH=/data/local/tmp/md5sum;$a /sdcard/chromium_tests_root/resources/voice_engine/audio_tiny16.wav;: );echo %$?' -I 2.291s calculate_host_checksums [host]> /webrtc/src/out/debug-android/md5sum_bin_host /webrtc/src/resources/voice_engine/audio_tiny16.wav -I 2.373s calculate_device_checksums [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( a=/data/local/tmp/md5sum/md5sum_bin;! [[ $(ls -l $a) = *1225256* ]]&&exit 2;export LD_LIBRARY_PATH=/data/local/tmp/md5sum;$a /storage/emulated/legacy/chromium_tests_root/resources/voice_engine/audio_tiny16.wav;: );echo %$?' -I 2.374s calculate_host_checksums [host]> /webrtc/src/out/debug-android/md5sum_bin_host /webrtc/src/resources/voice_engine/audio_tiny16.wav -I 2.390s calculate_device_checksums [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( a=/data/local/tmp/md5sum/md5sum_bin;! [[ $(ls -l $a) = *1225256* ]]&&exit 2;export LD_LIBRARY_PATH=/data/local/tmp/md5sum;$a /sdcard/chromium_tests_root/icudtl.dat;: );echo %$?' -I 2.390s calculate_host_checksums [host]> /webrtc/src/out/debug-android/md5sum_bin_host /webrtc/src/out/debug-android/icudtl.dat -I 2.472s calculate_device_checksums [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( a=/data/local/tmp/md5sum/md5sum_bin;! [[ $(ls -l $a) = *1225256* ]]&&exit 2;export LD_LIBRARY_PATH=/data/local/tmp/md5sum;$a /storage/emulated/legacy/chromium_tests_root/icudtl.dat;: );echo %$?' -I 2.472s calculate_host_checksums [host]> /webrtc/src/out/debug-android/md5sum_bin_host /webrtc/src/out/debug-android/icudtl.dat -I 2.675s TimeoutThread-1-for-list_tests(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( ( p=org.chromium.native_test;am instrument -w -e "$p".NativeTestInstrumentationTestRunner.ShardNanoTimeout 30000000000 -e "$p".NativeTestInstrumentationTestRunner.NativeTestActivity "$p".NativeUnitTestActivity -e "$p".NativeTestInstrumentationTestRunner.StdoutFile /sdcard/temp_file-6407c967884af.gtest_out -e "$p".NativeTest.CommandLineFlags --gtest_list_tests "$p"/"$p".NativeTestInstrumentationTestRunner )>/data/local/tmp/temp_file-d21ebcd0977d9 );echo %$?' -I 2.675s TimeoutThread-1-for-list_tests(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( ( p=org.chromium.native_test;am instrument -w -e "$p".NativeTestInstrumentationTestRunner.ShardNanoTimeout 30000000000 -e "$p".NativeTestInstrumentationTestRunner.NativeTestActivity "$p".NativeUnitTestActivity -e "$p".NativeTestInstrumentationTestRunner.StdoutFile /storage/emulated/legacy/temp_file-fa09560c3259.gtest_out -e "$p".NativeTest.CommandLineFlags --gtest_list_tests "$p"/"$p".NativeTestInstrumentationTestRunner )>/data/local/tmp/temp_file-95ad995999939 );echo %$?' -I 3.739s TimeoutThread-1-for-list_tests(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 pull /data/local/tmp/temp_file-95ad995999939 /tmp/tmpSnnF6Y/tmp_ReadFileWithPull -I 3.807s TimeoutThread-1-for-delete_temporary_file(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell 'rm -f /data/local/tmp/temp_file-95ad995999939' -I 3.812s TimeoutThread-1-for-list_tests(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( TZ=utc ls -a -l /storage/emulated/legacy/ );echo %$?' -I 3.866s TimeoutThread-1-for-list_tests(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( cat /storage/emulated/legacy/temp_file-fa09560c3259.gtest_out );echo %$?' -I 3.912s TimeoutThread-1-for-delete_temporary_file(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell 'rm -f /storage/emulated/legacy/temp_file-fa09560c3259.gtest_out' -I 4.256s TimeoutThread-1-for-list_tests(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO pull /data/local/tmp/temp_file-d21ebcd0977d9 /tmp/tmpokPF5b/tmp_ReadFileWithPull -I 4.324s TimeoutThread-1-for-delete_temporary_file(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell 'rm -f /data/local/tmp/temp_file-d21ebcd0977d9' -I 4.342s TimeoutThread-1-for-list_tests(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( TZ=utc ls -a -l /sdcard/ );echo %$?' -I 4.432s TimeoutThread-1-for-list_tests(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( cat /sdcard/temp_file-6407c967884af.gtest_out );echo %$?' -I 4.476s TimeoutThread-1-for-delete_temporary_file(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell 'rm -f /sdcard/temp_file-6407c967884af.gtest_out' -I 4.483s Main Using external sharding settings. This is shard 0/1 -I 4.483s Main STARTING TRY #1/3 -I 4.484s Main Will run 2 tests on 2 devices: TA99205CNO, ddfa6149 -I 4.486s TimeoutThread-1-for-run_tests_on_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( pm dump org.chromium.native_test | grep dataDir=; echo "PIPESTATUS: ${PIPESTATUS[@]}" );echo %$?' -I 4.486s TimeoutThread-1-for-run_tests_on_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( pm dump org.chromium.native_test | grep dataDir=; echo "PIPESTATUS: ${PIPESTATUS[@]}" );echo %$?' -I 5.551s run_tests_on_device(TA99205CNO) flags: -I 5.552s run_tests_on_device(ddfa6149) flags: -I 5.554s TimeoutThread-1-for-run_tests_on_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( ( p=org.chromium.native_test;am instrument -w -e "$p".NativeTestInstrumentationTestRunner.ShardNanoTimeout 120000000000 -e "$p".NativeTestInstrumentationTestRunner.NativeTestActivity "$p".NativeUnitTestActivity -e "$p".NativeTestInstrumentationTestRunner.Test LowBandwidthAudioTest.GoodNetworkHighBitrate -e "$p".NativeTestInstrumentationTestRunner.StdoutFile /sdcard/temp_file-ffe7b76691cb7.gtest_out "$p"/"$p".NativeTestInstrumentationTestRunner )>/data/local/tmp/temp_file-c9d83b3078ab1 );echo %$?' -I 5.556s TimeoutThread-1-for-run_tests_on_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( ( p=org.chromium.native_test;am instrument -w -e "$p".NativeTestInstrumentationTestRunner.ShardNanoTimeout 120000000000 -e "$p".NativeTestInstrumentationTestRunner.NativeTestActivity "$p".NativeUnitTestActivity -e "$p".NativeTestInstrumentationTestRunner.Test LowBandwidthAudioTest.Mobile2GNetwork -e "$p".NativeTestInstrumentationTestRunner.StdoutFile /storage/emulated/legacy/temp_file-f0ceb1a05ea8.gtest_out "$p"/"$p".NativeTestInstrumentationTestRunner )>/data/local/tmp/temp_file-245ef307a5b32 );echo %$?' -I 12.956s TimeoutThread-1-for-run_tests_on_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO pull /data/local/tmp/temp_file-c9d83b3078ab1 /tmp/tmpRQhTcM/tmp_ReadFileWithPull -I 13.024s TimeoutThread-1-for-delete_temporary_file(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell 'rm -f /data/local/tmp/temp_file-c9d83b3078ab1' -I 13.032s TimeoutThread-1-for-run_tests_on_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( TZ=utc ls -a -l /sdcard/ );echo %$?' -I 13.114s TimeoutThread-1-for-run_tests_on_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( cat /sdcard/temp_file-ffe7b76691cb7.gtest_out );echo %$?' -I 13.154s TimeoutThread-1-for-run_tests_on_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 pull /data/local/tmp/temp_file-245ef307a5b32 /tmp/tmpfQ4J96/tmp_ReadFileWithPull -I 13.167s TimeoutThread-1-for-delete_temporary_file(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell 'rm -f /sdcard/temp_file-ffe7b76691cb7.gtest_out' -I 13.169s TimeoutThread-1-for-delete_temporary_file(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell 'rm -f /data/user/0/org.chromium.native_test/temp_file-f07c4808dbf8f.xml' -I 13.170s TimeoutThread-1-for-run_tests_on_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( pm clear org.chromium.native_test );echo %$?' -I 13.234s TimeoutThread-1-for-delete_temporary_file(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell 'rm -f /data/local/tmp/temp_file-245ef307a5b32' -I 13.239s TimeoutThread-1-for-run_tests_on_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( TZ=utc ls -a -l /storage/emulated/legacy/ );echo %$?' -I 13.291s TimeoutThread-1-for-run_tests_on_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( cat /storage/emulated/legacy/temp_file-f0ceb1a05ea8.gtest_out );echo %$?' -I 13.341s TimeoutThread-1-for-delete_temporary_file(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell 'rm -f /storage/emulated/legacy/temp_file-f0ceb1a05ea8.gtest_out' -I 13.343s TimeoutThread-1-for-delete_temporary_file(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell 'rm -f /data/data/org.chromium.native_test/temp_file-5649bb01682da.xml' -I 13.346s TimeoutThread-1-for-run_tests_on_device(ddfa6149) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s ddfa6149 shell '( pm clear org.chromium.native_test );echo %$?' -I 13.971s TimeoutThread-1-for-run_tests_on_device(TA99205CNO) Setting permissions for org.chromium.native_test. -I 13.971s TimeoutThread-1-for-run_tests_on_device(TA99205CNO) [host]> /webrtc/src/third_party/android_sdk/public/platform-tools/adb -s TA99205CNO shell '( pm grant org.chromium.native_test android.permission.CAMERA&&pm grant org.chromium.native_test android.permission.RECORD_AUDIO&&pm grant org.chromium.native_test android.permission.WRITE_EXTERNAL_STORAGE&&pm grant org.chromium.native_test android.permission.READ_EXTERNAL_STORAGE );echo %$?' -I 14.078s run_tests_on_device(ddfa6149) >>ScopedMainEntryLogger -I 14.078s run_tests_on_device(ddfa6149) Note: Google Test filter = LowBandwidthAudioTest.Mobile2GNetwork -I 14.078s run_tests_on_device(ddfa6149) [==========] Running 1 test from 1 test case. -I 14.078s run_tests_on_device(ddfa6149) [----------] Global test environment set-up. -I 14.078s run_tests_on_device(ddfa6149) [----------] 1 test from LowBandwidthAudioTest -I 14.078s run_tests_on_device(ddfa6149) [ RUN ] LowBandwidthAudioTest.Mobile2GNetwork -I 14.078s run_tests_on_device(ddfa6149) TEST Mobile2GNetwork /sdcard/chromium_tests_root/resources/voice_engine/audio_tiny16.wav /sdcard/chromium_tests_root/LowBandwidth_Mobile2GNetwork.wav -I 14.078s run_tests_on_device(ddfa6149) [ OK ] LowBandwidthAudioTest.Mobile2GNetwork (6438 ms) -I 14.078s run_tests_on_device(ddfa6149) [----------] 1 test from LowBandwidthAudioTest (6438 ms total) -I 14.078s run_tests_on_device(ddfa6149) -I 14.078s run_tests_on_device(ddfa6149) [----------] Global test environment tear-down -I 14.079s run_tests_on_device(ddfa6149) [==========] 1 test from 1 test case ran. (6438 ms total) -I 14.079s run_tests_on_device(ddfa6149) [ PASSED ] 1 test. -I 14.079s run_tests_on_device(ddfa6149) <>ScopedMainEntryLogger -I 16.576s run_tests_on_device(TA99205CNO) Note: Google Test filter = LowBandwidthAudioTest.GoodNetworkHighBitrate -I 16.576s run_tests_on_device(TA99205CNO) [==========] Running 1 test from 1 test case. -I 16.576s run_tests_on_device(TA99205CNO) [----------] Global test environment set-up. -I 16.576s run_tests_on_device(TA99205CNO) [----------] 1 test from LowBandwidthAudioTest -I 16.576s run_tests_on_device(TA99205CNO) [ RUN ] LowBandwidthAudioTest.GoodNetworkHighBitrate -I 16.576s run_tests_on_device(TA99205CNO) TEST GoodNetworkHighBitrate /sdcard/chromium_tests_root/resources/voice_engine/audio_tiny16.wav /sdcard/chromium_tests_root/LowBandwidth_GoodNetworkHighBitrate.wav -I 16.576s run_tests_on_device(TA99205CNO) [ OK ] LowBandwidthAudioTest.GoodNetworkHighBitrate (5968 ms) -I 16.576s run_tests_on_device(TA99205CNO) [----------] 1 test from LowBandwidthAudioTest (5968 ms total) -I 16.576s run_tests_on_device(TA99205CNO) -I 16.576s run_tests_on_device(TA99205CNO) [----------] Global test environment tear-down -I 16.576s run_tests_on_device(TA99205CNO) [==========] 1 test from 1 test case ran. (5968 ms total) -I 16.577s run_tests_on_device(TA99205CNO) [ PASSED ] 1 test. -I 16.577s run_tests_on_device(TA99205CNO) <>ScopedMainEntryLogger -I 14.078s run_tests_on_device(ddfa6149) Note: Google Test filter = PCLowBandwidthAudioTest.PCMobile2GNetwork -I 14.078s run_tests_on_device(ddfa6149) [==========] Running 1 test from 1 test case. -I 14.078s run_tests_on_device(ddfa6149) [----------] Global test environment set-up. -I 14.078s run_tests_on_device(ddfa6149) [----------] 1 test from PCLowBandwidthAudioTest -I 14.078s run_tests_on_device(ddfa6149) [ RUN ] PCLowBandwidthAudioTest.PCMobile2GNetwork -I 14.078s run_tests_on_device(ddfa6149) TEST PCMobile2GNetwork /sdcard/chromium_tests_root/resources/voice_engine/audio_tiny16.wav /sdcard/chromium_tests_root/PCLowBandwidth_PCMobile2GNetwork.wav /sdcard/chromium_tests_root/PCLowBandwidth_perf_48.json -I 14.078s run_tests_on_device(ddfa6149) [ OK ] PCLowBandwidthAudioTest.PCMobile2GNetwork (6438 ms) -I 14.078s run_tests_on_device(ddfa6149) [----------] 1 test from PCLowBandwidthAudioTest (6438 ms total) -I 14.078s run_tests_on_device(ddfa6149) -I 14.078s run_tests_on_device(ddfa6149) [----------] Global test environment tear-down -I 14.079s run_tests_on_device(ddfa6149) [==========] 1 test from 1 test case ran. (6438 ms total) -I 14.079s run_tests_on_device(ddfa6149) [ PASSED ] 1 test. -I 14.079s run_tests_on_device(ddfa6149) <>ScopedMainEntryLogger -I 16.576s run_tests_on_device(TA99205CNO) Note: Google Test filter = PCLowBandwidthAudioTest.PCGoodNetworkHighBitrate -I 16.576s run_tests_on_device(TA99205CNO) [==========] Running 1 test from 1 test case. -I 16.576s run_tests_on_device(TA99205CNO) [----------] Global test environment set-up. -I 16.576s run_tests_on_device(TA99205CNO) [----------] 1 test from PCLowBandwidthAudioTest -I 16.576s run_tests_on_device(TA99205CNO) [ RUN ] PCLowBandwidthAudioTest.PCGoodNetworkHighBitrate -I 16.576s run_tests_on_device(TA99205CNO) TEST PCGoodNetworkHighBitrate /sdcard/chromium_tests_root/resources/voice_engine/audio_tiny16.wav /sdcard/chromium_tests_root/PCLowBandwidth_PCGoodNetworkHighBitrate.wav /sdcard/chromium_tests_root/PCLowBandwidth_perf_48.json -I 16.576s run_tests_on_device(TA99205CNO) [ OK ] PCLowBandwidthAudioTest.PCGoodNetworkHighBitrate (5968 ms) -I 16.576s run_tests_on_device(TA99205CNO) [----------] 1 test from PCLowBandwidthAudioTest (5968 ms total) -I 16.576s run_tests_on_device(TA99205CNO) -I 16.576s run_tests_on_device(TA99205CNO) [----------] Global test environment tear-down -I 16.576s run_tests_on_device(TA99205CNO) [==========] 1 test from 1 test case ran. (5968 ms total) -I 16.577s run_tests_on_device(TA99205CNO) [ PASSED ] 1 test. -I 16.577s run_tests_on_device(TA99205CNO) <