Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Unified Diff: client/site_tests/realtimecomm_GTalkPlayground/realtimecomm_GTalkPlayground.py

Issue 1224003: Add dep for playground (Closed)
Patch Set: Improvement from codereview Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « client/deps/realtimecomm_playground/realtimecomm_playground.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/site_tests/realtimecomm_GTalkPlayground/realtimecomm_GTalkPlayground.py
diff --git a/client/site_tests/realtimecomm_GTalkPlayground/realtimecomm_GTalkPlayground.py b/client/site_tests/realtimecomm_GTalkPlayground/realtimecomm_GTalkPlayground.py
index 7dfbc5179696bad2be94dd24cfafc18854b3ae13..ee0e7b02f82bda09c37e761bd643e10db859e5fb 100755
--- a/client/site_tests/realtimecomm_GTalkPlayground/realtimecomm_GTalkPlayground.py
+++ b/client/site_tests/realtimecomm_GTalkPlayground/realtimecomm_GTalkPlayground.py
@@ -2,7 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import os, re, shutil, time
+import os, re, shutil, sys, time
from autotest_lib.client.bin import test, utils
from autotest_lib.client.common_lib import error, site_ui
@@ -10,82 +10,31 @@ from autotest_lib.client.common_lib import error, site_ui
WARMUP_TIME = 60
SLEEP_DURATION = 260
-def get_pids(program_name):
- """
- Collect a list of pids for all the instances of a program.
-
- @param program_name the name of the program
- @return list of pids
- """
- # pgrep is not appropriate here due to its truncation.
- return utils.system_output("ps -ef | grep \'%s\' | grep -v grep | \
- awk '{print $2}'" % program_name).split("\n")
-
-
-def get_number_of_logical_cpu():
- """
- From /proc/stat/.
-
- @return number of logic cpu
- """
- ret = utils.system_output("cat /proc/stat | grep ^cpu[0-9+] | wc -l")
- return int(ret)
-
-
-def get_utime_stime(pids):
- """
- Snapshot the sum of utime and the sum of stime for a list of processes.
-
- @param pids a list of pid
- @return [sum_of_utime, sum_of_stime]
- """
- timelist = [0, 0]
- for p in pids:
- statFile = file("/proc/%s/stat" % p, "r")
- T = statFile.readline().split(" ")[13:15]
- statFile.close()
- for i in range(len(timelist)):
- timelist[i] = timelist[i] + int(T[i])
- return timelist
-
-
-def get_cpu_usage(duration, time):
- """
- Calculate cpu usage based on duration and time on cpu.
-
- @param duration
- @param time on cpu
- @return cpu usage
- """
- return float(time) / float(duration * get_number_of_logical_cpu())
-
-
class realtimecomm_GTalkPlayground(test.test):
version = 1
playground = '/home/chronos/playground'
+ dep = 'realtimecomm_playground'
- # The tarball is created from GTalk Playground.
- # https://sites.google.com/a/google.com/wavelet/Home/video-playground
- def setup(self, tarball='GTalkPlayground.tar.gz'):
- if os.path.exists(self.playground):
- utils.system('rm -rf %s' % self.playground)
- tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir)
- utils.extract_tarball_to_dir(tarball, self.srcdir)
-
+ def setup(self):
+ self.job.setup_dep(['realtimecomm_playground'])
- def run_cleanup(self):
+ def run_cleanup(self, testdone=False):
utils.run('pkill chrome', ignore_status=True)
time.sleep(10)
utils.run('pkill GoogleTalkPlugin', ignore_status=True)
time.sleep(10)
utils.run('rm -f /tmp/tmp.log', ignore_status=True)
- utils.run('rm -rf %s' % self.playground)
+ if testdone:
+ utils.run('rm -rf %s' % self.playground)
# Delete previous browser state if any
shutil.rmtree('/home/chronos/.config/chromium', ignore_errors=True)
+ shutil.rmtree('/home/chronos/.config/google-chrome', ignore_errors=True)
def run_setup(self):
- utils.run('cp -r %s %s' % (self.srcdir, self.playground))
+ if os.path.exists(self.playground):
+ shutil.rmtree(self.playground)
+ shutil.copytree(os.path.join(self.dep_dir, 'src'), self.playground)
utils.run('chown chronos %s -R' % self.playground)
src_opt = os.path.join(self.bindir, 'options')
des_path= '/home/chronos/.Google/'
@@ -129,7 +78,7 @@ class realtimecomm_GTalkPlayground(test.test):
# We run for 5 mins, and should get around (5 * 60/10) * 2 = 60
# framerate reports for 2 streams.
# Ignore the first and last framerate since they are not accurate.
- l = re.findall(r"Decoded framerate \((.*)\): (\d+\.?\d*) fps", log)
+ l = re.findall(r"Rendered framerate \((.*)\): (\d+\.?\d*) fps", log)
if len(l) < 57:
raise error.TestFail('Error in Video duration!')
for i in range(1, len(l) - 1):
@@ -145,9 +94,16 @@ class realtimecomm_GTalkPlayground(test.test):
fps.insert(0, d[k] * 2 / (len(l) - 2))
self.performance_results['fps_gtalk_up'] = max(fps[0], fps[1])
self.performance_results['fps_gtalk_down'] = min(fps[0], fps[1])
+ # Very low framerate means something wrong. Video hang or crash.
+ if (min(fps[0], fps[1]) < 5.0):
+ raise error.TestFail('Error in Video framerate.')
def run_once(self):
+ self.dep_dir = os.path.join(self.autodir, 'deps', self.dep)
+ sys.path.append(self.dep_dir)
+ import pgutil
+
self.performance_results = {}
self.run_cleanup()
self.run_setup()
@@ -169,26 +125,26 @@ class realtimecomm_GTalkPlayground(test.test):
# Collect ctime,stime for GoogleTalkPlugin
time.sleep(WARMUP_TIME)
- gtalk_s = get_utime_stime(get_pids('GoogleTalkPlugin'))
- chrome_s = get_utime_stime(get_pids('chrome/chrome'))
+ gtalk_s = pgutil.get_utime_stime(pgutil.get_pids('GoogleTalkPlugin'))
+ chrome_s = pgutil.get_utime_stime(pgutil.get_pids('chrome/chrome'))
time.sleep(SLEEP_DURATION)
- gtalk_e = get_utime_stime(get_pids('GoogleTalkPlugin'))
- chrome_e = get_utime_stime(get_pids('chrome/chrome'))
+ gtalk_e = pgutil.get_utime_stime(pgutil.get_pids('GoogleTalkPlugin'))
+ chrome_e = pgutil.get_utime_stime(pgutil.get_pids('chrome/chrome'))
self.performance_results['ctime_gtalk'] = \
- get_cpu_usage(SLEEP_DURATION, gtalk_e[0] - gtalk_s[0])
+ pgutil.get_cpu_usage(SLEEP_DURATION, gtalk_e[0] - gtalk_s[0])
self.performance_results['stime_gtalk'] = \
- get_cpu_usage(SLEEP_DURATION, gtalk_e[1] - gtalk_s[1])
+ pgutil.get_cpu_usage(SLEEP_DURATION, gtalk_e[1] - gtalk_s[1])
self.performance_results['ctime_chrome'] = \
- get_cpu_usage(SLEEP_DURATION, chrome_e[0] - chrome_s[0])
+ pgutil.get_cpu_usage(SLEEP_DURATION, chrome_e[0] - chrome_s[0])
self.performance_results['stime_chrome'] = \
- get_cpu_usage(SLEEP_DURATION, chrome_e[1] - chrome_s[1])
+ pgutil.get_cpu_usage(SLEEP_DURATION, chrome_e[1] - chrome_s[1])
# Verify log
try:
self.run_verification()
finally:
- self.run_cleanup()
+ self.run_cleanup(True)
# Report perf
self.write_perf_keyval(self.performance_results)
« no previous file with comments | « client/deps/realtimecomm_playground/realtimecomm_playground.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698