]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
REGTEST: add missing lua requirements on server removal test
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 25 Aug 2021 14:24:23 +0000 (16:24 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 25 Aug 2021 14:34:33 +0000 (16:34 +0200)
The test that removes server via CLI is using LUA to check that servers
referenced in a LUA script cannot be removed. This requires LUA support
to be built in haproxy.

Split the test and create a new one containing only the LUA relevant
test. Mark it as LUA dependant.

reg-tests/server/cli_delete_server.vtc
reg-tests/server/cli_delete_server_lua.vtc [new file with mode: 0644]

index d752d6f8c6db8e06181b2f6759dd074941640b87..7487fc77340f8b1defc24a406219491447661a63 100644 (file)
@@ -7,15 +7,7 @@ feature ignore_unknown_macro
 
 #REQUIRE_VERSION=2.4
 
-server s1 {
-       rxreq
-       txresp
-} -start
-
 haproxy h1 -conf {
-       global
-               lua-load ${testdir}/get_srv_stats.lua
-
        defaults
                mode http
                timeout connect 1s
@@ -28,13 +20,11 @@ haproxy h1 -conf {
                default_backend test
 
        backend test
-               http-request add-header s4-stats %[lua.get_srv_stats(s4)]
                use-server s3 unless { always_false }
                server s1 ${s1_addr}:${s1_port}          # referenced in ACL
                server s2 ${s1_addr}:${s1_port} check    # referenced in track
                server s3 ${s1_addr}:${s1_port} track s2 # referenced in use-server
-               server s4 ${s1_addr}:${s1_port}          # referenced in lua script
-               server s5 ${s1_addr}:${s1_port}          # removable server
+               server s4 ${s1_addr}:${s1_port}          # removable server
 } -start
 
 haproxy h1 -cli {
@@ -61,26 +51,15 @@ haproxy h1 -cli {
        # tracked server
        send "experimental-mode on; del server test/s3"
        expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
-}
-
-# make a request to force the execution of the lua script which references a
-# server
-client c1 -connect ${h1_feS_sock} {
-       txreq
-       rxresp
-} -run
 
-haproxy h1 -cli {
+       # server in running mode
        send "experimental-mode on; del server test/s4"
-       expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
-
-       send "experimental-mode on; del server test/s5"
        expect ~ "Only servers in maintenance mode can be deleted."
 
-       send "disable server test/s5"
+       send "disable server test/s4"
        expect ~ ".*"
 
        # valid command
-       send "experimental-mode on; del server test/s5"
+       send "experimental-mode on; del server test/s4"
        expect ~ "Server deleted."
 }
diff --git a/reg-tests/server/cli_delete_server_lua.vtc b/reg-tests/server/cli_delete_server_lua.vtc
new file mode 100644 (file)
index 0000000..ab4200f
--- /dev/null
@@ -0,0 +1,44 @@
+# This script is to check that servers that are referenced by a lua script
+# cannot be removed at runtime.
+varnishtest "Delete lua server via cli"
+
+feature ignore_unknown_macro
+
+#REQUIRE_VERSION=2.5
+#REQUIRE_OPTIONS=LUA
+
+server s1 {
+       rxreq
+       txresp
+} -start
+
+haproxy h1 -conf {
+       global
+               lua-load ${testdir}/get_srv_stats.lua
+
+       defaults
+               mode http
+               timeout connect 1s
+               timeout client  1s
+               timeout server  1s
+
+       frontend fe
+               bind "fd@${feS}"
+               default_backend test
+
+       backend test
+               http-request add-header s1-stats %[lua.get_srv_stats(s1)]
+               server s1 ${s1_addr}:${s1_port}          # referenced in lua script
+} -start
+
+# make a request to force the execution of the lua script which references a
+# server
+client c1 -connect ${h1_feS_sock} {
+       txreq
+       rxresp
+} -run
+
+haproxy h1 -cli {
+       send "experimental-mode on; del server test/s1"
+       expect ~ "This server cannot be removed at runtime due to other configuration elements pointing to it."
+}