| Index: chrome/test/functional/media/media_test_runner.py
|
| diff --git a/chrome/test/functional/media/media_test_runner.py b/chrome/test/functional/media/media_test_runner.py
|
| deleted file mode 100755
|
| index c6d43e49ea3a8e9aa2b2dba6335b681df2c47207..0000000000000000000000000000000000000000
|
| --- a/chrome/test/functional/media/media_test_runner.py
|
| +++ /dev/null
|
| @@ -1,305 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright (c) 2011 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.
|
| -
|
| -"""A module to execute a subclass of MediaTastBase class.
|
| -
|
| -This executes a media test class (a subclass of MediaTastBase class) with
|
| -different configuration (parameters) which are passed in the form of
|
| -environment variables (e.g., the number of runs). The location of the
|
| -subclass is passed as one of arguments. An example of invocation is
|
| -"./media_test_runner.py -p ./media_perf.py". In this example,
|
| -media_perf.py will be invoked using the default set of parameters.
|
| -The list of possible combinations of parameters are: T parameter
|
| -for media cache is set/non-set, Chrome flag is set/non-set, data element
|
| -in data source file (CSV file - its content is list form or its content is
|
| -in matrix form),
|
| -"""
|
| -
|
| -import copy
|
| -import csv
|
| -import glob
|
| -import logging
|
| -import os
|
| -from optparse import OptionParser
|
| -import shlex
|
| -import sys
|
| -from subprocess import Popen
|
| -
|
| -from media_test_env_names import MediaTestEnvNames
|
| -from media_test_matrix import MediaTestMatrix
|
| -
|
| -
|
| -def main():
|
| - CHROME_FLAGS = {'disable_cache': '--media-cache-size=1',
|
| - # Please note track (caption) option is not implemented yet
|
| - # as of 6/8/2011.
|
| - 'track': '--enable-video-track'}
|
| - # Player.html should contain all the HTML and Javascript that is
|
| - # necessary to run these tests.
|
| - DEFAULT_PLAYER_HTML_URL = 'DEFAULT'
|
| - DEFAULT_PLAYER_HTML_URL_NICKNAME = 'local'
|
| - # Default base url nickname used to display the result in case it is not
|
| - # specified by the environment variable.
|
| - DEFAULT_PLAYER_HTML_URL_NICKNAME = 'local'
|
| - REMOVE_FIRST_RESULT = True
|
| - # The number of runs for each test. This is used to compute average values
|
| - # from among all runs.
|
| - DEFAULT_NUMBER_OF_RUNS = 3
|
| - # The interval between measurement calls.
|
| - DEFAULT_MEASURE_INTERVALS = 3
|
| - DEFAULT_SUITE_NAME = 'AV_PERF'
|
| - # This script is used to run the PYAUTO suite.
|
| - pyauto_functional_script_name = os.path.join(os.path.dirname(__file__),
|
| - 'pyauto_media.py')
|
| - # This defines default file name for CSV file.
|
| - default_input_filename = os.path.join(os.pardir, 'data', 'media', 'csv',
|
| - 'media_list_data.csv')
|
| - parser = OptionParser()
|
| - # TODO(imasaki@chromium.org): add parameter verification.
|
| - parser.add_option(
|
| - '-i', '--input', dest='input_filename', default=default_input_filename,
|
| - help='Data source file (file contents in list form) [defaults to "%s"]' %
|
| - default_input_filename, metavar='FILE')
|
| - parser.add_option(
|
| - '-x', '--input_matrix', dest='input_matrix_filename',
|
| - help='Data source file (file contents in matrix form)', metavar='FILE')
|
| - parser.add_option('-t', '--input_matrix_testcase',
|
| - dest='input_matrix_testcase_name',
|
| - help='Run particular test in matrix')
|
| - parser.add_option('-r', '--video_matrix_home_url',
|
| - default='',
|
| - dest='video_matrix_home_url',
|
| - help='Video Matrix home URL')
|
| - parser.add_option('-p', '--test_prog_name', dest='test_prog_name',
|
| - help='Test main program name (not using suite)',
|
| - metavar='FILE')
|
| - parser.add_option('-b', '--player_html_url', dest='player_html_url',
|
| - default='None',
|
| - help='Player.html URL [defaults to "%s"] ' %
|
| - DEFAULT_PLAYER_HTML_URL, metavar='FILE')
|
| - parser.add_option('-u', '--player_html_url_nickname',
|
| - dest='player_html_url_nickname',
|
| - default=DEFAULT_PLAYER_HTML_URL_NICKNAME,
|
| - help='Player.html Nickname [defaults to "%s"]' %
|
| - DEFAULT_PLAYER_HTML_URL_NICKNAME)
|
| - parser.add_option('-n', '--number_of_runs', dest='number_of_runs',
|
| - default=DEFAULT_NUMBER_OF_RUNS,
|
| - help='The number of runs [defaults to "%d"]' %
|
| - DEFAULT_NUMBER_OF_RUNS)
|
| - parser.add_option('-m', '--measure_intervals', dest='measure_intervals',
|
| - default=DEFAULT_MEASURE_INTERVALS,
|
| - help='Interval for measurement data [defaults to "%d"]' %
|
| - DEFAULT_MEASURE_INTERVALS)
|
| - parser.add_option('-c', '--disable_media_cache', dest='disable_media_cache',
|
| - default=False, help='Disable media cache',
|
| - action='store_true')
|
| - parser.add_option('-z', '--test-one-video', dest='one_video',
|
| - default=False, help='Run only one video',
|
| - action='store_true')
|
| - parser.add_option(
|
| - '-w', '--test_scenario_input_filename',
|
| - dest='test_scenario_input_filename',
|
| - default='', help='Test scenario file (CSV form)', metavar='FILE')
|
| - parser.add_option(
|
| - '-q', '--test_scenario', dest='test_scenario',
|
| - default='', help='Test scenario (action triples delimited by \'|\')')
|
| - parser.add_option('-s', '--suite', dest='suite',
|
| - help='Suite file')
|
| - parser.add_option('-e', '--media_file', dest='media_file',
|
| - default='',
|
| - help=('Media file to be played using player.html. '
|
| - 'The relative path needs to be specified starting '
|
| - 'from data/html/ directory. '
|
| - 'The data should have the following format: '
|
| - 'tag(video|audio)|filename|nickname|video_title'))
|
| - parser.add_option('-a', '--reference_build', dest='reference_build',
|
| - help='Include reference build run', default=False,
|
| - action='store_true')
|
| - parser.add_option('-k', '--reference_build_dir', dest='reference_build_dir',
|
| - help=('A absolute path to the directory that contains'
|
| - 'binaries of reference build.'))
|
| - parser.add_option('-v', '--verbose', dest='verbose', help='Verbose mode.',
|
| - default=False, action='store_true')
|
| - parser.add_option('-j', '--track', dest='track',
|
| - help=('Run track test (binary should be downloaded'
|
| - ' from http://www.annacavender.com/track/'
|
| - ' and put into reference_build_dir).'),
|
| - default=False, action='store_true')
|
| - parser.add_option('-g', '--track-file', dest='track_file',
|
| - help=('Track file in vtt format (binary should be'
|
| - ' downloaded from http://www.annacavender.com/track/'
|
| - ' and put into reference_build_dir).'))
|
| - parser.add_option('-y', '--track-file_dir', dest='track_file_dir',
|
| - help=('A directory that contains vtt format files.'))
|
| - parser.add_option('-d', '--num-extra-players',
|
| - dest='number_of_extra_players',
|
| - help=('The number of extra players for '
|
| - 'stress testing using the same media file.'))
|
| - parser.add_option('-l', '--jerky-tool-location',
|
| - dest='jerky_tool_location',
|
| - help='The location of the jerky tool binary.')
|
| - parser.add_option('--jo', '--jerky-tool-output-directory',
|
| - dest='jerky_tool_output_directory',
|
| - help='The output directory of the jerky tool.')
|
| - parser.add_option('--jb', '--jerky-tool-baseline-directory',
|
| - dest='jerky_tool_baseline_directory',
|
| - help='The baseline directory of the jerky tool.')
|
| - options, args = parser.parse_args()
|
| - if args:
|
| - parser.print_help()
|
| - sys.exit(1)
|
| -
|
| - test_data_list = []
|
| - if options.media_file:
|
| - opts = options.media_file.split('|')
|
| - # The media file should have the following format:
|
| - # tag(video|audio)|filename|nickname|video_title.
|
| - if len(opts) != 4:
|
| - logging.error('--media_file option argument does not have correct'
|
| - 'format. The correct format is tag(video|audio)'
|
| - '|filename|nickname|video_title')
|
| - sys.exit(1)
|
| - test_data_list.append(opts)
|
| - elif options.input_matrix_filename is None:
|
| - file = open(options.input_filename, 'rb')
|
| - test_data_list = csv.reader(file)
|
| - # First line contains headers that can be skipped.
|
| - test_data_list.next()
|
| - else:
|
| - # Video_matrix_home_url requires "/" at the end.
|
| - if not options.video_matrix_home_url.endswith('/'):
|
| - options.video_matrix_home_url += '/'
|
| - media_test_matrix = MediaTestMatrix()
|
| - media_test_matrix.ReadData(options.input_matrix_filename)
|
| - all_data_list = media_test_matrix.GenerateAllMediaInfosInCompactForm(
|
| - True, options.video_matrix_home_url)
|
| - if options.input_matrix_testcase_name is None:
|
| - # Use all test cases.
|
| - test_data_list = all_data_list
|
| - else:
|
| - # Choose particular video.
|
| - media_info = MediaTestMatrix.LookForMediaInfoInCompactFormByNickName(
|
| - all_data_list, options.input_matrix_testcase_name)
|
| - if media_info is not None:
|
| - test_data_list.append(media_info)
|
| -
|
| - # Determine whether we need to repeat a test using a reference build.
|
| - # The default is not to include a test using a reference build.
|
| - if options.reference_build:
|
| - reference_build_list = [False, True]
|
| - else:
|
| - reference_build_list = [False]
|
| - track_files = ['']
|
| - if any([options.track_file, options.track, options.track_file_dir]):
|
| - # TODO(imasaki@chromium.org): change here after track functionality is
|
| - # available on Chrome. Currently, track patch is still under development.
|
| - # So, I need to download the binary from
|
| - # http://www.annacavender.com/track/ and use it for testing.
|
| - # I temporarily use reference build mechanism.
|
| - reference_build_list = [True]
|
| - if options.track_file_dir:
|
| - track_files_orig = (
|
| - glob.glob(os.path.join(options.track_file_dir, '*.vtt')))
|
| - track_files = []
|
| - for tf in track_files_orig:
|
| - # The location should be relative path from HTML files.
|
| - # So it needs to remove data and media from the path.
|
| - track_files.append(tf.replace(os.path.join('data', 'media'), ''))
|
| - if not track_files:
|
| - logging.warning('No track files in %s', options.track_file_dir)
|
| - if options.track_file:
|
| - track_files = [options.track_file]
|
| - # This is a loop for iterating through all videos defined above (list
|
| - # or matrix). Each video has associated tag and nickname for display
|
| - # purpose.
|
| - for tag, filename, nickname, title in test_data_list:
|
| - for track_file in track_files:
|
| - for reference_build in reference_build_list:
|
| - parent_envs = copy.deepcopy(os.environ)
|
| - if options.input_matrix_filename is None:
|
| - par_filename = os.path.join(os.pardir, filename)
|
| - else:
|
| - par_filename = filename
|
| - envs = {
|
| - MediaTestEnvNames.MEDIA_TAG_ENV_NAME: tag,
|
| - MediaTestEnvNames.MEDIA_FILENAME_ENV_NAME: par_filename,
|
| - MediaTestEnvNames.MEDIA_FILENAME_NICKNAME_ENV_NAME: nickname,
|
| - MediaTestEnvNames.PLAYER_HTML_URL_ENV_NAME:
|
| - options.player_html_url,
|
| - MediaTestEnvNames.PLAYER_HTML_URL_NICKNAME_ENV_NAME:
|
| - options.player_html_url_nickname,
|
| - MediaTestEnvNames.N_RUNS_ENV_NAME: str(options.number_of_runs),
|
| - MediaTestEnvNames.MEASURE_INTERVAL_ENV_NAME:
|
| - str(options.measure_intervals),
|
| - MediaTestEnvNames.TEST_SCENARIO_FILE_ENV_NAME:
|
| - options.test_scenario_input_filename,
|
| - MediaTestEnvNames.TEST_SCENARIO_ENV_NAME:
|
| - options.test_scenario,
|
| - }
|
| - # Boolean variables and their related variables.
|
| - if options.disable_media_cache:
|
| - # The 't' parameter is passed to player.html to disable/enable
|
| - # the media cache (refer to data/media/html/player.js).
|
| - envs[MediaTestEnvNames.ADD_T_PARAMETER_ENV_NAME] = str(
|
| - options.disable_media_cache)
|
| - if reference_build:
|
| - envs[MediaTestEnvNames.REFERENCE_BUILD_ENV_NAME] = str(
|
| - reference_build)
|
| - if REMOVE_FIRST_RESULT:
|
| - envs[MediaTestEnvNames.REMOVE_FIRST_RESULT_ENV_NAME] = str(
|
| - REMOVE_FIRST_RESULT)
|
| - if options.reference_build_dir:
|
| - envs[MediaTestEnvNames.REFERENCE_BUILD_DIR_ENV_NAME] = (
|
| - options.reference_build_dir)
|
| - if track_file:
|
| - envs[MediaTestEnvNames.TRACK_FILE_ENV_NAME] = track_file
|
| - if options.number_of_extra_players:
|
| - envs[MediaTestEnvNames.N_EXTRA_PLAYERS_ENV_NAME] = (
|
| - options.number_of_extra_players)
|
| - if options.jerky_tool_location:
|
| - envs[MediaTestEnvNames.JERKY_TOOL_BINARY_LOCATION_ENV_NAME] = (
|
| - options.jerky_tool_location)
|
| - if options.jerky_tool_output_directory:
|
| - envs[MediaTestEnvNames.JERKY_TOOL_OUTPUT_DIR_ENV_NAME] = (
|
| - options.jerky_tool_output_directory)
|
| - if options.jerky_tool_baseline_directory:
|
| - envs[MediaTestEnvNames.JERKY_TOOL_BASELINE_DIR_ENV_NAME] = (
|
| - options.jerky_tool_baseline_directory)
|
| - envs.update(parent_envs)
|
| - if options.suite is None and options.test_prog_name is not None:
|
| - # Suite is not used - run test program directly.
|
| - test_prog_name = options.test_prog_name
|
| - suite_string = ''
|
| - else:
|
| - # Suite is used.
|
| - # The test script names are in the PYAUTO_TESTS file.
|
| - test_prog_name = pyauto_functional_script_name
|
| - if options.suite is None:
|
| - suite_name = DEFAULT_SUITE_NAME
|
| - else:
|
| - suite_name = options.suite
|
| - suite_string = ' --suite=%s' % suite_name
|
| - test_prog_name = sys.executable + ' ' + test_prog_name
|
| - chrome_flag = ''
|
| - if options.disable_media_cache:
|
| - chrome_flag += CHROME_FLAGS['disable_cache']
|
| - if options.track_file:
|
| - if options.disable_media_cache:
|
| - chrome_flag += ' '
|
| - chrome_flag += CHROME_FLAGS['track']
|
| - if chrome_flag:
|
| - chrome_flag = '--chrome-flags=\'%s\'' % chrome_flag
|
| - cmd = test_prog_name + suite_string + ' ' + chrome_flag
|
| - if options.verbose:
|
| - cmd += ' -v'
|
| - proc = Popen(cmd, env=envs, shell=True)
|
| - proc.communicate()
|
| -
|
| - if options.one_video:
|
| - break
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - main()
|
|
|