<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>JGriffin&#039;s Blog</title>
	<atom:link href="http://jagriffin.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jagriffin.wordpress.com</link>
	<description>Is this thing on?</description>
	<lastBuildDate>Fri, 06 Jan 2012 18:02:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='jagriffin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>JGriffin&#039;s Blog</title>
		<link>http://jagriffin.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jagriffin.wordpress.com/osd.xml" title="JGriffin&#039;s Blog" />
	<atom:link rel='hub' href='http://jagriffin.wordpress.com/?pushpress=hub'/>
		<item>
		<title>B2G and WebAPI testing in Emulators</title>
		<link>http://jagriffin.wordpress.com/2011/11/14/b2g-and-webapi-testing-in-emulators/</link>
		<comments>http://jagriffin.wordpress.com/2011/11/14/b2g-and-webapi-testing-in-emulators/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 21:12:36 +0000</pubDate>
		<dc:creator>jagriffin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jagriffin.wordpress.com/?p=101</guid>
		<description><![CDATA[Malini Das and I have been working on a new test framework called Marionette, in which tests of a Gecko-based product (B2G, Fennec, etc.) are driven remotely, ala Selenium.  Marionette has client and server components; the server side is embedded inside Gecko, and the client side runs on a (possibly remote) host PC.  The two [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=101&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Malini Das and I have been working on a new test framework called <a href="https://wiki.mozilla.org/Auto-tools/Projects/Marionette">Marionette</a>, in which tests of a Gecko-based product (B2G, Fennec, etc.) are driven remotely, ala Selenium.  Marionette has client and server components; the server side is embedded inside Gecko, and the client side runs on a (possibly remote) host PC.  The two components communicate using a JSON protocol over a TCP socket.  The <a href="https://wiki.mozilla.org/Auto-tools/Projects/Marionette/JSON_Protocol">Marionette JSON protocol</a> is based loosely on the <a href="http://code.google.com/p/selenium/wiki/JsonWireProtocol">Selenium JSON Wire Protocol</a>; it defines a set of commands that the Marionette server inside Gecko knows how to execute.</p>
<p>This differs from past approaches to remote automation in that we don&#8217;t need any extra software (i.e., a SUTAgent) running on the device, we don&#8217;t need special access to the device via something like adb (although we do use adb to manage <a href="http://developer.android.com/guide/developing/devices/emulator.html">emulators</a>), nor do tests need to be particularly browser-centric.  These differences seem advantageous when thinking about testing B2G.</p>
<p>The first use case to which we might apply Marionette in B2G seems to be WebAPI testing in emulators.  There are some WebAPI features that we can&#8217;t test well in an automated manner using either desktop builds or real devices, such as <a href="https://wiki.mozilla.org/WebAPI/WebSMS">WebSMS</a>.  But we can write automated tests for these using emulators, since we can manipulate the emulator&#8217;s hardware state and emulators know how to &#8220;talk&#8221; to each other for the purposes of SMS and telephony.</p>
<p>Since Marionette tests are driven from the client side, they&#8217;re written in Python.  This is what a WebSMS test in Marionette might look like:</p>
<p><pre class="brush: python;">
from marionette import Marionette

if __name__ == '__main__':
    # launch the emulators that will do the sending and receiving
    sender = Marionette(emulator=True)
    assert(sender.emulator.is_running)
    assert(sender.start_session())

    receiver = Marionette(emulator=True)
    assert(receiver.emulator.is_running)
    assert(receiver.start_session())

    # setup the SMS event listener on the receiver
    receiver.execute_script(&quot;&quot;&quot;
        var sms_body = &quot;&quot;;
        window.addEventListener(&quot;smsreceived&quot;,
                                 function(m) { sms_body = m.body });

    &quot;&quot;&quot;)

    # send the SMS event on the sender
    message = &quot;hello world!&quot;
    sender.execute_script(&quot;navigator.sms.send(%d, '%s');&quot; %
        (receiver.emulator.port, message))

    # verify the message was received by the receiver
    assert(receiver.execute_script(&quot;return sms_body;&quot;) == message)

</pre></p>
<p>The JavaScript portions of the test could be split into a separate file from the Python, for easier editing and syntax highlighting.  Here&#8217;s the adjusted Python file:</p>
<p><pre class="brush: python;">
from marionette import Marionette

if __name__ == '__main__':
    # launch the emulators that will do the sending and receiving and
    # load the JS scripts for each
    sender = Marionette(emulator=True)
    assert(sender.emulator.is_running)
    assert(sender.start_session())
    assert(sender.load_script('test_sms.js'))

    receiver = Marionette(emulator=True)
    assert(receiver.emulator.is_running)
    assert(receiver.start_session())
    assert(receiver.load_script('test_sms.js'))

    # setup the SMS event listener on the receiver
    receiver.execute_script_function(&quot;setup_sms_listener&quot;)

    # send the SMS event on the sender
    message = &quot;hello world!&quot;
    target = receiver.emulator.port
    sender.execute_script_function(&quot;send_sms&quot;, [target, message])

    # verify the message was received by the receiver
    assert(receiver.execute_script_function(&quot;get_sms_body&quot;) == message)

</pre></p>
<p>And here&#8217;s the JavaScript file:</p>
<p><pre class="brush: jscript;">
function send_sms(target, msg) {
    navigator.sms.send(target, msg);
}

var sms_body = &quot;&quot;;

function setup_sms_listener() {
    window.addEventListener(&quot;smsreceived&quot;,
                            function(m) { sms_body = m.body });
}

function get_sms_body() {
    return sms_body;
}

</pre></p>
<p>Both of these options are just about usable in Marionette right now.  Note that the test is driven, and some of the test logic (like asserts) resides on the client side, in Python.  This makes synchronization between multiple emulators straightforward, and provides a natural fit for Python libraries that will be used to interact with the emulator&#8217;s battery and other hardware.</p>
<p>What if we wanted JavaScript-only WebAPI tests in emulators, without any Python?  Driving a multiple-emulator test from JavaScript running in Gecko introduces some complications, chief among them the necessity of sharing state between the tests, the emulators, and the Python testrunner, all from within the context of the JavaScript test.  We can imagine such a test might look like this:</p>
<p><pre class="brush: jscript;">

var message = &quot;hello world!&quot;;
var device_number = Marionette.get_device_number(Marionette.THIS_DEVICE);

if (device_number == 1) {
  // we're being run in the &quot;sender&quot;

  // wait for the test in the other emulator to be in a ready state
  Marionette.wait_for_state(Marionette.THAT_DEVICE, Marionette.STATE_READY);

  // send the SMS
  navigator.sms.send(Marionette.get_device_port(Marionette.THAT_DEVICE), message);
}
else {
  // we're being run in the &quot;receiver&quot;

  // notify Marionette that this test is asynchronous
  Marionette.test_pending();

  // setup the event listener
  window.addEventListener(&quot;smsreceived&quot;,
                          function (m) { 
                                         // perform the test assertion and notify Marionette 
                                         // that the test is finished
                                         is(m.body, message, &quot;Wrong message body received&quot;); 
                                         Marionette.test_finished();
                                       }
                         );

  // notify Marionette we're in a ready state
  Marionette.set_state(Marionette.STATE_READY);
}

</pre></p>
<p>Conceptually, this is more similar to xpcshell tests, but implementing support for this kind of test in Marionette (or inside the existing xpcshell harness) would require substantial additional work.  As it currently exists, Marionette is designed with a client-server architecture, in which information flows from the client (the Python part) to the server (inside Gecko) using TCP requests, and then back.  Implementing the above JS-only test syntax would require us to implement the approximate reverse, in which requests could be initiated at will from within the JS part of the test, and this would require non-trivial changes to Marionette in several different areas, as well as requiring new code to handle the threading and synchronization that would be required.</p>
<p>Do you think the Python/JS hybrid tests will be sufficient for WebAPI testing in emulators?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jagriffin.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jagriffin.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jagriffin.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jagriffin.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jagriffin.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jagriffin.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jagriffin.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jagriffin.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jagriffin.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jagriffin.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jagriffin.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jagriffin.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jagriffin.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jagriffin.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=101&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jagriffin.wordpress.com/2011/11/14/b2g-and-webapi-testing-in-emulators/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e99d6bbf275b2b638ac6414e6f1d832b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jagriffin</media:title>
		</media:content>
	</item>
		<item>
		<title>OrangeFactor changes: Talos, bug correlations</title>
		<link>http://jagriffin.wordpress.com/2011/10/03/orangefactor-changes-talos-bug-correlations/</link>
		<comments>http://jagriffin.wordpress.com/2011/10/03/orangefactor-changes-talos-bug-correlations/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 21:54:10 +0000</pubDate>
		<dc:creator>jagriffin</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://jagriffin.wordpress.com/?p=95</guid>
		<description><![CDATA[Talos oranges now in OrangeFactor When OrangeFactor (aka WOO) premiered, it did not include Talos oranges in its calculations.  There were many reasons for this, including the fact that Talos oranges were quite rare at the time. As philor noted last week, that is no longer the case; there are now several frequent Talos oranges [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=95&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>Talos oranges now in OrangeFactor</h3>
<p>When <a href="http://brasstacks.mozilla.com/orangefactor/">OrangeFactor</a> (aka WOO) premiered, it did not include Talos oranges in its calculations.  There were many reasons for this, including the fact that Talos oranges were quite rare at the time.</p>
<p>As philor noted last week, that is no longer the case; there are now several frequent Talos oranges on the Android platform.  Because of this, I&#8217;ve just added Talos oranges into OrangeFactor.  The result is that the OrangeFactor has jumped from 4.01 (678 failures in 169 testruns) to 5.44 (921 failures in 169 testruns) on mozilla-central.</p>
<h3>New bug correlations view</h3>
<p>Mark Côté has recently implemented a new view in OrangeFactor, the <a href="http://brasstacks.mozilla.com/orangefactor/?display=Correlations&amp;tree=mozilla-inbound&amp;endday=2011-10-03&amp;startday=2011-09-05">bug correlations view</a>.  This view shows bugs which occur together on the same commit.  We&#8217;ve already had a couple of suggestions for this page which we&#8217;re going to implement:  add bug summaries, and show the actual revision numbers for the correlations.  If anyone has other suggestions, please file a bug under <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Testing&amp;component=Orange%20Factor">Testing:Orange Factor</a>.</p>
<h3>Upcoming changes</h3>
<p>Next up:  adding the ability to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=669316">guess when an orange was introduced</a>.  Stay tuned!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jagriffin.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jagriffin.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jagriffin.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jagriffin.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jagriffin.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jagriffin.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jagriffin.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jagriffin.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jagriffin.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jagriffin.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jagriffin.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jagriffin.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jagriffin.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jagriffin.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=95&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jagriffin.wordpress.com/2011/10/03/orangefactor-changes-talos-bug-correlations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e99d6bbf275b2b638ac6414e6f1d832b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jagriffin</media:title>
		</media:content>
	</item>
		<item>
		<title>GoFaster:  deeper data analysis</title>
		<link>http://jagriffin.wordpress.com/2011/09/06/gofaster-deeper-data-analysis/</link>
		<comments>http://jagriffin.wordpress.com/2011/09/06/gofaster-deeper-data-analysis/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 23:50:41 +0000</pubDate>
		<dc:creator>jagriffin</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://jagriffin.wordpress.com/?p=78</guid>
		<description><![CDATA[For the GoFaster project, releng and the A-team have been working on various tasks which we hope will result in getting the total commit to all-tests-done time down to 2 hours for the main branches (try excluded).   This total turnaround time was 6-8 hours a couple of months ago when we began this project. We&#8217;ve [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=78&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For the <a href="https://wiki.mozilla.org/ReleaseEngineering/BuildFaster">GoFaster project</a>, releng and the A-team have been working on various tasks which we hope will result in getting the total commit to all-tests-done time down to 2 hours for the main branches (try excluded).   This total turnaround time was 6-8 hours a couple of months ago when we began this project.</p>
<p>We&#8217;ve recently made some improvements that seriously reduce the total machine time required to run all tests for a given commit.  These include <a href="http://jagriffin.wordpress.com/2011/08/09/gofaster-hiding-the-mochitest-results-table/">hiding the mochitest results table</a>, <a href="http://nakubu.com/post/28">removing packed.js from mochitest</a>, and streamlining individual slow tests (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=674738">bug 674738</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=676412">bug 676412</a>, and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=670229">bug 670229</a>).  These together have reduced the total machine time for test down from about 40 hours to around 25 hours per commit, a big win.</p>
<p>However, the total turnaround times are still much slower than our goal:</p>
<p><a href="http://jagriffin.files.wordpress.com/2011/09/e2e1.png"><img class="alignnone size-full wp-image-91" title="e2e" src="http://jagriffin.files.wordpress.com/2011/09/e2e1.png?w=700" alt=""   /></a></p>
<p>We already knew that PGO builds are slow, and jhford is working on turning on-demand builds into non-PGO builds, and make PGO builds every four hours (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=658313">bug 658313</a>).  However, we needed a way to dig deeper into the data to see what our other pain points are.</p>
<p>Will Lachance made some <a href="http://brasstacks.mozilla.com/gofaster/#/buildcharts">awesome build charts</a> which help us visualize what&#8217;s going on in these buildbot jobs.  Clicking any commit will show a chart that displays all the relevant buildbot jobs in relative clock time; this makes it easier to see where the bottlenecks are.</p>
<h2>Build times</h2>
<p>Display the build chart for just about any commit (<a href="http://brasstacks.mozilla.com/gofaster/buildchart.html?buildid=98808cfd49274d5fa51efdf56469c992">e58e98a89827</a> for instance), and you&#8217;ll see the problem right away:  just about every commit includes builds that far exceed 2 hours.  These aren&#8217;t always opt builds, and they sometimes occur even on our &#8216;fast&#8217; OS:  linux.  Check out <a href="http://brasstacks.mozilla.com/gofaster/buildchart.html?buildid=4ee29da6a0b347119e7f9540066a9318">5d9989c3bff6</a>, which has a linux64 opt build that takes 214 min, compared to the linux32 opt build that takes 61 minutes.  <a href="http://brasstacks.mozilla.com/gofaster/buildchart.html?buildid=fa7cceff224c4b95ab1846d3a812b950">198c7de0699d</a> has an OSX 10.5 debug build that takes 171 minutes, but the 10.6 debug build takes only 82 minutes.  Clearly, we can&#8217;t hit our 2-hour goal with builds that take 2+ hours.  What&#8217;s going on?</p>
<p>It&#8217;s necessary to spend a little time digging through build logs to find out.  It turns out there are multiple factors.</p>
<ol>
<li>We already know that PGO builds are slow, particularly on Windows.  Once <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=658313">bug 658313</a> lands, we expect the overall situation to improve dramatically.</li>
</ol>
<ol start="2">
<li>On some builds, the &#8216;update&#8217; step includes a full &#8216;hg clone&#8217; of mozilla-central, while others use &#8216;hg pull -u&#8217;.  Below is a graph of update times; the average time for an update that includes &#8216;hg clone&#8217; is 12.9 min, for those that use &#8216;hg pull&#8217; the average is 0.6 min.  Each full clone is costing us an average of 12 minutes.</li>
</ol>
<p><a href="http://jagriffin.files.wordpress.com/2011/09/update_times.png"><img class="alignnone size-full wp-image-86" title="update_times" src="http://jagriffin.files.wordpress.com/2011/09/update_times.png?w=700" alt=""   /></a></p>
<ol start="3">
<li>On some build slaves, we do a full build (with no obj dir from a previous build), on others we do an incremental build.   Below is a graph showing incremental vs full compile times for opt and debug builds.   On average, full compiles are taking 17 minutes longer than incremental ones.</li>
</ol>
<p><a href="http://jagriffin.files.wordpress.com/2011/09/compile_times.png"><img class="alignnone size-full wp-image-87" title="compile_times" src="http://jagriffin.files.wordpress.com/2011/09/compile_times.png?w=700" alt=""   /></a></p>
<ol start="4">
<li>We have a mix of slow and fast slaves.  This can easily be seen in the below graph of linux compile times.  On linux and linux64 builds, full compiles with moz2-linux(64)-* slaves are slow (those &gt; 75 min), while those made with linux(64)-ix-* slaves are fast (those &lt; 75 min).  32-bit mac builds show a similar split, with those on moz2-darwin9* slaves slow, and those on bm-xserve* slaves fast.  Hardware doesn&#8217;t appear to create a significant difference for windows and 64-bit mac builds.</li>
</ol>
<p><a href="http://jagriffin.files.wordpress.com/2011/09/fast_vs_slow.png"><img class="alignnone size-full wp-image-88" title="fast_vs_slow" src="http://jagriffin.files.wordpress.com/2011/09/fast_vs_slow.png?w=700" alt=""   /></a></p>
<ol start="5">
<li>On macosx64 machines, the &#8216;alive test&#8217; step takes an average of 6 min (vs 1 min on other os&#8217;s).</li>
<li>The &#8216;checking clobber times&#8217; step often takes just a couple of seconds, however when this step actually results in some clobbering being done, it can take up to 21 minutes (average: 6 min).</li>
</ol>
<p>When all these factors coincide, we can get builds (which include compile, update, and other steps) that exceed 4 hours.  This suggests doing away with on-demand PGO builds may not in itself get us to our 2-hour goal.</p>
<p>From this data, two of the more obvious ways to improve our build times might be:</p>
<ol>
<li>Investigate retiring slow linux and 32-bit mac build slaves.</li>
<li>Investigate ways to reduce clobbering.  Clobbering itself takes time (see bullet #6 above), but also indirectly costs time through increased update and compile times.  Currently, about 51% of our builds are operating on clobbered slaves, requiring full hg clones and full compiles.  If this number could be reduced, we might see a significant reduction in our average turnaround times.</li>
</ol>
<h2>Test times</h2>
<p>According to Will&#8217;s build charts, the E2E time for tests is often within our 30-minute target range.  The exception is mochitest-other on debug builds, which often takes from 60 to 90 minutes.  We could improve this situation somewhat by splitting mochitest-browser-chrome (the longest-running chunk of mochitest-other) into its own test job.</p>
<p>Additionally, wait times for test slaves running android and win 7 tests is sometimes non-trivial; see e.g. the details for commit <a href="http://brasstacks.mozilla.com/gofaster/buildchart.html?buildid=4886ddf5eb4e4af7be2d1c219245ada2">97216ae0fc04</a>.  We should try to understand why this happens; the graph of test wait times doesn&#8217;t show a clear trend, other than highlighting the fact that wait times for windows and android are usually worse than the other os&#8217;s.</p>
<p><a href="http://jagriffin.files.wordpress.com/2011/09/test_waits.png"><img class="alignnone size-full wp-image-92" title="test_waits" src="http://jagriffin.files.wordpress.com/2011/09/test_waits.png?w=700" alt=""   /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jagriffin.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jagriffin.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jagriffin.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jagriffin.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jagriffin.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jagriffin.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jagriffin.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jagriffin.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jagriffin.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jagriffin.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jagriffin.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jagriffin.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jagriffin.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jagriffin.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=78&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jagriffin.wordpress.com/2011/09/06/gofaster-deeper-data-analysis/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e99d6bbf275b2b638ac6414e6f1d832b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jagriffin</media:title>
		</media:content>

		<media:content url="http://jagriffin.files.wordpress.com/2011/09/e2e1.png" medium="image">
			<media:title type="html">e2e</media:title>
		</media:content>

		<media:content url="http://jagriffin.files.wordpress.com/2011/09/update_times.png" medium="image">
			<media:title type="html">update_times</media:title>
		</media:content>

		<media:content url="http://jagriffin.files.wordpress.com/2011/09/compile_times.png" medium="image">
			<media:title type="html">compile_times</media:title>
		</media:content>

		<media:content url="http://jagriffin.files.wordpress.com/2011/09/fast_vs_slow.png" medium="image">
			<media:title type="html">fast_vs_slow</media:title>
		</media:content>

		<media:content url="http://jagriffin.files.wordpress.com/2011/09/test_waits.png" medium="image">
			<media:title type="html">test_waits</media:title>
		</media:content>
	</item>
		<item>
		<title>GoFaster:  hiding the mochitest results table</title>
		<link>http://jagriffin.wordpress.com/2011/08/09/gofaster-hiding-the-mochitest-results-table/</link>
		<comments>http://jagriffin.wordpress.com/2011/08/09/gofaster-hiding-the-mochitest-results-table/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 17:21:28 +0000</pubDate>
		<dc:creator>jagriffin</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://jagriffin.wordpress.com/?p=74</guid>
		<description><![CDATA[I&#8217;m sure anyone who has ever submitted a patch to a Mozilla tree is familiar with this drill: hg push check TBPL, wait check TBPL again, wait some more go to Starbucks for a caramel macchiato, install a new OS on your laptop, review all the patches in your queue, plan next winter&#8217;s tropical vacation, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=74&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sure anyone who has ever submitted a patch to a Mozilla tree is familiar with this drill:</p>
<ol>
<li>hg push</li>
<li>check TBPL, wait</li>
<li>check TBPL again, wait some more</li>
<li>go to Starbucks for a caramel macchiato, install a new OS on your laptop, review all the patches in your queue, plan next winter&#8217;s tropical vacation, check TBPL, and&#8230;.</li>
<li>wait some more</li>
</ol>
<p>Recently, the total end-to-end time from submit to all-tests-done has been around 6-8 hours, depending on load.  That&#8217;s too long, and RelEng and the A-Team think we can do something about it.  For the past couple of months we&#8217;ve been working on the GoFaster project; our goal is to get that turnaround time down to 2 hours.  We have a <a href="https://bugzilla.mozilla.org/buglist.cgi?list_id=743687&amp;resolution=---&amp;status_whiteboard_type=allwordssubstr&amp;query_format=advanced&amp;status_whiteboard=buildfaster:p">list of tasks</a>, and recently one of these landed with some significant improvements.</p>
<p>Cameron McCormack wrote a patch which hides the mochitest results table when MOZ_HIDE_RESULTS_TABLE=1 (see: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=479352">bug 479352</a>).  The initial version of this patch caused frequent hangs during mochitest-1/5.  We didn&#8217;t discover the reason behind this, but  I updated the patch to hide the result table in a different way, and the hang vanished.  I pushed this change to mozilla-central, and Cameron made <a href="http://mcc.id.au/temp/2011/times2.html">a table</a> displaying before and after durations for all the test runs.</p>
<p>The results?  That one change saves about 13 hours of machine time <em>per checkin</em>.  The entire suite of unit tests which prior to that change took about 40 machine-hours to run now takes 27.  Wow!</p>
<p>What kind of improvement in the end-to-end time does that translate into?  I&#8217;m not sure.  Sam Liu, an A-Team intern, has been working on a dashboard to help track this, but it&#8217;s currently using canned (stale) data.  RelEng is working on exposing live data to be consumed by the dashboard, and when that&#8217;s ready we should be able to easily track the effect of changes like this in the overall time.</p>
<p>Meanwhile, check out <a href="https://wiki.mozilla.org/ReleaseEngineering/BuildFaster">the project&#8217;s wiki page</a> or attend <a href="https://wiki.mozilla.org/ReleaseEngineering/BuildFaster#Meetings">one of our meetings</a>.  If you have thoughts on ways we can improve our total turnaround time, we&#8217;d love to hear from you.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jagriffin.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jagriffin.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jagriffin.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jagriffin.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jagriffin.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jagriffin.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jagriffin.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jagriffin.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jagriffin.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jagriffin.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jagriffin.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jagriffin.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jagriffin.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jagriffin.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=74&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jagriffin.wordpress.com/2011/08/09/gofaster-hiding-the-mochitest-results-table/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e99d6bbf275b2b638ac6414e6f1d832b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jagriffin</media:title>
		</media:content>
	</item>
		<item>
		<title>WebGL Conformance Tests now in GrafxBot</title>
		<link>http://jagriffin.wordpress.com/2011/03/07/webgl-conformance-tests-now-in-grafxbot/</link>
		<comments>http://jagriffin.wordpress.com/2011/03/07/webgl-conformance-tests-now-in-grafxbot/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 22:36:15 +0000</pubDate>
		<dc:creator>jagriffin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jagriffin.wordpress.com/?p=56</guid>
		<description><![CDATA[GrafxBot has been updated to include the mochitest version of the WebGL Conformance Tests.  When you run GrafxBot tests using the new version, it will run the usual reftests first, followed by the new WebGL tests.  Both sets of test results are posted to the database at the end of test. The WebGL tests may [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=56&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>GrafxBot has been updated to include the mochitest version of the <a href="http://www.khronos.org/webgl/wiki/Testing/Conformance">WebGL Conformance Tests</a>.  When you run GrafxBot tests using the new version, it will run the usual reftests first, followed by the new WebGL tests.  Both sets of test results are posted to the database at the end of test.</p>
<p>The WebGL tests may be skipped for a couple of reasons:  they&#8217;ll be skipped if you have a <a href="http://mxr.mozilla.org/mozilla-central/source/content/canvas/test/webgl/test_webgl_conformance_test_suite.html?force=1#329">Mac running less than 10.6</a>, or if WebGL isn&#8217;t enabled in Firefox on your machine, which could happen if you don&#8217;t have supported hardware or drivers.  GrafxBot doesn&#8217;t try to force-enable either WebGL or accelerated layers.</p>
<p>Partially to support these tests, GrafxBot now reports some additional details about Firefox&#8217;s acceleration status, similar to what you see in about:support:</p>
<table style="border:solid 1px black;margin-bottom:2em;border-collapse:collapse;">
<tbody>
<tr>
<td style="text-align:right;background-color:lightgray;border:solid 1px black;padding:4px;">webgl results</td>
<td style="border:solid 1px black;padding:4px;">132 pass / 7 fail</td>
</tr>
<tr>
<td style="text-align:right;background-color:lightgray;border:solid 1px black;padding:4px;">webgl renderer</td>
<td style="border:solid 1px black;padding:4px;">Google Inc. &#8212; ANGLE &#8212; OpenGL ES 2.0 (ANGLE 0.0.0.541)</td>
</tr>
<tr>
<td style="text-align:right;background-color:lightgray;">acceleration mode</td>
<td style="border:solid 1px black;padding:4px;">2/2 Direct3D 10</td>
</tr>
<tr>
<td style="text-align:right;background-color:lightgray;border:solid 1px black;padding:4px;">d2d enabled</td>
<td style="border:solid 1px black;padding:4px;">true</td>
</tr>
<tr>
<td style="text-align:right;background-color:lightgray;border:solid 1px black;padding:4px;">directwrite enabled</td>
<td style="border:solid 1px black;padding:4px;">true: 6.1.7600.20830, font cache n/a</td>
</tr>
</tbody>
</table>
<p>I encourage users to download and run the new version; I&#8217;d like to get some feedback before I update it on AMO, to make sure users aren&#8217;t running into problems with the new tests.</p>
<p>The new version of GrafxBot can be <a href="http://people.mozilla.org/~jgriffin/grafxbot-0.2.00.xpi">downloaded here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jagriffin.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jagriffin.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jagriffin.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jagriffin.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jagriffin.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jagriffin.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jagriffin.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jagriffin.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jagriffin.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jagriffin.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jagriffin.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jagriffin.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jagriffin.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jagriffin.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=56&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jagriffin.wordpress.com/2011/03/07/webgl-conformance-tests-now-in-grafxbot/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e99d6bbf275b2b638ac6414e6f1d832b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jagriffin</media:title>
		</media:content>
	</item>
		<item>
		<title>Latest Tinderbox Build URL&#8217;s</title>
		<link>http://jagriffin.wordpress.com/2011/02/24/latest-tinderbox-build-urls/</link>
		<comments>http://jagriffin.wordpress.com/2011/02/24/latest-tinderbox-build-urls/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 17:57:06 +0000</pubDate>
		<dc:creator>jagriffin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jagriffin.wordpress.com/?p=52</guid>
		<description><![CDATA[The automation tools team creates a variety of automation tools that test a wide range of things.  There are times when these tools need to locate the latest tinderbox build for a given platform, in order to test against.  In the past, this task involved spidering along the FTP site that is home to tinderbox [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=52&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The automation tools team creates a variety of automation tools that test a wide range of things.  There are times when these tools need to locate the latest tinderbox build for a given platform, in order to test against.  In the past, this task involved spidering along the <a href="http://stage.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/">FTP site</a> that is home to tinderbox builds.</p>
<p>Now, however, there&#8217;s a much easier way:  a web service which returns a JSON document that always contains the latest tinderbox build url&#8217;s for all platforms.  This is made possible by Christian Legnitto&#8217;s awesome <a href="http://pulse.mozilla.org/">Mozilla Pulse</a>, which sends messages to consumers when certain buildbot events (among other things) occur.  I&#8217;ve written a Python library, <a href="http://hg.mozilla.org/automation/pulsebuildmonitor">pulsebuildmonitor</a>, which makes it even easier to act as a consumer for these messages, and layered a small web service on top of that.</p>
<p>The result is <a href="http://brasstacks.mozilla.com/latestbuilds/README">http://brasstacks.mozilla.com/latestbuilds/README</a>, or get the actual JSON at <a href="http://brasstacks.mozilla.com/latestbuilds/">http://brasstacks.mozilla.com/latestbuilds/</a>.</p>
<p>Currently this only works for mozilla-central, but I could easily extend it to other trees if needed.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jagriffin.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jagriffin.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jagriffin.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jagriffin.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jagriffin.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jagriffin.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jagriffin.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jagriffin.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jagriffin.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jagriffin.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jagriffin.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jagriffin.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jagriffin.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jagriffin.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=52&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jagriffin.wordpress.com/2011/02/24/latest-tinderbox-build-urls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e99d6bbf275b2b638ac6414e6f1d832b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jagriffin</media:title>
		</media:content>
	</item>
		<item>
		<title>ProfileManager 1.0_beta1</title>
		<link>http://jagriffin.wordpress.com/2011/01/11/profilemanager-1-0_beta1/</link>
		<comments>http://jagriffin.wordpress.com/2011/01/11/profilemanager-1-0_beta1/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 02:18:54 +0000</pubDate>
		<dc:creator>jagriffin</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://jagriffin.wordpress.com/?p=47</guid>
		<description><![CDATA[ProfileManager is a standalone app that can be used to manage profiles for Firefox and other xulrunner apps. The profile manager which is built into Firefox is going away after 4.0, so this new app will be the best choice for managing profiles in future Firefox versions, but it works great with 4.0 and earlier [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=47&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ProfileManager is a standalone app that can be used to manage profiles for Firefox and other xulrunner apps.  The profile manager which is built into Firefox is going away after 4.0, so this new app will be the best choice for managing profiles in future Firefox versions, but it works great with 4.0 and earlier versions as well, not to mention Thunderbird.</p>
<p>Some of its features:</p>
<ul>
<li>easy profile backup and restore</li>
<li>ability to save/restore profiles to zip archives (which makes it easy to move them between machines)</li>
<li>ability to manage multiple versions of Firefox, and associate profiles with specific Firefox versions</li>
<li>allows user to launch any profile with any version of Firefox installed on his system, as shown in the graphic below</li>
</ul>
<p><img class="alignnone size-medium wp-image-49" title="ProfileManager" src="http://jagriffin.files.wordpress.com/2011/01/capture.png?w=700" alt="" /></p>
<p>You can download a build of the 1.0_beta1 version from <a href="ftp://ftp.mozilla.org/pub/utilities/profilemanager/1.0_beta1/">ftp://ftp.mozilla.org/pub/utilities/profilemanager/1.0_beta1/</a>.  Myself and the others who have worked on this (principally Jeffrey Hammel and Mark Côté) would love feedback; feel free to leave comments or file a <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Testing&amp;component=ProfileManager">bugzilla bug</a> if you find problems.</p>
<p><em>Note</em>: by default, ProfileManager works with Firefox profiles.  To use it with the profiles of a different xulrunner app, pass the name of the app to it as an argument, e.g., &#8216;profilemanager thunderbird&#8217;.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jagriffin.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jagriffin.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jagriffin.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jagriffin.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jagriffin.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jagriffin.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jagriffin.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jagriffin.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jagriffin.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jagriffin.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jagriffin.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jagriffin.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jagriffin.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jagriffin.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=47&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jagriffin.wordpress.com/2011/01/11/profilemanager-1-0_beta1/feed/</wfw:commentRss>
		<slash:comments>102</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e99d6bbf275b2b638ac6414e6f1d832b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jagriffin</media:title>
		</media:content>

		<media:content url="http://jagriffin.files.wordpress.com/2011/01/capture.png" medium="image">
			<media:title type="html">ProfileManager</media:title>
		</media:content>
	</item>
		<item>
		<title>ProfileManager icons requested!</title>
		<link>http://jagriffin.wordpress.com/2010/10/18/profilemanager-icons-requested/</link>
		<comments>http://jagriffin.wordpress.com/2010/10/18/profilemanager-icons-requested/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 00:39:03 +0000</pubDate>
		<dc:creator>jagriffin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jagriffin.wordpress.com/?p=37</guid>
		<description><![CDATA[The Profile Manager which has been bundled with Firefox from time immemorial is going to be removed from Firefox builds soon after Firefox 4 ships; see bug 214675.  Firefox will still support multiple profiles, it just won&#8217;t have a built-in UI for managing them. Instead, a few of us on the Mozilla Automation Tools team [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=37&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://support.mozilla.com/en-US/kb/Managing+profiles">Profile Manager which has been bundled with Firefox</a> from time immemorial is going to be removed from Firefox builds soon after Firefox 4 ships; see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=214675">bug 214675</a>.  Firefox will still support multiple profiles, it just won&#8217;t have a built-in UI for managing them.</p>
<p>Instead, a few of us on the Mozilla Automation Tools team have been busy building a standalone replacement.  This will be available as a separate download, and will include a lot of cool features not available in the current incarnation of Profile Manager, like the capability to backup and restore profiles.  For background, see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=539524">bug 539524</a>, and <a href="https://wiki.mozilla.org/Auto-tools/Projects/ProfileManager">this wiki page</a>.</p>
<p>There are <a href="http://people.mozilla.org/~jgriffin/profilemanager/">builds available to play with</a>, but exercise caution, as these builds are beta quality, and it&#8217;s possible there may be bugs therein which would cause profile corruption or other problems.  If you do decide to play with it, you may want to <a href="http://support.mozilla.com/en-US/kb/Backing%20up%20your%20information">backup your profiles first</a>.</p>
<p>Currently, the icon for the new Profile Manager is the default xulrunner icon:  <img class="size-full wp-image-40 alignnone" title="default48" src="http://jagriffin.files.wordpress.com/2010/10/default48.png?w=700" alt=""   /></p>
<p>This doesn&#8217;t seem very interesting for a new Profile Manager, and I lack even rudimentary graphics skills, so I&#8217;d like to request help!  If you have some graphics experience and would like to contribute to a cool new Mozilla tool, please submit an icon you think would be awesome as an attachment to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=605576">bug 605576</a>.  Icons should be in PNG format, preferably 48&#215;48 or 64&#215;64, and should be freely distributable.  The creator of the icon that is selected will be mentioned in Profile Manager&#8217;s about box, and will have the satisfaction of knowing that their icon is seen every time the new Profile Manager is used.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jagriffin.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jagriffin.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jagriffin.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jagriffin.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jagriffin.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jagriffin.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jagriffin.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jagriffin.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jagriffin.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jagriffin.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jagriffin.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jagriffin.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jagriffin.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jagriffin.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=37&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jagriffin.wordpress.com/2010/10/18/profilemanager-icons-requested/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e99d6bbf275b2b638ac6414e6f1d832b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jagriffin</media:title>
		</media:content>

		<media:content url="http://jagriffin.files.wordpress.com/2010/10/default48.png" medium="image">
			<media:title type="html">default48</media:title>
		</media:content>
	</item>
		<item>
		<title>GrafxBot Results Update</title>
		<link>http://jagriffin.wordpress.com/2010/09/22/grafxbot-results-update/</link>
		<comments>http://jagriffin.wordpress.com/2010/09/22/grafxbot-results-update/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 18:44:37 +0000</pubDate>
		<dc:creator>jagriffin</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jagriffin.wordpress.com/?p=32</guid>
		<description><![CDATA[Thanks to the many thousands of you who have downloaded GrafxBot and submitted test results to Mozilla!  In case you&#8217;re curious about what we&#8217;ve done with all that data, here are some statistics: According to AMO, GrafxBot has been downloaded about 4700 times. We have nearly 30,000 sets of test results that were submitted to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=32&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Thanks to the many thousands of you who have downloaded GrafxBot and submitted test results to Mozilla!  In case you&#8217;re curious about what we&#8217;ve done with all that data, here are some statistics:</p>
<ul>
<li>According to <a href="https://addons.mozilla.org/en-US/firefox/addon/200733/">AMO</a>, GrafxBot has been downloaded about 4700 times.</li>
<li>We have nearly 30,000 sets of test results that were submitted to our database, for a total of 3.7 million tests.</li>
<li>The test results span 282 unique video cards on Windows, 30 on Mac, and 171 on Linux.</li>
<li>The failure rate (which is somewhat subjective given the manual pass/fail mechanism) averages around 0.4% on Windows, 0.5% on Mac, and 1.1% on Linux.</li>
<li>Test data has resulted in a total of <a href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&amp;short_desc=grafxbot&amp;short_desc_type=allwordssubstr&amp;resolution=---&amp;resolution=FIXED&amp;resolution=INVALID&amp;resolution=WONTFIX&amp;resolution=DUPLICATE&amp;resolution=WORKSFORME&amp;resolution=INCOMPLETE&amp;resolution=EXPIRED&amp;resolution=MOVED">37 bugs</a> being filed.</li>
</ul>
<p>Aside from the raw test results, many of you have submitted useful comments.  Some have noted that fonts look bad when Firefox is accelerated; others have described scrolling or other issues.  Not all of these problems can be detected by GrafxBot, so if you notice problems like these when browsing, I encourage you to file a bug report in <a href="https://bugzilla.mozilla.org">Bugzilla</a>, under Core -&gt; Graphics.  If you submit a bug report, please include the details of your graphics hardware, and include a screenshot if possible.</p>
<p>GrafxBot continues to be updated along with Firefox betas, so I encourage interested folks to continue running GrafxBot each beta release.  Thanks for all your help in making Firefox 4 the fastest ever!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jagriffin.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jagriffin.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jagriffin.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jagriffin.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jagriffin.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jagriffin.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jagriffin.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jagriffin.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jagriffin.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jagriffin.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jagriffin.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jagriffin.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jagriffin.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jagriffin.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=32&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jagriffin.wordpress.com/2010/09/22/grafxbot-results-update/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e99d6bbf275b2b638ac6414e6f1d832b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jagriffin</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducting Grafx Bot</title>
		<link>http://jagriffin.wordpress.com/2010/08/30/introducting-grafx-bot/</link>
		<comments>http://jagriffin.wordpress.com/2010/08/30/introducting-grafx-bot/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 19:06:56 +0000</pubDate>
		<dc:creator>jagriffin</dc:creator>
				<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://jagriffin.wordpress.com/?p=8</guid>
		<description><![CDATA[One of the new features of Firefox 4 is graphics hardware acceleration.   This, along with the new layers code, will help improve Firefox performance during things like page rendering and full-screen video. Firefox&#8217;s hardware acceleration interacts with a machine&#8217;s graphics hardware via DirectX or OpenGL, depending on platform.  These interactions tend to be very sensitive [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=8&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a style="margin-right:2em;" href="http://jagriffin.files.wordpress.com/2010/08/grafxbot-logo-starburst-128x128-blue.png"><img class="alignleft" style="border:0 none;" title="grafxBot-logo-starburst-128x128-blue" src="http://jagriffin.files.wordpress.com/2010/08/grafxbot-logo-starburst-128x128-blue.png?w=128&#038;h=128" alt="" width="128" height="128" /></a>One of the new features of <a href="http://www.mozilla.com/en-US/firefox/beta/">Firefox 4</a> is graphics hardware acceleration.   This, along with the new<a href="http://www.basschouten.com/blog1.php/2010/01/18/layers-cross-platform-acceleration"> layers code</a>, will help improve Firefox performance during things like page rendering and full-screen video.</p>
<p>Firefox&#8217;s hardware acceleration interacts with a machine&#8217;s graphics hardware via DirectX or OpenGL, depending on platform.  These interactions tend to be very sensitive to the graphics environment on the system (e.g., the specific video card(s) on the system, how much VRAM is available, the version of the video driver, the OS version, etc).  In fact, there are so many permutations of the relevant factors that we can&#8217;t test them all internally.  We need help from the community, so we can get exposure on as many unique hardware environments as possible.</p>
<p>To answer this need, I developed <a href="https://addons.mozilla.org/en-US/firefox/addon/200733/">Grafx Bot</a>.  It&#8217;s an add-on that end users can download, which runs a suite of automatic tests on their machine that exercises interesting aspects of hardware acceleration.  At the end of the tests, it allows users to post their results to Mozilla, where the data will be collected and analyzed, and hopefully lead to bug fixes and more reliable code for hardware acceleration than we&#8217;d otherwise have.</p>
<p><strong>How it works</strong></p>
<p>Grafx Bot is basically a new UI wrapped around Mozilla&#8217;s existing <a href="https://developer.mozilla.org/en/Creating_reftest-based_unit_tests">reftest framework</a>.  Reftest works by comparing the visual output of two different pages, which are supposed to be rendered identically.  For example, <a href="http://people.mozilla.org/~jgriffin/svg-effects-area-unzoomed-ref.xhtml">this page</a> and <a href="http://people.mozilla.org/~jgriffin/svg-effects-area-unzoomed.xhtml">this page</a> should be rendered identically, even though their markup is different.  If reftest detects that the pages are rendered differently, it fails the test.</p>
<p>Grafx Bot runs a series of reftests that are designed to exercise the hardware acceleration code.  Primarily, these are tests in the following categories:  css-transitions, layers, ogg-video, scrolling, svg, text, text-decoration, and z-index.  While the tests are executing, users will see images and colors flicker across their screen.</p>
<p>It&#8217;s possible that graphics hardware acceleration will produce small, but invisible changes in rendering between test pages.  We don&#8217;t really care about these, we only care when the differences are visually apparent.  Because of this, when Grafx Bot detects a reftest failure, it will ask the user if the differences are visible, by displaying both test images side-by-side.</p>
<p>Once the tests are complete, it will ask the user to click a button which submits the test results to Mozilla.  After the data is in our database, the results will be reviewed, and bugs will be filed as needed.</p>
<p>I recommend that users install Grafx Bot in a clean profile with no other add-ons or extensions installed.  This is because certain add-ons can interfere with Grafx Bot, or can cause it to run tests much slower than it would otherwise be able to.  For instructions on how to create a new profile in Firefox, see<a href="http://support.mozilla.com/en-US/kb/managing+profiles"> this article at support.mozilla.org</a>.</p>
<p><strong>Types of acceleration tested</strong></p>
<p>There are multiple types of hardware acceleration being developed.  Here&#8217;s what Grafx Bot tests.</p>
<p>Grafx Bot runs the reftests with MOZ_ACCELERATED=11. This <a href="http://www.basschouten.com/blog1.php/2010/01/18/layers-cross-platform-acceleration">enables acceleration of layers</a> via OpenGL (on Linux and Mac) and Direct3D (on Windows).  On Windows, Grafx Bot also toggles <a href="http://www.basschouten.com/blog1.php/2010/03/02/presenting-direct2d-hardware-acceleratio">Direct2D acceleration</a>.</p>
<p>The latter type of acceleration can be toggled dynamically, whereas the former cannot.  For this reason, on Windows only, Grafx Bot runs twice as many tests as on the other platforms.  It basically runs each test twice, with different settings, like so:</p>
<ul>
<li>test 1a: test file with D2D enabled vs reference file with D2D enabled</li>
<li>test 1b: test file with D2D enabled vs test file with D2D disabled</li>
</ul>
<p><strong>Test data</strong></p>
<p>Along with the results of all the reftests that Grafx Bot performs, we collect anonymous hardware information.  This allows us to associate test failures with specific hardware.  Users can see the system information we collect before they submit test results by clicking on the &#8220;System info&#8221; link on Grafx Bot&#8217;s homepage.  It looks something like this:</p>
<p><a href="http://jagriffin.files.wordpress.com/2010/08/sysinfo.png"><img class="alignnone size-medium wp-image-12" title="sysinfo" src="http://jagriffin.files.wordpress.com/2010/08/sysinfo.png?w=530&#038;h=224" alt="" width="530" height="224" /></a></p>
<p>Even though this data is anonymous, this data is protected by Grafx Bot&#8217;s privacy policy (see link from the add-on&#8217;s homepage), and so is available only to Mozilla and to the user who submitted the test data.</p>
<p>Aggregate data, on the other hand, can be viewed by anyone.  <a href="http://brasstacks.mozilla.com/resultserv/data/">Click here</a> to peruse Grafx Bot data summaries.</p>
<p><strong>More info</strong></p>
<p>Want more information on hardware acceleration features in Firefox?  Check out these blog posts from Firefox graphics developers:</p>
<p><a href="http://blog.mozilla.com/joe/2010/05/25/hardware-accelerating-firefox/">Hardware accelerating Firefox</a></p>
<p><a href="http://www.basschouten.com/blog1.php/2010/04/07/firefox-video-goes-up-to-11">Firefox video goes up to 11</a></p>
<p><a href="http://www.basschouten.com/blog1.php/2009/11/25/firefox-and-direct2d-performance-analysi">Firefox and Direct2d: performance analysis</a></p>
<p><a href="http://www.basschouten.com/blog1.php/2009/11/22/direct2d-hardware-rendering-a-browser">Direct2d: hardware rendering a browser</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jagriffin.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jagriffin.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jagriffin.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jagriffin.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jagriffin.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jagriffin.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jagriffin.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jagriffin.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jagriffin.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jagriffin.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jagriffin.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jagriffin.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jagriffin.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jagriffin.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jagriffin.wordpress.com&amp;blog=15459671&amp;post=8&amp;subd=jagriffin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jagriffin.wordpress.com/2010/08/30/introducting-grafx-bot/feed/</wfw:commentRss>
		<slash:comments>93</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e99d6bbf275b2b638ac6414e6f1d832b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jagriffin</media:title>
		</media:content>

		<media:content url="http://jagriffin.files.wordpress.com/2010/08/grafxbot-logo-starburst-128x128-blue.png" medium="image">
			<media:title type="html">grafxBot-logo-starburst-128x128-blue</media:title>
		</media:content>

		<media:content url="http://jagriffin.files.wordpress.com/2010/08/sysinfo.png?w=300" medium="image">
			<media:title type="html">sysinfo</media:title>
		</media:content>
	</item>
	</channel>
</rss>
