blob: 7174e69d9302e1d54319802ad9f043befc481f83 [file] [log] [blame]
# Copyright (c) 2012 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 os, re, shutil, sys, time
from autotest_lib.client.bin import test, utils
from autotest_lib.client.common_lib import error
from autotest_lib.client.cros import cros_ui_test, dns_server, httpd
WARMUP_TIME = 30
SLEEP_DURATION = 90
GTALK_LOG_PATH = '/tmp/gtalkplugin.log'
class realtimecomm_GTalkAudioPlayground(cros_ui_test.UITest):
version = 1
dep = 'realtimecomm_playground'
def setup(self):
self.playground = os.path.join(self.autodir, 'playground')
self.job.setup_dep([self.dep])
def initialize(self, creds=None):
self.dep_dir = os.path.join(self.autodir, 'deps', self.dep)
# Start local HTTP server to serve playground.
self._test_server = httpd.HTTPListener(
port=80, docroot=os.path.join(self.dep_dir, 'src'))
self._test_server.run()
# We need the initialize call to use empty creds (a guest account)
# so that the auth service isn't started on port 80, preventing
# the server we are trying to run from binding to the same port.
super(realtimecomm_GTalkAudioPlayground, self).initialize(creds=None)
# Since the DNS redirection is only activated implicitly when the
# auth service is used, start it up explicitly.
self._dnsServer = dns_server.LocalDns()
self._dnsServer.run()
def cleanup(self):
self._test_server.stop()
super(realtimecomm_GTalkAudioPlayground, self).cleanup()
def run_verification(self):
if not os.path.exists(GTALK_LOG_PATH):
raise error.TestFail('GTalk log file not exist!')
content = utils.read_file(GTALK_LOG_PATH)
if not "voice state, recv=1 send=1" in content:
raise error.TestFail('Error in Audio send/recv!')
def run_once(self):
sys.path.append(self.dep_dir)
import pgutil
self.performance_results = {}
pgutil.cleanup_playground(self.playground)
pgutil.setup_playground(
os.path.join(self.dep_dir, 'src'), self.playground,
os.path.join(self.bindir, 'options'))
try:
# Launch Playground
pyauto_timeout_changer = self.pyauto.ActionTimeoutChanger(
self.pyauto, 10000)
# This will be redirected to localhost, via DNS redirection
self.pyauto.NavigateToURL('http://fake.corp.google.com/?callType=a')
del pyauto_timeout_changer
# Collect ctime,stime for GoogleTalkPlugin
time.sleep(WARMUP_TIME)
gtalk_s = pgutil.get_utime_stime(
pgutil.get_pids('GoogleTalkPlugin'))
time.sleep(SLEEP_DURATION)
gtalk_e = pgutil.get_utime_stime(
pgutil.get_pids('GoogleTalkPlugin'))
self.performance_results['ctime_gtalk'] = \
pgutil.get_cpu_usage(SLEEP_DURATION, gtalk_e[0] - gtalk_s[0])
self.performance_results['stime_gtalk'] = \
pgutil.get_cpu_usage(SLEEP_DURATION, gtalk_e[1] - gtalk_s[1])
# Verify log
self.run_verification()
finally:
pgutil.cleanup_playground(self.playground, True)
# Report perf
self.write_perf_keyval(self.performance_results)