]> git.kaiwu.me - haproxy.git/commitdiff
REGTESTS: sample_fetches: test the request_date fetch
authorWilly Tarreau <w@1wt.eu>
Tue, 22 Sep 2026 20:09:16 +0000 (20:09 +0000)
committerWilly Tarreau <w@1wt.eu>
Wed, 30 Sep 2026 15:25:37 +0000 (17:25 +0200)
request_date is the accept date plus the handshake and idle times, so
it is read in seconds, in milliseconds, and as a difference with the
accept date it derives from, which is zero here since the request
follows the accept immediately.

reg-tests/sample_fetches/http_request.vtc

index 4f2b2dce151587b3c82e431d6893da79e9902a54..636266140ce52a236569283b5a4fca5af441c755 100644 (file)
@@ -68,7 +68,15 @@ haproxy h1 -conf {
        # the source address to the hash and return a binary block
        http-request set-var(txn.x_base32) base32
        http-request set-var(txn.x_base32src) base32+src,hex,lower
+       http-request set-var(txn.x_adate) accept_date
        http-request set-var(txn.x_url32) url32
+       # request_date is the accept date plus the handshake and idle times,
+       # so it cannot be earlier than the accept date. The difference is
+       # expected to be zero here since the request follows the accept
+       # immediately.
+       http-request set-var(txn.x_rdate) request_date
+       http-request set-var(txn.x_rdiff) request_date,sub(txn.x_adate)
+       http-request set-var(txn.x_rdms)  request_date(ms)
        http-request set-var(txn.x_url32src) url32+src,hex,lower
        http-request set-var(txn.x_bodylen) req.body_len
        http-request set-var(txn.x_bodysize) req.body_size
@@ -107,6 +115,9 @@ haproxy h1 -conf {
        http-response set-header x-base32 "%[var(txn.x_base32)]"
        http-response set-header x-base32src "%[var(txn.x_base32src)]"
        http-response set-header x-url32 "%[var(txn.x_url32)]"
+       http-response set-header x-rdate "%[var(txn.x_rdate)]"
+       http-response set-header x-rdiff "%[var(txn.x_rdiff)]"
+       http-response set-header x-rdms "%[var(txn.x_rdms)]"
        http-response set-header x-url32src "%[var(txn.x_url32src)]"
        http-response set-header x-bodylen "%[var(txn.x_bodylen)]"
        http-response set-header x-bodysize "%[var(txn.x_bodysize)]"
@@ -172,6 +183,10 @@ client c1 -connect ${h1_fe_sock} {
        expect resp.http.x-base32     ~  "^[0-9]+$"
        expect resp.http.x-base32src  ~  "^[0-9a-f]{16}$"
        expect resp.http.x-url32      ~  "^[0-9]+$"
+       # ten digits until 2286, thirteen for the millisecond unit
+       expect resp.http.x-rdate      ~  "^1[0-9]{9}$"
+       expect resp.http.x-rdms       ~  "^1[0-9]{12}$"
+       expect resp.http.x-rdiff      == "0"
        expect resp.http.x-url32src   ~  "^[0-9a-f]{16}$"
 
        expect resp.http.x-bodylen    == "21"