During the lead up to the Firefox 3.5 release, there was a request to have older machines running unit tests. Our solution for the 3.5 release was to burn Ted cycles. This is unfortunate because Ted could have otherwise done much more useful things. For the Firefox 3.6 release, we automated this testing. The reason for running these tests is that our JavaScript interpreter spits out native machine code . The problem is that there are still machines capable of running Firefox but do not have all of the latest instruction sets(MMX, 3DNow, SSE2, SSE3, ad infinitum). Specifically, there was a concern over the inclusion of the SSE2 instructions when running on non-SSE2 capable hardware. This is especially important for those people who are still running an older machine exclusively for browsing. It is very important that we don’t unknowingly introduce a requirement for SSE2. We also need to test our claimed compatibility with older Macintosh machines based on the PowerPC core. To fix this situation, I have created the geriatric master. This master is in charge of our fleet of aging fleet of Pentium 3s and PowerPC G4s. It reports to the GeriatricMasters tinderbox. I currently am monitoring the Mozilla 1.9.2 and Mozilla Central nightly builds.
We are running some old machines saved from the Landings to Castro move. The P3s are around a decade old and the G4 Mac Mini and Dual G4 PowerMacs are about 4-5 years old. We also aren’t running matched hardware which is going to make detective work on failures difficult. I have found some machines to replace our mixture of P3s that do not even have SSE. They are based on the AMD Geode LX800 processor. These machines are what the OLPC XO have as a cpu. Because they are based on an ancient CPU core (Cyrix 5×86, technically a 486), they even lack SSE. That makes them the perfect for our testing. The model that I am looking at is the MSI Fuzzy. I don’t really understand their naming, but this machine would fit our needs perfectly. It has a fast (for the category) processor and slots for 1gb of ram. Most importantly, it allows us to have as many identical machines as we need. The Mac Mini is easier to standardize on because it was fairly popular at the time and there are only one or two minor variations of the PowerPC Mini.
Before we go rushing out and buying a bunch of new machines for this testing, we need to know how long there will be demand for this kind of testing. I would estimate that it would cost about $500 per Geode machine, and that we might be able to get nightly coverage on two to three branches on linux and windows with four machines.
Also of note is that because we are running on such old hardware, we are getting JavaScript timeouts. I don’t really know how to manually set the preference that ignores these timeout warnings, but it is causing a lot of the jobs to be killed off because they aren’t responsive. I’d love to know if you know how I can disable this in an easy to automate way. I was thinking that I could launch and kill Firefox to create a profile, modify the profile’s preference file then launch it again for the real tests. I don’t know which preference file I would need to do this on though.

This is where I’d like to ask people who are working on the JavaScript JIT to let me know how long we need to do this testing and whether this current coverage (mozilla192 and mozilla-central) is enough. A comment on this post, bug 463262 or ping me on #build (jhford).
As a side note, this configuration makes it possible for us to run unit tests on second tier support machines and operating systems. If there is any community interest, I can look making it possible for anyone to connect their machine to this buildbot master if they have an obscure machine with spare cycles. This would require you to be able to dedicate the box for this testing, us to already produce builds that run on that architecture.
If anyone wants, I can get some photos of the machines on Monday.







#1 by - on November 7th, 2009
Quote
This is important, specially on the AMD side. Original Athlons had neither SSE nor SSE2, and were sold until 2002 at the very least and got to 1.4GHz speeds (and were more powerful than some mobile x86 processors being sold today!). Then you have the Athlon XP, which had SSE but not SSE2, sold until 2005 I think with speeds in excess of 2GHz.
So yeah, expecting MMX nowadays is reasonable. SSE is very questionable, SSE2 is probably crazy.
#2 by William J. Edney on November 7th, 2009
Quote
John -
Here is the preference that should do what you want regarding having script timeouts:
http://kb.mozillazine.org/Dom.max_script_run_time
Don’t know to set this in an automated fashion, except to have a process update the ‘preferences’ file.
Cheers,
- Bill
#3 by Jesse Ruderman on November 7th, 2009
Quote
Are you using runreftest.py? It should set that pref for you automatically.
#4 by Justin Dolske on November 8th, 2009
Quote
GeriatricMasters? Heh, I approve!
#5 by Ted Mielczarek on November 10th, 2009
Quote
dbaron flipped the pref in reftest to disable the slow script dialogs just recently in bug 523934, because we were hitting them on debug unittests.
#6 by John Ford on November 22nd, 2009
Quote
that is awesome news!