Commit cc240573 authored by Krystal Loh's avatar Krystal Loh Committed by Chromium LUCI CQ

Add 2-minute src videos and tests to the media story sets.

The new roughness and freezing metrics require longer playback
stories. The memoryMetric is not measured for these stories.

Add measure_memory parameter to allow this to be changed per story
instead of needing a new subclass of _MediaPage.

Reformat code per presubmit checks.

Change-Id: Ia81aaa6a372596b2a27e181413035fe16c4129d6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2594169Reviewed-by: default avatarFrank Liberato <liberato@chromium.org>
Reviewed-by: default avatarJohn Chen <johnchen@chromium.org>
Reviewed-by: default avatarDale Curtis <dalecurtis@chromium.org>
Commit-Queue: Krystal Loh <kxloh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#839139}
parent 4069a6b6
...@@ -31,8 +31,8 @@ kraken,hablich@chromium.org,Blink>JavaScript,, ...@@ -31,8 +31,8 @@ kraken,hablich@chromium.org,Blink>JavaScript,,
load_library_perf_tests,"xhwang@chromium.org, jrummell@chromium.org",Internals>Media>Encrypted,, load_library_perf_tests,"xhwang@chromium.org, jrummell@chromium.org",Internals>Media>Encrypted,,
loading.desktop,"kouhei@chromium.org, ksakamoto@chromium.org",Blink>Loader,https://bit.ly/loading-benchmarks,"abridged,cache_temperature_cold,cache_temperature_warm,international,intl_ar_fa_he,intl_es_fr_pt_BR,intl_hi_ru,intl_ja_zh,intl_ko_th_vi,typical" loading.desktop,"kouhei@chromium.org, ksakamoto@chromium.org",Blink>Loader,https://bit.ly/loading-benchmarks,"abridged,cache_temperature_cold,cache_temperature_warm,international,intl_ar_fa_he,intl_es_fr_pt_BR,intl_hi_ru,intl_ja_zh,intl_ko_th_vi,typical"
loading.mobile,"kouhei@chromium.org, ksakamoto@chromium.org",Blink>Loader,https://bit.ly/loading-benchmarks,"abridged,cache_temperature_cold,cache_temperature_hot,cache_temperature_warm,easy_ttfmp,easy_tti,global,pwa,tough_ttfmp,tough_tti" loading.mobile,"kouhei@chromium.org, ksakamoto@chromium.org",Blink>Loader,https://bit.ly/loading-benchmarks,"abridged,cache_temperature_cold,cache_temperature_hot,cache_temperature_warm,easy_ttfmp,easy_tti,global,pwa,tough_ttfmp,tough_tti"
media.desktop,dalecurtis@chromium.org,Internals>Media,https://chromium.googlesource.com/chromium/src/+/master/docs/speed/benchmark/harnesses/media.md,"aac,audio_only,audio_video,av1,background,beginning_to_end,busyjs,cns,h264,is_4k,is_50fps,mp3,mse,opus,seek,src,video_only,vorbis,vp8,vp9" media.desktop,dalecurtis@chromium.org,Internals>Media,https://chromium.googlesource.com/chromium/src/+/master/docs/speed/benchmark/harnesses/media.md,"aac,audio_only,audio_video,av1,background,beginning_to_end,busyjs,cns,h264,is_2min,is_4k,is_50fps,mp3,mse,opus,seek,src,video_only,vorbis,vp8,vp9"
media.mobile,dalecurtis@chromium.org,Internals>Media,https://chromium.googlesource.com/chromium/src/+/master/docs/speed/benchmark/harnesses/media.md,"aac,audio_only,audio_video,background,beginning_to_end,busyjs,cns,h264,mp3,mse,opus,seek,src,video_only,vorbis,vp9" media.mobile,dalecurtis@chromium.org,Internals>Media,https://chromium.googlesource.com/chromium/src/+/master/docs/speed/benchmark/harnesses/media.md,"aac,audio_only,audio_video,background,beginning_to_end,busyjs,cns,h264,is_2min,mp3,mse,opus,seek,src,video_only,vorbis,vp9"
media_perftests,"liberato@chromium.org, dalecurtis@chromium.org",Internals>Media,, media_perftests,"liberato@chromium.org, dalecurtis@chromium.org",Internals>Media,,
memory.desktop,erikchen@chromium.org,,, memory.desktop,erikchen@chromium.org,,,
octane,hablich@chromium.org,Blink>JavaScript,, octane,hablich@chromium.org,Blink>JavaScript,,
......
...@@ -35,6 +35,7 @@ _PAGE_TAGS_LIST = [ ...@@ -35,6 +35,7 @@ _PAGE_TAGS_LIST = [
# Other filter tags. # Other filter tags.
'is_50fps', 'is_50fps',
'is_4k', 'is_4k',
'is_2min',
# Play action. # Play action.
'seek', 'seek',
'beginning_to_end', 'beginning_to_end',
...@@ -71,8 +72,13 @@ _URL_BASE = 'file://media_cases/' ...@@ -71,8 +72,13 @@ _URL_BASE = 'file://media_cases/'
class _MediaPage(page_module.Page): class _MediaPage(page_module.Page):
def __init__(self, url, page_set, tags, extra_browser_args=None, def __init__(self,
traffic_setting=traffic_setting_module.NONE): url,
page_set,
tags,
extra_browser_args=None,
traffic_setting=traffic_setting_module.NONE,
measure_memory=True):
name = url.split('/')[-1] name = url.split('/')[-1]
if traffic_setting != traffic_setting_module.NONE: if traffic_setting != traffic_setting_module.NONE:
name += '_' + _TRAFFIC_SETTING_NAMES[traffic_setting] name += '_' + _TRAFFIC_SETTING_NAMES[traffic_setting]
...@@ -85,6 +91,7 @@ class _MediaPage(page_module.Page): ...@@ -85,6 +91,7 @@ class _MediaPage(page_module.Page):
url=url, page_set=page_set, tags=tags, name=name, url=url, page_set=page_set, tags=tags, name=name,
extra_browser_args=extra_browser_args, extra_browser_args=extra_browser_args,
traffic_setting=traffic_setting) traffic_setting=traffic_setting)
self._measure_memory = measure_memory
def GetExtraTracingMetrics(self): def GetExtraTracingMetrics(self):
metrics = super(_MediaPage, self).GetExtraTracingMetrics() metrics = super(_MediaPage, self).GetExtraTracingMetrics()
...@@ -100,7 +107,7 @@ class _MediaPage(page_module.Page): ...@@ -100,7 +107,7 @@ class _MediaPage(page_module.Page):
Memory dumps are cpu-intensive, so it is reasonable keep it off in Memory dumps are cpu-intensive, so it is reasonable keep it off in
some cases to avoid skewing cpu usage measurements. some cases to avoid skewing cpu usage measurements.
""" """
return True return self._measure_memory
class _BeginningToEndPlayPage(_MediaPage): class _BeginningToEndPlayPage(_MediaPage):
...@@ -108,16 +115,26 @@ class _BeginningToEndPlayPage(_MediaPage): ...@@ -108,16 +115,26 @@ class _BeginningToEndPlayPage(_MediaPage):
def __init__(self, url, page_set, tags, extra_browser_args=None, def __init__(self, url, page_set, tags, extra_browser_args=None,
traffic_setting=traffic_setting_module.NONE): traffic_setting=traffic_setting_module.NONE):
if 'is_2min' in tags:
self._ended_timeout = 140
measure_memory = False
else:
self._ended_timeout = 60
measure_memory = True
tags.append('beginning_to_end') tags.append('beginning_to_end')
tags.append('src') tags.append('src')
super(_BeginningToEndPlayPage, self).__init__( super(_BeginningToEndPlayPage,
url, page_set, tags, extra_browser_args, self).__init__(url,
traffic_setting=traffic_setting) page_set,
tags,
extra_browser_args,
traffic_setting=traffic_setting,
measure_memory=measure_memory)
def RunPageInteractions(self, action_runner): def RunPageInteractions(self, action_runner):
# Play the media until it has finished or it times out. # Play the media until it has finished or it times out.
action_runner.PlayMedia(playing_event_timeout_in_seconds=60, action_runner.PlayMedia(playing_event_timeout_in_seconds=60,
ended_event_timeout_in_seconds=60) ended_event_timeout_in_seconds=self._ended_timeout)
# Generate memory dump for memoryMetric. # Generate memory dump for memoryMetric.
if self.ShouldMeasureMemory(): if self.ShouldMeasureMemory():
action_runner.MeasureMemory() action_runner.MeasureMemory()
...@@ -199,8 +216,11 @@ class _MSEPage(_MediaPage): ...@@ -199,8 +216,11 @@ class _MSEPage(_MediaPage):
assert number_of_runs >= 1 assert number_of_runs >= 1
self._number_of_runs = number_of_runs self._number_of_runs = number_of_runs
tags.append('mse') tags.append('mse')
super(_MSEPage, self).__init__( super(_MSEPage, self).__init__(url,
url, page_set, tags, extra_browser_args) page_set,
tags,
extra_browser_args,
measure_memory=False)
def RunPageInteractions(self, action_runner): def RunPageInteractions(self, action_runner):
# The page automatically runs the test at load time. # The page automatically runs the test at load time.
...@@ -220,9 +240,6 @@ class _MSEPage(_MediaPage): ...@@ -220,9 +240,6 @@ class _MSEPage(_MediaPage):
if test_failed: if test_failed:
raise RuntimeError(action_runner.EvaluateJavaScript('window.__testError')) raise RuntimeError(action_runner.EvaluateJavaScript('window.__testError'))
def ShouldMeasureMemory(self):
return False
def _GetDesktopOnlyMediaPages(page_set): def _GetDesktopOnlyMediaPages(page_set):
return [ return [
...@@ -245,110 +262,107 @@ def _GetCrossPlatformMediaPages(page_set): ...@@ -245,110 +262,107 @@ def _GetCrossPlatformMediaPages(page_set):
return [ return [
# 1080p 50fps crowd test cases. High non-60fps frame rate is good for # 1080p 50fps crowd test cases. High non-60fps frame rate is good for
# finding rendering and efficiency regressions. # finding rendering and efficiency regressions.
_BeginningToEndPlayPage( _BeginningToEndPlayPage(url=_URL_BASE + 'video.html?src=crowd1080.webm',
url=_URL_BASE + 'video.html?src=crowd1080.webm', page_set=page_set,
page_set=page_set, tags=['is_50fps', 'vp8', 'vorbis',
tags=['is_50fps', 'vp8', 'vorbis', 'audio_video']), 'audio_video']),
_BeginningToEndPlayPage( _BeginningToEndPlayPage(url=_URL_BASE + 'video.html?src=crowd1080.mp4',
url=_URL_BASE + 'video.html?src=crowd1080.mp4', page_set=page_set,
page_set=page_set, tags=['is_50fps', 'h264', 'aac', 'audio_video']),
tags=['is_50fps', 'h264', 'aac', 'audio_video']), _BeginningToEndPlayPage(url=_URL_BASE +
_BeginningToEndPlayPage( 'video.html?src=crowd1080_vp9.webm',
url=_URL_BASE + 'video.html?src=crowd1080_vp9.webm', page_set=page_set,
page_set=page_set, tags=['is_50fps', 'vp9', 'video_only']),
tags=['is_50fps', 'vp9', 'video_only']),
# Audio only test cases. MP3 and OGG are important to test since they are # Audio only test cases. MP3 and OGG are important to test since they are
# unstructured containers and thus are prone to efficiency regressions. # unstructured containers and thus are prone to efficiency regressions.
_BeginningToEndPlayPage( _BeginningToEndPlayPage(url=_URL_BASE +
url=_URL_BASE + 'video.html?src=tulip2.ogg&type=audio', 'video.html?src=tulip2.ogg&type=audio',
page_set=page_set, page_set=page_set,
tags=['vorbis', 'audio_only']), tags=['vorbis', 'audio_only']),
_BeginningToEndPlayPage( _BeginningToEndPlayPage(url=_URL_BASE +
url=_URL_BASE + 'video.html?src=tulip2.mp3&type=audio', 'video.html?src=tulip2.mp3&type=audio',
page_set=page_set, page_set=page_set,
tags=['mp3', 'audio_only']), tags=['mp3', 'audio_only']),
_BeginningToEndPlayPage( _BeginningToEndPlayPage(url=_URL_BASE +
url=_URL_BASE + 'video.html?src=tulip2.m4a&type=audio', 'video.html?src=tulip2.m4a&type=audio',
page_set=page_set, page_set=page_set,
tags=['aac', 'audio_only']), tags=['aac', 'audio_only']),
# Baseline + busyjs test. # Baseline + busyjs test.
_BeginningToEndPlayPage( _BeginningToEndPlayPage(url=_URL_BASE + 'video.html?src=tulip2.mp4',
url=_URL_BASE + 'video.html?src=tulip2.mp4', page_set=page_set,
page_set=page_set, tags=['h264', 'aac', 'audio_video']),
tags=['h264', 'aac', 'audio_video']), _BeginningToEndPlayPage(url=_URL_BASE +
_BeginningToEndPlayPage( 'video.html?src=tulip2.mp4&busyjs',
url=_URL_BASE + 'video.html?src=tulip2.mp4&busyjs', page_set=page_set,
page_set=page_set, tags=['h264', 'aac', 'audio_video', 'busyjs']),
tags=['h264', 'aac', 'audio_video', 'busyjs']),
# Baseline + WiFi test. # Baseline + WiFi test.
_BeginningToEndPlayPage( _BeginningToEndPlayPage(url=_URL_BASE + 'video.html?src=tulip2.vp9.webm',
url=_URL_BASE + 'video.html?src=tulip2.vp9.webm', page_set=page_set,
page_set=page_set, tags=['vp9', 'opus', 'audio_video']),
tags=['vp9', 'opus', 'audio_video']), _BeginningToEndPlayPage(url=_URL_BASE + 'video.html?src=tulip2.vp9.webm',
_BeginningToEndPlayPage( page_set=page_set,
url=_URL_BASE + 'video.html?src=tulip2.vp9.webm', tags=['vp9', 'opus', 'audio_video'],
page_set=page_set, traffic_setting=traffic_setting_module.WIFI),
tags=['vp9', 'opus', 'audio_video'],
traffic_setting=traffic_setting_module.WIFI), # Longer 2-minute tests.
_BeginningToEndPlayPage(url=_URL_BASE +
'video.html?src=foodmarket_720p30fps.mp4',
page_set=page_set,
tags=['is_2min', 'h264', 'aac', 'audio_video']),
_BeginningToEndPlayPage(url=_URL_BASE +
'video.html?src=boat_1080p60fps_vp9.webm',
page_set=page_set,
tags=['is_2min', 'vp9', 'opus', 'audio_video']),
# Seek tests in MP3 and OGG are important since they don't have seek # Seek tests in MP3 and OGG are important since they don't have seek
# indices and thus show off efficiency regressions easily. # indices and thus show off efficiency regressions easily.
_SeekPage( _SeekPage(url=_URL_BASE + 'video.html?src=tulip2.ogg&type=audio&seek',
url=_URL_BASE + 'video.html?src=tulip2.ogg&type=audio&seek', page_set=page_set,
page_set=page_set, tags=['vorbis', 'audio_only']),
tags=['vorbis', 'audio_only']), _SeekPage(url=_URL_BASE + 'video.html?src=tulip2.mp3&type=audio&seek',
_SeekPage( page_set=page_set,
url=_URL_BASE + 'video.html?src=tulip2.mp3&type=audio&seek', tags=['mp3', 'audio_only']),
page_set=page_set,
tags=['mp3', 'audio_only']),
# High resolution seek test cases which will exaggerate any decoding # High resolution seek test cases which will exaggerate any decoding
# efficiency or buffering regressions. # efficiency or buffering regressions.
_SeekPage( _SeekPage(url=_URL_BASE + 'video.html?src=garden2_10s.webm&seek',
url=_URL_BASE + 'video.html?src=garden2_10s.webm&seek', page_set=page_set,
page_set=page_set, tags=['is_4k', 'vp8', 'vorbis', 'audio_video']),
tags=['is_4k', 'vp8', 'vorbis', 'audio_video']), _SeekPage(url=_URL_BASE + 'video.html?src=garden2_10s.mp4&seek',
_SeekPage( page_set=page_set,
url=_URL_BASE + 'video.html?src=garden2_10s.mp4&seek', tags=['is_4k', 'h264', 'aac', 'audio_video']),
page_set=page_set, _SeekPage(url=(_URL_BASE + 'video.html?src='
tags=['is_4k', 'h264', 'aac', 'audio_video']), 'smpte_3840x2160_60fps_vp9.webm&seek'),
_SeekPage( page_set=page_set,
url=(_URL_BASE + 'video.html?src=' tags=['is_4k', 'vp9', 'video_only'],
'smpte_3840x2160_60fps_vp9.webm&seek'), action_timeout_in_seconds=120),
page_set=page_set,
tags=['is_4k', 'vp9', 'video_only'],
action_timeout_in_seconds=120),
# Basic test that ensures background playback works properly. # Basic test that ensures background playback works properly.
_BackgroundPlaybackPage( _BackgroundPlaybackPage(url=_URL_BASE +
url=_URL_BASE + 'video.html?src=tulip2.vp9.webm&background', 'video.html?src=tulip2.vp9.webm&background',
page_set=page_set, page_set=page_set,
tags=['vp9', 'opus', 'audio_video']), tags=['vp9', 'opus', 'audio_video']),
# Basic MSE test pages for common configurations. Note: By default the # Basic MSE test pages for common configurations. Note: By default the
# test will only append the first 128k of the specified files, so when # test will only append the first 128k of the specified files, so when
# adding tests ensure that is enough to trigger a timeupdate event. If not # adding tests ensure that is enough to trigger a timeupdate event. If not
# you'll need to specify an additional appendSize parameter. # you'll need to specify an additional appendSize parameter.
_MSEPage( _MSEPage(url=_URL_BASE + 'mse.html?media=aac_audio.mp4,h264_video.mp4',
url=_URL_BASE + 'mse.html?media=aac_audio.mp4,h264_video.mp4', page_set=page_set,
page_set=page_set, tags=['h264', 'aac', 'audio_video']),
tags=['h264', 'aac', 'audio_video']), _MSEPage(url=_URL_BASE + 'mse.html?media=tulip2.vp9.webm',
_MSEPage( page_set=page_set,
url=_URL_BASE + 'mse.html?media=tulip2.vp9.webm', tags=['vp9', 'opus', 'audio_video']),
page_set=page_set, _MSEPage(url=_URL_BASE + 'mse.html?media=aac_audio.mp4',
tags=['vp9', 'opus', 'audio_video']), page_set=page_set,
_MSEPage( tags=['aac', 'audio_only']),
url=_URL_BASE + 'mse.html?media=aac_audio.mp4', _MSEPage(url=_URL_BASE + 'mse.html?media=h264_video.mp4',
page_set=page_set, page_set=page_set,
tags=['aac', 'audio_only']), tags=['h264', 'video_only']),
_MSEPage( ]
url=_URL_BASE + 'mse.html?media=h264_video.mp4',
page_set=page_set,
tags=['h264', 'video_only']),
]
class _MediaCasesStorySet(story.StorySet): class _MediaCasesStorySet(story.StorySet):
......
6e8ab4f05ac3fee68e89b860beeed1cf882c8f5d
\ No newline at end of file
f767cee6477fc4065145ed4b8c7c52d13350069b
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment