Index: chrome/test/functional/media/media_test_matrix.py |
diff --git a/chrome/test/functional/media/media_test_matrix.py b/chrome/test/functional/media/media_test_matrix.py |
deleted file mode 100644 |
index 2d6b1109c21bd7af2baf2724fde44fcaa666132b..0000000000000000000000000000000000000000 |
--- a/chrome/test/functional/media/media_test_matrix.py |
+++ /dev/null |
@@ -1,220 +0,0 @@ |
-# 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. |
- |
-import csv |
-import os |
-import random |
- |
-NOT_AVAILABLE_STRING = 'not available' |
- |
- |
-class MediaTestMatrix: |
- """This class reads video test matrix file and stores them. |
- |
- Video test matrix contains different video titles as column and different |
- video codec (such as "webm" as columns. The matrix entry contains video |
- specification such as "320x240 50 fps VP8 / no audio 1 MBit/s PSNR 36.70" |
- or "not available". It also provides methods to generate information based |
- on the client's needs. For example, "video" tag or "audio" tag is returned |
- based on what kinds of media it is. This matrix is for managing different |
- kinds of media files in media testing. |
- |
- TODO(imasaki@chromium.org): remove the code duplication in Generate methods. |
- """ |
- # Video extensions such as "webm". |
- _exts = [] |
- # Video specification dictionary of list of video descriptions |
- # (the key is video title). |
- _specs = {} |
- # Video titles such as "bear". |
- _video_titles = [] |
- # Tag dictionary (the key is extension). |
- _tags = {} |
- |
- def ReadData(self, csv_file): |
- """Reads CSV file and stores in list specs and extensions. |
- |
- CSV file should have the following format: |
- "ext","tag","title1","title2",.... |
- "0.webm", "video","description1","descrption2", "not available" |
- (when it is not available). |
- |
- Args: |
- csv_file : CSV file name contains video matrix information described |
- above. |
- |
- Raises: |
- csv.Error if the number of columns is not the same as the number of |
- tiles. |
- """ |
- # Clean up all data. |
- self._exts = [] |
- self._specs = {} |
- self._video_titles = [] |
- self._tags = {} |
- file = open(csv_file, 'rb') |
- reader = csv.reader(file) |
- for row_counter, row in enumerate(reader): |
- if row_counter == 0: |
- # First row is comment. So, skip it. |
- pass |
- elif row_counter == 1: |
- # Second row is for header (video titles). |
- for column_counter, title in enumerate(row[1:]): |
- # Skip the first column since it is for tag ('video' or 'audio'). |
- if column_counter > 0: |
- self._video_titles.append(title) |
- self._specs[title] = [] |
- else: |
- # Error checking is done here based on the number of titles |
- if len(self._video_titles) != len(row) - 2: |
- print "Row %d should have %d columns but has %d columns" % ( |
- row_counter, len(self._video_titles), len(row)) |
- raise csv.Error |
- # First column should contain extension. |
- self._exts.append(row[0]) |
- # Second column should contain tag (audio or video). |
- self._tags[row[0]] = row[1] |
- for i in range(len(row) - 2): |
- self._specs[self._video_titles[i]].append(row[i + 2]) |
- file.close() |
- |
- def _GenerateMediaInfo(self, sub_type, name, media_test_matrix_home_url): |
- """Generate media information from matrix generated by CSV file. |
- |
- Args: |
- sub_type: index of the extensions (rows in the CSV file). |
- name: the name of the video file (column name in the CSV file). |
- media_test_matrix_home_url: url of the matrix home that used |
- to generate link. |
- |
- Returns: |
- a tuple of (info, url, link, tag, is_video, nickname). |
- info: description of the video (an entry in the matrix). |
- url: URL of the video or audio. |
- link: href tag for video or audio. |
- tag: a tag string can be used to display video or audio. |
- is_video: True if the file is video; False otherwise. |
- nickname: nickname of the video for presentation. |
- """ |
- if name is 'none': |
- return |
- cur_video = name |
- is_video = self._tags[self._exts[sub_type]] == 'video' |
- file = os.path.join(cur_video, cur_video + self._exts[sub_type]) |
- # Specs were generated from CSV file in readFile(). |
- info = self._specs[cur_video][sub_type] |
- url = media_test_matrix_home_url + file |
- link = '<b><a href="%s">%s</a> %s</b>' % (url, file, info) |
- type = ['audio', 'video'][is_video] |
- tag_attr = 'id="v" controls autoplay playbackRate=1 loop valign=top' |
- tag = '<%s %s src="%s">' % (type, tag_attr, file) |
- nickname = cur_video + self._exts[sub_type] |
- return (info, url, link, tag, is_video, nickname) |
- |
- def GenerateRandomMediaInfo(self, number_of_tries=10, |
- video_matrix_home_url=''): |
- """Generate random video info that can be used for playing this media. |
- |
- Args: |
- video_only: True if generate random video only. |
- video_matrix_home_url: url of the matrix home that is used |
- to generate link. |
- |
- Returns: |
- a list of a tuples (info, url, link, tag, is_video, nickname). |
- info: description of the video (an entry in the matrix). |
- url: URL of the video/audio. |
- link: href tag for video or audio. |
- tag: a tag string can be used to display video or audio. |
- is_video: True if the file is video; False otherwise. |
- nickname: nickname of the video for presentation. |
- """ |
- # Try number_of_tries times to find available video/audio. |
- for i in range(number_of_tries): |
- sub_type = random.randint(0, len(self._exts)) |
- name = self._video_titles[random.randint(0, len(self._video_titles)-1)] |
- (info, url, link, tag, is_video, nickname) = ( |
- self._GenerateMediaInfo(sub_type, name, video_matrix_home_url)) |
- if NOT_AVAILABLE_STRING not in info: |
- return (info, url, link, tag, is_video, nickname) |
- # Gives up after that (very small chance). |
- return None |
- |
- def GenerateAllMediaInfos(self, video_only, media_matrix_home_url=''): |
- """Generate all video infos that can be used for playing this media. |
- |
- Args: |
- video_only: True if generate random video only (not audio). |
- media_matrix_home_url: url of the matrix home that is used |
- to generate link. |
- Returns: |
- a list of a tuples (info, url, link, tag, is_video, nickname). |
- info: description of the video (an entry in the matrix). |
- url: URL of the video/audio. |
- link: href tag for video or audio. |
- tag: a tag string can be used to display video or audio. |
- is_video: True if the file is video; False otherwise. |
- nickname: nickname of the video for presentation (such as bear.webm). |
- """ |
- media_infos = [] |
- |
- for i in range(0, len(self._video_titles)-1): |
- name = self._video_titles[i] |
- for sub_type in range(len(self._exts)): |
- (info, url, link, tag, is_video, nickname) = ( |
- self._GenerateMediaInfo(sub_type, name, media_matrix_home_url)) |
- if ((NOT_AVAILABLE_STRING not in info) and |
- ((not video_only) or (video_only and is_video))): |
- media_infos.append([info, url, link, tag, is_video, nickname]) |
- return media_infos |
- |
- def GenerateAllMediaInfosInCompactForm(self, video_only, |
- media_matrix_home_url=''): |
- """Generate all media information in compact form. |
- |
- Compact form contains only url, nickname and tag. |
- |
- Args: |
- video_only: True if generate random video only. |
- media_matrix_home_url: url of the matrix home that is used |
- to generate link. |
- |
- Returns: |
- a list of a tuples (url, nickname, tag). |
- url: URL of the video/audio. |
- nickname: nickname of the video/audio for presentation |
- (such as bear.webm). |
- tag: HTML5 tag for the video/audio. |
- """ |
- media_infos = [] |
- for i in range(0, len(self._video_titles)-1): |
- name = self._video_titles[i] |
- for sub_type in range(len(self._exts)): |
- (info, url, link, tag, is_video, nickname) = ( |
- self._GenerateMediaInfo(sub_type, name, media_matrix_home_url)) |
- tag = ['audio', 'video'][is_video] |
- if ((not NOT_AVAILABLE_STRING in info) and |
- ((not video_only) or (video_only and is_video))): |
- media_infos.append([tag, url, nickname, name]) |
- return media_infos |
- |
- @staticmethod |
- def LookForMediaInfoInCompactFormByNickName(compact_list, target): |
- """Look for video by its nickname in the compact_list. |
- |
- Args: |
- compact_list: a list generated by GenerateAllMediaInfosInCompactForm. |
- target: a target nickname string to look for. |
- |
- Returns: |
- A tuple (url, nickname, tag) where nickname is a target string. |
- url: URL of the video/audio. |
- nickname: nickname of the video/audio for presentation |
- (such as bear.webm). |
- tag: HTML5 tag for the video/audio. |
- """ |
- for tag, url, nickname, title in compact_list: |
- if target == nickname: |
- return (tag, url, nickname, title) |