aboutsummaryrefslogtreecommitdiffstats
path: root/tests/specs/http/README.md
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-10-19 03:02:51 +0100
committereunhhu <[email protected]>2026-10-19 03:02:51 +0100
commit5842b26e8353a38192afb1ebe4c08809da48dbf4 (patch)
treea4bf3d5e8ad8194b37d1beb1fa3639a6fd12c279 /tests/specs/http/README.md
parent85a35189c6588903ffc287837c9005ef3063e056 (diff)
downloadpure-5842b26e8353a38192afb1ebe4c08809da48dbf4.tar.gz
pure-5842b26e8353a38192afb1ebe4c08809da48dbf4.zip
140's 9, HTTP/1.1 requests a packet at a time (RFC 9112), written in aup with no new opcode (aup's examples/http.aup: each packet an event, its bytes added to what the last left, every request they complete read, h11's grammar): 200 streams (132,623 bytes, 578 requests: methods, targets, HTTP/1.1 and a last 1.0, mixed-case names, spaces around values, Content-Length and chunked bodies with extensions and trailers, some ending in part of a request) fed whole, at random boundaries and a byte at a time (the 50 under 400 bytes), the requests read h11's on every cut and the bytes left those after them, the three paths' outputs the same bytes; 200 damaged streams fed whole as http_requests.py (the Python reference) reads them, 35 refused by both and 165 the same; module_specs in make check: 80 streams and their reading (tests/specs/http, no h11 at check time) whole on the three paths and cut 88 ways; bars: written, three workarounds (the bytes left in a list of one: bytes are no state; names and codings compared as text: bytes have no ==; field lines returned in a record: a fn returns no bare list), 159 lines against Python's 79, 278 ns a byte against the same algorithm in C 3.27 (85x), pure Python 67 (its bytes methods are C: Pure 4.1x slower), h11 284; 140's decision point after 027: bytes alone as a state (inflate, HTTP) and bytes' == (DNS, HTTP) now each met by two written specs, so the two-spec rule lets them into the core (their design not begun); a view calling a block fn met by one (DNS); aup's three its compiler's; CHECKPOINT's direction row
Diffstat (limited to 'tests/specs/http/README.md')
-rw-r--r--tests/specs/http/README.md9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/specs/http/README.md b/tests/specs/http/README.md
new file mode 100644
index 0000000..6bc44c7
--- /dev/null
+++ b/tests/specs/http/README.md
@@ -0,0 +1,9 @@
+# HTTP/1.1 request streams and their reading
+
+`streams.bin` is the first 80 of the 200 streams `research/experiments/044-specs/http_check.py` makes (its seed 140):
+pipelined requests with methods, targets, HTTP/1.1 and a last HTTP/1.0, fields with mixed-case names and spaces around
+their values, bodies by Content-Length or chunked with extensions and trailers, some ending in part of a request. Each
+is a u32 big-endian length, then its bytes. `read.json` is what `http_requests.py` reads from each (its requests, its
+bytes left, in hex), which the research check compares with h11 on every cut. `tests/check.py`'s `module_specs` feeds
+each stream to aup's `examples/http.aup` whole, at random boundaries and (if it is short) a byte at a time, each packet
+an event, and on Pure's three paths whole.