| Index: webrtc/examples/androidtests/video_quality_loopback_test.py
|
| diff --git a/webrtc/examples/androidtests/video_quality_loopback_test.py b/webrtc/examples/androidtests/video_quality_loopback_test.py
|
| index 5ef85371afdc904a075c9bc8bff004495f255a02..58c31027adf3f5f49bc4bec26b7bfbcb552697b5 100755
|
| --- a/webrtc/examples/androidtests/video_quality_loopback_test.py
|
| +++ b/webrtc/examples/androidtests/video_quality_loopback_test.py
|
| @@ -30,12 +30,29 @@ import tempfile
|
| SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
| SRC_DIR = os.path.normpath(os.path.join(SCRIPT_DIR, os.pardir, os.pardir,
|
| os.pardir))
|
| +WEBRTC_DEPS_INSTRUCTIONS = """Please add a solution to your .gclient file like
|
| +this and run gclient sync:
|
| +{
|
| + "name": "webrtc.DEPS",
|
| + "url": "https://chromium.googlesource.com/chromium/deps/webrtc/webrtc.DEPS",
|
| +},
|
| +"""
|
| +
|
| +class Error(Exception):
|
| + pass
|
| +
|
| +
|
| +class VideoQualityTestError(Error):
|
| + pass
|
|
|
|
|
| def _RunCommand(argv, cwd=SRC_DIR, **kwargs):
|
| logging.info('Running %r', argv)
|
| subprocess.check_call(argv, cwd=cwd, **kwargs)
|
|
|
| +def _Popen(argv, cwd=SRC_DIR):
|
| + logging.info('Running %r', argv)
|
| + return subprocess.Popen(argv, cwd=cwd)
|
|
|
| def _ParseArgs():
|
| parser = argparse.ArgumentParser(description='Start loopback video analysis.')
|
| @@ -76,10 +93,49 @@ def main():
|
| download_script = os.path.join(tools_dir, 'download_tools.py')
|
| _RunCommand([sys.executable, download_script, toolchain_dir])
|
|
|
| - # Run the Espresso code.
|
| - test_script = os.path.join(build_dir_android,
|
| - 'bin', 'run_AppRTCMobileTestStubbedVideoIO')
|
| - _RunCommand([sys.executable, test_script])
|
| +
|
| + apprtc_process = None
|
| + collider_process = None
|
| + reverseforwarder_process = None
|
| +
|
| + try:
|
| + # Start AppRTC Server
|
| + dev_appserver = os.path.join(SRC_DIR, 'out', 'apprtc', 'google_appengine',
|
| + 'dev_appserver.py')
|
| + if not os.path.isfile(dev_appserver):
|
| + raise VideoQualityTestError('Cannot find %s.\n%s' %
|
| + (dev_appserver, WEBRTC_DEPS_INSTRUCTIONS))
|
| + appengine_dir = os.path.join(SRC_DIR, 'out', 'apprtc', 'out', 'app_engine')
|
| + apprtc_process = _Popen(['python', dev_appserver, appengine_dir,
|
| + '--port=9999', '--admin_port=9998', '--skip_sdk_update_check',
|
| + '--clear_datastore=yes'])
|
| +
|
| + # Start Collider
|
| + collider_path = os.path.join(SRC_DIR, 'out', 'go-workspace', 'bin',
|
| + 'collidermain')
|
| + if not os.path.isfile(collider_path):
|
| + raise VideoQualityTestError('Cannot find %s.\n%s' %
|
| + (collider_path, WEBRTC_DEPS_INSTRUCTIONS))
|
| + collider_process = _Popen([collider_path, '-tls=false', '-port=8089',
|
| + '-room-server=http://localhost:9999'])
|
| +
|
| + # Start adb reverse forwarder
|
| + reverseforwarder_path = os.path.join(
|
| + SRC_DIR, 'build', 'android', 'adb_reverse_forwarder.py')
|
| + reverseforwarder_process = _Popen(
|
| + [reverseforwarder_path, '9999', '9999', '8089', '8089'])
|
| +
|
| + # Run the Espresso code.
|
| + test_script = os.path.join(build_dir_android,
|
| + 'bin', 'run_AppRTCMobileTestStubbedVideoIO')
|
| + _RunCommand([sys.executable, test_script])
|
| + finally:
|
| + if apprtc_process:
|
| + apprtc_process.terminate()
|
| + if collider_process:
|
| + collider_process.terminate()
|
| + if reverseforwarder_process:
|
| + reverseforwarder_process.terminate()
|
|
|
| # Pull the output video.
|
| test_video = os.path.join(temp_dir, 'test_video.y4m')
|
|
|