Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6580)

Unified Diff: chrome/test/functional/media/media_constrained_network_perf.py

Issue 222873002: Remove pyauto tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/functional/media/media_basic_playback.py ('k') | chrome/test/functional/media/media_jerky.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/functional/media/media_constrained_network_perf.py
===================================================================
--- chrome/test/functional/media/media_constrained_network_perf.py (revision 261231)
+++ chrome/test/functional/media/media_constrained_network_perf.py (working copy)
@@ -1,210 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Records metrics on playing media under constrained network conditions.
-
-Spins up a Constrained Network Server (CNS) and runs through a test matrix of
-bandwidth, latency, and packet loss settings. Tests running media files defined
-in _TEST_MEDIA_EPP record the extra-play-percentage (EPP) metric and the
-time-to-playback (TTP) metric in a format consumable by the Chromium perf bots.
-Other tests running media files defined in _TEST_MEDIA_NO_EPP record only the
-TTP metric.
-
-Since even a small number of different settings yields a large test matrix, the
-design is threaded... however PyAuto is not, so a global lock is used when calls
-into PyAuto are necessary. The number of threads can be set by _TEST_THREADS.
-
-The CNS code is located under: <root>/src/media/tools/constrained_network_server
-"""
-
-import logging
-import os
-import posixpath
-import Queue
-
-import pyauto_media
-import pyauto_utils
-
-import cns_test_base
-import worker_thread
-
-# The network constraints used for measuring ttp and epp.
-# Previous tests with 2% and 5% packet loss resulted in inconsistent data. Thus
-# packet loss is not used often in perf tests. Tests with very low bandwidth,
-# such as 56K Dial-up resulted in very slow tests (about 8 mins to run each
-# test iteration). In addition, metrics for Dial-up would be out of range of the
-# other tests metrics, making the graphs hard to read.
-_TESTS_TO_RUN = [cns_test_base.Cable,
- cns_test_base.Wifi,
- cns_test_base.DSL,
- cns_test_base.Slow,
- cns_test_base.NoConstraints]
-
-# HTML test path; relative to src/chrome/test/data. Loads a test video and
-# records metrics in JavaScript.
-_TEST_HTML_PATH = os.path.join(
- 'media', 'html', 'media_constrained_network.html')
-
-# Number of threads to use during testing.
-_TEST_THREADS = 3
-
-# Number of times we run the same test to eliminate outliers.
-_TEST_ITERATIONS = 3
-
-# Media file names used for measuring epp and tpp.
-_TEST_MEDIA_EPP = ['roller.webm']
-_TEST_MEDIA_EPP.extend(posixpath.join('crowd', name) for name in
- ['crowd360.ogv', 'crowd.wav', 'crowd.ogg'])
-
-# Media file names used for measuring tpp without epp.
-_TEST_MEDIA_NO_EPP = [posixpath.join('dartmoor', name) for name in
- ['dartmoor2.ogg', 'dartmoor2.m4a', 'dartmoor2.mp3',
- 'dartmoor2.wav']]
-_TEST_MEDIA_NO_EPP.extend(posixpath.join('crowd', name) for name in
- ['crowd1080.webm', 'crowd1080.ogv', 'crowd1080.mp4',
- 'crowd360.webm', 'crowd360.mp4'])
-
-# Timeout values for epp and ttp tests in seconds.
-_TEST_EPP_TIMEOUT = 180
-_TEST_TTP_TIMEOUT = 20
-
-
-class CNSWorkerThread(worker_thread.WorkerThread):
- """Worker thread. Runs a test for each task in the queue."""
-
- def __init__(self, *args, **kwargs):
- """Sets up CNSWorkerThread class variables."""
- # Allocate local vars before WorkerThread.__init__ runs the thread.
- self._metrics = {}
- self._test_iterations = _TEST_ITERATIONS
- worker_thread.WorkerThread.__init__(self, *args, **kwargs)
-
- def _HaveMetricOrError(self, var_name, unique_url):
- """Checks if the page has variable value ready or if an error has occured.
-
- The varaible value must be set to < 0 pre-run.
-
- Args:
- var_name: The variable name to check the metric for.
- unique_url: The url of the page to check for the variable's metric.
-
- Returns:
- True is the var_name value is >=0 or if an error_msg exists.
- """
- self._metrics[var_name] = int(self.GetDOMValue(var_name, url=unique_url))
- end_test = self.GetDOMValue('endTest', url=unique_url)
-
- return self._metrics[var_name] >= 0 or end_test
-
- def _GetEventsLog(self, unique_url):
- """Returns the log of video events fired while running the test.
-
- Args:
- unique_url: The url of the page identifying the test.
- """
- return self.GetDOMValue('eventsMsg', url=unique_url)
-
- def _GetVideoProgress(self, unique_url):
- """Gets the video's current play progress percentage.
-
- Args:
- unique_url: The url of the page to check for video play progress.
- """
- return int(self.CallJavascriptFunc('calculateProgress', url=unique_url))
-
- def RunTask(self, unique_url, task):
- """Runs the specific task on the url given.
-
- It is assumed that a tab with the unique_url is already loaded.
- Args:
- unique_url: A unique identifier of the test page.
- task: A (series_name, settings, file_name, run_epp) tuple.
- Returns:
- True if at least one iteration of the tests run as expected.
- """
- ttp_results = []
- epp_results = []
- # Build video source URL. Values <= 0 mean the setting is disabled.
- series_name, settings, (file_name, run_epp) = task
- video_url = cns_test_base.GetFileURL(
- file_name, bandwidth=settings[0], latency=settings[1],
- loss=settings[2], new_port=True)
-
- graph_name = series_name + '_' + os.path.basename(file_name)
- for iter_num in xrange(self._test_iterations):
- # Start the test!
- self.CallJavascriptFunc('startTest', [video_url], url=unique_url)
-
- # Wait until the necessary metrics have been collected.
- self._metrics['epp'] = self._metrics['ttp'] = -1
- self.WaitUntil(self._HaveMetricOrError, args=['ttp', unique_url],
- retry_sleep=1, timeout=_TEST_EPP_TIMEOUT, debug=False)
- # Do not wait for epp if ttp is not available.
- if self._metrics['ttp'] >= 0:
- ttp_results.append(self._metrics['ttp'])
- if run_epp:
- self.WaitUntil(
- self._HaveMetricOrError, args=['epp', unique_url], retry_sleep=2,
- timeout=_TEST_EPP_TIMEOUT, debug=False)
-
- if self._metrics['epp'] >= 0:
- epp_results.append(self._metrics['epp'])
-
- logging.debug('Iteration:%d - Test %s ended with %d%% of the video '
- 'played.', iter_num, graph_name,
- self._GetVideoProgress(unique_url),)
-
- if self._metrics['ttp'] < 0 or (run_epp and self._metrics['epp'] < 0):
- logging.error('Iteration:%d - Test %s failed to end gracefully due '
- 'to time-out or error.\nVideo events fired:\n%s',
- iter_num, graph_name, self._GetEventsLog(unique_url))
-
- # End of iterations, print results,
- pyauto_utils.PrintPerfResult('ttp', graph_name, ttp_results, 'ms')
-
- # Return true if we got at least one result to report.
- if run_epp:
- pyauto_utils.PrintPerfResult('epp', graph_name, epp_results, '%')
- return len(epp_results) != 0
- return len(ttp_results) != 0
-
-
-class MediaConstrainedNetworkPerfTest(cns_test_base.CNSTestBase):
- """PyAuto test container. See file doc string for more information."""
-
- def _RunDummyTest(self, test_path):
- """Runs a dummy test with high bandwidth and no latency or packet loss.
-
- Fails the unit test if the dummy test does not end.
-
- Args:
- test_path: Path to HTML/JavaScript test code.
- """
- tasks = Queue.Queue()
- tasks.put(('Dummy Test', [5000, 0, 0], (_TEST_MEDIA_EPP[0], True)))
- # Dummy test should successfully finish by passing all the tests.
- if worker_thread.RunWorkerThreads(self, CNSWorkerThread, tasks, 1,
- test_path):
- self.fail('Failed to run dummy test.')
-
- def testConstrainedNetworkPerf(self):
-
- """Starts CNS, spins up worker threads to run through _TEST_CONSTRAINTS."""
- # Run a dummy test to avoid Chrome/CNS startup overhead.
- logging.debug('Starting a dummy test to avoid Chrome/CNS startup overhead.')
- self._RunDummyTest(_TEST_HTML_PATH)
- logging.debug('Dummy test has finished. Starting real perf tests.')
-
- # Tests that wait for EPP metrics.
- media_files = [(name, True) for name in _TEST_MEDIA_EPP]
- media_files.extend((name, False) for name in _TEST_MEDIA_NO_EPP)
- tasks = cns_test_base.CreateCNSPerfTasks(_TESTS_TO_RUN, media_files)
- if worker_thread.RunWorkerThreads(self, CNSWorkerThread, tasks,
- _TEST_THREADS, _TEST_HTML_PATH):
- self.fail('Some tests failed to run as expected.')
-
-
-if __name__ == '__main__':
- pyauto_media.Main()
« no previous file with comments | « chrome/test/functional/media/media_basic_playback.py ('k') | chrome/test/functional/media/media_jerky.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698