Skip to content

Network suites: public HTTP, TLS and DNS test servers (tracking) #5

Description

@yschimke

The README says "more suites are planned — notably network tests against external IETF and vendor test servers". This is the plan for those, and the tracking issue for the work.

What this is

A survey of the public servers that other HTTP and TLS clients — curl, rustls, reqwest, Go, the browsers — test against, and a roadmap for pointing the testbed at the ones that tell us something about OkHttp. The full write-up, with what each server offers and why it is worth having, is published at https://yschimke.github.io/okhttp-testbed/topics/test-servers.html.

The two rules the roadmap is written to

  1. A test asserting a connection succeeds is fragile against the internet; one asserting it is refused is not. Certificates get renewed, CDNs move, resolvers rate-limit. Prefer negative assertions against public endpoints, and put positive assertions against something we control.
  2. Self-host what we can, reach out for what we cannot. go-httpbin and badssl both ship containers, so most of the HTTP-semantics and bad-chain coverage can run in the containers suite with no third party in the loop. The public endpoint then checks the same property against the real internet, and disagreement between the two is the interesting result.

Everything reaching a third party lands in a suite that reports rather than gates, alongside loomTest — a rate limit at Cloudflare is not this repository being red.

Phases

Phase 1 — infrastructure

Phase 2 — HTTP

Phase 3 — TLS

Phase 4 — DNS

Phase 5 — ECH beyond the fixture

Not in scope

  • Anything needing okhttp3.internal. The public-API-only rule is what makes -PokhttpVersion meaningful, and it is enforced by checkPublicApiOnly.
  • Load or performance testing against other people's servers.
  • Servers whose terms do not allow automated use. Where a service asks to be used only for clients under your control (How's My SSL), that is what we are doing — one request per scheduled run, no polling.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions