Bug 755473 - Add convenience script to launch qemu and navigate to a url, a=test-only, DONTBUILD because NPOTB

This commit is contained in:
Jonathan Griffin 2012-05-21 13:41:55 -07:00
parent 33ea1c8251
commit a526261c6a
3 changed files with 105 additions and 0 deletions

View File

@ -4,4 +4,5 @@
from marionette import Marionette, HTMLElement
from marionette_test import MarionetteTestCase
from emulator import Emulator

View File

@ -0,0 +1,42 @@
from marionette import Marionette, Emulator
from optparse import OptionParser
def runemulator(homedir=None, url=None, pidfile=None, arch='x86'):
qemu = Emulator(homedir=homedir, arch=arch)
qemu.start()
port = qemu.setup_port_forwarding(2828)
assert(qemu.wait_for_port())
if pidfile:
f = open(pidfile, 'w')
f.write("%d" % qemu.proc.pid)
f.close()
print 'emulator launched, pid:', qemu.proc.pid
if url:
marionette = Marionette(port=port)
marionette.start_session()
marionette.navigate(url)
marionette.delete_session()
if __name__ == '__main__':
parser = OptionParser()
parser.add_option('--repo', dest='repo_path', action='store',
help='directory of the B2G repo')
parser.add_option('--arch', dest='arch', action='store',
default='x86',
help='the emulator cpu architecture (x86 or arm)')
parser.add_option('--url', dest='url', action='store',
help='url to navigate to after launching emulator')
parser.add_option('--pidfile', dest='pidfile', action='store',
help='file in which to store emulator pid')
options, args = parser.parse_args()
if not options.repo_path:
raise Exception ("must specify the --repo /path/to/B2G/repo argument")
runemulator(homedir=options.repo_path,
url=options.url,
pidfile=options.pidfile,
arch=options.arch)

View File

@ -0,0 +1,62 @@
#!/bin/bash
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
# Marionette requires Python 2.7, so the first parameter to this script
# should be the path to that.
PYTHON=$1
if [ -z "${PYTHON}" ]
then
echo "No python found"
exit 1
fi
# Determine the absolute path of our location.
echo $0
echo `dirname $0`
echo $PWD
SCRIPTS_HOME=`dirname $0`
cd $SCRIPTS_HOME
cd ..
MARIONETTE_HOME=`dirname $PWD`
echo "Detected Marionette home in $MARIONETTE_HOME"
# If a GECKO_OBJDIR environemnt variable exists, we will create the Python
# virtual envirnoment there. Otherwise we create it in the PWD.
VENV_DIR="runemu_venv"
if [ -z $GECKO_OBJDIR ]
then
VENV_DIR="$MARIONETTE_HOME/$VENV_DIR"
else
VENV_DIR="$GECKO_OBJDIR/$VENV_DIR"
fi
# Check if environment exists, if not, create a virtualenv:
if [ -d $VENV_DIR ]
then
echo "Using virtual environment in $VENV_DIR"
cd $VENV_DIR
. bin/activate
else
echo "Creating a virtual environment in $VENV_DIR"
curl https://raw.github.com/pypa/virtualenv/develop/virtualenv.py | ${PYTHON} - $VENV_DIR
cd $VENV_DIR
. bin/activate
# set up mozbase
git clone git://github.com/mozilla/mozbase.git
cd mozbase
python setup_development.py
fi
# update the marionette_client
cd $MARIONETTE_HOME
python setup.py develop
cd marionette
# pop off the python parameter
shift
cd scripts
python runemu.py $@