]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
TESTS: quic: create first quic unittest
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 5 Mar 2025 09:24:44 +0000 (10:24 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 7 Mar 2025 11:06:26 +0000 (12:06 +0100)
Define a first unit-test dedicated to QUIC. A single test for now
ensures that variable length decoding is compliant. This should be
extended in the future with new set of tests.

Makefile
src/quic_enc.c [new file with mode: 0644]
tests/unit/quic/quic.sh [new file with mode: 0755]

index c43d83cb29146a62e117ecedb0abb43d519a6986..759f91f72f9ebfa17253a71ad7433c3939f91822 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -657,7 +657,7 @@ OPTIONS_OBJS += src/mux_quic.o src/h3.o src/quic_rx.o src/quic_tx.o \
                 src/quic_cc_nocc.o src/quic_cc.o src/quic_pacing.o     \
                 src/h3_stats.o src/quic_stats.o src/qpack-enc.o                \
                 src/qpack-tbl.o src/quic_cc_drs.o src/quic_fctl.o      \
-                src/cbuf.o
+                src/cbuf.o src/quic_enc.o
 endif
 
 ifneq ($(USE_QUIC_OPENSSL_COMPAT:0=),)
diff --git a/src/quic_enc.c b/src/quic_enc.c
new file mode 100644 (file)
index 0000000..3dd7bd6
--- /dev/null
@@ -0,0 +1,32 @@
+#include <haproxy/quic_enc.h>
+
+#include <haproxy/api.h>
+
+int quic_enc_unittest(int argc, char **argv)
+{
+       const uint8_t init = 4;
+
+       uint64_t val = 0;
+       struct buffer b;
+       char area[12];
+       size_t len;
+
+       int ret = 1;
+
+       b = b_make(area, sizeof(area), sizeof(area) - 2, 0);
+       /* encode an 8-bit integer as a 4 bytes long varint */
+       b_putblk(&b, (char[]){0x80, 0x00, 0x00, init}, 4);
+       /* ensure encoded data is wrapping inside buffer */
+       BUG_ON(b_data(&b) != b_contig_data(&b, b_head_ofs(&b)));
+
+       /* test that b_quic_dec_int() can decode a wrapping value */
+       b_quic_dec_int(&val, &b, &len);
+       if (val != init)
+               goto out;
+
+       ret = 0;
+
+ out:
+       return ret;
+}
+REGISTER_UNITTEST("quic_enc", quic_enc_unittest);
diff --git a/tests/unit/quic/quic.sh b/tests/unit/quic/quic.sh
new file mode 100755 (executable)
index 0000000..ecea5d5
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+check() {
+       ${HAPROXY_PROGRAM} -vv | grep -E '^Unit tests list :' | grep -q "quic"
+}
+
+run() {
+       ${HAPROXY_PROGRAM} -U quic_enc
+}
+
+case "$1" in
+       "check")
+               check
+       ;;
+       "run")
+               run
+       ;;
+esac