Граф коммитов

44 Коммитов

Автор SHA1 Сообщение Дата
Tooru Fujisawa 2108f90fcf Bug 1623965 - Improve error message when binary not found while testing. r=glandium,remote-protocol-reviewers,marionette-reviewers,webdriver-reviewers,perftest-reviewers,Bebe,whimboo
Differential Revision: https://phabricator.services.mozilla.com/D67726
2020-04-21 11:58:04 +00:00
Myeongjun Go d83a7f3703 Bug 1614443 - added browsertime usage command(--browsertime-help) r=sparky,perftest-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D67985

--HG--
extra : moz-landing-system : lando
2020-03-26 12:44:08 +00:00
Gregory Mierzwinski 61a0db5200 Bug 1623055 - Update in-tree browsertime to 8.3.0. r=perftest-reviewers,tarek,AlexandruIonescu
This patch updates the in-tree browsertime to v8.3.0.

Differential Revision: https://phabricator.services.mozilla.com/D67170

--HG--
extra : moz-landing-system : lando
2020-03-26 07:58:39 +00:00
Tarek Ziadé 5fb873ad16 Bug 1607522 - improve dependency detection r=sefeng,perftest-reviewers,sparky
When a package is installed with "pip --user", the import works right after the virtualenv activation.
Even if we force its install via mozbuild virtualenv it will fail. This patch checks if the installed package is **inside** or
**outside** the virtualenv. If it's outside, it forces its installation **inside**.

Notice that we might want to move that logic in mozbuild/virtualenv.py

Differential Revision: https://phabricator.services.mozilla.com/D67592

--HG--
extra : moz-landing-system : lando
2020-03-20 14:16:34 +00:00
Nick Alexander 4d7d9f4968 Bug 1612191 - Implement `mach browsertime --update-upstream-url $URL` for bumping version. r=Standard8,tarek
Might as well automate what we can automate.  I considered making the
"update package.json" logic part of setup_helper.py, so that it can be
used more broadly, but it's not clear it would be used with the
general push towards vendoring into the tree as part of `mach vendor`.

Depends on D63370

Differential Revision: https://phabricator.services.mozilla.com/D63371

--HG--
extra : moz-landing-system : lando
2020-02-24 10:53:50 +00:00
Nick Alexander df11faa804 Bug 1607851 - Bump browsertime version to sitespeedio/browsertime@v8.0.1+. r=tarek
This patch upgrades the major browsertime version used in-tree from 4 to 8 (including some additional fixes to fix some failing tests on our end).

We also add the node v10 requirement in this patch. Also, there were some changes in the browsertime repo's visualmetrics.py script that made it necessary to change where we find the file.

Differential Revision: https://phabricator.services.mozilla.com/D59235

--HG--
extra : moz-landing-system : lando
2020-02-17 20:20:18 +00:00
Tarek Ziadé d3d110bba7 Bug 1608136 - Fixed ContentfulSpeedIndex extraction r=sparky
The convert output is now parsed in a more robust manner.

Differential Revision: https://phabricator.services.mozilla.com/D60108

--HG--
extra : moz-landing-system : lando
2020-01-21 19:56:52 +00:00
Tarek Ziadé dc4e8c242a Bug 1608464 - Stop trying to set --firefox.binaryPath if --android is used r=jnicol
Differential Revision: https://phabricator.services.mozilla.com/D59835

--HG--
extra : moz-landing-system : lando
2020-01-14 10:35:38 +00:00
Tarek Ziadé 9bb6e90df8 Bug 1565027 - check browsertime node install
Teach `mach browsertime` to tell you to `mach browsertime --setup` if we're not already set up

Differential Revision: https://phabricator.services.mozilla.com/D59501

--HG--
extra : moz-landing-system : lando
2020-01-14 08:14:35 +00:00
Tarek Ziadé c1555abb86 Bug 1607522 - hard stop if Pillow or pyssim could not be installed r=nalexander
Let's stop if the packages could not be installed.
Also, let's skip the call if we find them.

Differential Revision: https://phabricator.services.mozilla.com/D59690

--HG--
extra : moz-landing-system : lando
2020-01-14 08:04:54 +00:00
Tarek Ziadé b1af7191f1 Bug 1596237 - make sure ImageMagick's ffmpeg does not take precedence r=acreskey
Tweaked sys.path on windows to make sure we use the right ffmpeg binary

Differential Revision: https://phabricator.services.mozilla.com/D59681

--HG--
extra : moz-landing-system : lando
2020-01-14 06:58:04 +00:00
Tarek Ziadé d6564b8479 Bug 1558239 - Use MOZ_OBJDIR as default binary for ./mach browsertime r=dpalmeiro
Use the binary from MOZ_OBJDIR as the default when invoking mach browsertime.
The options --firefox.binaryPath, --firefox.release, --firefox.beta, --firefox.nightly, or -b chrome, will override this default.

Differential Revision: https://phabricator.services.mozilla.com/D34382

--HG--
extra : moz-landing-system : lando
2019-12-16 17:02:43 +00:00
Tarek Ziadé b66bbc9375 Bug 1602577 - Update in-tree Browsertime version r=barret
Update in-tree Browsertime version

Differential Revision: https://phabricator.services.mozilla.com/D56454

--HG--
extra : moz-landing-system : lando
2019-12-09 21:36:58 +00:00
Tarek Ziadé db1843773d Bug 1601367 - Don't install ImageMagick for Browsertime @ macOS r=rwood
Differential Revision: https://phabricator.services.mozilla.com/D55856

--HG--
extra : moz-landing-system : lando
2019-12-07 07:30:17 +00:00
Tarek Ziadé ae3f8a3171 Bug 1600553 - Update in-tree Browsertime version r=barret
Update in-tree Browsertime version

Differential Revision: https://phabricator.services.mozilla.com/D55412

--HG--
extra : moz-landing-system : lando
2019-12-02 19:52:03 +00:00
Gregory Mierzwinski 787b280e15 Bug 1594795 - Fix local browsertime issues on Windows and MacOS. r=perftest-reviewers,barret,stephendonner,davehunt
This patch fixes local `./mach browsertime` issues on Windows.

First issue that is fixed is that the archive is extracted into the browsertime folder instead of a separate folder for imagemagick within the browsertime folder. Now, it is extracted into it's own folder whose name depends on the `fetches` path entry. Second issue fixed is that the environment was being contaminated with bad strings because of the `GECKODRIVER_BASE_URL` addition - using `str` on the entries solves this issue.

Finally, convert and compare were not passing in the visualmetrics.py check call. This is because ImageMagick expects to find the path to them within `ProgramFiles` on windows. Since we don't have them there, we have to add an entry in the `PATH` environment variable to point to the imagemagick directory to get around this.

There is also an issue with the macosx imagemagick directory which was being extracted as 7.0.9, but we expected 7.0.8. The imagemagick version used is modified to the correct version with the expected directory.

Differential Revision: https://phabricator.services.mozilla.com/D52751

--HG--
extra : moz-landing-system : lando
2019-11-19 14:08:40 +00:00
Barret Rennie d94d51467f Bug 1595854 - Update in-tree Browsertime version r=perftest-reviewers,sparky
This updates our in-tree Browsertime version to support the async composition
recorder API introduced in bug 1581240.

Differential Revision: https://phabricator.services.mozilla.com/D52717

--HG--
extra : moz-landing-system : lando
2019-11-18 18:52:03 +00:00
Stephen Donner 59ec80a211 Bug 1594219: [browsertime] HTTPError: 404: file not found for ImageMagick-x86_64-apple-darwin18.7.0.tar.gz in browsertime --setup on macOS/OSX. r=acreskey
Differential Revision: https://phabricator.services.mozilla.com/D51931

--HG--
extra : moz-landing-system : lando
2019-11-05 22:03:38 +00:00
Gregory Mierzwinski 7e63c0206e Bug 1559727 - Set executable bit after extraction, and correct ImageMagick path. r=perftest-reviewers,stephendonner
This patch fixes some issues with binaries not being executable after being extracted. It also fixes the ImageMagick expected extraction path to the correct location. To prevent that from occuring again, a check is done after extraction to be sure that the extraction completed successfully.

Differential Revision: https://phabricator.services.mozilla.com/D51300

--HG--
extra : moz-landing-system : lando
2019-11-01 18:09:26 +00:00
Gregory Mierzwinski a5c682a5cd Bug 1592400 - Update Browsertime version used in-tree. r=perftest-reviewers,rwood,dpalmeiro
This patch updgrades the current version used in-tree so that browsertime works with chrome, it currently timesout with that browser.

Differential Revision: https://phabricator.services.mozilla.com/D50999

--HG--
extra : moz-landing-system : lando
2019-10-30 17:23:56 +00:00
Stephen Donner 1ac49dc296 Bug 1589203: Browsertime's --setup ImageMagick binary link for macOS is 404/outdated/broken. r=perftest-reviewers,sparky
Differential Revision: https://phabricator.services.mozilla.com/D49491

--HG--
extra : moz-landing-system : lando
2019-10-22 14:37:07 +00:00
Nick Alexander ecf61beb44 Bug 1577922 - Bump browsertime hash to c795660ef1e589dfb8bf01397782811934c90696. r=sefeng
Differential Revision: https://phabricator.services.mozilla.com/D44288

--HG--
extra : moz-landing-system : lando
2019-08-31 01:35:40 +00:00
Nick Alexander 586f010000 Bug 1576971 - Post: Use github.com for fetching browsertime binary dependencies. r=barret
In automation, we install `ffmpeg` as part of `mach browsertime
--setup` in the browsertime toolchain task.  Those tasks run on Linux
64 from within AWS, and most of the hosts we hit (intermittently) deny
AWS traffic.  Let's just use github.com in automation (and locally),
for all platforms, which will agree with upcoming fetch tasks.

Differential Revision: https://phabricator.services.mozilla.com/D43656

--HG--
extra : moz-landing-system : lando
2019-08-28 20:58:26 +00:00
Nick Alexander 545bb000da Bug 1576971 - Fail browsertime toolchain harder. r=barret
Differential Revision: https://phabricator.services.mozilla.com/D43655

--HG--
extra : moz-landing-system : lando
2019-08-28 20:58:19 +00:00
Nick Alexander f2e38650f0 Bug 1566171 - Part 1: Expose browsertime helpers to Raptor harness. r=barret
This will allow mozharness tooling, which does not run through `mach`,
to fish these paths.

Differential Revision: https://phabricator.services.mozilla.com/D38775

--HG--
extra : moz-landing-system : lando
2019-07-26 21:29:57 +00:00
Nick Alexander 280126dff5 Bug 1564256 - Part 2: Produce browsertime.zip in a toolchain task. r=mshal
In browsertime.zip we should have:

browsertime/
  package.json
  package-lock.json
  node_modules/
    .bin/
      browsertime -> ../browsertime/bin/browsertime.js
    browsertime/
      ...

The idea is that we'll fetch browsertime.zip in a generic-worker
environment and be able to run Node.js from within the top level
browsertime/ directory.

Differential Revision: https://phabricator.services.mozilla.com/D38773

--HG--
extra : moz-landing-system : lando
2019-07-24 20:59:55 +00:00
Nick Alexander ceec08a80d Bug 1564256 - Part 1: Don't install optional browsertime packages in automation. r=barret
browsertime depends on a few architecture and OS specific packages:
- sharp (libvips)
- geckodriver
- chromedriver

Our toolchain task packages up `tools/browsertime/node_modules` and
we'd like to use the resulting toolchain archive across all of our
test platforms.  Since in automation we don't require sharp (which is
only used for screenshotting), and we provide `geckodriver` and
`chromedriver` at the task level, the simplest way is to make these
`optionalDependencies` at the NPM level and not install them in our
toolchain task.

Differential Revision: https://phabricator.services.mozilla.com/D38772

--HG--
extra : moz-landing-system : lando
2019-07-24 20:58:39 +00:00
Denis Palmeiro 25e544d4a8 Bug 1565399 - Update github tarball to 4989d0c22bba3a165078b8d784e8d303a727a119 r=nalexander
Update the browsertime snapshot to 4989d0c22bba3a165078b8d784e8d303a727a119 which uses lodash 4.7.14 and lodash.merge 4.6.2.

Differential Revision: https://phabricator.services.mozilla.com/D37806

--HG--
extra : moz-landing-system : lando
2019-07-16 15:09:17 +00:00
Andrew Halberstadt 3486ba642c Bug 1563797 - Use 'backports.shutil_which' instead of 'which' across the tree r=Callek
Differential Revision: https://phabricator.services.mozilla.com/D37097

--HG--
extra : moz-landing-system : lando
2019-07-11 14:03:39 +00:00
Sean Feng aed178a11b Bug 1563228 - Bump browsertime target hash r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D36758

--HG--
extra : moz-landing-system : lando
2019-07-03 16:01:52 +00:00
Barret Rennie f1d04044bd Bug 1560193 - Always specify the Python executable to use when running `./mach browsertime` r=nalexander
If `./mach browsertime` runs browsertime with a globally-installed node, due to
an existing bug in [execa][1], the wrong Python will be executed. We now
specify the full path of the Python binary we wish to use (via the `PYTHON`
environment variable that our fork of browsertime supports) and avoid this
issue altogether.

[1]: https://github.com/sindresorhus/execa/issues/153

Differential Revision: https://phabricator.services.mozilla.com/D35374

--HG--
extra : moz-landing-system : lando
2019-07-02 17:29:33 +00:00
Nick Alexander 86801c417d Bug 1556567 - Use custom `geckodriver` with pre-release Android support in `mach browsertime`. r=sefeng
Differential Revision: https://phabricator.services.mozilla.com/D33574

--HG--
extra : moz-landing-system : lando
2019-06-18 22:44:52 +00:00
Denis Palmeiro 7b9e1b6ba5 Bug 1558271 - Update mozilla/browsertime snapshot to b8c1becaee74970a6f6e4222a64d1e2e18f20cd6 r=nalexander
Changes include a fix for visual metrics calculations on desktop, and appending visual metrics information to gecko profiles.

Additionally, add the browsertime-results directory to gitignore.

Differential Revision: https://phabricator.services.mozilla.com/D34412

--HG--
extra : moz-landing-system : lando
2019-06-10 21:03:22 +00:00
Denis Palmeiro 2c01bcf632 Bug 1558271 - Set verbose to false by default in ./mach browsertime r=nalexander
Flip set_log_level to false by default so we don't clutter stdout.  Flip on with --verbose.

Differential Revision: https://phabricator.services.mozilla.com/D34391

--HG--
extra : moz-landing-system : lando
2019-06-10 19:30:00 +00:00
Nick Alexander 9366390a2b Bug 1555158 - Part 4: Default to `-b firefox --skipHar` in `mach browsertime`. r=dpalmeiro
Differential Revision: https://phabricator.services.mozilla.com/D33326

--HG--
extra : moz-landing-system : lando
2019-06-01 02:23:46 +00:00
Nick Alexander 2c85bd96b3 Bug 1555158 - Part 3: Make `mach visualmetrics` calculate contentfulSpeedIndex. r=dpalmeiro
Differential Revision: https://phabricator.services.mozilla.com/D33325

--HG--
extra : moz-landing-system : lando
2019-06-01 02:23:37 +00:00
Nick Alexander 7666bb7d95 Bug 1555158 - Part 2: Accept system ImageMagick on Linux. r=dpalmeiro
Differential Revision: https://phabricator.services.mozilla.com/D32923

--HG--
extra : moz-landing-system : lando
2019-06-01 02:23:22 +00:00
Nick Alexander ae0bdfac53 Bug 1555158 - Part 1: Point `mach browsertime --setup` at mozilla/browsertime github repository. r=dpalmeiro
Key features in this commit:

- support for `contentfulSpeedIndex` visual metric
- support for the Gecko Window Recorder (Desktop only)
- support for the Gecko Profiler (Desktop only)
- partial support for GeckoView on Android

Differential Revision: https://phabricator.services.mozilla.com/D32907

--HG--
extra : moz-landing-system : lando
2019-06-01 02:23:09 +00:00
Nick Alexander 3df6d400a1 Bug 1549781 - Ensure browsertime state path is created before use. r=dpalmeiro
Differential Revision: https://phabricator.services.mozilla.com/D32906

--HG--
extra : moz-landing-system : lando
2019-06-01 02:22:55 +00:00
Nick Alexander 730a0a46f2 Bug 1543247 - Part 2: Install `visualmetrics.py` prerequisites. r=ahal
Under the hood, browsertime invokes a certain `visualmetrics.py`
script.  That script depends on `ffmpeg` and ImageMagick's `convert`,
`compare`, and `mogrify` commands.  It also depends on certain Python
packages.

So this installs those dependencies, and then wires up the evaluation
environment such that `./mach browsertime` can find the dependencies.
It also adds a `./mach visualmetrics` command for processing a
captured MP4 file in the same way that browsertime processes such a
file.

In order to avoid downloading dependencies multiple time, the existing
artifact cache is extracted.  This is a small first step towards [Bug
1526021](https://bugzilla.mozilla.org/show_bug.cgi?id=1526021), which
might want to use this artifact cache as well.

At this time, hashes and filesizes are not verified.  During
development, the upstream files changed multiple times, and it's not
worth being completely locked down while experimenting with this
functionality.  If we start running this code in automation or in more
sensitive environments, we can build fetch tasks and TC indexes to
streamline the artifact gathering process.

It is expected that a future mach command will want to invoke
browsertime without suffering the overhead of invoking Python (and
mach, which is itself bulky) so a nod is given to exposing the
relevant environment pieces.

During testing, it was discovered that [MozillaBuild doesn't ship
git](https://bugzilla.mozilla.org/show_bug.cgi?id=1503028), so that
git repositories can't be used out-of-the-box on Windows.  So instead
we use a [tarball link from github.com/$USER/$REPO/tarball/$COMMIT-LIKE](https://github.blog/2008-03-03-tarball-downloads/).

Differential Revision: https://phabricator.services.mozilla.com/D29442

--HG--
rename : python/mozbuild/mozbuild/test/test_artifacts.py => python/mozbuild/mozbuild/test/test_artifact_cache.py
extra : moz-landing-system : lando
2019-05-06 23:56:59 +00:00
Nick Alexander a7e3d82701 Bug 1543247 - Part 1: Add `mach browsertime` command that installs and invokes browsertime. r=Standard8,ahal
[browsertime](https://github.com/sitespeedio/browsertime) is a harness
for running performance tests, similar to Mozilla's Raptor testing
framework.  The Performance Team is using it locally with some
success, but we're running a heavily modified toolchain that is
challenging to install.  This mach command is intended to be leverage
for getting more folks able to use browsertime easily.

In particular, the version of browsertime that this installs has
nalexander's changes to support testing GeckoView-based vehicles.  If
this approach meets with approval, I'll continue to follow-up with
additional configuration and tooling layers to make it even easier to
drive GeckoView-based vehicles.

I elected to piggy-back install on the eslint installation process,
since this is very similar.  To that end, I generalized what was there
very slightly.  I elected not to try to move the existing code into a
more obvious shared location, although it might be possible, because
it wasn't clear what contexts the existing code would be invoked
from.  In particular I wasn't certain the code could rely on a
complete mozbuild checkout.

I did need to ensure the local Node.js binary is early on the PATH;
this was an issue I ran into with my initial Node/Yarn prototyping
many months ago.  At heart the issue is that package scripts in the
wild invoke a bare `node` or `npm` command; if there was a culture of
invoking $NODE or $NPM, this wouldn't be necessary.  There's no harm
doing it for ESlint, and it will help the next person who wants to
install an NPM package for tooling in this manner.

Differential Revision: https://phabricator.services.mozilla.com/D26820

--HG--
extra : moz-landing-system : lando
2019-05-06 23:56:49 +00:00
Razvan Maries 12bcfbb334 Backed out 2 changesets (bug 1543247) for build bustages. CLOSED TREE
Backed out changeset feb726e4f15d (bug 1543247)
Backed out changeset 4b3619d89abd (bug 1543247)
2019-05-04 03:10:55 +03:00
Nick Alexander 7128d7e528 Bug 1543247 - Part 2: Install `visualmetrics.py` prerequisites. r=ahal
Under the hood, browsertime invokes a certain `visualmetrics.py`
script.  That script depends on `ffmpeg` and ImageMagick's `convert`,
`compare`, and `mogrify` commands.  It also depends on certain Python
packages.

So this installs those dependencies, and then wires up the evaluation
environment such that `./mach browsertime` can find the dependencies.
It also adds a `./mach visualmetrics` command for processing a
captured MP4 file in the same way that browsertime processes such a
file.

In order to avoid downloading dependencies multiple time, the existing
artifact cache is extracted.  This is a small first step towards [Bug
1526021](https://bugzilla.mozilla.org/show_bug.cgi?id=1526021), which
might want to use this artifact cache as well.

At this time, hashes and filesizes are not verified.  During
development, the upstream files changed multiple times, and it's not
worth being completely locked down while experimenting with this
functionality.  If we start running this code in automation or in more
sensitive environments, we can build fetch tasks and TC indexes to
streamline the artifact gathering process.

It is expected that a future mach command will want to invoke
browsertime without suffering the overhead of invoking Python (and
mach, which is itself bulky) so a nod is given to exposing the
relevant environment pieces.

During testing, it was discovered that [MozillaBuild doesn't ship
git](https://bugzilla.mozilla.org/show_bug.cgi?id=1503028), so that
git repositories can't be used out-of-the-box on Windows.  So instead
we use a [tarball link from github.com/$USER/$REPO/tarball/$COMMIT-LIKE](https://github.blog/2008-03-03-tarball-downloads/).

Differential Revision: https://phabricator.services.mozilla.com/D29442

--HG--
extra : moz-landing-system : lando
2019-05-03 22:45:22 +00:00
Nick Alexander 6df6c7ee39 Bug 1543247 - Part 1: Add `mach browsertime` command that installs and invokes browsertime. r=Standard8,ahal
[browsertime](https://github.com/sitespeedio/browsertime) is a harness
for running performance tests, similar to Mozilla's Raptor testing
framework.  The Performance Team is using it locally with some
success, but we're running a heavily modified toolchain that is
challenging to install.  This mach command is intended to be leverage
for getting more folks able to use browsertime easily.

In particular, the version of browsertime that this installs has
nalexander's changes to support testing GeckoView-based vehicles.  If
this approach meets with approval, I'll continue to follow-up with
additional configuration and tooling layers to make it even easier to
drive GeckoView-based vehicles.

I elected to piggy-back install on the eslint installation process,
since this is very similar.  To that end, I generalized what was there
very slightly.  I elected not to try to move the existing code into a
more obvious shared location, although it might be possible, because
it wasn't clear what contexts the existing code would be invoked
from.  In particular I wasn't certain the code could rely on a
complete mozbuild checkout.

I did need to ensure the local Node.js binary is early on the PATH;
this was an issue I ran into with my initial Node/Yarn prototyping
many months ago.  At heart the issue is that package scripts in the
wild invoke a bare `node` or `npm` command; if there was a culture of
invoking $NODE or $NPM, this wouldn't be necessary.  There's no harm
doing it for ESlint, and it will help the next person who wants to
install an NPM package for tooling in this manner.

Differential Revision: https://phabricator.services.mozilla.com/D26820

--HG--
extra : moz-landing-system : lando
2019-05-03 22:44:23 +00:00