<?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/"
	>

<channel>
	<title>happiest unalice ever &#187; mozilla</title>
	<atom:link href="http://alice.nodelman.net/blog/post/category/mozilla/feed/" rel="self" type="application/rss+xml" />
	<link>http://alice.nodelman.net/blog</link>
	<description>infrequent updates and long delays</description>
	<pubDate>Fri, 06 May 2011 23:36:20 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Addon Performance Testing: Updates and Future Work</title>
		<link>http://alice.nodelman.net/blog/post/addon-performance-testing-updates-and-future-work/</link>
		<comments>http://alice.nodelman.net/blog/post/addon-performance-testing-updates-and-future-work/#comments</comments>
		<pubDate>Fri, 06 May 2011 23:36:20 +0000</pubDate>
		<dc:creator>alice</dc:creator>
		
		<category><![CDATA[addons]]></category>

		<category><![CDATA[mozilla]]></category>

		<category><![CDATA[talos]]></category>

		<guid isPermaLink="false">http://alice.nodelman.net/blog/?p=152</guid>
		<description><![CDATA[The addons performance testing system has been up and live for a few weeks now.  With so many more eyes then mine on the system I&#8217;ve seen a bunch of bug filings - which is awesome.  With each bug fixed the Talos system works better for both addons and for the general Firefox performance testing.
Here&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>The addons performance testing system has been up and live for a few weeks now.  With so many more eyes then mine on the system I&#8217;ve seen a bunch of bug filings - which is awesome.  With each bug fixed the Talos system works better for both addons and for the general Firefox performance testing.</p>
<p>Here&#8217;s what&#8217;s already fixed and rolled out:</p>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=639898">Bug 639898 - Tracking bug for talos performance testing on firebug (non-clean state)</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=647954">Bug 647954 - When extracting add-ons files should be written in binary mode</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=648113">Bug 648113 - documentation for how addons are perf tested/how to home test</a> (See the generated documentation <a href="https://wiki.mozilla.org/Auto-tools/Tools/Talos">here</a>, along with updates to the MDC documentation <a href="https://developer.mozilla.org/en/Running_automated_tests">here</a>.)</li>
</ul>
<p>Here&#8217;s what&#8217;s fixed but waiting on deployment (which will probably happen early next week):</p>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=648229">Bug 648229 - Compatibility info of the add-ons isn&#8217;t properly considered during performance testing</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=648732">Bug 648732 - Testing add-ons unpacked creates unrealistic results</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=648749">Bug 648749 - Talos should capture error console output in the logs</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=648978">Bug 648978 - install.rdf parsing in Talos is very rudimentary and fails for some add-ons</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=650709">Bug 650709 - Suspiciously high performance impact reported for Personas Plus and SimilarWeb on Windows 7</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=650947">Bug 650947 - Make sure that NoScript doesn&#8217;t break startup test page</a></li>
</ul>
<p>There are still more bug fixes in the works.  Next on my list is <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=648225">Bug 648225 - Performance of platform-dependent add-ons is not tested</a>, which will improve the testing system&#8217;s simulation of the real world.</p>
<p>In terms of future plans, we are going forward with a second quarter  goal of completing an on-demand addon testing service.  Basically, this  would allow an addon author to request that their addon be tested at any  time, instead of waiting for our weekly tests of the <span class="nu0">100</span> most downloaded addons.  This will gain us greater coverage of more  addons along with a means to double or triple check results.  Did your  addon perform poorly?  Retest!  Are you suspicious of the results?   Retest!  Did the addon fail to download or install?  Retest!  If you  want to follow along the bugs that will lead to this system are:</p>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=643506">Bug 643506 -Move 7 automation and tools machines to new Addons Testing Secure buildbot pool</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=617762">Bug 617762 - set up new vm to act as talos addon tester master</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=648114">Bug 648114 - means of pushing sendchanges from amo to addons perf test pool</a></li>
</ul>
<p>Once the on-demand system is in place, we&#8217;ll be working to introduce a greater variety of tests.  The ts <span class="br0">(</span>test startup<span class="br0">)</span> was an easy test to begin with, but it can be of limited meaning for a  lot of addons.  I&#8217;d like us to cover far more of the available Talos  tests, concentrating on the tp <span class="br0">(</span>test pageload<span class="br0">)</span> tests.  Tp is interesting because it uses a set of collected, local web pages <span class="br0">(</span><span class="nu0">100</span> culled from the Alexa top <span class="nu0">300</span> list of worldwide top used sites<span class="br0">)</span> that are then cycled through ten times.  With a given addon installed and active <span class="br0">(</span>for some meaning of &#8216;active&#8217; which will be different for different addons<span class="br0">)</span> this will give a greater idea of how real world page load time is  impacted.  As a side benefit of Tp, Talos will monitor the memory  footprint and CPU usage during this test.  By comparing an addon run to a  no-addon run we&#8217;ll be able to observe memory and CPU usage differences.</p>
<p>I believe that we are also going to need to put effort into provided some testing hooks/prefs for Talos to use.  As in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=459965">Bug 459965 - Add standardized support for first-run pages to install.rdf</a>.  Talos doesn&#8217;t react well to first run pages and it would be great to  have the means to disable them with a single pref, instead of a  customized pref per-addon - especially since the standard use case is  that users do not see the first-run page on a regular basis, as they  only see it post-installation and never again.  I believe that there are  probably some other settings like this that would standardize creating a  Talos testing environment, and thus make addon-testing more applicable  to the type of bulk testing that Talos does.</p>
<p>Testing addons has been a whole new area of Talos testing, and it has  its own unique set of challenges.  I&#8217;ve spent most of my time at Mozilla  concentrating on automated browser performance testing and the addons  world is still quite new to me.  Each addon effects the browser in its  own way; while I&#8217;ve grown accustomed to standardizing tests across  browsers versions, platforms and machines this is definitely a new  horizon.  The Talos tests are just one way to look at performance  impact, but not the final word.  It may never be appropriate for a given  type of addons, but I most definitely want to work with addon  developers to try and get the best coverage that we can.</p>
]]></content:encoded>
			<wfw:commentRss>http://alice.nodelman.net/blog/post/addon-performance-testing-updates-and-future-work/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Plans for Tp5</title>
		<link>http://alice.nodelman.net/blog/post/plans-for-tp5/</link>
		<comments>http://alice.nodelman.net/blog/post/plans-for-tp5/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 23:13:15 +0000</pubDate>
		<dc:creator>alice</dc:creator>
		
		<category><![CDATA[mozilla]]></category>

		<category><![CDATA[talos]]></category>

		<guid isPermaLink="false">http://alice.nodelman.net/blog/?p=145</guid>
		<description><![CDATA[When I was writing the history of Tp tests for the Talos wiki page I realized that it is time to update Tp.
Good to start with some background first.  Tp stands for &#8216;test pageload&#8217;.  It is a basic browser test that cycles though a number of web pages.  The web pages are culled from the [...]]]></description>
			<content:encoded><![CDATA[<p>When I was writing the <a href="https://wiki.mozilla.org/Buildbot/Talos#History_of_tp_Tests">history of Tp tests</a> for the Talos wiki page I realized that it is time to update Tp.</p>
<p>Good to start with some background first.  Tp stands for &#8216;test pageload&#8217;.  It is a basic browser test that cycles though a number of web pages.  The web pages are culled from the <a href="http://www.alexa.com/topsites">Alexa Top 500</a>.  The current version of Tp is Tp4.  To create it I grabbed a local copy of as many of the top 500 as I could (some pages always seem to be unreachable). The pages where then narrowed down to the top 100 by following these guidelines:</p>
<ul>
<li>Does the page correctly load from a local copy?  Are all the images/video present?  Does the layout/css still work?  Drop if the page is broken in any way.</li>
<li>Is the page a duplicate?  The Alexa Top 500 contains many localized copies of the Google home page and one is enough.  Drop if it is a dupe or there is already a similar page in the set.</li>
<li>Is the page &#8216;interesting&#8217;?  Does it contain a font that isn&#8217;t covered by another page?  Does it have many images?  Complicated or large layout?  Keep if the page meets any of these criteria.</li>
</ul>
<p>The question now is if we want to repeat these steps to create Tp5.  The main complaint against Tp4 is that the Alexa Top 500 points to the home pages of sites - say the login screen for Facebook or the basic en-US Google page.  Yet, these are not things that people are actually using each site for.  If we wanted a representative Facebook page it should be someone&#8217;s logged in home page; if we wanted a representative Google page it should be a page of search results, or, even better, a Gmail user&#8217;s inbox.  So, how do we go about doing this?  How do we choose the best representation of a given site?</p>
<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=601798">Bug 601798 - create tp5 pageset</a> has been filed to track requirements for the new Tp5 test web page set development.  I have some crazy theory that I could post instructions of how to make local copies of web pages and then post a &#8216;Most Wanted&#8217; list and see if anybody out there is willing to send me content.  Anybody up for that?  Do you want to have your Gmail inbox be the standard for Mozilla testing?  Is that awesome - or terrifying?</p>
]]></content:encoded>
			<wfw:commentRss>http://alice.nodelman.net/blog/post/plans-for-tp5/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Talos in Hg!  Plus New Version of Standalone Talos</title>
		<link>http://alice.nodelman.net/blog/post/talos-in-hg-plus-new-version-of-standalone-talos/</link>
		<comments>http://alice.nodelman.net/blog/post/talos-in-hg-plus-new-version-of-standalone-talos/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 23:25:27 +0000</pubDate>
		<dc:creator>alice</dc:creator>
		
		<category><![CDATA[mozilla]]></category>

		<category><![CDATA[talos]]></category>

		<guid isPermaLink="false">http://alice.nodelman.net/blog/?p=140</guid>
		<description><![CDATA[Bug 556530 - move Talos from cvs into Mercurial has landed and there is much rejoicing.  The version of Talos in CVS will no longer be maintained.
As part of the switchover I&#8217;ve updated Standalone Talos to V2.  The only change in this version is that it is based upon the hg talos repo.
]]></description>
			<content:encoded><![CDATA[<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=556530">Bug 556530 - move Talos from cvs into Mercurial</a> has landed and there is much rejoicing.  The version of Talos in CVS will no longer be maintained.</p>
<p>As part of the switchover I&#8217;ve updated Standalone Talos to <a href="https://wiki.mozilla.org/StandaloneTalos#V2_.28October_7th.2C_2010.29">V2</a>.  The only change in this version is that it is based upon the <a href="http://hg.mozilla.org/build/talos/">hg talos repo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://alice.nodelman.net/blog/post/talos-in-hg-plus-new-version-of-standalone-talos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Talos Code in Hg (almost)</title>
		<link>http://alice.nodelman.net/blog/post/talos-code-in-hg-almost/</link>
		<comments>http://alice.nodelman.net/blog/post/talos-code-in-hg-almost/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 00:00:19 +0000</pubDate>
		<dc:creator>alice</dc:creator>
		
		<category><![CDATA[mozilla]]></category>

		<category><![CDATA[talos]]></category>

		<guid isPermaLink="false">http://alice.nodelman.net/blog/?p=135</guid>
		<description><![CDATA[The repository has been created, the buildbot patches have been r+ed and we are now so, so close to having a full switch over of Talos from CVS to Mercurial.  Talos has long lagged behind the rest of the Mozilla universe by stubbornly staying with CVS.  The main sticking point was a belief that we [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://hg.mozilla.org/build/talos/">repository</a> has been created, the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=556530">buildbot patches</a> have been r+ed and we are now so, so close to having a full switch over of Talos from CVS to Mercurial.  Talos has long lagged behind the rest of the Mozilla universe by stubbornly staying with CVS.  The main sticking point was a belief that we would have to install Mercurial on all Talos boxes to get parity with the current CVS set up - as Talos is checked out from CVS per-test run by all Talos boxes.  In the end, I found that I could avoid the requirement of getting Mercurial installed on upwards of 300 Talos boxes running 7 different operating systems.  The new design has Talos downloaded as a ZIP per-run, making the system version control agnostic.</p>
<p>Right now we are only blocked on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=593081"> Releng Downtime - unscheduled for week of Sept 27, 2010 </a>.  This is a mega-downtime bug that has been accumulating blocked bugs for weeks while Release Engineering tries to find a gap in the <a href="https://wiki.mozilla.org/Releases/Firefox_4.0b7">Firefox 4 beta 7 code freeze</a> schedule to safely close the trees and do landings.  You can play along at home with the code freeze by watching the <a href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=blocking2.0%3Abeta7">beta 7 blocking bugs</a>.</p>
<p>For now all Talos patches are being landed in both Mercurial and CVS.  I wish good luck to all Release Engineering and developer folks working hard on beta 7, for the simple selfish reason that I&#8217;m very much looking forward to never, ever having to check in a patch to CVS again.</p>
]]></content:encoded>
			<wfw:commentRss>http://alice.nodelman.net/blog/post/talos-code-in-hg-almost/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Standalone Talos V1.9</title>
		<link>http://alice.nodelman.net/blog/post/standalone-talos-v19/</link>
		<comments>http://alice.nodelman.net/blog/post/standalone-talos-v19/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 22:14:05 +0000</pubDate>
		<dc:creator>alice</dc:creator>
		
		<category><![CDATA[mozilla]]></category>

		<category><![CDATA[talos]]></category>

		<guid isPermaLink="false">http://alice.nodelman.net/blog/?p=132</guid>
		<description><![CDATA[V1.8 was unable to run the twinopen tests due to Bug 589194 - Make twinopen work when XUL is disabled.  The main Talos code was patched but the change wasn&#8217;t ported to Standalone Talos.  V1.9 fixes that oversight.
]]></description>
			<content:encoded><![CDATA[<p>V1.8 was unable to run the twinopen tests due to <a href = "https://bugzilla.mozilla.org/show_bug.cgi?id=589194">Bug 589194 - Make twinopen work when XUL is disabled</a>.  The main Talos code was patched but the change wasn&#8217;t ported to Standalone Talos.  V1.9 fixes that oversight.</p>
]]></content:encoded>
			<wfw:commentRss>http://alice.nodelman.net/blog/post/standalone-talos-v19/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Talos Documentation Updates</title>
		<link>http://alice.nodelman.net/blog/post/talos-documentation-updates/</link>
		<comments>http://alice.nodelman.net/blog/post/talos-documentation-updates/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 22:43:26 +0000</pubDate>
		<dc:creator>alice</dc:creator>
		
		<category><![CDATA[mozilla]]></category>

		<category><![CDATA[talos]]></category>

		<guid isPermaLink="false">http://alice.nodelman.net/blog/?p=129</guid>
		<description><![CDATA[I recently put some time into updating the talos documentation.  There are now sections describing how numbers are calculated, the history of the tp test along with updates to descriptions of tests, description of talos hardware, where to file bugs and so on.
Any comments and suggestions on what needs addition or further clarification would [...]]]></description>
			<content:encoded><![CDATA[<p>I recently put some time into updating the <a href="https://wiki.mozilla.org/Buildbot/Talos">talos documentation</a>.  There are now sections describing how <a href="https://wiki.mozilla.org/Buildbot/Talos#How_are_the_numbers_calculated.3F">numbers are calculated</a>, the <a href="https://wiki.mozilla.org/Buildbot/Talos#History_of_tp_Tests">history of the tp test</a> along with updates to descriptions of tests, description of talos hardware, where to file bugs and so on.</p>
<p>Any comments and suggestions on what needs addition or further clarification would be great.  I&#8217;m mostly going by the questions that are directed at me the most frequently.</p>
]]></content:encoded>
			<wfw:commentRss>http://alice.nodelman.net/blog/post/talos-documentation-updates/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Update to Standalone Talos Yet Again (Now 1.7.1)</title>
		<link>http://alice.nodelman.net/blog/post/update-to-standalone-talos-yet-again-now-171/</link>
		<comments>http://alice.nodelman.net/blog/post/update-to-standalone-talos-yet-again-now-171/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 22:07:45 +0000</pubDate>
		<dc:creator>alice</dc:creator>
		
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://alice.nodelman.net/blog/?p=125</guid>
		<description><![CDATA[I introduced a not-quite-an-error in 1.7 in that the tests were attempting to load test pages through localhost.  This wouldn&#8217;t work unless you have a local web server up and working and with the correct document root set.  As Standalone Talos is designed to have minimal requirements I&#8217;ve updated it to use file:// instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I introduced a not-quite-an-error in 1.7 in that the tests were attempting to load test pages through localhost.  This wouldn&#8217;t work unless you have a local web server up and working and with the correct document root set.  As Standalone Talos is designed to have minimal requirements I&#8217;ve updated it to use file:// instead of http://.  Now it will run without any webservice.</p>
<p>Again, if you use Standalone Talos for local testing please update to latest.</p>
]]></content:encoded>
			<wfw:commentRss>http://alice.nodelman.net/blog/post/update-to-standalone-talos-yet-again-now-171/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Standalone Talos V1.7</title>
		<link>http://alice.nodelman.net/blog/post/standalone-talos-v17/</link>
		<comments>http://alice.nodelman.net/blog/post/standalone-talos-v17/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 17:59:04 +0000</pubDate>
		<dc:creator>alice</dc:creator>
		
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://alice.nodelman.net/blog/?p=121</guid>
		<description><![CDATA[I&#8217;ve updated Standalone Talos to version 1.7 - available here.  It&#8217;s been quite a while since a standalone talos update so there are several changes:

new tscroll test
updated version of dromaeo
tests for group opacity perf
ability to dump all output to stdout using the &#8216;&#8211;screen&#8217; option
a bunch of orange fixes for failing to initialize browsers/timeouts

If you use [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve updated Standalone Talos to version 1.7 - available <a href="https://wiki.mozilla.org/StandaloneTalos">here</a>.  It&#8217;s been quite a while since a standalone talos update so there are several changes:</p>
<ul>
<li>new <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=534819">tscroll</a> test</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=507738">updated version of dromaeo</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=524089">tests for group opacity perf</a></li>
<li>ability to dump all output to stdout using the &#8216;&#8211;screen&#8217; option</li>
<li>a bunch of orange fixes for failing to initialize browsers/timeouts</li>
</ul>
<p>If you use Standalone talos for local testing please download and update to latest.</p>
]]></content:encoded>
			<wfw:commentRss>http://alice.nodelman.net/blog/post/standalone-talos-v17/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Universal Manifest For Unit Tests: A Proposal</title>
		<link>http://alice.nodelman.net/blog/post/universal-manifest-for-unit-tests-a-proposal/</link>
		<comments>http://alice.nodelman.net/blog/post/universal-manifest-for-unit-tests-a-proposal/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 18:10:14 +0000</pubDate>
		<dc:creator>alice</dc:creator>
		
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://alice.nodelman.net/blog/?p=110</guid>
		<description><![CDATA[I&#8217;ve come up with a proposed universal manifest format for unit tests based upon the many good comments and suggestions that I received after my last two blog posts.  The simplest case is still very simple and the more complicated cases are now easier to read and understand.  I&#8217;ve put together a list [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve come up with a proposed universal manifest format for unit tests based upon the many good comments and suggestions that I received after my last two blog posts.  The simplest case is still very simple and the more complicated cases are now easier to read and understand.  I&#8217;ve put together a list of examples from the current manifests and then converted them to the new manifest.  We are still not totally finalized here, but I think that this is a good working format that can be refined.</p>
<p>I&#8217;m still working from the stance that script doesn&#8217;t belong in manifest files so the format handles &amp;&amp; and || cases without code.  With the help of my auto-tools chums we searched the code base for difficult examples to ensure that this was still flexible enough to handle the expressions that we currently support.</p>
<p>Also, having worked on the conversions from old to new I have to say that it was really easy to get this going - admittedly, I&#8217;d done some reading on JSON and was immersed in the problem set - but I think that it is a good indication that this could make reading and writing manifests a lot nicer.</p>
<p>I&#8217;m once again happy to get any comments on the current proposal.  If things look good it will be time to get everyone together for a Brown Bag to hash this out and finalize.  I&#8217;ll get that in the works once I see if I have to take this back to the drawing board.</p>
<ol>
<li>simple case</li>
<h5>old</h5>
<pre> == 399209-1.html 399209-1-ref.html
 == 399209-2.html 399209-2-ref.html
 == 399384-1.html 399384-1-ref.html</pre>
<h5>proposed</h5>
<pre>{   "tests" :
    [
        {  "==" : ['399209-1.html', '399209-1-ref.html']  },
        {  "==" : ['399209-2.html', '399209-2-ref.html']  },
        {  "==" : ['399384-1.html', '399384-1-ref.html']  }
    ]
}</pre>
<li>ref test with two fails-if clauses and one random-if clause</li>
<h5>old</h5>
<pre>fails-if(MOZ_WIDGET_TOOLKIT=="windows") fails-if(MOZ_WIDGET_TOOLKIT=="cocoa") random-if(MOZ_WIDGET_TOOLKIT!="cocoa"&amp;&amp;MOZ_WIDGET_TOOLKIT!="windows") != 399636-quirks-html.html 399636-quirks-ref.html # windows failure bug 429017, mac failure bug 429019</pre>
<h5>proposed</h5>
<pre>{   "tests" :
    [
        {  "!=" : ['399636-quirks-html.html', '399636-quirks-ref.html'],
           "fails" : { 'if' : ['windows']},
           "fails" : { 'if' : ['cocoa']},
           "random : { 'if' : ['!cocoa', '!windows']}  }
    ]
}</pre>
<li>ref test with two random-if clauses</li>
<h5>old</h5>
<pre>random-if(MOZ_WIDGET_TOOLKIT=="gtk2") random-if(MOZ_WIDGET_TOOLKIT=="cocoa") == mirroring-02.html mirroring-02-ref.html</pre>
<h5>proposed</h5>
<pre>{   "tests" :
    [
        {   "==" : ['mirroring-02.html', 'mirroring-02-ref.html'],
            "random" : { 'if' : ['gtk2']},
            "random" : { 'if' : ['cocoa']} }
    ]
}</pre>
<li>ref test with one fails-if clause and one skip-if clause</li>
<h5>old</h5>
<pre>fails-if(!haveTestPlugin) skip-if(!prefs.getBoolPref("dom.ipc.plugins.enabled")) == pluginproblemui-direction-1.html pluginproblemui-direction-ref.html</pre>
<h5>proposed</h5>
<pre>{   "tests" :
    [
        {   "==" : ['pluginproblemui-direction-1.html', 'pluginproblemui-direction-ref.html'],
            "fails" : { 'if' : ['!haveTestPlugin']},
            "skip" : { 'prefs' : ["dom.ipc.plugins.enabled" : "False"] }  }
    ]
}</pre>
<li>js test with one fails-if clause and one skip-if clause</li>
<h5>old</h5>
<pre>fails-if(!xulRuntime.shell&amp;&amp;!isDebugBuild) skip-if(!xulRuntime.shell&amp;&amp;isDebugBuild) script regress-455464-04.js # bug xxx - hangs reftests in debug, ### bug xxx - NS_ERROR_DOM_NOT_SUPPORTED_ERR in opt</pre>
<h5>proposed</h5>
<pre>{   "tests" :
    [
        {  "script"  : "regress-455464-04.js",
           "fails" : { 'if' : ['!shell', '!isDebugBuild']},
           "skip" : { 'if' : ['!shell', 'isDebugBuild']}  }
    ]
}</pre>
<li>js test with one random-if clause and one asserts-if(count) clause</li>
<h5>old</h5>
<pre>random-if(!xulRuntime.shell&amp;&amp;xulRuntime.OS=="WINNT") asserts-if(!xulRuntime.shell&amp;&amp;xulRuntime.OS=="WINNT",1) script regress-344804.js # bug 524732</pre>
<h5>proposed</h5>
<pre>{   "tests" :
    [
        {  "script" :  'regress-344804.js',
           "random" : { 'if' : ['!shell', 'WINNT']},
           "asserts"  : { 'if' :  ['!shell, 'WINNT'], "count" : 1} }
    ]
}</pre>
<li>js test with one random-if clause, one fails-if clause and one skip-if clause</li>
<h5>old</h5>
<pre>fails-if(xulRuntime.OS=="WINNT") random-if(xulRuntime.OS=="Linux"&amp;&amp;!XPCOMABI.match(/x86_64/)) skip-if(xulRuntime.OS=="Linux"&amp;&amp;XPCOMABI.match(/x86_64/)) script regress-3649-n.js # No test results on windows, sometimes no test results on 32 bit linux, hangs os/consumes ram/swap on 64bit linux.</pre>
<h5>proposed</h5>
<pre>{   "tests" :
    [
        {  "script" :  'regress-3649-n.js'
           "fails" : { 'if' : ['WINNT']},
           "random" : { 'if' : ['Linux', '!x86_64']},
           "skip" : { 'if' : ['Linux', 'x86_64']}  }
    ]
}</pre>
<li>ref test with one asserts(min,max) clause</li>
<h5>old</h5>
<pre>asserts(0-1) == background-draw-nothing-malformed-images.html background-draw-nothing-ref.html</pre>
<h5>proposed</h5>
<pre>{   "tests" :
    [
        {  "==" : ['background-draw-nothing-malformed-images.html', 'background-draw-nothing-ref.html'],
           "asserts" : {'min' : 0, 'max' : 1}
    ]
}</pre>
<li>ref test with one asserts-if(count) clause</li>
<h5>old</h5>
<pre>asserts-if(MOZ_WIDGET_TOOLKIT=="gtk2",1) == 355548-3.xml 355548-3-ref.xml # bug 456899</pre>
<h5>proposed</h5>
<pre>{   "tests" :
    [
        {  "==" : [' 355548-3.xml', '355548-3-ref.xml],
           "asserts" : { 'if' : ['gtk2'], 'count' : 1}  }
    ]
}</pre>
<li>load test with one asserts-if(count) and one asserts(count) clause</li>
<h5>old</h5>
<pre>asserts(10) asserts-if(MOZ_WIDGET_TOOLKIT=="windows",8) load 265986-1.html</pre>
<h5>proposed</h5>
<pre>{   "tests" :
    [
        {  "load" : '265986-1.html',
           "asserts" : { 'if' : ['windows'], 'count' : 8},
           "asserts" : { 'count' : 10}  }
    ]
}</pre>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://alice.nodelman.net/blog/post/universal-manifest-for-unit-tests-a-proposal/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Universal Manifest Format For Unit Tests (part 2)</title>
		<link>http://alice.nodelman.net/blog/post/universal-manifest-format-for-unit-tests-part-2/</link>
		<comments>http://alice.nodelman.net/blog/post/universal-manifest-format-for-unit-tests-part-2/#comments</comments>
		<pubDate>Fri, 14 May 2010 23:14:11 +0000</pubDate>
		<dc:creator>alice</dc:creator>
		
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://alice.nodelman.net/blog/?p=92</guid>
		<description><![CDATA[There was a lot of good feedback from the post introducing the concept of universal manifest formats for all unit tests.  I want to continue the discussion based upon those questions/comments.
Why aren&#8217;t we just going to take one of our existing manifest formats and roll it out to the rest of the tests?  Why re-invent [...]]]></description>
			<content:encoded><![CDATA[<p>There was a lot of good feedback from the post introducing the concept of universal manifest formats for all unit tests.  I want to continue the discussion based upon those questions/comments.</p>
<p><strong>Why aren&#8217;t we just going to take one of our existing manifest formats and roll it out to the rest of the tests?  Why re-invent the wheel?</strong><br />
The most suggestions were for adopting the reftest manifest format across the board.  While the reftest manifests are excellent at what they are designed for we are hitting the point where they can&#8217;t handle the growth in terms of 32 vs. 64 bit tests, qt vs. gtk vs. android (which all end up in the same &#8216;linux&#8217; bucket), shell tests vs. full browser, etc.  Here&#8217;s some of the worst offenders that are already in use:<br />
<code><br />
./js/src/tests/js1_5/extensions/jstests.list:<br />
random-if(xulRuntime.OS=="WINNT"&amp;&amp;!isDebugBuild) skip-if(xulRuntime.OS=="Linux") script regress-342960.js # slow<br />
./js/src/tests/js1_5/Regress/jstests.list:<br />
fails-if(xulRuntime.OS=="WINNT") random-if(xulRuntime.OS=="Linux"&amp;&amp;!XPCOMABI.match(/x86_64/)) skip-if(xulRuntime.OS=="Linux"&amp;&amp;XPCOMABI.match(/x86_64/)) script regress-3649-n.js # No test results on windows, sometimes no test results on 32 bit linux, hangs os/consumes ram/swap on 64bit linux.<br />
./js/src/tests/js1_6/extensions/jstests.list:<br />
fails-if(!xulRuntime.shell&amp;&amp;!isDebugBuild) skip-if(!xulRuntime.shell&amp;&amp;isDebugBuild) script regress-455464-04.js # bug xxx - hangs reftests in debug, ### bug xxx - NS_ERROR_DOM_NOT_SUPPORTED_ERR in opt<br />
./layout/reftests/bugs/reftest.list:<br />
fails-if(MOZ_WIDGET_TOOLKIT=="windows") fails-if(MOZ_WIDGET_TOOLKIT=="cocoa") random-if(MOZ_WIDGET_TOOLKIT!="cocoa"&amp;&amp;MOZ_WIDGET_TOOLKIT!="windows") != 399636-quirks-html.html 399636-quirks-ref.html # windows failure bug 429017, mac failure bug 429019<br />
./modules/plugin/test/reftest/reftest.list:<br />
fails-if(!haveTestPlugin) skip-if(!prefs.getBoolPref("dom.ipc.plugins.enabled")) == pluginproblemui-direction-1.html pluginproblemui-direction-ref.html<br />
</code><br />
It&#8217;s all pretty unreadable, and things are just going to get worse as more mobile platforms come online and we have to handle exceptions for each one.</p>
<p><strong>Adding tests is currently easy and I don&#8217;t want to lose that.</strong><br />
Totally in agreement here!  There may end up being a few more keystrokes, but overall things really aren&#8217;t changing much for the simplest case.  Something like this:<br />
<code>#old syntax<br />
== file1.html file1-ref.html<br />
#new syntax<br />
{"type" : "=="<br />
"files" : ["file1.html", "file1-ref.html"]<br />
}</code></p>
<p><strong>What&#8217;s the benefit here? </strong></p>
<ul>
<li>Greater granularity</li>
<p>Make it possible to target specific sections of code for test runs.  Specialized manifests would be easy to create around an area of interest.  For instance, if I make a manifest that includes all content tests, then I can do something like:<br />
<code>&gt; python runtests.py --manfiest=mycontentmanfiest.json</code><br />
and it can run only the tests that I want based on my patch.</p>
<li>Better benchmarks</li>
<p>Enable us to easily benchmark things - run all known [orange] tests, run specific performance intensive tests several times for profiling diagnostic, etc.</p>
<li>Finer filtering</li>
<p>Want to enable a test on maemo only?  Want to never run a test on android?  We want to make this simpler and easier without having to do a bunch of inline javascript hacking.</ul>
<p><strong>Why are you picking on reftests?</strong><br />
We chose refest to be used as a proof of concept.  We wanted to roll the new manifest format out to reftest first to ensure that everything worked the way that we wanted (kick the tires a bit) and then slowly convert over our other test harnesses.</p>
<p><strong>What about inline js calls like for isDebugBuild or checks against MOZ_WIDGET_TOOLKIT?</strong><br />
We no longer want to support js code in manifest files.  We believe that that sort of code should live outside the manifest.  Support would be built into the manifest for the states that these calls check (ie, lists of available platforms to test against, lists of build types, native theme types, etc).  This way every test would use the same check, and if the check needs to be updated to support a new platform/arch/build/theme/etc it can be done in a central location.  This will come in handy for the mobile platforms which would all currently end up identified as &#8216;linux&#8217;.</p>
<p><strong>Where&#8217;s the new format?</strong><br />
This is probably the biggest question.  Truth is, we aren&#8217;t finalized here yet.  We are pretty sure that json is the way to go for the flexibility that we want - but we are still very open to suggestions.  Right now this is what we are considering:</p>
<pre style="font:inherit;">{   "tests" :
    [
        {    "type": "==",
             "files": ["file1.html", file2.html"],
             "skip-if": ["maemo", "android"],
             "prefs": {
                          pref1 : bool1
                          pref2 : bool2
                      },
        },
        {    "type" : "js",
             "files" : ["jsfile.html"],
             "random-if" : ["winnt"],
             "skip-if": ["isdebug"],
        }
        {    "group" : "withTestplugin",
             "plugins": ["plugin1.xpi"],
             "prefs": {
                          enablePlugin : True
                      }
             "tests" :
             [
                 {    "type" : "!=",
                      "files" : ["file1.html", "file6.html"],
                 }
             ]
         }
    ]
}</pre>
<p>This format would allow you to easily set prefs either per-test or per-group of tests.  There is also a means to install/enable plugins and then group tests together that use that plugin.  A lot has been borrowed from reftest manifest (skip-if, random-if) as that is stuff that works - we want to take concepts that work and keep them around.  What do you like about it?  What don&#8217;t you like?  What would you like included as an option?  Would you prefer xml?  yaml?  We are in very early stages here and the end result should be a manifest format that everyone is happy with.</p>
]]></content:encoded>
			<wfw:commentRss>http://alice.nodelman.net/blog/post/universal-manifest-format-for-unit-tests-part-2/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

