Commit Graph

1029 Commits

Author SHA1 Message Date
Gijs Kruitbosch
40ea68f72f Bug 1270144 - fix message from timed out tests to indicate the following crash is caused by us terminating the browser process, r=ahal,RyanVM
MozReview-Commit-ID: Hyr7xkZdbqc

--HG--
extra : rebase_source : 013339bec54f1ecb0123fa1388dbb350258790df
extra : amend_source : 26e6c904d7031e700560ca32057edba65ad1632d
2016-05-10 22:53:17 +01:00
Andrew Halberstadt
aea682d7a3 Bug 1271448 - Stop saving reftest.log for |mach reftest| perf improvements, r=jgraham
In bug 1271035 gps identified disk I/O as a major cause for reftest slowness.
He was able to fix most of it, but the new highest source of I/O in reftest is
reftest.log.

To note, we were only saving reftest.log when running via mach, so this won't
impact automation in any way:
https://hg.mozilla.org/mozilla-central/file/043082cb7bd8/layout/tools/reftest/mach_commands.py#l204

I don't know why we are doing this given that the same output goes to stdout.
And as dholbert pointed out, since bug 1034290 landed, that log contains raw
structured logs, which are not at all useful for debugging. Given that it is
no longer useful and causes slowness, we should stop saving it.

If anyone wishes to keep saving to a log, they can use:
./mach reftest --log-tbpl reftest.log

If they wish this to be the default behaviour they can make a machrc (or
.machrc) in either topsrcdir, ~/.mozbuild or $MACHRC. Then add:
[alias]
reftest = reftest --log-tbpl reftest.log

MozReview-Commit-ID: A3e2X7qF90H

--HG--
extra : rebase_source : 9286e3061c068c6fef55b503017b3f4a9588be46
2016-05-09 17:53:04 -04:00
Andreas Tolfsen
90edca9757 Bug 1123506 - Update references to __webDriverArguments; r=automatedtester
__marionetteParams was renamed to __webDriverArguments.

MozReview-Commit-ID: 9t1skl5MESf
2016-05-09 16:08:27 +01:00
Gregory Szorc
e13542b72f Bug 1271035 - Disable Places during reftests, preventing 50 GB of I/O; r=dholbert
It was a cold Friday night in San Francisco. Earlier in the day, I
informed Chris AtLee that I was going to start focusing on improving
the efficiency of Firefox automation and asked him where the biggest
capacity issues were. He said "we're hurting most on Windows tests."

As I was casually drinking a barleywine (note to reader: barleywines
are serious beers - there's nothing casual about them), I found myself
tediously clicking through Treeherder looking at logs for Windows jobs,
looking for patterns and other oddities. As I was clicking through,
something stood out to me: the sheer number of reftest jobs. I
recalled a random project I started a few years ago. Its aim was to
analyze buildbot job metadata so we could better understand where time
was spent in automation. I had mostly written off the side project as
a failure and a near complete waste of my time. Not even a stray
random thought of this project had entered my mind in the past year.
But clicking through Treeherder after a few glasses of barleywine
somehow reminded me of one of the few useful findings of that project:
reftest jobs consumed a seemingly disproportiate amount of machine time,
something like 35 or 40% IIRC of the time spent on all jobs.

Now, this finding was several years ago and almost certainly no longer
relevant. But, again, I had a few glasses of barleywine in me and was
bothered by the amount of reftest jobs and their duration, so I thought
"hey, why don't I run reftests and see why they take so long." So I
built Firefox on Windows - the platform Chris AtLee said we're "hurting
most on."

I decided to start my very casual profiling session by recording a
`mach reftest` run using Sysinternals Process Monitor. To my surprise,
it yielded a very obvious and unexpected result: the Places SQLite
database was incurring a lot of I/O. On my i7-6700K Windows 10 desktop
with a high performance SSD, `mach reftest` yielded the following:

File Time  #Events  #Reads   #Writes  RBytes        WBytes          Path
198s       980,872  243,270  669,231  7,971,471,360 20,667,084,080  places.sqlite-wal
165s       645,853  222,407  367,775  7,287,701,820 14.071,529,472  places.sqlite
  2s       377,121        1        0         32,768              0  places.sqlite-shm

The Places SQLite database accounts for 2,003,846 of the total of
3,547,527 system calls (56.49%) recorded by procmon during `mach
reftest` execution. This represents a staggering 49,997,786,732 of the
50,307,660,589 (99.38%) bytes of I/O recorded! Yes, that's 50 GB.

I reckon the reason the Places database accumulates so much I/O load
during reftests is because the reftest suite essentially loads thousands
of pages as quickly as possible. This effectively performs a stress
test against the Places history recording service.

As effective as reftests are at stress-testing Places, it adds no value
to reftests because reftests are testing the layout features, not the
performance of history recording. So these 2M system calls and 50 GB
of I/O are overhead.

This commit disables Places when executing reftests and prevents
the overhead.

After this commit, `mach reftest` has significantly reduced interaction
with the Places SQLite database:

File Time  #Events  #Reads   #Writes  RBytes        WBytes         Path
0.09s          502     138       302     4,521,984      8,961,528  places.sqlite-wal
0.07s          254      20       140       524,604      8,126,464  places.sqlite
0.01s        3,289       1         0        32,768              0  places.sqlite-shm

Of the 948,033 system calls recorded with this change (26.7% of
original), 691,322 were related to I/O. The Places SQLite database
only consumed ~22MB of I/O, <0.01% of original. It's worth noting that
~half of the remaining I/O system calls are related to reftest.log,
which now accounts for the largest percentage of write I/O (only
~53 MB, however). It's worth noting that reftest.log appears to be
using unbuffered writes and is requiring an excessive amount of
system calls for writing. But that's for another bug and commit.

In terms of wall time, the drastic I/O reduction during `mach reftest`
appears to have minimal impact on my machine: maybe 30s shaved from a
~900s execution, or ~3%. But my machine with its modern SSD doesn't
struggle with I/O.

In automation, it is a different story.

I pushed this change to Try along with the base revision and triggered
4 runs of most reftest jobs. The runtime improvements in automation
are impressive. Here are the fastest reported times for various jobs:

Job                     Before      After     Delta
Linux Opt R1               31m        34m       +3m
Linux Opt R2               43m        35m       -8m
Linux Opt Ru1              40m        34m       -6m
Linux Opt Ru2              43m        37m       -6m
Linux Opt R E10s           89m        72m      -17m
Linux Debug R1             52m        40m      -12m
Linux Debug R2             49m        42m       -7m
Linux Debug R3             60m        51m       -9m
Linux Debug R4             42m        37m       -5m
Linux Debug R1 E10s        84m        72m      -12m
Linux Debug R2 E10s        97m        85m      -12m
Linux64 Opt R1             35m        24m      -11m
Linux64 Opt R2             37m        26m      -11m
Linux64 Opt Ru1            32m        29m       -3m
Linux64 Opt Ru2            37m        26m      -12m
Linux64 Opt TC R1          12m        10m       -2m
Linux64 Opt TC R2          10m         7m       -3m
Linux64 Opt TC R3          11m         9m       -2m
Linux64 Opt TC R4          11m         9m       -2m
Linux64 Opt TC R5          13m        11m       -2m
Linux64 Opt TC R6          11m         9m       -2m
Linux64 Opt TC R7           9m         8m       -1m
Linux64 Opt TC R8          11m        10m       -1m
Linux64 Opt TC Ru1         30m        25m       -5m
Linux64 Opt TC Ru2         36m        27m      -11m
OS X 10.10 Opt             31m        27m       -4m
OS X 10.10 Opt E10s        26m        25m       -1m
OS X 10.10 Debug           68m        55m      -13m
Win7 Opt R                 30m        28m       -2m
Win7 Opt Ru                28m        26m       -2m
Win7 Opt R E10S            29m        27m       -2m
Win7 Debug R               85m        76m       -9m
Win7 Debug R E10S          75m        65m      -10m
Win8 x64 Opt R             29m        26m       -3m
Win8 x64 Opt Ru            27m        25m       -2m
Win8 x64 Debug R           90m        71m      -19m
Android 4.3 API15 Opt R1   89m        71m      -18m
Android 4.3 API15 Opt R2   78m        64m      -14m
Android 4.3 API15 Opt R3   75m        64m      -11m
Android 4.3 API15 Opt R4   74m        68m       -6m
Android 4.3 API15 Opt R5   75m        69m       -6m
Android 4.3 API15 Opt R6   91m        86m       -5m
Android 4.3 API15 Opt R7   87m        66m      -21m
Android 4.3 API15 Opt R8   87m        82m       -5m
Android 4.3 API15 Opt R9   80m        66m      -14m
Android 4.3 API15 Opt R10  80m        67m      -13m
Android 4.3 API15 Opt R11  73m        66m       -7m
Android 4.3 API15 Opt R12 105m        91m      -14m
Android 4.3 API15 Opt R13  72m        59m      -13m
Android 4.3 API15 Opt R14  82m        61m      -21m
Android 4.3 API15 Opt R15  73m        62m      -11m
Android 4.3 API15 Opt R16  79m        78m       -1m

The savings total 6+ *hours* or ~15% when running all reftests. I'd
say this isn't bad for a one-line code change!

MozReview-Commit-ID: H1LkACgSpVn

--HG--
extra : rebase_source : 891a5ce8e1f6c3d70fc646f116c2f49f897ad735
2016-05-07 02:53:14 -07:00
Andrew Halberstadt
48a50c124b Bug 1265124 - [reftest] Make sure marionette waits long enough when attaching a debugger, r=chmanchester
As of bug 1245092, reftest depends on marionette. Normally marionette client has an internal timeout of around
60 seconds where it waits for the server to become available. But when using debuggers (and especially valgrind),
it can take much much longer than a minute for Firefox to start. This patch adds a couple hidden command line
args to reftest to tweak the marionette timeouts.

MozReview-Commit-ID: 3xF0InBJNEf

--HG--
extra : rebase_source : f18092bc90a7d8aab34b527a15bd3b1dc6afc997
2016-04-29 15:41:23 -04:00
Mike Shal
8689f72e8b Bug 1266875 - Remove custom install rules; r=chmanchester
MozReview-Commit-ID: CoWdHidlDrV
2016-04-18 10:36:07 -04:00
Daniel Holbert
b199fea9a7 Bug 1268588: Add missing space to "assertion count[...] is less than expected" reftest log message. r=gbrown
MozReview-Commit-ID: GA2mvt4WyqU

--HG--
extra : rebase_source : ed194ccc7f1e116b7d8b01ea15b2281ba08bfd47
2016-04-28 10:52:42 -07:00
Hiroyuki Ikezoe
a4b111280b Bug 1267908 - Don't call flushApzRepaints if reftest-no-flush is specified. r=kats
flushApzRepaints leads flush paint.

MozReview-Commit-ID: 5pt7Gq5zHTx

--HG--
extra : rebase_source : 90416872d2e271654767bfc7bd73ecbc451c65d6
2016-04-28 06:16:30 +09:00
Geoff Brown
71f1e3bc75 Bug 1267020 - Dump reftest assertion count mismatches to log file on Android; r=jmaher 2016-04-27 14:56:09 -06:00
Sebastian Hengst
b4020b78c0 Backed out changeset e786ecce31b2 (bug 1266875) for pgo build bustage in xpcshell/xpcom/tests/unit/nsIFileEnumerator. r=backout on a CLOSED TREE 2016-04-27 18:35:41 +02:00
Mike Shal
a204083dd1 Bug 1266875 - Remove custom install rules; r=chmanchester
MozReview-Commit-ID: CoWdHidlDrV
2016-04-18 10:36:07 -04:00
Andrew Halberstadt
018bb9b783 Bug 1255565 - Close extraneous browser window when running reftests, r=dholbert
This extra window was initially left open because closing it was causing memory leaks
on debug e10s crashtests. There was pressure to get the regressing patch landed due
to addon signing, so it got landed with this extra window hanging around (as it didn't
impact test results).

But it is a UX wart for several reasons. Upon testing it again recently, the leaks all
seem to have vanished. I'm not sure why, possibly it was a bug fixed in e10s.

MozReview-Commit-ID: CEI2enKAOyv

--HG--
extra : rebase_source : da0e8889f67d57aa61670105c14c2235607d79a7
2016-04-13 10:23:47 -04:00
Joel Maher
585b69b5f8 Bug 1262954 - Explicitly set the 'layers.acceleration.disabled' pref to true on Windows XP e10s test runs. r=ahal
MozReview-Commit-ID: 2KsBZDNvsdU

--HG--
extra : rebase_source : 0869acfae1af0ab92ae142797b9e4b1a4e452781
2016-04-08 14:46:25 -04:00
Andrew Halberstadt
273f8a751c Bug 1243083 - Enable e10s by default when running reftests, r=jmaher
MozReview-Commit-ID: NlTGwdQ2nw

--HG--
extra : rebase_source : 524578da02c2c84487bfe497783a6ea9de594ed9
2016-04-01 11:00:37 -04:00
Ting-Yu Lin
219e330768 Bug 1259889 Part 1 - Add @supports -moz-bool-pref for internal-only style sheets. r=heycam
This is a internal-only syntax for guarding rules from a boolean
preference. Nothing causes @supports rules to be re-evaluated except
html.css registered in Part 2.

This is needed for rendering the disclosure triangle of the
summary element by using "display: list-item".

Usage example:
@supports -moz-bool-pref("dom.details_element.enabled") {
  /* css rules */
}

MozReview-Commit-ID: HDCa8zHxYTA

--HG--
extra : rebase_source : b7a72a48166edf1d486014ff37363ed8be9127d9
2016-04-01 21:11:11 +08:00
Andrew Halberstadt
eaf4ca74c0 Bug 1245092 - Fix beta-only non-local network bustage on reftest, r=me, a=test-only
MozReview-Commit-ID: 1N6lsrbMNyI

--HG--
extra : commitid : MnX4BePWDx
extra : source : f902121e4d1b1c612b6a270743bf4830c8c8dcbf
extra : amend_source : 035d59b83e35cd72256ae079cdea5212273c7b82
2016-03-14 17:00:40 -04:00
Tobias Schneider
9dd3cff0b6 Bug 1237198 - Block SWFs on the content blocking list hosted on the Shavar service. r=francois 2016-03-29 00:37:44 -07:00
Francois Marier
63c2afbc28 Bug 1259288 - Safe Browsing should be fully disabled in our test suites. r=gcp
MozReview-Commit-ID: 2og99Gl9w9n

--HG--
extra : rebase_source : 33961d97454e71e5b7fc3ad5f9eb145099c0fc6e
2016-03-23 17:59:55 -07:00
Xidorn Quan
b377ad08c2 Bug 1257099 - Normalize the path of extensions for reftest. r=jmaher
MozReview-Commit-ID: 7nTx3uniJik

--HG--
extra : rebase_source : 4d757211c4fda9953a5817ad5e037b4b70994636
2016-03-16 14:26:27 +08:00
Xidorn Quan
0fb001761f Bug 1256257 - Clear Win10 intro page url for reftest. r=jmaher
MozReview-Commit-ID: 3iJ8QVSNaKx

--HG--
extra : rebase_source : af532bdaf1c9fa66fff5dd530cf9639ed9bab63d
2016-03-16 14:27:25 +08:00
Andrew Halberstadt
6e6c1c8aae Bug 1245092 - Install reftest and specialpowers extensions at runtime via AddonManager.installTemporaryAddon, r=jgriffin
MozReview-Commit-ID: 5HSa3nFVTeF

--HG--
rename : layout/tools/reftest/reftest.js => layout/tools/reftest/reftest.jsm
extra : rebase_source : 924a3e937b47cac03674acdb56334882a2373f50
2016-03-09 14:38:13 -05:00
Stanley Mwangi
ecaaff970b Bug 1243083 - Added --disable-e10s to mochitest_options.py and reftestcommandline.py. r=ahal
MozReview-Commit-ID: I3UIS8eEZ8D

--HG--
extra : rebase_source : cad52821f891915b2d174f60c250fb80ec307525
extra : amend_source : fe1a47030662a58c409e3cf2b42dc0ace452178d
2016-03-02 16:33:13 -05:00
Felipe Gomes
0fcf346707 Bug 1250744 - Disable e10s add-ons blocking on testing profiles. r=jmaher 2016-03-02 13:50:55 -03:00
Milan Sreckovic
65bcdb7519 Bug 1249640: Part 2 gfxPlatform simplification when it comes to accelerated canvas, using the new blocking. r=gw280 2016-02-22 14:23:00 +01:00
Sebastian Hengst
00a63ca413 Backed out changeset 303b759e886e (bug 1249640) 2016-02-24 19:02:00 +01:00
Milan Sreckovic
1498964285 Bug 1249640: Part 2 gfxPlatform simplification when it comes to accelerated canvas, using the new blocking. r=gw280 2016-02-22 14:23:00 +01:00
Geoff Brown
763998cf8c Bug 1249681 - Set utilityPath for Android mach reftests; r=bdahl 2016-02-19 16:10:22 -07:00
chaithanya
1cea93e0d5 Bug 1243435 Remove unused prefs toolkit.telemetry.prompted / toolkit.telemetry.notifiedOptOut from test suites r=Dexter
MozReview-Commit-ID: 83IOB4Xvf8I
2016-02-18 10:51:24 -08:00
Carsten "Tomcat" Book
3a87a933e7 Backed out changeset 53b0b5b29776 (bug 1243435)
--HG--
extra : rebase_source : faf90230fecdfe1f0150015c039800828723a576
2016-02-17 15:00:51 +01:00
chaithanya
458420bbd7 Bug 1243435 - Remove unused prefs toolkit.telemetry.prompted / toolkit.telemetry.notifiedOptOut from test suite. r=Dexter 2016-02-16 05:11:00 +01:00
Edwin Flores
7d1d94d936 Bug 1229250 - Auto-extend the reftest timeout - r=kats 2016-02-16 14:46:56 +00:00
ISHIKAWA, Chiaki
be2b50a7f8 Bug 1248252 - Improper outdated octal constant syntax in M-C tree. Use '0o' prefix. r=dao
Be warned. Do not attemp to change the .js "test" source code in ./js
They are meant to check

 - the outdated 0666 octal constant is still parsed correctly,
 - the outdated 0666 octal constant raises syntax error flag
   in strict mode, etc.

So leave them alone.
2016-02-15 08:57:00 +01:00
Andrew Halberstadt
97c3a77bc1 Bug 1247054 - Fix |mach reftest| on Android, r=gbrown
There is an ImportError on Android, as well as a log related
regression from the structured log patch once that is fixed.

MozReview-Commit-ID: KxSEotr38qO

--HG--
extra : rebase_source : 15d8421aab813d9e0dbf6d00611f921aaa779a49
2016-02-09 16:19:44 -05:00
Andrew Halberstadt
cc33abe5c7 Bug 1034290 - Follow-up fix for reftest error message when application returns non-zero, r=chmanchester
MozReview-Commit-ID: JpHzDSuSQqH

--HG--
extra : rebase_source : 8424bdc1b8c9b5027837fd5ac8023f0f4873e08e
extra : amend_source : 62a8e7d3dfbfa3c03354859de33d86ca781cccea
2016-02-08 14:54:23 -05:00
Andrew Halberstadt
f94d7e71d8 Bug 1034290 - Use structured log output for test results in reftest, r=jmaher
Structured logs bring many benefits. We can stop parsing the logs for magic strings, we
can modify the format without breaking things, and we can stream results into systems like
ActiveData. The structured logs originate primarily in reftest.js. StructuredLog.jsm is
used to generate the JSON-based log stream. Finally OutputHandler in the python harness
reads structured output from stdout, and formats it into human readable form.

MozReview-Commit-ID: G3ZLkMRl6p7

--HG--
extra : commitid : J3ui9XYWR3Q
extra : rebase_source : 77ed0ba842cc8e557141fb3494212b06868c728a
extra : amend_source : 735d48225a2e627e0fe45fc11b50b6c49a885a4b
extra : source : d1779fe421c3c7cd8e3d191816776390dc104f37
2016-02-05 15:44:20 -05:00
Phil Ringnalda
66e6da78e6 Back out d1779fe421c3 (bug 1034290) for UnicodeDecodeErrors in things run by the reftest harness
CLOSED TREE
2016-02-05 08:18:47 -08:00
Andrew Halberstadt
8a462fd84b Bug 1034290 - Use structured log output for test results in reftest, r=jmaher
Structured logs bring many benefits. We can stop parsing the logs for magic strings, we
can modify the format without breaking things, and we can stream results into systems like
ActiveData. The structured logs originate primarily in reftest.js. StructuredLog.jsm is
used to generate the JSON-based log stream. Finally OutputHandler in the python harness
reads structured output from stdout, and formats it into human readable form.

--HG--
extra : commitid : J3ui9XYWR3Q
extra : rebase_source : 6bae978126dbd5beddc39332c7cbce0c1354cd87
extra : amend_source : 735d48225a2e627e0fe45fc11b50b6c49a885a4b
2015-10-29 15:01:44 -04:00
David Anderson
7b6e752abc Add software mix-blend mode support to the D3D9 compositor. (bug 1243071 part 3, r=bas,mattwoodrow) 2016-02-01 16:28:00 -08:00
Geoff Brown
6fe30ec610 Bug 1241907 - Grant runtime permissions before running browser tests; r=jmaher 2016-02-01 15:52:34 -07:00
Kyle Huey
91efc5a86c Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Wes Kocher
84714308b8 Merge fx-team to central, a=merge
--HG--
extra : commitid : 2DZ63I10LcS
2016-01-28 17:47:33 -08:00
Jerry Shih
8f5046dca5 Bug 1242876 - turn on the display before reftest. r=ahalberstadt 2016-01-27 18:59:00 +01:00
Gijs Kruitbosch
ef04fd0f90 Bug 1172165 - check all nested URI schemes in CAPS. Make view-source dangerous to load, and about: URIs use per-URI flags so they keep working, r=bz
Also, add an opt-out for crashtest/reftest for the view-source thing so they don't all break, r=bz

--HG--
extra : commitid : 8NqvmbphSgh
extra : rebase_source : bbe0b6f11a77d7e6241a5733931d9baa95bb3fed
2015-12-11 08:06:41 -05:00
Benoit Girard
c93c572d7a Bug 1196831 - Add 'run-until-failure' and 'repeat' flags to reftest. r=jmaher
--HG--
extra : commitid : Ig2JmBnAcrw
extra : rebase_source : ee3026bd82263dd77583dfd3d576eb622fa582bc
2016-01-15 18:30:23 -05:00
Christoph Kerschbaumer
85f65d6c64 Bug 1232792 - Convert JS callsites to use open2 within layout/ (r=sicking) 2015-12-15 13:33:44 -08:00
Wes Kocher
80765f938f Backed out changeset 7c4f0da2f1e5 (bug 1232792) on the chance it caused a bunch of b2g test bustage CLOSED TREE
--HG--
extra : commitid : 5NsyQ1o2oSV
2016-01-11 14:20:34 -08:00
Christoph Kerschbaumer
c262655b27 Bug 1232792 - Convert JS callsites to use open2 within layout/ (r=sicking) 2016-01-11 12:16:54 -08:00
Bob Clary
5a470be233 Bug 1237465 - Work around Android 5.1+ permission restrictions by changing pushed directory permissions to rwx, r=gbrown. 2016-01-09 15:40:17 -08:00
Andrew Halberstadt
2bfb20ef72 Bug 1228636 - Add mach support for running reftests on mulet, r=jgriffin
Usage:
mach reftest --profile path/to/gaia/profile path/to/test/dir

--HG--
extra : rebase_source : 6efffc77ef2b108617214c5ead35f8c4e90fcd3f
2016-01-04 16:27:37 -05:00
Lee Salzman
5512fbeae7 Bug 1229983 - verify that paths are finite in DrawTargetSkia::Stroke/Fill to handle Canvas paths containing infs. r=jmuizelaar 2015-12-30 13:39:13 -05:00