# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib.cros import test_webrtc_peer_connection
class webrtc_PausePlayPeerConnections(test.test):
"""Tests many peerconnections randomly paused and played."""
version = 1
def run_once(self, mode = 'functional', element_type='video'):
"""
Runs the test.
@param mode: 'functional' or 'performance' depending on desired mode.
@param element_type: the element type to use for feeds, video or audio.
"""
kwargs = {
'own_script': 'pause-play.js',
'common_script': 'loopback-peerconnection.js',
'bindir': self.bindir,
'tmpdir': self.tmpdir,
'debugdir': self.debugdir,
'num_peer_connections': 10,
'iteration_delay_millis': 20,
'before_start_hook': lambda tab: tab.EvaluateJavaScript(
"elementType = '{}'".format(element_type))
}
if mode == 'functional':
test = test_webrtc_peer_connection.WebRtcPeerConnectionTest(
title = 'Pause Play Peerconnections',
**kwargs)
test.run_test()
elif mode == 'performance':
test = test_webrtc_peer_connection\
.WebRtcPeerConnectionPerformanceTest(
title = 'Pause Play Peerconnections '
+ 'Performance test',
**kwargs)
test.run_test()
test.collector.write_metrics(self.output_perf_value)
else:
raise error.TestError('mode must be "functional" or "performance"')