Bug 793739 - mirror mozbase to m-c for week of Sept 24, 2012 @ b12b008846;r=jhammel

This commit is contained in:
Ed Morley 2012-09-25 09:35:14 -07:00
Родитель 86a811afdc
Коммит 4ebb07022f
7 изменённых файлов: 2741 добавлений и 2516 удалений

Просмотреть файл

@ -19,12 +19,6 @@ import sys
from fnmatch import fnmatch
from optparse import OptionParser
version = '0.5.4' # package version
try:
from setuptools import setup
except:
setup = None
# we need relpath, but it is introduced in python 2.6
# http://docs.python.org/library/os.path.html
try:

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -7,77 +7,77 @@ from devicemanagerSUT import DeviceManagerSUT
import StringIO
class DroidMixin(object):
"""Mixin to extend DeviceManager with Android-specific functionality"""
"""Mixin to extend DeviceManager with Android-specific functionality"""
def launchApplication(self, appName, activityName, intent, url=None,
extras=None):
"""
Launches an Android application
returns:
success: True
failure: False
"""
# only one instance of an application may be running at once
if self.processExist(appName):
return False
def launchApplication(self, appName, activityName, intent, url=None,
extras=None):
"""
Launches an Android application
returns:
success: True
failure: False
"""
# only one instance of an application may be running at once
if self.processExist(appName):
return False
acmd = [ "am", "start", "-W", "-n", "%s/%s" % (appName, activityName)]
acmd = [ "am", "start", "-W", "-n", "%s/%s" % (appName, activityName)]
if intent:
acmd.extend(["-a", intent])
if intent:
acmd.extend(["-a", intent])
if extras:
for (key, val) in extras.iteritems():
if type(val) is int:
extraTypeParam = "--ei"
elif type(val) is bool:
extraTypeParam = "--ez"
else:
extraTypeParam = "--es"
acmd.extend([extraTypeParam, str(key), str(val)])
if extras:
for (key, val) in extras.iteritems():
if type(val) is int:
extraTypeParam = "--ei"
elif type(val) is bool:
extraTypeParam = "--ez"
else:
extraTypeParam = "--es"
acmd.extend([extraTypeParam, str(key), str(val)])
if url:
acmd.extend(["-d", url])
if url:
acmd.extend(["-d", url])
# shell output not that interesting and debugging logs should already
# show what's going on here... so just create an empty memory buffer
# and ignore
shellOutput = StringIO.StringIO()
if self.shell(acmd, shellOutput) == 0:
return True
# shell output not that interesting and debugging logs should already
# show what's going on here... so just create an empty memory buffer
# and ignore
shellOutput = StringIO.StringIO()
if self.shell(acmd, shellOutput) == 0:
return True
return False
return False
def launchFennec(self, appName, intent="android.intent.action.VIEW",
mozEnv=None, extraArgs=None, url=None):
"""
Convenience method to launch Fennec on Android with various debugging
arguments
WARNING: FIXME: This would go better in mozrunner. Please do not
use this method if you are not comfortable with it going away sometime
in the near future
returns:
success: True
failure: False
"""
extras = {}
def launchFennec(self, appName, intent="android.intent.action.VIEW",
mozEnv=None, extraArgs=None, url=None):
"""
Convenience method to launch Fennec on Android with various debugging
arguments
WARNING: FIXME: This would go better in mozrunner. Please do not
use this method if you are not comfortable with it going away sometime
in the near future
returns:
success: True
failure: False
"""
extras = {}
if mozEnv:
# mozEnv is expected to be a dictionary of environment variables: Fennec
# itself will set them when launched
for (envCnt, (envkey, envval)) in enumerate(mozEnv.iteritems()):
extras["env" + str(envCnt)] = envkey + "=" + envval
if mozEnv:
# mozEnv is expected to be a dictionary of environment variables: Fennec
# itself will set them when launched
for (envCnt, (envkey, envval)) in enumerate(mozEnv.iteritems()):
extras["env" + str(envCnt)] = envkey + "=" + envval
# Additional command line arguments that fennec will read and use (e.g.
# with a custom profile)
if extraArgs:
extras['args'] = " ".join(extraArgs)
# Additional command line arguments that fennec will read and use (e.g.
# with a custom profile)
if extraArgs:
extras['args'] = " ".join(extraArgs)
return self.launchApplication(appName, ".App", intent, url=url,
extras=extras)
return self.launchApplication(appName, ".App", intent, url=url,
extras=extras)
class DroidADB(DeviceManagerADB, DroidMixin):
pass
pass
class DroidSUT(DeviceManagerSUT, DroidMixin):
pass
pass

Просмотреть файл

@ -68,13 +68,13 @@ class SUTCli(object):
'help_args': '<remote>',
'help': 'list files on device'
},
'rm': { 'function': lambda file: self.dm.removeFile(file),
'rm': { 'function': lambda f: self.dm.removeFile(f),
'min_args': 1,
'max_args': 1,
'help_args': '<remote>',
'help': 'remove file from device'
},
'rmdir': { 'function': lambda dir: self.dm.removeDir(dir),
'rmdir': { 'function': lambda d: self.dm.removeDir(d),
'min_args': 1,
'max_args': 1,
'help_args': '<remote>',

Просмотреть файл

@ -7,19 +7,32 @@ import socket
import mozdevice
from threading import Thread
import unittest
import sys
import time
class BasicTest(unittest.TestCase):
def _serve_thread(self):
conn, addr = self._sock.accept()
conn.send("$>\x00")
conn = None
while self.commands:
if not conn:
conn, addr = self._sock.accept()
conn.send("$>\x00")
(command, response) = self.commands.pop(0)
data = conn.recv(1024).strip()
self.assertEqual(data, command)
# send response and prompt separately to test for bug 789496
conn.send("%s\n" % response)
conn.send("$>\x00")
# FIXME: Improve the mock agent, since overloading the meaning
# of 'response' is getting confusing.
if response is None:
conn.shutdown(socket.SHUT_RDWR)
conn.close()
conn = None
elif type(response) is int:
time.sleep(response)
else:
conn.send("%s\n" % response)
conn.send("$>\x00")
def _serve(self, commands):
self.commands = commands
@ -37,7 +50,25 @@ class BasicTest(unittest.TestCase):
("cd /mnt/sdcard/tests", ""),
("cwd", "/mnt/sdcard/tests"),
("ver", "SUTAgentAndroid Version XX")])
port = self._sock.getsockname()[1]
mozdevice.DroidSUT.debug = 4
d = mozdevice.DroidSUT("127.0.0.1", port=port)
thread.join()
def test_reconnect(self):
"""Tests DeviceManager initialization."""
self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._sock.bind(("127.0.0.1", 0))
self._sock.listen(1)
thread = self._serve([("testroot", "/mnt/sdcard"),
("cd /mnt/sdcard/tests", ""),
("cwd", None),
("cd /mnt/sdcard/tests", ""),
("cwd", "/mnt/sdcard/tests"),
("ver", "SUTAgentAndroid Version XX")])
port = self._sock.getsockname()[1]
mozdevice.DroidSUT.debug = 4
d = mozdevice.DroidSUT("127.0.0.1", port=port)
@ -60,5 +91,44 @@ class BasicTest(unittest.TestCase):
dm = mozdevice.DroidSUT("127.0.0.1", port=port)
thread.join()
def test_timeout_normal(self):
"""Tests DeviceManager timeout, normal case."""
self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._sock.bind(("127.0.0.1", 0))
self._sock.listen(1)
thread = self._serve([("testroot", "/mnt/sdcard"),
("cd /mnt/sdcard/tests", ""),
("cwd", "/mnt/sdcard/tests"),
("ver", "SUTAgentAndroid Version XX"),
("rm /mnt/sdcard/tests/test.txt", "Removed the file")])
port = self._sock.getsockname()[1]
mozdevice.DroidSUT.debug = 4
d = mozdevice.DroidSUT("127.0.0.1", port=port)
data = d.removeFile('/mnt/sdcard/tests/test.txt')
self.assertEqual(data, "Removed the file")
thread.join()
def test_timeout_timeout(self):
"""Tests DeviceManager timeout, timeout case."""
self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._sock.bind(("127.0.0.1", 0))
self._sock.listen(1)
thread = self._serve([("testroot", "/mnt/sdcard"),
("cd /mnt/sdcard/tests", ""),
("cwd", "/mnt/sdcard/tests"),
("ver", "SUTAgentAndroid Version XX"),
("rm /mnt/sdcard/tests/test.txt", 3)])
port = self._sock.getsockname()[1]
mozdevice.DroidSUT.debug = 4
d = mozdevice.DroidSUT("127.0.0.1", port=port)
d.default_timeout = 1
data = d.removeFile('/mnt/sdcard/tests/test.txt')
self.assertEqual(data, None)
thread.join()
if __name__ == '__main__':
unittest.main()