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

Unified Diff: chrome/test/functional/media/cns_test_base.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/audio_tools.py ('k') | chrome/test/functional/media/media_basic_playback.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/functional/media/cns_test_base.py
===================================================================
--- chrome/test/functional/media/cns_test_base.py (revision 261231)
+++ chrome/test/functional/media/cns_test_base.py (working copy)
@@ -1,201 +0,0 @@
-# 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.
-
-"""Constrained network server (CNS) test base."""
-
-import logging
-import os
-import Queue
-import subprocess
-import sys
-import threading
-import urllib2
-
-import pyauto
-import pyauto_paths
-
-
-# List of commonly used network constraints settings.
-# Each setting is a tuppe of the form:
-# ('TEST_NAME', [BANDWIDTH_Kbps, LATENCY_ms, PACKET_LOSS_%])
-#
-# Note: The test name should satisfy the regex [\w\.-]+ (check
-# tools/perf_expectations/tests/perf_expectations_unittest.py for details). It
-# is used to name the result graphs on the dashboards.
-#
-# The WiFi, DSL, and Cable settings were taken from webpagetest.org as
-# approximations of their respective real world networks. The settings were
-# based on 2011 FCC Broadband Data report (http://www.fcc.gov/document/
-# measuring-broadband-america-report-consumer-broadband-performance-us).
-DialUp = ('DialUp', [56, 120, 5])
-Slow = ('Slow', [256, 105, 1])
-Wifi = ('Wifi', [1024, 60, 0])
-DSL = ('DSL', [1541, 50, 0])
-Cable = ('Cable', [5120, 28, 0])
-NoConstraints = ('NoConstraints', [0, 0, 0])
-
-# Path to CNS executable relative to source root.
-_CNS_PATH = os.path.join(
- 'media', 'tools', 'constrained_network_server', 'cns.py')
-
-# Port to start the CNS on.
-_CNS_PORT = 9000
-
-# A flag to determine whether to launch a local CNS instance or to connect
-# to the external CNS server. Default to False since all current bots use an
-# external instance.
-# If not on Windows, set USE_LOCAL_CNS=1 env variable to switch the flag.
-USE_LOCAL_CNS = ('win' not in sys.platform and 'USE_LOCAL_CNS' in os.environ and
- os.environ['USE_LOCAL_CNS'] == '1')
-
-# Base CNS URL, only requires & separated parameter names appended.
-if USE_LOCAL_CNS:
- CNS_BASE_URL = 'http://127.0.0.1:%d/ServeConstrained?' % _CNS_PORT
-else:
- CNS_BASE_URL = 'http://chromeperf34:%d/ServeConstrained?' % _CNS_PORT
- CNS_CLEANUP_URL = 'http://chromeperf34:%d/Cleanup' % _CNS_PORT
-
-# Used for server sanity check.
-_TEST_VIDEO = 'roller.webm'
-
-# Directory root to serve files from.
-_ROOT_PATH = os.path.join(pyauto.PyUITest.DataDir(), 'pyauto_private', 'media')
-
-
-class CNSTestBase(pyauto.PyUITest):
- """CNS test base hadles startup and teardown of CNS server."""
-
- def __init__(self, *args, **kwargs):
- """Initialize CNSTestBase by setting the arguments for CNS server.
-
- Args:
- Check cns.py command line argument list for details.
- """
- self._port = kwargs.get('port', _CNS_PORT)
- self._interface = kwargs.get('interface', 'lo')
- self._www_root = kwargs.get('www_root', _ROOT_PATH)
- self._verbose = kwargs.get('verbose', True)
- self._expiry_time = kwargs.get('expiry_time', 0)
- self._socket_timeout = kwargs.get('socket_timeout')
- pyauto.PyUITest.__init__(self, *args, **kwargs)
-
- def setUp(self):
- """Ensures the Constrained Network Server (CNS) server is up and running."""
- if USE_LOCAL_CNS:
- self._SetUpLocal()
- else:
- self._SetUpExternal()
-
- def _SetUpExternal(self):
- """Ensures the test can connect to the external CNS server."""
- if self.WaitUntil(self._CanAccessServer, retry_sleep=3, timeout=30,
- debug=False):
- pyauto.PyUITest.setUp(self)
- else:
- self.fail('Failed to connect to CNS.')
-
- def _SetUpLocal(self):
- """Starts the CNS server locally."""
- cmd = [sys.executable, os.path.join(pyauto_paths.GetSourceDir(), _CNS_PATH),
- '--port', str(self._port),
- '--interface', self._interface,
- '--www-root', self._www_root,
- '--expiry-time', str(self._expiry_time)]
-
- if self._socket_timeout:
- cmd.extend(['--socket-timeout', str(self._socket_timeout)])
- if self._verbose:
- cmd.append('-v')
- logging.debug('Starting CNS server: %s ', ' '.join(cmd))
-
- self._cns_process = subprocess.Popen(cmd, stderr=subprocess.PIPE)
- ProcessLogger(self._cns_process)
-
- if self.WaitUntil(self._CanAccessServer, retry_sleep=3, timeout=30,
- debug=False):
- pyauto.PyUITest.setUp(self)
- else:
- self.tearDown()
- self.fail('Failed to start CNS.')
-
- def _CanAccessServer(self):
- """Checks if the CNS server can serve a file with no network constraints."""
- test_url = ''.join([CNS_BASE_URL, 'f=', _TEST_VIDEO])
- try:
- return urllib2.urlopen(test_url) is not None
- except Exception:
- return False
-
- def tearDown(self):
- """Stops the Constrained Network Server (CNS)."""
- if USE_LOCAL_CNS:
- logging.debug('Stopping CNS server.')
- # Do not use process.kill(), it will not clean up cns.
- self.Kill(self._cns_process.pid)
- # Need to wait since the process logger has a lock on the process stderr.
- self._cns_process.wait()
- self.assertFalse(self._cns_process.returncode is None)
- logging.debug('CNS server stopped.')
- else:
- # Call CNS Cleanup to remove all ports created by this client.
- self.NavigateToURL(CNS_CLEANUP_URL)
- pyauto.PyUITest.tearDown(self)
-
-
-class ProcessLogger(threading.Thread):
- """A thread to log a process's stderr output."""
-
- def __init__(self, process):
- """Starts the process logger thread.
-
- Args:
- process: The process to log.
- """
- threading.Thread.__init__(self)
- self._process = process
- self.start()
-
- def run(self):
- """Adds debug statements for the process's stderr output."""
- line = True
- while line:
- line = self._process.stderr.readline()
- logging.debug(line.strip())
-
-
-def GetFileURL(file_name, bandwidth=0, latency=0, loss=0, new_port=False):
- """Returns CNS URL for the file with specified constraints.
-
- Args:
- Check cns.ServeConstrained() args for more details.
- """
- video_url = [CNS_BASE_URL, 'f=' + file_name]
- if bandwidth > 0:
- video_url.append('bandwidth=%d' % bandwidth)
- if latency > 0:
- video_url.append('latency=%d' % latency)
- if loss > 0:
- video_url.append('loss=%d' % loss)
- if new_port:
- video_url.append('new_port=%s' % new_port)
- return '&'.join(video_url)
-
-
-def CreateCNSPerfTasks(network_constraints_settings, test_media_files):
- """Returns a queue of tasks combinining network constrains with media files.
-
- Args:
- network_constraints_settings: List of (setting_name, setting_values)
- tupples.
- test_media_files: List of media files to run the tests on.
- """
- # Convert relative test path into an absolute path.
- tasks = Queue.Queue()
- for file_name in test_media_files:
- for series_name, settings in network_constraints_settings:
- logging.debug('Add test: %s\tSettings: %s\tMedia: %s', series_name,
- settings, file_name)
- tasks.put((series_name, settings, file_name))
-
- return tasks
« no previous file with comments | « chrome/test/functional/media/audio_tools.py ('k') | chrome/test/functional/media/media_basic_playback.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698