| Index: client/site_tests/audiovideo_FFMPEG/audiovideo_FFMPEG.py
|
| diff --git a/client/site_tests/audiovideo_FFMPEG/audiovideo_FFMPEG.py b/client/site_tests/audiovideo_FFMPEG/audiovideo_FFMPEG.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..699af5a5890fd0c457d4eb2a420923727335b85c
|
| --- /dev/null
|
| +++ b/client/site_tests/audiovideo_FFMPEG/audiovideo_FFMPEG.py
|
| @@ -0,0 +1,71 @@
|
| +# Copyright (c) 2010 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 glob, logging, os, re, stat, time, urllib
|
| +
|
| +from autotest_lib.client.bin import test
|
| +from autotest_lib.client.common_lib import error, utils
|
| +
|
| +class audiovideo_FFMPEG(test.test):
|
| + version = 1
|
| +
|
| + def run_once(self):
|
| + """ Run FFMPEG performance test! """
|
| + # fetch all the test cases from file.
|
| + testcases = os.path.join(self.bindir, "testcases")
|
| + self.performance_results = {}
|
| + for line in open(testcases, "rt"):
|
| + # skip comment line and blank line
|
| + line = line.rstrip()
|
| + if len(line) == 0: continue
|
| + if line[0] == "#": continue
|
| + # run each test cases
|
| + testcase = line.split()
|
| + self.run_testcase(testcase)
|
| + self.write_perf_keyval(self.performance_results)
|
| +
|
| +
|
| + def run_testcase(self, testcase):
|
| + executable = os.path.join(self.bindir, "ffmpeg_tests.i686")
|
| + file_url = testcase[0]
|
| +
|
| + # TODO(jiesun): if url is not local, grab it from internet.
|
| + if file_url.startswith("http"):
|
| + file_name = file_url.split('/')[-1]
|
| + file_path = os.path.join(self.bindir, file_name)
|
| + logging.info("Retrieving %s" % file_url)
|
| + urllib.urlretrieve(file_url, file_path)
|
| + logging.info("Done.")
|
| + else:
|
| + # if url is local, we assume it is in the same directory.
|
| + file_name = file_url;
|
| + file_path = os.path.join(self.bindir, file_name)
|
| +
|
| + if not os.path.exists(file_path):
|
| + raise error.TestError("ffmpeg_tests: test media missing %s!"
|
| + % file_url)
|
| +
|
| + command_line = ("LD_LIBRARY_PATH=/opt/google/chrome/ %s %s"
|
| + % (executable, file_path))
|
| + logging.info("Running %s" % command_line)
|
| +
|
| + cpu_usage, stdout = utils.get_cpu_percentage(
|
| + utils.system_output,
|
| + command_line,
|
| + retain_output=True)
|
| +
|
| + # what's the fps we measures.
|
| + fps_pattern = re.search(r"FPS:\s+([\d\.]+)", stdout)
|
| + if fps_pattern is None:
|
| + raise error.TestFail("ffmpeg_tests failed to exit normally!")
|
| + fps = float(fps_pattern.group(1))
|
| + cpu_usage *= 100.0 # in percentage.
|
| + logging.info("Cpu Usage %s%%; FPS: %s" % (cpu_usage, fps))
|
| +
|
| + # record the performance data for future analysis.
|
| + self.performance_results['fps_' + file_name] = fps
|
| + self.performance_results['cpuusage_' + file_name] = cpu_usage
|
| +
|
| + # TODO(jiesun/fbarchard): what else need to be checked?
|
| +
|
|
|