Use gtest_parallel for PipeWire tests.
This CL will also make PipeWire tests retried 3 times in case of failures.
Change-Id: I9c66351f7ee171e29266fe4b8dcd52ca282c8f6d
Bug: webrtc:14644
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/282820
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Owners-Override: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Jeremy Leconte <jleconte@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38595}
diff --git a/infra/specs/client.webrtc.json b/infra/specs/client.webrtc.json
index 5634073..93615be 100644
--- a/infra/specs/client.webrtc.json
+++ b/infra/specs/client.webrtc.json
@@ -3410,6 +3410,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
@@ -4709,6 +4730,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
@@ -5142,6 +5184,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
@@ -6359,32 +6422,6 @@
"test_id_prefix": "ninja://pc:peerconnection_unittests/"
},
{
- "args": [
- ".",
- "--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json"
- ],
- "isolate_name": "pipewire_shared_screencast_stream_test",
- "merge": {
- "args": [],
- "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
- },
- "name": "pipewire_shared_screencast_stream_test",
- "resultdb": {
- "result_file": "${ISOLATED_OUTDIR}/gtest_output.json",
- "result_format": "gtest_json"
- },
- "swarming": {
- "can_use_on_swarming_builders": true,
- "dimension_sets": [
- {
- "cpu": "x86-64",
- "os": "Ubuntu-18.04"
- }
- ]
- },
- "test_id_prefix": "ninja://modules/desktop_capture:pipewire_shared_screencast_stream_test/"
- },
- {
"isolate_name": "rtc_media_unittests",
"merge": {
"args": [],
@@ -6470,6 +6507,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
@@ -6819,32 +6877,6 @@
"test_id_prefix": "ninja://pc:peerconnection_unittests/"
},
{
- "args": [
- ".",
- "--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json"
- ],
- "isolate_name": "pipewire_shared_screencast_stream_test",
- "merge": {
- "args": [],
- "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
- },
- "name": "pipewire_shared_screencast_stream_test",
- "resultdb": {
- "result_file": "${ISOLATED_OUTDIR}/gtest_output.json",
- "result_format": "gtest_json"
- },
- "swarming": {
- "can_use_on_swarming_builders": true,
- "dimension_sets": [
- {
- "cpu": "x86-64",
- "os": "Ubuntu-18.04"
- }
- ]
- },
- "test_id_prefix": "ninja://modules/desktop_capture:pipewire_shared_screencast_stream_test/"
- },
- {
"isolate_name": "rtc_media_unittests",
"merge": {
"args": [],
@@ -6930,6 +6962,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
diff --git a/infra/specs/gn_isolate_map.pyl b/infra/specs/gn_isolate_map.pyl
index 598b15f..25ab4f2 100644
--- a/infra/specs/gn_isolate_map.pyl
+++ b/infra/specs/gn_isolate_map.pyl
@@ -80,13 +80,10 @@
"label": "//pc:peerconnection_unittests",
"type": "console_test_launcher",
},
- "pipewire_shared_screencast_stream_test": {
- "label":
- "//modules/desktop_capture:pipewire_shared_screencast_stream_test",
- "type":
- "script",
- "script":
- "//modules/desktop_capture/linux/wayland/test/shared_screencast_stream_test.py",
+ "shared_screencast_stream_test": {
+ "label": "//modules/desktop_capture:shared_screencast_stream_test",
+ "type": "console_test_launcher",
+ "use_pipewire": True,
},
"rtc_media_unittests": {
"label": "//media:rtc_media_unittests",
diff --git a/infra/specs/test_suites.pyl b/infra/specs/test_suites.pyl
index 6037ba6..88de021 100644
--- a/infra/specs/test_suites.pyl
+++ b/infra/specs/test_suites.pyl
@@ -184,10 +184,7 @@
'webrtc_nonparallel_tests': {},
},
'linux_desktop_specific_tests': {
- 'pipewire_shared_screencast_stream_test': {
- 'args': ['.'],
- 'mixins': ['resultdb-gtest-json-format'],
- },
+ 'shared_screencast_stream_test': {},
},
'more_configs_tests': {
'peerconnection_unittests': {
diff --git a/infra/specs/tryserver.webrtc.json b/infra/specs/tryserver.webrtc.json
index 4ed88ea..a5dc5ae 100644
--- a/infra/specs/tryserver.webrtc.json
+++ b/infra/specs/tryserver.webrtc.json
@@ -6093,6 +6093,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
@@ -6447,32 +6468,6 @@
"test_id_prefix": "ninja://pc:peerconnection_unittests/"
},
{
- "args": [
- ".",
- "--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json"
- ],
- "isolate_name": "pipewire_shared_screencast_stream_test",
- "merge": {
- "args": [],
- "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
- },
- "name": "pipewire_shared_screencast_stream_test",
- "resultdb": {
- "result_file": "${ISOLATED_OUTDIR}/gtest_output.json",
- "result_format": "gtest_json"
- },
- "swarming": {
- "can_use_on_swarming_builders": true,
- "dimension_sets": [
- {
- "cpu": "x86-64",
- "os": "Ubuntu-18.04"
- }
- ]
- },
- "test_id_prefix": "ninja://modules/desktop_capture:pipewire_shared_screencast_stream_test/"
- },
- {
"isolate_name": "rtc_media_unittests",
"merge": {
"args": [],
@@ -6558,6 +6553,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
@@ -6907,32 +6923,6 @@
"test_id_prefix": "ninja://pc:peerconnection_unittests/"
},
{
- "args": [
- ".",
- "--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json"
- ],
- "isolate_name": "pipewire_shared_screencast_stream_test",
- "merge": {
- "args": [],
- "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
- },
- "name": "pipewire_shared_screencast_stream_test",
- "resultdb": {
- "result_file": "${ISOLATED_OUTDIR}/gtest_output.json",
- "result_format": "gtest_json"
- },
- "swarming": {
- "can_use_on_swarming_builders": true,
- "dimension_sets": [
- {
- "cpu": "x86-64",
- "os": "Ubuntu-18.04"
- }
- ]
- },
- "test_id_prefix": "ninja://modules/desktop_capture:pipewire_shared_screencast_stream_test/"
- },
- {
"isolate_name": "rtc_media_unittests",
"merge": {
"args": [],
@@ -7018,6 +7008,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
@@ -7825,32 +7836,6 @@
"test_id_prefix": "ninja://pc:peerconnection_unittests/"
},
{
- "args": [
- ".",
- "--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json"
- ],
- "isolate_name": "pipewire_shared_screencast_stream_test",
- "merge": {
- "args": [],
- "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
- },
- "name": "pipewire_shared_screencast_stream_test",
- "resultdb": {
- "result_file": "${ISOLATED_OUTDIR}/gtest_output.json",
- "result_format": "gtest_json"
- },
- "swarming": {
- "can_use_on_swarming_builders": true,
- "dimension_sets": [
- {
- "cpu": "x86-64",
- "os": "Ubuntu-18.04"
- }
- ]
- },
- "test_id_prefix": "ninja://modules/desktop_capture:pipewire_shared_screencast_stream_test/"
- },
- {
"isolate_name": "rtc_media_unittests",
"merge": {
"args": [],
@@ -7936,6 +7921,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
@@ -8851,6 +8857,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
@@ -9284,6 +9311,27 @@
"test_id_prefix": "ninja://:rtc_unittests/"
},
{
+ "isolate_name": "shared_screencast_stream_test",
+ "merge": {
+ "args": [],
+ "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
+ },
+ "name": "shared_screencast_stream_test",
+ "resultdb": {
+ "result_format": "json"
+ },
+ "swarming": {
+ "can_use_on_swarming_builders": true,
+ "dimension_sets": [
+ {
+ "cpu": "x86-64",
+ "os": "Ubuntu-18.04"
+ }
+ ]
+ },
+ "test_id_prefix": "ninja://modules/desktop_capture:shared_screencast_stream_test/"
+ },
+ {
"isolate_name": "slow_peer_connection_unittests",
"merge": {
"args": [],
diff --git a/infra/specs/waterfalls.pyl b/infra/specs/waterfalls.pyl
index 1df1a0c..1a9257e 100644
--- a/infra/specs/waterfalls.pyl
+++ b/infra/specs/waterfalls.pyl
@@ -83,9 +83,7 @@
'os_type': 'linux',
'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'],
'test_suites': {
- # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests
- # when the failing pipewire tests are ignored on sanitizers.
- 'isolated_scripts': 'desktop_tests',
+ 'isolated_scripts': 'linux_tests',
},
},
'Linux MSan': {
@@ -95,8 +93,6 @@
# TODO(crbug.com/webrtc/14568): Using 'linux_tests'
# fails on "MemorySanitizer: use-of-uninitialized-value in
# libpipewire-0.3.so."
- # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests
- # when the failing pipewire tests are ignored on sanitizers.
'isolated_scripts': 'desktop_tests',
},
},
@@ -107,8 +103,6 @@
# TODO(crbug.com/webrtc/14568): Using 'linux_tests'
# fails on "ThreadSanitizer: data race on vptr (ctor/dtor vs
# virtual call) in shared_screencast_stream_test."
- # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests
- # when the failing pipewire tests are ignored on sanitizers.
'isolated_scripts': 'desktop_tests',
},
},
@@ -116,18 +110,14 @@
'os_type': 'linux',
'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'],
'test_suites': {
- # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests
- # when the failing pipewire tests are ignored on sanitizers.
- 'isolated_scripts': 'desktop_tests',
+ 'isolated_scripts': 'linux_tests',
},
},
'Linux UBSan vptr': {
'os_type': 'linux',
'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'],
'test_suites': {
- # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests
- # when the failing pipewire tests are ignored on sanitizers.
- 'isolated_scripts': 'desktop_tests',
+ 'isolated_scripts': 'linux_tests',
},
},
'Linux32 Debug': {
@@ -509,9 +499,7 @@
'os_type': 'linux',
'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'],
'test_suites': {
- # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests
- # when the failing pipewire tests are ignored on sanitizers.
- 'isolated_scripts': 'desktop_tests',
+ 'isolated_scripts': 'linux_tests',
},
},
'linux_compile_arm64_dbg': {},
@@ -549,8 +537,6 @@
# TODO(crbug.com/webrtc/14568): Using 'linux_tests'
# fails on "MemorySanitizer: use-of-uninitialized-value in
# libpipewire-0.3.so."
- # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests
- # when the failing pipewire tests are ignored on sanitizers.
'isolated_scripts': 'desktop_tests',
},
},
@@ -568,8 +554,6 @@
# TODO(crbug.com/webrtc/14568): Using 'linux_tests'
# fails on "ThreadSanitizer: data race on vptr (ctor/dtor vs
# virtual call) in shared_screencast_stream_test."
- # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests
- # when the failing pipewire tests are ignored on sanitizers.
'isolated_scripts': 'desktop_tests',
},
},
@@ -577,18 +561,14 @@
'os_type': 'linux',
'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'],
'test_suites': {
- # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests
- # when the failing pipewire tests are ignored on sanitizers.
- 'isolated_scripts': 'desktop_tests',
+ 'isolated_scripts': 'linux_tests',
},
},
'linux_ubsan_vptr': {
'os_type': 'linux',
'mixins': ['linux-bionic', 'x86-64', 'resultdb-json-format'],
'test_suites': {
- # TODO(crbug.com/webrtc/14644): Replace desktop_tests by linux_tests
- # when the failing pipewire tests are ignored on sanitizers.
- 'isolated_scripts': 'desktop_tests',
+ 'isolated_scripts': 'linux_tests',
},
},
'linux_x86_dbg': {
diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn
index 34a5704..2deb71c 100644
--- a/modules/desktop_capture/BUILD.gn
+++ b/modules/desktop_capture/BUILD.gn
@@ -139,20 +139,9 @@
deps += [ ":pipewire_stubs" ]
}
+ data = [ "../../third_party/pipewire" ]
public_configs = [ ":pipewire_config" ]
}
-
- group("pipewire_shared_screencast_stream_test") {
- testonly = true
-
- deps = [ ":shared_screencast_stream_test" ]
-
- data = [
- "../../third_party/pipewire",
- "linux/wayland/test/shared_screencast_stream_test.py",
- "${root_out_dir}/shared_screencast_stream_test",
- ]
- }
}
rtc_library("desktop_capture_unittests") {
diff --git a/modules/desktop_capture/linux/wayland/test/shared_screencast_stream_test.py b/modules/desktop_capture/linux/wayland/test/shared_screencast_stream_test.py
deleted file mode 100644
index bf97d0c..0000000
--- a/modules/desktop_capture/linux/wayland/test/shared_screencast_stream_test.py
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/usr/bin/env vpython3
-# Copyright (c) 2022 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 "shared_screencast_screen" test.
-"""
-
-import argparse
-import json
-import os
-import subprocess
-import sys
-
-SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
-# Get rid of "modules/desktop_capture/linux/wayland/test"
-ROOT_DIR = os.path.normpath(
- os.path.join(SCRIPT_DIR, os.pardir, os.pardir, os.pardir, os.pardir,
- os.pardir))
-
-
-def _ParseArgs():
- parser = argparse.ArgumentParser(
- description='Run shared_screencast_screen test.')
- parser.add_argument('build_dir',
- help='Path to the build directory (e.g. out/Release).')
- parser.add_argument(
- '--isolated-script-test-output',
- default=None,
- help='Path to output JSON file which Chromium infra requires.')
- # Unused args
- # We just need to avoid passing these to the test
- parser.add_argument(
- '--isolated-script-test-perf-output',
- default=None,
- help='Path to store perf results in histogram proto format.')
-
- return parser.parse_known_args()
-
-
-def _GetPipeWireDir():
- pipewire_dir = os.path.join(ROOT_DIR, 'third_party', 'pipewire',
- 'linux-amd64')
-
- if not os.path.isdir(pipewire_dir):
- pipewire_dir = None
-
- return pipewire_dir
-
-
-def _ConfigurePipeWirePaths(path):
- library_dir = os.path.join(path, 'lib64')
- pipewire_binary_dir = os.path.join(path, 'bin')
- pipewire_config_prefix = os.path.join(path, 'share', 'pipewire')
- pipewire_module_dir = os.path.join(library_dir, 'pipewire-0.3')
- spa_plugin_dir = os.path.join(library_dir, 'spa-0.2')
- media_session_config_dir = os.path.join(pipewire_config_prefix,
- 'media-session.d')
-
- env_vars = os.environ
- env_vars['LD_LIBRARY_PATH'] = library_dir
- env_vars['PIPEWIRE_CONFIG_PREFIX'] = pipewire_config_prefix
- env_vars['PIPEWIRE_MODULE_DIR'] = pipewire_module_dir
- env_vars['SPA_PLUGIN_DIR'] = spa_plugin_dir
- env_vars['MEDIA_SESSION_CONFIG_DIR'] = media_session_config_dir
- env_vars['PIPEWIRE_RUNTIME_DIR'] = '/tmp'
- env_vars['PATH'] = env_vars['PATH'] + ':' + pipewire_binary_dir
-
-
-def main():
- args, extra_args = _ParseArgs()
-
- pipewire_dir = _GetPipeWireDir()
-
- if pipewire_dir is None:
- return 1
-
- _ConfigurePipeWirePaths(pipewire_dir)
-
- pipewire_process = subprocess.Popen(["pipewire"], stdout=None)
- pipewire_media_session_process = subprocess.Popen(["pipewire-media-session"],
- stdout=None)
-
- test_command = os.path.join(args.build_dir, 'shared_screencast_stream_test')
- pipewire_test_process = subprocess.run([test_command] + extra_args,
- stdout=True,
- check=False)
-
- return_value = pipewire_test_process.returncode
-
- pipewire_media_session_process.terminate()
- pipewire_process.terminate()
-
- if args.isolated_script_test_output:
- with open(args.isolated_script_test_output, 'w') as f:
- json.dump({"version": 3}, f)
-
- return return_value
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/tools_webrtc/configure_pipewire.py b/tools_webrtc/configure_pipewire.py
new file mode 100644
index 0000000..79f8acc
--- /dev/null
+++ b/tools_webrtc/configure_pipewire.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env vpython3
+# Copyright (c) 2022 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 a wrapper that loads "pipewire" library.
+"""
+
+import os
+import subprocess
+import sys
+
+_SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
+_SRC_DIR = os.path.dirname(_SCRIPT_DIR)
+
+
+def _GetPipeWireDir():
+ pipewire_dir = os.path.join(_SRC_DIR, 'third_party', 'pipewire',
+ 'linux-amd64')
+
+ if not os.path.isdir(pipewire_dir):
+ pipewire_dir = None
+
+ return pipewire_dir
+
+
+def _ConfigurePipeWirePaths(path):
+ library_dir = os.path.join(path, 'lib64')
+ pipewire_binary_dir = os.path.join(path, 'bin')
+ pipewire_config_prefix = os.path.join(path, 'share', 'pipewire')
+ pipewire_module_dir = os.path.join(library_dir, 'pipewire-0.3')
+ spa_plugin_dir = os.path.join(library_dir, 'spa-0.2')
+ media_session_config_dir = os.path.join(pipewire_config_prefix,
+ 'media-session.d')
+
+ env_vars = os.environ
+ env_vars['LD_LIBRARY_PATH'] = library_dir
+ env_vars['PIPEWIRE_CONFIG_PREFIX'] = pipewire_config_prefix
+ env_vars['PIPEWIRE_MODULE_DIR'] = pipewire_module_dir
+ env_vars['SPA_PLUGIN_DIR'] = spa_plugin_dir
+ env_vars['MEDIA_SESSION_CONFIG_DIR'] = media_session_config_dir
+ env_vars['PIPEWIRE_RUNTIME_DIR'] = '/tmp'
+ env_vars['PATH'] = env_vars['PATH'] + ':' + pipewire_binary_dir
+
+
+def main():
+ pipewire_dir = _GetPipeWireDir()
+
+ if pipewire_dir is None:
+ print('configure-pipewire: Couldn\'t find directory %s' % pipewire_dir)
+ return 1
+
+ _ConfigurePipeWirePaths(pipewire_dir)
+
+ pipewire_process = subprocess.Popen(["pipewire"], stdout=None)
+ pipewire_media_session_process = subprocess.Popen(["pipewire-media-session"],
+ stdout=None)
+
+ return_value = subprocess.call(sys.argv[1:])
+
+ pipewire_media_session_process.terminate()
+ pipewire_process.terminate()
+
+ return return_value
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/tools_webrtc/mb/mb.py b/tools_webrtc/mb/mb.py
index 620a0c1..07cb14c 100755
--- a/tools_webrtc/mb/mb.py
+++ b/tools_webrtc/mb/mb.py
@@ -102,6 +102,9 @@
vpython_exe, '../../tools_webrtc/ensure_webcam_is_running.py'
]
extra_files.append('../../tools_webrtc/ensure_webcam_is_running.py')
+ if isolate_map[target].get('use_pipewire', False):
+ cmdline += [vpython_exe, '../../tools_webrtc/configure_pipewire.py']
+ extra_files.append('../../tools_webrtc/configure_pipewire.py')
# is_linux uses use_ozone and x11 by default.
use_x11 = is_linux