<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>~robcee/ &#187; Testing</title>
	<atom:link href="http://antennasoft.net/robcee/category/testing/feed/" rel="self" type="application/rss+xml" />
	<link>http://antennasoft.net/robcee</link>
	<description>more than just sandwiches</description>
	<lastBuildDate>Fri, 20 Apr 2012 18:26:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Firebug Test Automation Phase 1 complete</title>
		<link>http://antennasoft.net/robcee/2009/09/04/firebug-test-automation-phase-1-complete/</link>
		<comments>http://antennasoft.net/robcee/2009/09/04/firebug-test-automation-phase-1-complete/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 13:27:53 +0000</pubDate>
		<dc:creator>robcee</dc:creator>
				<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[unit]]></category>

		<guid isPermaLink="false">http://antennasoft.net/robcee/2009/09/04/firebug-test-automation-phase-1-complete/</guid>
		<description><![CDATA[Yesterday afternoon I posted a somewhat cryptic tweet: Orange ftw. Blog post to follow. http://twitpic.com/gcizx Well, here&#8217;s the blog post. That little orange box is the first successful run of Firebug&#8217;s FBTest test automation tool through buildbot. It&#8217;s currently posting to the MozillaTest Tinderbox. This is phase 1. We&#8217;re currently running Firebug&#8217;s 1.5 branch out [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday afternoon I posted a somewhat cryptic <a target="_blank" href="http://twitter.com/robcee/status/3741451621">tweet</a>:<br />
<blockquote><span class="status-body"><span class="entry-content">Orange ftw. Blog post to follow.  <a href="http://twitpic.com/gcizx" class="tweet-url web" rel="nofollow" target="_blank">http://twitpic.com/gcizx</a></span></span></p></blockquote>
<p>Well, here&#8217;s the blog post.</p>
<p>That little orange box is the first successful run of Firebug&#8217;s <a target="_blank" href="http://groups.google.com/group/firebug-working-group/web/fbtest-the-firebug-testing-system">FBTest</a> test automation tool through buildbot. It&#8217;s currently posting to the <a target="_blank" href="http://tinderbox.mozilla.org/showbuilds.cgi?tree=MozillaTest">MozillaTest</a> Tinderbox.</p>
<p>This is phase 1. We&#8217;re currently running Firebug&#8217;s 1.5 branch out of SVN against the latest linux build available in the Firefox 3.6 tinderbox builds directory. These are kicked off by SVN checkins to Firebug and FBTest. To give better coverage, and be somewhat more useful to Firefox devs, we&#8217;re going to run the latest built version of Firebug 1.5 against Firefox 3.6 branch and 3.7 trunk after a successful Tinderbox build. This will give us a known quantity (a Firebug that works in 3.5) testing against the different Firefox versions for incompatibilities. This should allow us to spot regressions as they happen in Firefox and report them much more quickly.</p>
<p>Once these are setup, we&#8217;ll create a separate Firebug tree, or if the sheriffs and drivers are amenable to it, drop a column on the appropriate Firefox tree on Tinderbox. I also want to experiment with different notification systems.</p>
]]></content:encoded>
			<wfw:commentRss>http://antennasoft.net/robcee/2009/09/04/firebug-test-automation-phase-1-complete/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firebug Testday Results</title>
		<link>http://antennasoft.net/robcee/2009/05/11/firebug-testday-results/</link>
		<comments>http://antennasoft.net/robcee/2009/05/11/firebug-testday-results/#comments</comments>
		<pubDate>Mon, 11 May 2009 14:32:52 +0000</pubDate>
		<dc:creator>robcee</dc:creator>
				<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Results]]></category>
		<category><![CDATA[testday]]></category>

		<guid isPermaLink="false">http://antennasoft.net/robcee/2009/05/11/firebug-testday-results/</guid>
		<description><![CDATA[Thanks to everybody who showed up last Friday and ran some Firebug tests for us. It was a decent turn-out and you helped us catch some bugs. Over the course of the day, we filed around 16 bugs, 1 of which was deemed invalid (Other Component, Weave), and 8 of those remaining were fixed since [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to everybody who showed up last Friday and ran some Firebug tests for us. It was a decent turn-out and you helped us catch some bugs.</p>
<p>Over the course of the day, we filed around 16 bugs, 1 of which was deemed invalid (Other Component, Weave), and 8 of those remaining were fixed since then.<br /><br style="text-decoration: line-through;" /><span style="text-decoration: line-through;">But we&#8217;re not done yet. As of this writing, we have 1.4a27 available for you to try out. It features an even more simplified activation model allowing for more code cleanup under the covers.</span> I also predict there will be an a28 including the fixes from this weekend real soon now. Keep an eye on <a target="_blank" href="http://getfirebug.com/releases/firebug/1.4">http://getfirebug.com/releases/firebug</a> for updates.</p>
<p>So, thanks again for helping out. Special props to jcm, tmyoung and jhillacre for their hard work. And a special thank you to aakashd and the rest of <a target="_blank" href="http://quality.mozilla.org">Moz QA</a> for their assistance in making this happen.</p>
<p>Update: For now, I recommend users stick with 1.4a25.</p>
]]></content:encoded>
			<wfw:commentRss>http://antennasoft.net/robcee/2009/05/11/firebug-testday-results/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firebug Testday On Right Now, 1.4a26 warning</title>
		<link>http://antennasoft.net/robcee/2009/05/08/firebug-testday-on-right-now-14a26-warning/</link>
		<comments>http://antennasoft.net/robcee/2009/05/08/firebug-testday-on-right-now-14a26-warning/#comments</comments>
		<pubDate>Fri, 08 May 2009 13:52:45 +0000</pubDate>
		<dc:creator>robcee</dc:creator>
				<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[dud]]></category>

		<guid isPermaLink="false">http://antennasoft.net/robcee/2009/05/08/firebug-testday-on-right-now-14a26-warning/</guid>
		<description><![CDATA[Just a little reminder that we&#8217;re testing Firebug over in #testday on irc.mozilla.org. Grab the latest clean release (Firebug 1.4a25) from getfirebug.com/releases/firebug/1.4 and come on in. Please be advised that Firebug 1.4a26 has been declared &#8220;Dead on Arrival&#8221;. Please don&#8217;t update to this version.]]></description>
			<content:encoded><![CDATA[<p>Just a little reminder that we&#8217;re testing Firebug over in <a target="_blank" href="irc://irc.mozilla.org/#testday">#testday</a> on irc.mozilla.org. Grab the latest clean release (<a href="http://bit.ly/fbug14a25">Firebug 1.4a25</a>) from <a target="_blank" href="http://getfirebug.com/releases/firebug/1.4/">getfirebug.com/releases/firebug/1.4</a> and come on in.</p>
<p>Please be advised that Firebug 1.4a26 has been declared &#8220;Dead on Arrival&#8221;. Please don&#8217;t update to this version.</p>
]]></content:encoded>
			<wfw:commentRss>http://antennasoft.net/robcee/2009/05/08/firebug-testday-on-right-now-14a26-warning/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firebug Testday, Friday, May 8th, 2009</title>
		<link>http://antennasoft.net/robcee/2009/05/06/firebug-testday-friday-may-8th-2009/</link>
		<comments>http://antennasoft.net/robcee/2009/05/06/firebug-testday-friday-may-8th-2009/#comments</comments>
		<pubDate>Wed, 06 May 2009 23:02:42 +0000</pubDate>
		<dc:creator>robcee</dc:creator>
				<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[qa]]></category>
		<category><![CDATA[testday]]></category>

		<guid isPermaLink="false">http://antennasoft.net/robcee/2009/05/06/firebug-testday-friday-may-8th-2009/</guid>
		<description><![CDATA[Join us in #testday on irc.mozilla.org and help test out the latest version of Firebug 1.4. If you&#8217;re a web developer, a browser power user or just bored and looking for a place to hang out on a Friday (between 8am and 4pm PST), grab the latest version at http://getfirebug.com/releases/firebug/1.4. (currently 1.4a25) Our goal is [...]]]></description>
			<content:encoded><![CDATA[<p>Join us in <a target="_blank" href="irc://irc.mozilla.org/#testday">#testday</a> on irc.mozilla.org and help test out the latest version of Firebug 1.4. If you&#8217;re a web developer, a browser power user or just bored and looking for a place to hang out on a Friday (between 8am and 4pm PST), grab the latest version at <a target="_blank" href="http://code.google.com/p/fbug/issues/list">http://getfirebug.com/releases/firebug/1.4</a>. (currently 1.4a25)</p>
<p>Our goal is to test through some basic features through litmus.mozilla.org (TBD), run Jan Odvarko&#8217;s test <a target="_blank" href="http://www.janodvarko.cz/firebug/tests/">suite</a> and/or a couple of online tutorials. The purpose of these tests is going to be to determine Firebug compatibility with Firefox 3.0 and <a target="_blank" href="http://www.mozilla.com/en-US/firefox/all-beta.html">Firefox 3.5b4</a>.</p>
<p>Issues discovered will be logged on the Firebug <a target="_blank" href="http://code.google.com/p/fbug/issues/list">issues tracker</a>.</p>
<p>See the write-up on <a target="_blank" href="http://quality.mozilla.org/">QMO</a> on their <a target="_blank" href="http://quality.mozilla.org/events/2009/may/08/give-firebug-little-shine-and-polish">events page</a>. We&#8217;re hoping for a good turn out, so I hope to see you there.</p>
]]></content:encoded>
			<wfw:commentRss>http://antennasoft.net/robcee/2009/05/06/firebug-testday-friday-may-8th-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FireUnit &#8211; the early years</title>
		<link>http://antennasoft.net/robcee/2008/10/07/fireunit-the-early-years/</link>
		<comments>http://antennasoft.net/robcee/2008/10/07/fireunit-the-early-years/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 20:05:25 +0000</pubDate>
		<dc:creator>robcee</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[fireunit]]></category>
		<category><![CDATA[unittest]]></category>

		<guid isPermaLink="false">http://antennasoft.net/robcee/2008/10/07/fireunit-the-early-years/</guid>
		<description><![CDATA[One of our goals for moving forward with Firebug is to build a system to run automated unit tests for it. Currently, Firebug is modified, packaged and then tested by a small (but enthusiastic!) group of developers. When changes are made to the codebase, the area under development might be tested by the developer, but [...]]]></description>
			<content:encoded><![CDATA[<p>One of our goals for moving forward with Firebug is to build a system to run automated unit tests for it. Currently, Firebug is modified, packaged and then tested by a small (but enthusiastic!) group of developers. When changes are made to the codebase, the area under development might be tested by the developer, but there&#8217;s no way of knowing if what you&#8217;ve done has broken some other part of the application. As a friend of mine is fond of saying, software is hard.</p>
<p>Enter FireUnit! An extension for Firebug that aims to be able to test Firebug itself, and later on, perhaps be a useful framework for developing unittests for the web. It&#8217;s still very early on, but there&#8217;s a core emerging.</p>
<p>Installing FireUnit is currently a bit of a manual affair. Download the source code from the github <a target="_blank" href="http://github.com/jeresig/fireunit/tree/master">repository</a> and extract the downloaded zip or tar file to your local filesystem.</p>
<p>Open your profile/extensions directory for the Firefox profile that you use with Firebug. Create a new empty text file there with the name &#8220;fireunit@mozilla.com&#8221; (no quotes, of course). In this text file, add the full path to the FireUnit directory you unpacked in the previous step. E.g., &#8220;/Volumes/Data/Projects/FIREBUG/fireunit&#8221; in my case.
<div align="center"><img src="http://antennasoft.net/robcee/wp-content/uploads/2008/10/picture-1.png" alt="" /><br /><small><small><i>Test panel of FireUnit after running commandline.html</i></small></small></div>
<p>When you open/restart Firefox with this profile and open Firebug, you should now see a new &#8220;Test&#8221; panel in the list of tabs. Go to the location bar and type in / paste chrome://fireunit/content/test/commandline.html. You should see some flickering as FireUnit runs through the tests in that commandline.html. When done, you should see a bunch of passes listed in the Test panel (hopefully no failures!).</p>
<p>While I&#8217;m rambling about testing, I should mention that there will soon be a new alpha version of Firebug 1.3 (a4) available for download at <a target="_blank" href="http://getfirebug.com/releases/firebug/1.3/">getfirebug.com/releases/firebug1.3</a>. This would be an ideal version for you to try out FireUnit on! For the more adventurous in the crowd, Chromebug 0.3a8 is R261 on <a target="_blank" href="https://fireclipse.svn.sourceforge.net/svnroot/fireclipse/trunk/FireclipseExtensions/chromebug">https://fireclipse.svn.sourceforge.net/svnroot/fireclipse/trunk/FireclipseExtensions/chromebug</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://antennasoft.net/robcee/2008/10/07/fireunit-the-early-years/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HOWTO: Unit testing Linux</title>
		<link>http://antennasoft.net/robcee/2008/05/22/howto-unit-testing-linux/</link>
		<comments>http://antennasoft.net/robcee/2008/05/22/howto-unit-testing-linux/#comments</comments>
		<pubDate>Thu, 22 May 2008 15:14:13 +0000</pubDate>
		<dc:creator>robcee</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[buildbot]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[unittest]]></category>

		<guid isPermaLink="false">http://antennasoft.net/robcee/?p=73</guid>
		<description><![CDATA[Mozilla&#8217;s evangelist and resident all-around-good-guy Chris Blizzard wrote an excellent piece yesterday on the dangers of hand-picking patches in a linux distribution, at least as they pertain to Mozilla and Firefox. I don&#8217;t need to say more on that as he covers it pretty well. I will just say that it&#8217;s a hard problem and [...]]]></description>
			<content:encoded><![CDATA[<p>Mozilla&#8217;s evangelist and resident all-around-good-guy <a href="http://www.0xdeadbeef.com/weblog" target="_blank">Chris Blizzard</a> wrote an excellent <a href="http://www.0xdeadbeef.com/weblog/?p=368">piece</a> yesterday on the dangers of hand-picking patches in a linux distribution, at least as they pertain to Mozilla and Firefox. I don&#8217;t need to say more on that as he covers it pretty well. I will just say that it&#8217;s a hard problem and difficult to get it right without having the entire big picture spread out in front of you.</p>
<p>I&#8217;m writing this in the hopes that we can make the process a little easier for those of you responsible for packaging Firefox (and hopefully other Mozilla apps down the road) on Linux.</p>
<p>First, the background: We do automated unit testing. We do it on every checkin and you can see the results posted to <a href="http://tinderbox.mozilla.org/showbuilds.cgi?tree=Firefox" target="_blank">http://tinderbox.mozilla.org/showbuilds.cgi?tree=Firefox</a>. The machines responsible for producing those results are running <a href="http://buildbot.net/trac" target="_blank">buildbot</a>. We&#8217;re currently using, a slightly customized version 0.7.5 (available from Mozilla&#8217;s cvs repo at cvs-mirror.mozilla.org in mozilla/tools/buildbot, branch BUILDBOT_BRANCH_0_7_5) on top of Twisted 2.4.0. Soon, we&#8217;ll be moving forward to version 0.7.7 and Twisted 8.x on all our machines as part of a Grand Unified Vision. More on that later.</p>
<p>We have some scattered documentation around the mozilla wikisphere that we&#8217;ll be consolidating and cleaning up over the summer. The important bits are: the main Mozilla Buildbot Wiki page at <a href="http://wiki.mozilla.org/Buildbot" target="_blank">http://wiki.mozilla.org/Buildbot</a>. Of some but decreasing importance is the <a href="http://wiki.mozilla.org/BuildbotTestfarm" target="_blank">BuildbotTestFarm</a> setup page. It has links to the important buildbot master configuration and setup files, namely <a href="http://lxr.mozilla.org/mozilla/source/tools/buildbot-configs/testing/unittest/master.cfg" target="_blank">master.cfg</a> and <a href="http://lxr.mozilla.org/mozilla/source/tools/buildbot-configs/testing/unittest/mozbuild.py">mozbuild.py</a> in the <a href="http://lxr.mozilla.org/mozilla/source/tools/buildbot-configs/testing/unittest/">unittest</a> directory. Also, <a href="http://wiki.mozilla.org/BuildbotTestFarmUse" target="_blank">http://wiki.mozilla.org/BuildbotTestFarmUse</a> has a really awesome <a href="http://wiki.mozilla.org/Image:Buildbot_network_diagram_2.png" target="_blank">diagram</a> that I created (and recently updated!) that you&#8217;ll want to show to all your friends and possibly print out and hang on your cubicle wall.</p>
<p>Ok, let&#8217;s use all this to setup an example buildbot master and slave on your linux environment of choice. First, we&#8217;ll assume you&#8217;re capable of actually building the browser on your slave machine according to <a href="http://developer.mozilla.org/en/docs/Linux_Build_Prerequisites" target="_blank">Linux_Build_Prerequisites</a>. On your buildbot master (it can be the same machine as the slave if you&#8217;re just doing a single builder), create the master directory by typing &#8220;buildbot create-master unittest_master&#8221; (where unittest_master is your directory name, it can be anything). Copy master.cfg, mozbuild.py and the default <a href="http://lxr.mozilla.org/mozilla/source/tools/buildbot-configs/testing/unittest/mozconfig-places" target="_blank">mozconfig</a> file into this newly-created directory and modify the .cfg file to taste. If you&#8217;re doing a straight copy and paste from our version, you can delete all those extra machine names and will have something that will look more like this: <a href="http://antennasoft.net/robcee/example-mastercfg/">master.cfg</a><a href="http://pastebin.mozilla.org/439706" target="_blank"></a>. Rename URLs and links as appropriate. If you don&#8217;t use Tinderbox server for hosting your builds, you can remove the &#8220;c<span class="br0">[</span><span class="st0">'status'</span><span class="br0">]</span>.<span class="me1">append</span><span class="br0">(</span>tinderbox.<span class="me1">TinderboxMailNotifier</span><span class="br0">(&#8230;&#8221; section entirely and just use the buildbot waterfall.</span></p>
<p>Once you&#8217;ve got that setup, start it up by running &#8220;buildbot start unittest_master&#8221; in the parent directory and you should see some log chatter as it starts up. You can verify by visiting localhost:2005 on the master machine and seeing a waterfall with an empty table in it. It&#8217;s waiting for a slave to connect. If you don&#8217;t see this, you&#8217;ve done something horribly wrong and will need to start from scratch, probably after thinking about it for a few minutes and maybe getting a cup of your favorite caffeinated warm beverage. This thoughtful reflection is important. I can&#8217;t stress this enough!</p>
<p>Now that you&#8217;re properly caffeinated, let&#8217;s create the slave. I&#8217;m going to assume you&#8217;re running it on the same machine as the one you&#8217;ve just created the master on. In a nearby directory, type &#8220;buildbot create-slave slave-dir localhost:9989 linux 1h34rtL1nuX&#8221;. It should create a directory named &#8220;slave-dir&#8221; and add a few files to it. Now the fun part: type &#8220;buildbot start slave-dir&#8221; and you should be up and running. Verify this on the buildbot waterfall page where you should see the slave connected and a build starting up.</p>
<p>At this point, I&#8217;m going to finish up with a few caveats. These instructions assume you&#8217;re using the same buildbot version we&#8217;ve used for these setups (version 0.7.5 running on twisted 2.4.0 with python 2.4 or 2.5). You&#8217;ll need to modify your master.cfg file slightly if you&#8217;re using a newer version. For excruciating details on how we setup these machines, see <a href="http://wiki.mozilla.org/ReferencePlatforms/Linux-CentOS-5.0">http://wiki.mozilla.org/ReferencePlatforms/Linux-CentOS-5.0</a>. All machines running Reftests are required to have 24 or 32bit displays for image comparison. Lastly, the test machine will have to have run any version of Firefox before for the default profile to have been initialized.</p>
<p>The file &#8220;mozbuild.py&#8221; mentioned above contains the interesting bits. If you&#8217;re curious about how to run any of the individual unittests from a run, be sure to take a look in there at the &#8220;command=&#8221; parameters to the various testing classes. Good luck, and have fun!<br />
<a href="http://wiki.mozilla.org/Buildbot" target="_blank"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://antennasoft.net/robcee/2008/05/22/howto-unit-testing-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mochitest By The Numbers</title>
		<link>http://antennasoft.net/robcee/2008/03/27/mochitest-by-the-numbers/</link>
		<comments>http://antennasoft.net/robcee/2008/03/27/mochitest-by-the-numbers/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 16:49:20 +0000</pubDate>
		<dc:creator>robcee</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://antennasoft.net/robcee/2008/03/27/mochitest-by-the-numbers/</guid>
		<description><![CDATA[In an email discussion yesterday, Schrep posed the perfectly cromulent question, how many unittests are we running and where did they come from? A good chunk of our testing comes from a few popular JavaScript programming libraries that some of our more intrepid test coders translated to run inside Mochitest. I knew we&#8217;d translated jQuery, [...]]]></description>
			<content:encoded><![CDATA[<p>In an email discussion yesterday, Schrep posed the perfectly cromulent question, <span style="font-style: italic;">how many unittests are we running and where did they come from?</span> A good chunk of our testing comes from a few popular JavaScript programming libraries that some of our more intrepid test coders translated to run inside <a href="http://developer.mozilla.org/en/docs/Mochitest_FAQ">Mochitest</a>. I knew we&#8217;d translated <a href="http://jquery.com/">jQuery</a>, <a href="http://script.aculo.us/">Scriptaculous</a> and <a href="http://www.mochikit.com/">Mochikit</a>&#8216;s own test frameworks, to name a few, but what else was in there? And what portion of the 50,000 odd mochitests were from large external frameworks?</p>
<p>I spent the afternoon grabbing a new tree and running through a Mochitest run and looking at the output in Numbers. What follows is my simple <a href="http://people.mozilla.org/~rcampbell/pub/2008-03-26-mochitest_rollup.csv">analysis</a> of the contents of Mochitest on Mac – the numbers are slightly different for other platforms but comparable.</p>
<ul>
<li>External sources 4555</p>
<li>Mozilla contributors 43943</ul>
<p>I want to be clear that these numbers may be slightly misleading. I can&#8217;t point at a single one of these and say with utter certainty that &#8220;that is a single unittest&#8221;. When we asked David Baron about the 20-odd-thousand tests included in Layout/Style, he told us:</p>
<blockquote><p>There are a bunch of tests that test things combinatorically. In other words, for a long list of potential values for CSS properties, testing a large number of things related to that value&#8217;s parsing, serialization, and computation through different APIs.</p></blockquote>
<p><a href="http://blog.mozilla.com/rob-sayre/">Rob Sayre</a> also had a note of caution regarding these figures:</p>
<blockquote><p>The definition of what constitutes a single test is pretty fluid. I would just say &#8220;tens of thousands&#8221;</p></blockquote>
<p>What we can say then, with some certainty is that Mozilla contributors have written, constructed or otherwise created <span style="font-weight: bold; font-style: italic;">tens of thousands of unit tests in just over 1 year.</span> We&#8217;ve also outnumbered the external tests included in our test code by nearly 10 to 1. Areas we&#8217;re testing include, but are by no means limited to: content, canvas, layout, chrome, docshell, HTML parsing, XUL, &#8230; really too many areas to list like this. See the <a href="http://people.mozilla.org/~rcampbell/pub/2008-03-26-mochitest_rollup.csv">analysis</a> doc for details.</p>
<p>I think this is a phenomenal achievement and would like to thank everyone who&#8217;s contributed. Clearly Mozilla has become a very test-focused project and this has enabled us to create better builds with demonstrably fewer regressions on nightlies and betas.</p>
<p>There&#8217;s always more to do. The external test-suites we&#8217;ve included could stand to be updated and augmented. Below are a set of bugs <a href="http://ejohn.org/blog/">John Resig</a> recently filed. If you&#8217;re a developer looking to hone your mochitest skills or want to contribute to our growing population of tests, pick one of these up and take a crack at it.</p>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=424813">https://bugzilla.mozilla.org/show_bug.cgi?id=424813</a></p>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=424814">https://bugzilla.mozilla.org/show_bug.cgi?id=424814</a>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=424816">https://bugzilla.mozilla.org/show_bug.cgi?id=424816</a>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=424818">https://bugzilla.mozilla.org/show_bug.cgi?id=424818</a>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=424819">https://bugzilla.mozilla.org/show_bug.cgi?id=424819</a>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=424820">https://bugzilla.mozilla.org/show_bug.cgi?id=424820</a>
</ul></p>
]]></content:encoded>
			<wfw:commentRss>http://antennasoft.net/robcee/2008/03/27/mochitest-by-the-numbers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tinderbox Remixed (qa vs. build mashup)</title>
		<link>http://antennasoft.net/robcee/2008/01/14/tinderbox-remixed-qa-vs-build-mashup/</link>
		<comments>http://antennasoft.net/robcee/2008/01/14/tinderbox-remixed-qa-vs-build-mashup/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 20:13:24 +0000</pubDate>
		<dc:creator>robcee</dc:creator>
				<category><![CDATA[Build]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://antennasoft.net/robcee/2008/01/10/tinderbox-remixed-qa-vs-build-mashup/</guid>
		<description><![CDATA[There&#8217;s been some talk around the water cooler recently about some improvements to the build farm. I think this is great and will go a long way towards making the build systems easier to work on with a minimum of localized soreness. First, a picture. This is the way stuff happens now: (edit &#8211; X [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been some <a href="http://oduinn.com/2008/01/04/build-always-vs-build-on-checkin/">talk</a> around the water cooler recently about some <a href="http://roberthelmer.com/blog/?p=26">improvements</a> to the build farm. I think this is great and will go a long way towards making the build systems easier to work on with a minimum of localized soreness.</p>
<p>First, a picture. This is the way stuff happens now:</p>
<p style="text-align:center;"><img src="http://antennasoft.net/robcee/wp-content/uploads/2008/01/build-talos-unittest-1.png" height="337" width="514" border="2" hspace="4" vspace="4" alt="Build-Talos-Unittest-1" /></p>
<p><em>(edit &#8211; X axis is time, think of these diagrams as gantt charts with some extra lines showing what happens, i.e., where things come from and where they go)</em></p>
<p>A few of notes about this group of largely disconnected systems:</p>
<ul>
<li>Builds happen all the time.</li>
<li>Nightlies are produced regardless of what the other machines are reporting, i.e., there is no feedback from any of the testing machines to the build system that produces nightlies.</li>
<li>There is no direct route from the Try server to the build system. Worse, try builds are not being put through unittests leaving the burden of testing on the developer who writes the patch.</li>
</ul>
<p>In a short while, this picture will morph (slightly) into this:</p>
<p style="text-align:center;"><img src="http://antennasoft.net/robcee/wp-content/uploads/2008/01/build-talos-unittest-2.png" height="385" width="526" border="2" hspace="4" vspace="4" alt="Build-Talos-Unittest-2" /></p>
<p>In this slightly better world:</p>
<ul>
<li>Builds happen on checkin</li>
<li>Nightlies will still be produced from the last build at a certain hour</li>
<li>Try server builds will be unit tested and run through Talos for performance testing</li>
</ul>
<p>In this view, the build machines and unittest machines work on checked-in patches, in parallel. Talos picks up the builds once they&#8217;ve landed on staging from the build machines. This picture is somewhat simplified as we may have parallel build machines and we already have parallel Talos machines taking in builds as they become available.</p>
<p>Another benefit we should see is Talos results lining up more closely with the build they&#8217;re associated with. Currently, because the Tinderboxes keep churning builds, Talos runs at a lag, sometimes with a build or two in queue as they struggle to catch up. This should go away with some gaps during the day allowing the Talos boxes to maintain parity with the main build machines.</p>
<p>Of notable difference here, when a patch gets submitted to the Try Server, it runs through the full gamut of unittests and at the end of that, runs a &#8220;make package&#8221; on the objdir producing a light(ish) build and putting it into the staging area for consumption. At that point, the talos try server can pick it up and run it through the full performance tests for analysis. While that&#8217;s going on, people can download the try build and play with it to see if they&#8217;ve broken anything. That&#8217;s step one in the testing lifecycle of a patch. This should be reality very soon, thanks in part to some help from the <a href="http://armenzg.blogspot.com/2008/01/try-server-and-automated-testing.html">good</a> people at Seneca College.</p>
<p>But we can still do better.</p>
<p style="text-align:center;"><img src="http://antennasoft.net/robcee/wp-content/uploads/2008/01/build-talos-unittest-3.png" height="383" width="524" border="2" hspace="4" vspace="4" alt="Build-Talos-Unittest-3" /></p>
<p>In this future, utopian landscape, the unittest and build machines can pick up a patch and start churning and testing builds before handing them over to Talos. At a specified time of day, the nightly machines which have been waiting on the results of the test boxes can now pick up and run the day&#8217;s patches and produce a proper build devoid of any extraneous testing code and optimized for userland. This build then gets picked up by the Talos servers and run through the performance tests again. If and only if all of these testing stages complete, the build can be pushed to the update servers for wider dispersion. This should severely limit the number of bad builds we&#8217;re able to ship to the world.</p>
<p>Ok, I admit that these pictures aren&#8217;t wildly-different from one another. The differences are in the connections and how we use them. By adding some dependency on the testing machines, we can ensure that we&#8217;re building the most robust nightlies possible. There are a few caveats to get to this awesome future. The Windows test machines must become more solid. We&#8217;ve been struggling with these for almost a year now and the time has come to do something about it. Better displays for gathering at-a-glance tree information are becoming increasingly important as we cram more information onto the main Firefox Tinderbox page. This is going to increase over the year as the JS testing machines come online, possibly requiring a separate tests only page. As more tests are added to Talos, it will become harder to keep on top of the results as builds come in, so this will require some rapidly-accessible view onto that data.</p>
<p>It&#8217;s 2008. Do you believe in the future?</p>
]]></content:encoded>
			<wfw:commentRss>http://antennasoft.net/robcee/2008/01/14/tinderbox-remixed-qa-vs-build-mashup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Leopard Unittests</title>
		<link>http://antennasoft.net/robcee/2008/01/14/leopard-unittests/</link>
		<comments>http://antennasoft.net/robcee/2008/01/14/leopard-unittests/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 18:37:47 +0000</pubDate>
		<dc:creator>robcee</dc:creator>
				<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://antennasoft.net/robcee/2008/01/14/leopard-unittests/</guid>
		<description><![CDATA[Last week we added a new machine to the Firefox tree: qm-xserve02. Then we quickly disabled it as it was born in a sea of bright, non-deterministic orange. So, right after I post this, I&#8217;m going to re-enable it and then head over to #developers to ask around to see if anyone can make sense [...]]]></description>
			<content:encoded><![CDATA[<p>Last week we added a new machine to the Firefox tree: qm-xserve02. Then we quickly disabled it as it was born in a sea of bright, non-deterministic <a href="http://quotes.burntelectrons.org/2844">orange</a>. So, right after I post this, I&#8217;m going to re-enable it and then head over to #developers to ask around to see if anyone can make sense of the problems. This is a non-standard (i.e., non-refplatform) build as we&#8217;re using Leopard (OS X 10.5, aka Darwin 9.1.0) and all that that implies.</p>
<p>The other problem of note is that builds and testruns take a lot longer on this machine. I don&#8217;t know if it&#8217;s due to slow disk, slow hardware (should be the same as qm-xserve01? I think?) or some other reason (no, <a href="http://www.youtube.com/watch?v=ofWnyUHwoYI&amp;eurl=http://ffextensionguru.wordpress.com/2008/01/13/get-a-mac-time-machine/">Time Machine</a> is not enabled), but it&#8217;s going to cause problems if we have to wait on it to turn green.</p>
<p>So, I&#8217;m looking for help with these issues. Feel free to comment here or give me a poke on irc.</p>
]]></content:encoded>
			<wfw:commentRss>http://antennasoft.net/robcee/2008/01/14/leopard-unittests/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Speedstepping a Mac Mini</title>
		<link>http://antennasoft.net/robcee/2007/11/02/speedstepping-a-mac-mini/</link>
		<comments>http://antennasoft.net/robcee/2007/11/02/speedstepping-a-mac-mini/#comments</comments>
		<pubDate>Fri, 02 Nov 2007 15:18:12 +0000</pubDate>
		<dc:creator>robcee</dc:creator>
				<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://antennasoft.net/robcee/2007/11/02/speedstepping-a-mac-mini/</guid>
		<description><![CDATA[So I don&#8217;t forget this, and in case anyone else is trying to figure out how to slow a Mac down because it&#8217;s just too fast to be useful, here&#8217;s the solution: Stuart found an incantation the other day born in the CHUD tools for OS X. If you want to slow down a Mac [...]]]></description>
			<content:encoded><![CDATA[<p>So I don&#8217;t forget this, and in case anyone else is trying to figure out how to slow a Mac down because it&#8217;s just too fast to be useful, here&#8217;s the solution: Stuart found an incantation the other day born in the CHUD tools for OS X. If you want to slow down a Mac (with the CHUD tools installed), run:</p>
<pre>reggie_se -S 0b1100 -b 4:1 -i a -n IA32_CLOCK_MODULATION</pre>
<p>the important bit there is the -S option (set) with 0b1100. The first 1 is to enable clock modulation, the &#8220;100&#8243; corresponds to the following table:</p>
<pre>000B Reserved
001B 12.5% (Default)
010B 25.0%
011B 37.5%
100B 50.0%
101B 63.5%
110B 75%
111B 87.5%</pre>
<p>Oh, and one final note, you might want to take a snapshot of your registers before you begin using:</p>
<pre>reggie_se -r -i a -n IA32_CLOCK_MODULATION</pre>
<p>You can turn off speed-stepping by disabling the first bit in the first command (-S 0b0001 to set back to default), or, if you just want to be done with this nonsense, a reboot will get you back to starting state.</p>
<p>happy underclocking!</p>
]]></content:encoded>
			<wfw:commentRss>http://antennasoft.net/robcee/2007/11/02/speedstepping-a-mac-mini/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

