1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import logging
6import os
7from autotest_lib.client.bin import utils
8from autotest_lib.client.common_lib import error
9from autotest_lib.client.cros import chrome_binary_test
10from autotest_lib.client.cros.video import helper_logger
11
12class video_VideoDecodeAccelerator(chrome_binary_test.ChromeBinaryTest):
13    """
14    This test is a wrapper of the chrome unittest binary:
15    video_decode_accelerator_unittest.
16    """
17
18    version = 1
19    binary = 'video_decode_accelerator_unittest'
20
21    @helper_logger.video_log_wrapper
22    @chrome_binary_test.nuke_chrome
23    def run_once(self, videos, use_cr_source_dir=True, gtest_filter=None):
24        """
25        Runs video_decode_accelerator_unittest on the videos.
26
27        @param videos: The test videos for video_decode_accelerator_unittest.
28        @param use_cr_source_dir:  Videos are under chrome source directory.
29        @param gtest_filter: test case filter.
30
31        @raises: error.TestFail for video_decode_accelerator_unittest failures.
32        """
33        logging.debug('Starting video_VideoDecodeAccelerator: %s', videos)
34
35        if use_cr_source_dir:
36            path = os.path.join(self.cr_source_dir, 'media', 'test', 'data', '')
37        else:
38            path = ''
39
40        last_test_failure = None
41        for video in videos:
42            cmd_line_list = ['--test_video_data="%s%s"' % (path, video)]
43
44            # While thumbnail test fails, write thumbnail image to results
45            # directory so that it will be accessible to host and packed
46            # along with test logs.
47            cmd_line_list.append(
48                '--thumbnail_output_dir="%s"' % self.resultsdir)
49            cmd_line_list.append(helper_logger.chrome_vmodule_flag())
50            cmd_line_list.append('--ozone-platform=gbm')
51
52            if gtest_filter:
53                cmd_line_list.append('--gtest_filter="%s"' % gtest_filter)
54
55            cmd_line = ' '.join(cmd_line_list)
56            try:
57                self.run_chrome_test_binary(self.binary, cmd_line)
58            except error.TestFail as test_failure:
59                # Continue to run the remaining test videos and raise
60                # the last failure after finishing all videos.
61                logging.error('%s: %s', video, test_failure.message)
62                last_test_failure = test_failure
63
64        if last_test_failure:
65            raise last_test_failure
66