ReleaseEngineering/Platforms/Android
NOTE: This is still WIP.
Introduction
Mozilla releases a version of Firefox for Mobile/Platforms/Android Android. Mozilla's Release Engineering team support this initiative with continuous integration systems. This page explains what is involved on all the pieces related to these systems.
Currently, we build on EC2 instances (bld-linux64-ec2-XXX machines) and in-house machines (bld-linux64-ix-XXX machines). We create builds for three different architectures: armv6, armv7 and x86. We run unit tests and performance test differently on each build.
Builds & tests
Armv6
More info needed as to how we build this.
Android 2.2
Jobs: unit tests tests
Setup configuration: Foopies-board setup and fixed allocation (no mozpool).
Hosts: Tegra boards (tegra-XXX)
Scripts: factory.py
Configs: android_panda_releng.py and android_panda_talos_releng.py
Artifacts: SUT agent, watcher
Armv7
For this architecture we build both optimized and debug builds. NOTE: We don't yet run tests on the debug builds.
More info needed as to how we build this.
Android 2.2
Jobs: unit tests tests
Setup configuration: Foopies-board setup and fixed allocation (no mozpool).
Hosts: Tegra boards (tegra-XXX)
Scripts: factory.py
Configs: android_panda_releng.py and android_panda_talos_releng.py
Artifacts: SUT agent, watcher
Android 2.3
This is still WIP.
Jobs: unit tests tests
Setup configuration: Emulator parralellization
Hosts: EC2 Ubuntu 64-bit instances (tst-linux64-spot-XXX or tst-linux64-ec2-XXX).
Scripts: android_emulator_unittest.py
Configs: androidarm.py
Artifacts: SUT agent, watcher, Android emulator, Android SDK, AVD definitions
Android 4.0
Jobs: unit tests' and performance tests
Setup configuration: Foopies-board setup and fixed allocation (no mozpool)
Hosts: PandaES development boards.
Scripts: android_panda.py & android_panda_talos.py
Configs: android_panda_releng.py and android_panda_talos_releng.py
Artifacts: SUT agent, watcher
x86
More info needed as to how we build this.
Android 4.2
Jobs: unit tests
Setup configuration: Emulator parralellization
Hosts: In-house Ubuntu 64-bit hosts (talos-linux64-ix-XXX).
Scripts: android_emulator_unittest.py
Configs: androidarm.py
Artifacts: SUT agent, watcher, Android emulator, Android SDK, AVD definitions
Testing setup configurations
All of our Mobile testing is driven by Mozharness code to the exception of Tegras, which run code from factory.py
Foopy-Board setup
TODO: document
Mozpool allocation
Mozharness uses MozpoolClient to talk to the Mozpool server stack which IT wrote to manage & allocate the Panda boards.
Emulator parallelization
For the Android 2.3 and Android x86 jobs we're using emulator and use multiple ones at a time. Mozharness starts up four Android emulators run on each emulator a different test suite. This means that we can run up to four different test jobs on the same host cutting the load on the pool.
Each emulator starts up with a specific AVD definition that already has the SUT agent and Watcher installed. These AVD definitions are stored on a tar ball, which we store on ToolTool, which we download to the host if it is not already cached. We untar it on *every* job to have a clean state for the emulators to start from. TODO: explain what AVD definitions are. We deploy the Android SDK 18 (TODO add link) with puppet (TODO add link) before the machine starts a job. TODO: finish this u
Artifacts
Android emulator
The emulator that ships in stock SDKs downloaded from AOSP, at http://developer.android.com/sdk/ , contains the newest (and most-debugged) implementation of OpenGL host rendering and ARM emulation (from ARMv5TE through ARMv7A). We therefore use stock emulators.
AVD definition
How to generate the AVD definitions
TODO: add info
Deployment of artifacts
- TODO: Link to how to deploy a new version of the Android SDK
- How to upload a new AVD definition to ToolTool
Hosts involved
TODO: This section should be a page of its own.
Mozpool
TODO: add info
Tegra mobile boards
NOTE: Tegra boards are armv7, however, we can run armv6 builds on it.
These are mobile development boards which are named following this format: tegra-XXX. These boards currently have installed Android 2.2. These boards are located at various locations at the Mountain View office and will be moved to the new Mountain View office. The will be supported until the end of The Tegra boards are driven by Linux hosts called Foopies (TODO link to docs) which run multiple buildbot slave instances (TODO link to docs) named after the tegra boards. More info needed. Add specs.
Panda mobile boards
These are mobile development boards which are named following this format: panda-XXXX. These boards currently have installed Android 4.0. The Panda boards are driven by Linux hosts called Foopies (TODO link to docs) which run multiple buildbot slave instances (TODO link to docs) named after the panda boards. More info needed. Add specs.
Foopies
More info needed. Add specs.
Ubuntu 64-bit in-house test hosts
More info needed. Add specs. These hosts live on scl3, they are made by iX systems, we started buying them on 2013 and they have external graphic cards installed.
Ubuntu 64-bit EC2 test hosts
More info needed.