Closed Bug 1658640 Opened 4 years ago Closed 4 years ago

[wpt-sync] Sync PR 24965 - Add connection-pool tests

Categories

(Core :: DOM: Networking, task, P4)

task

Tracking

()

RESOLVED FIXED
83 Branch
Tracking Status
firefox83 --- fixed

People

(Reporter: wpt-sync, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 24965 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/24965
Details from upstream follow.

Matt Menke <mmenke@chromium.org> wrote:

Add connection-pool tests

This adds a couple tests for the changes landed in https://github.com/whatwg/fetch/pull/1063. It opens up windows at different sites and makes sure they don't share connections. It checks fetch requests, JS resource requests, main frame requests, iframe requests, CORS requests, and dedicated worker requests. It works by providing the port a request came over to the Python server, and having it track which requests used which port.

There are a bunch of cases this doesn't currently test:

  • Requests from opaque origins (planning on investigating in a followup).
  • Requests from top-level about:blank pages (which inherit origin from their parent). Probably add a test when I test opaque origins, since they need similar logic.
  • H2/H3 (planning on investigating in a followup).
  • Nested dedicated workers (Is it worth a test for these? In Chrome they're different enough that we had a bug that only affected these, at least).
  • Reporting requests (spec in too much flux - Chrome's implementation makes this a really easy tracking vector if not double-keyed, but looks like there will be big changes, anyways)
  • Websockets (matters mostly in the case of H2/QUIC and reporting)
  • Push requests.
  • OSCP/ACA requests (likely not testable)
  • Preconnects (likely not testable)
  • All other types of workers, as it's unclear what they should be doing.
  • Sure I'm leaving some things out.

The tests also don't make sure that connections are ever shared when they should be. They also don't check connection-adjacent caches (DNS, alt service, proxy resolution, reporting, CORS cache, etc).

I've verified all tests pass in Chrome with connection partitioning on (--enable-features=PartitionConnectionsByNetworkIsolationKey), but haven't checked other browsers, nor have I exhaustively made sure that if there's a bug in a single request type the tests fail (e.g., worker source fetches are incorrectly pooled together).

Component: web-platform-tests → DOM: Networking
Product: Testing → Core

CI Results

Ran 12 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 1 tests and 9 subtests

Status Summary

Firefox

PASS : 7
FAIL : 1
TIMEOUT: 2

Chrome

FAIL : 8
TIMEOUT: 2

Safari

FAIL : 8
TIMEOUT: 2

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

/fetch/connection-pool/network-partition-key.html: TIMEOUT (Chrome: TIMEOUT, Safari: TIMEOUT)
CSP sandbox: FAIL (Chrome: FAIL, Safari: FAIL)
about:blank from opaque origin iframe: TIMEOUT (Chrome: TIMEOUT, Safari: TIMEOUT)

Pushed by wptsync@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/1eaa68ff573a [wpt PR 24965] - Add connection-pool tests, a=testonly https://hg.mozilla.org/integration/autoland/rev/ede9cd47ccf4 [wpt PR 24965] - Update wpt metadata, a=testonly
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 83 Branch
You need to log in before you can comment on or make changes to this bug.