Proxies

A proxy is the one piece of network infrastructure an application cannot emulate convincingly in-process: the interesting behaviour is in a real implementation's handling of CONNECT, authentication, and address forms. So the testbed runs real ones, in containers.

Current results

Loading the latest proxy evidence…

How the result is produced

SuiteContainersWhat it covers
SocksProxyTest serjs/go-socks5-proxy and MockServer, on a shared Docker network SOCKS5 through Proxy(SOCKS, …), including the case where the origin server is only reachable from inside the proxy's network — so a request that succeeds proves it really went through the proxy.
BasicProxyTest MockServer, in proxy mode HTTP proxying and CONNECT tunnelling for https, compared against HttpURLConnection as a control.

The task and severity printed beside each live result above decide whether a failure gates. The table documents the fixture behind each named suite; the published JUnit cases above are the authority for what actually ran.

Specifications

DocumentTitleWhy it matters here
RFC 1928 SOCKS Protocol Version 5 The handshake and address forms SocksProxyTest drives.
RFC 1929 Username/Password Authentication for SOCKS V5 The authenticated variant — a natural next case for the SOCKS suite.
RFC 9110 §9.3.6 HTTP Semantics — CONNECT The tunnel an https request opens through an HTTP proxy.
RFC 9110 §11.7 · RFC 7235 Proxy authentication Proxy-Authenticate and Proxy-Authorization handling, including on the CONNECT exchange itself.
RFC 9112 HTTP/1.1 Absolute-form request targets, which is what distinguishes a proxied request on the wire.

Test infrastructure

Everything here is containerised, so there are no third-party servers to depend on — but there are third-party images, and those move. Image tags are pinned deliberately:

Reading a result

Check whether the failure reproduces locally with ./gradlew containers:test before looking upstream. A proxy suite that fails on CI but passes locally usually means the runner's Docker networking, not the client: these tests depend on container-to-container name resolution over a user-defined network.