REGTESTS: add a test to ensure map-ordering is preserved

As shown in "BUG/MINOR: map: list-based matching potential ordering
regression", list-based matching types such as dom are affected by the
order in which elements are loaded from the map.

Since this is historical behavior and existing usages depend on it, we
add a test to prevent future regressions.
This commit is contained in:
Aurelien DARRAGON 2024-01-08 10:25:18 +01:00
parent b546bb6d67
commit 1088f0b969
2 changed files with 36 additions and 0 deletions

View File

@ -0,0 +1,4 @@
# These entries are used for list-based match ordering tests
first.domain.tld first
domain.tld domain
second.domain.tld second

View File

@ -0,0 +1,32 @@
varnishtest "Test list-based matching types ordering"
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev0)'"
feature ignore_unknown_macro
haproxy h1 -conf {
defaults
mode http
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
frontend fe1
bind "fd@${fe1}"
# check list ordering using map_dom (list-based match)
http-request return hdr dom %[req.hdr(Host),lower,map_dom(${testdir}/map_ordering.map)] if { url_beg /dom }
} -start
# Check map ordering
client c1 -connect ${h1_fe1_sock} {
# first.domain.tld is above domain.tld so it should match first
txreq -url "/dom" -hdr "Host: first.domain.tld"
rxresp
expect resp.status == 200
expect resp.http.dom == "first"
# second.domain.tld is below domain.tld so domain.tld should match first
txreq -url "/dom" -hdr "Host: second.domain.tld"
rxresp
expect resp.status == 200
expect resp.http.dom == "domain"
} -run