From 7570d28d0b7b270707a15d73a3c93bc94d603bc6 Mon Sep 17 00:00:00 2001 From: Peter Korsgaard Date: Thu, 27 Aug 2026 18:55:32 +0200 Subject: [PATCH] support/testing: add haproxy test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on the lighttpd test case. Verify that we can download index.html from haproxy in front of lighttpd. Signed-off-by: Peter Korsgaard Signed-off-by: Julien Olivain (cherry picked from commit 211cfafa166d75a30a08b2a050a356a222c3a831) Signed-off-by: Raphaël Mélotte --- DEVELOPERS | 1 + support/testing/conf/haproxy.cfg | 13 +++++++ support/testing/tests/package/test_haproxy.py | 38 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 support/testing/conf/haproxy.cfg create mode 100644 support/testing/tests/package/test_haproxy.py diff --git a/DEVELOPERS b/DEVELOPERS index 84151f181d..5855d620b0 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2602,6 +2602,7 @@ F: package/triggerhappy/ F: package/wireguard-linux-compat/ F: package/wireguard-tools/ F: support/testing/tests/package/test_docker_compose.py +F: support/testing/tests/package/test_haproxy.py F: support/testing/tests/package/test_python_hid.py N: Peter Seiderer diff --git a/support/testing/conf/haproxy.cfg b/support/testing/conf/haproxy.cfg new file mode 100644 index 0000000000..41e983ea97 --- /dev/null +++ b/support/testing/conf/haproxy.cfg @@ -0,0 +1,13 @@ +defaults + timeout connect 10s + timeout client 30s + timeout server 30s + +frontend myfrontend + mode http + bind :81 + default_backend web_servers + +backend web_servers + mode http + server s1 localhost:80 check diff --git a/support/testing/tests/package/test_haproxy.py b/support/testing/tests/package/test_haproxy.py new file mode 100644 index 0000000000..6fba0c3809 --- /dev/null +++ b/support/testing/tests/package/test_haproxy.py @@ -0,0 +1,38 @@ +import os + +import infra.basetest + + +class TestHaproxy(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="{}" + BR2_PACKAGE_HAPROXY=y + BR2_PACKAGE_LIGHTTPD=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """.format( + infra.filepath("tests/package/copy-sample-script-to-target.sh"), + infra.filepath("conf/haproxy.cfg") + ) + + def test_run(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + msg = "Hello Buildroot!" + + # sanity check + self.assertRunOk("haproxy -v") + self.assertRunOk("haproxy -c -f .") + + # proxy to lighttpd + self.assertRunOk("haproxy -D -f .") + + self.assertRunOk(f"echo '{msg}' > /var/www/index.html") + self.assertRunOk("wget http://localhost:81/index.html") + self.assertRunOk(f"grep -F '{msg}' index.html")