blob: 3e5c53a49a643e2c7150463b1ac917fa668d9829 [file] [log] [blame]
# Copyright 2017 The Chromium OS 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 logging
import os
from autotest_lib.client.bin import utils
from autotest_lib.client.common_lib import file_utils
from autotest_lib.client.cros import chrome_binary_test
from autotest_lib.client.cros.video import device_capability
from autotest_lib.client.cros.video import helper_logger
DOWNLOAD_BASE = ('http://commondatastorage.googleapis.com'
'/chromiumos-test-assets-public/')
BINARY = 'video_decode_accelerator_unittest'
class video_VDASanity(chrome_binary_test.ChromeBinaryTest):
"""
VDA sanity autotest runs binary video_decode_accelerator_unittest on a list
of videos.
"""
version = 1
@helper_logger.video_log_wrapper
@chrome_binary_test.nuke_chrome
def run_once(self, test_cases, capability):
device_capability.DeviceCapability().ensure_capability(capability)
for (path, width, height, frame_num, frag_num, profile) in test_cases:
video_path = os.path.join(self.bindir, 'video.download')
test_video_data = '%s:%d:%d:%d:%d:%d:%d:%d' % (
video_path, width, height, frame_num, frag_num, 0, 0, profile)
try:
self._download_video(path, video_path)
self._run_test_case(test_video_data)
finally:
self._remove_if_exists(video_path)
def _download_video(self, download_path, local_file):
url = DOWNLOAD_BASE + download_path
logging.info('Downloading "%s" to "%s"', url, local_file)
file_utils.download_file(url, local_file)
def _run_test_case(self, test_video_data):
cmd_line_list = [
'--test_video_data="%s"' % test_video_data,
'--gtest_filter=VideoDecodeAcceleratorTest.NoCrash',
helper_logger.chrome_vmodule_flag(),
'--ozone-platform=gbm',
]
cmd_line = ' '.join(cmd_line_list)
self.run_chrome_test_binary(BINARY, cmd_line)
def _remove_if_exists(self, filepath):
try:
os.remove(filepath)
except OSError:
pass