Hi All,

We keep having problems with various of the platforms that our
developers are using aren't working. The problems range from that
application launching doesn't work, all the way to that the builds
don't even compile.

This is a really bad problem and one we have to fix *now*. Long term
solutions aren't interesting since this is actively preventing people
from writing code and fixing blockers.

To fix this, we need to identify which platforms that developers are
actually relying on, and then ensure that we have tests that are at
least covering the basics of a running build. As much as possible
these tests should be running on every single checkin to any of the
relevant source trees so that when something breaks, it's detected and
immediately backed out. For now, the best tool that we have for doing
this is TBPL. Other test suites are simply not run when for example
someone checks in a gecko change. So TBPL has to be our main test
runner for automated tests.

A group of developers that work on various parts of the code (gaia,
gecko and gonk) got together this week to try to bootstrap this
conversation. This email is intended to broaden that conversation.

A few ground rules:
* We have very limited resources as far as getting automated tests up
and running. So we should be very picky about which platforms that we
choose to maintain. And we should prioritize them for maximum bang for
our buck.
* We can't rely on things that are planning to be fixed a few months
out. We need to get in good shape with this *now*. Discussions about
what to do long term are off topic for this thread. But please do
start separate thread about them.
* We should first focus on standing up tests on
mozilla-central+gaia-master. When we have that done, we should look at
adding support for other branches that are still being actively
developed.


The platforms that we concluded are currently relevant to support are:

***B2G-desktop out-of-process***
Used by gecko devs that are testing and developing out-of-process
APIs. I.e. most of our gecko devs.
Need to support both optimized and debug builds.

***B2G-desktop in-process***
Used by 3rd party devs since our B2G-desktop OOP builds aren't working
well enough. This is what what the simulator product is built on.
Possibly used by some gaia devs.
The firefox developer tools should (as of recently?) be working well
with this build.
Since this is only used by non-gecko and non-gonk developers, we can
probably get away without support for debug builds here.

***Firefox + js-API-shims***
This runs gaia inside of a standard Firefox-Desktop build. The gaia
build here is somewhat special since it creates non-packaged gaia
apps.
This is used by gaia developers becuase it provides the best debugger
support. Including support for firebug.
Since this is only used by non-gecko and non-gonk developers, we can
probably get away without support for debug builds here.

***Hardware Nexus4***
This is something that everyone needs. I.e. all types of developers
need the ability to build for and test on hardware.
We chose Nexus 4 because it's the closest thing we have to a reference
platform right now. The real reference platform might be different,
but we can adjust to that once the reference platform is picked.
Need to support both optimized and debug builds.

***ARM Emulator JB+ICS***
We need this mostly for automated testing. Automated testing on
hardware is *very* challenging, and while it's something we're working
on improving, the emulator builds is what enables the best testing
*now*.
Debug builds might run so slow here that it's not really worth
testing. Though maybe doing some very basic tests with debug builds
would be a good idea.


So how do we test these?

***B2G-desktop in-process/out-of-process***
Testing-wise the B2G desktop in-process and out-of-process platforms
are basically the same. We already have a few testsuites (mochitest,
reftest, gaia UI?) running for in-process B2G-desktop though they do
not appear to be enabled on TBPL front page. The gaia integration test
suite should be coming online soon.

We need to ensure that UI-events are getting properly tested. That
means that we need to dispatch the same events as when a developer
loads one of these builds and starts interacting with them using a
mouse. We need to ensure that that is what the marionette test tool
does.

Apparently we have some addon that are loaded into these builds which
changes the mouse events that gecko dispatches into touch events that
gaia will understand. It's unclear if this addon is always added to
these builds or if that only happens under some circumstances. We need
to ensure that this addon is always loaded. And we need to ensure that
when marionette does testing, that the events go through this addon
the same way as when a developer is running a build.

How well are the automated gaia UI tests covering things like having
the basics up and running? Mochitest and reftest mostly test gecko, so
it doesn't actually ensure that gaia isn't completely busted.

The main thing preventing out-of-process tests from moving forward is
that the out-of-process builds simply aren't working well enough. GFX
and UI-events have traditionally been the blockers here. We should
immediately start fixing this as to get the out-of-process builds
tested and onto TBPL.

Given the GFX issues, it's important that we have some way of testing
that the right pixels are actually ending up on screen. I'm not sure
how well the reftests are testing this?

*** Hardware ***
Automated testing here is unfortunately very challenging. The hardware
tends to crap out every few times that we flash it and someone needs
to manually pull out the battery to un-crap them. We also don't yet
have the ability to test things like telephony/bluetooth or other
radio hardware, possibly with exception of WiFi.

So all in all, we have very low bang for the buck here. I suggest we
for now only automatically test building for hardware, but not
actually do automated testing on hardware. Eventually we should
improve here, but that's too far out to be in scope for this thread.

*** ARM Emulator JB+ICS ***
We already have reftests, mochitests, crashtests and WebAPI tests up
and running here for ICS. So we need to stand up the same tests for
JB.
We also need to expand the set of mochitests (and maybe
reftests/crashtests?) that we are running. The current set is horribly
small.

Another problem here is that debug builds are just too damn slow. So
we're currently only running optimized builds. This is a big problem
because it means that debug builds often don't work on hardware. What
can we do to improve this?

Two things that could help are:
* Create optimized builds that are complied with DEBUG enabled. That
way we still catch assertions and we still ensure that all the gecko
debug code compiles and runs. We're just not catching compiler issues.
Though those are rare and since this isn't builds that are shipping to
end users that's probably not a big problem.
* We can create a smaller set of tests to run than the full test that
we are running for normal optimized builds.

***Firefox + js-API-shims***
We didn't end up talking about testing these builds that much. There
is some hope that we can get developer tools for B2G desktop builds
into a good enough shape soon enough that spending time on creating
test suites for these builds won't be needed.


What do people think? If this sounds good we need to get bugs filed
for anything that's lacking bugs and find assignees. Getting this
stuff in order should be top priority after leo blockers as lack of
good testing is slowing us down *a lot*.

/ Jonas

PS. I'm heading out on vacation without internet connection until Sep
9th. But hopefully lots of conversation can happen without me.
_______________________________________________
dev-b2g mailing list
dev-b2g@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-b2g

Reply via email to