[EME] web-platform-tests hanging with "Nightly is installing the components needed to play audio or video on this site. Please try again later"
Categories
(Core :: Audio/Video: Playback, defect, P3)
Tracking
()
People
(Reporter: jgraham, Unassigned)
References
(Blocks 1 open bug)
Details
e.g. with ./mach wpt /encrypted-media/drm-check-status-for-hdcp.https.html
. See https://wpt.fyi/results/encrypted-media?label=master&label=experimental&product=chrome&product=firefox&aligned&q=firefox%3Atimeout%20chrome%3Aok for a bunch of tests that are passing in Chrome and timing out in Firefox.
Can we make this component available to the tests somehow? Otherwise we should at least fix the tests to not timeout.
This is because we don't download the CDM locally. The testing environment sets up bogus URLs to ensure that we won't download the CDM. I'd hope we could improve this in the past, but I've found it difficult to get eyeballs from those more familiar with the testing environments to help understand what can be done.
I would like if we could have a test step that downloads the CDM before running these tests, or fails if it's unable to download the CDM and explicitly indicates that the download failed and that's why the tests failed. The testing machines would also need to reach the Widevine license servers.
I'd previously created bug 1573919 to investigate this, and will mark this as blocking that.
James, do you know of anyone familiar with the wpt harness that I can talk to about if improving our support here is possible?
Reporter | ||
Comment 2•5 years ago
|
||
I am familiar with the wpt harness :)
So, it seems like putting the CDM in tooltool (or whatever the modern equivalent is) would work. I'm not exactly sure how things are wired up for the CDM; we do a bunch of setup in https://searchfox.org/mozilla-central/source/testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/firefox.py#259 so if this is a thing that we can drop into a profile directory we probably do it there. Presumably we'd either pass in a URL or get a layer further out (like mozharness) do do the actual download and then pass in a path to a file.
In terms of accessing the license server, that may be a problem due to the crash-on-external network environment variable we use (although maybe there are hacks like proxying the connection through a local server). If it causes intermittents, we could possibly mark the tests as expected: [PASS, TIMEOUT]
(or similar), so we wouldn't detect regressions causing the tests to timeout (at least until we have the infrastructure to differentiate between an intermittent timeout and a permafail).
For wpt we are also running the tests in CI on https://github.com/web-platform-tests/wpt ; that's the data that ends up in wpt.fyi. In that case we don't have access to tooltool (but are generally more open to doing network requests as part of the test setup since it's not causing backouts or similar).
I don't know if that's helpful, but I'm very happy to help improve things here.
Do we have anything in the harness to interact with Balrog? In normal usage the download would go via balrog and be handled via front end code that would also set some prefs. We could sidestep that and have the harness do it early if it can hit balrog and set all the required prefs to trick Firefox into not doing its own update. We also have some fallback URLs in central in case balrog cannot be reached, we could use these instead -- though we'd still need to set some prefs to trick Firefox into thinking it was the one that had downloaded the CDM.
The approach to dealing with the license server sounds like a start. Dealing with the license server is a real pain when dealing with testing this stuff. Can we easily disable crash on external network for certain tests at the moment?
Reporter | ||
Comment 4•5 years ago
|
||
Do we have anything in the harness to interact with Balrog?
Not that I know of. Searchfox suggests that the update tests are using balrog, so I think it's at least accessible to us on the test machines, but you'd really need to ask someone from RelEng.
Pref setting is relatively strightforward as long as we know upfront what the values should be.
Can we easily disable crash on external network for certain tests at the moment?
No, but if we need that I know how to make it happen.
If we can get external requests working for these tests I think that's a good way to get started. It may be possible to run a proxy inside our infra that would be able to prefetch licenses and cache those, as well as doing the same with for the CDM download, which would alleviate the need to hit any external network. However, even if that's doable, I think it's going to be a fair amount of work.
NI: me to talk to releng and see what we can do on the balrog side.
Updated•2 years ago
|
Description
•