Permalink
Browse files

Bug 755473 - Add convenience script to launch qemu and navigate to a …

…url, a=test-only, DONTBUILD because NPOTB
  • Loading branch information...
jonallengriffin committed May 21, 2012
1 parent 171981f commit f4e022514787a0870b83aaa4a2398405c48294f6
@@ -4,4 +4,5 @@
from marionette import Marionette, HTMLElement
from marionette_test import MarionetteTestCase
+from emulator import Emulator
@@ -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)
+
@@ -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 $@
+

0 comments on commit f4e0225

Please sign in to comment.