| vtest "Basic test for peers protocol stick-table declared in peers sections" |
| feature ignore_unknown_macro |
| |
| #REQUIRE_VERSION=2.0 |
| #REGTEST_TYPE=slow |
| |
| haproxy h1 -arg "-L A" -conf { |
| defaults |
| timeout client "${HAPROXY_TEST_TIMEOUT-5s}" |
| timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" |
| timeout server "${HAPROXY_TEST_TIMEOUT-5s}" |
| |
| |
| peers peers |
| bind "fd@${A}" |
| server A |
| server B ${h2_B_addr}:${h2_B_port} |
| server C ${h3_C_addr}:${h3_C_port} |
| table stkt type string size 10m store server_id,gpc0,conn_cur,conn_rate(50000) |
| |
| frontend fe |
| bind "fd@${fe}" |
| tcp-request inspect-delay 100ms |
| tcp-request content track-sc0 url table peers/stkt |
| tcp-request content sc-inc-gpc0(0) |
| } |
| |
| haproxy h2 -arg "-L B" -conf { |
| defaults |
| mode http |
| timeout client "${HAPROXY_TEST_TIMEOUT-5s}" |
| timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" |
| timeout server "${HAPROXY_TEST_TIMEOUT-5s}" |
| |
| peers peers |
| bind "fd@${B}" |
| server A ${h1_A_addr}:${h1_A_port} |
| server B |
| server C ${h3_C_addr}:${h3_C_port} |
| table stkt type string size 10m store server_id,gpc0,conn_cur,conn_rate(50000) |
| |
| frontend fe |
| bind "fd@${fe}" |
| http-request track-sc0 url table peers/stkt |
| http-request sc-inc-gpc0(0) |
| } |
| |
| haproxy h3 -arg "-L C" -conf { |
| defaults |
| mode http |
| timeout client "${HAPROXY_TEST_TIMEOUT-5s}" |
| timeout connect "${HAPROXY_TEST_TIMEOUT-5s}" |
| timeout server "${HAPROXY_TEST_TIMEOUT-5s}" |
| |
| peers peers |
| bind "fd@${C}" |
| server A ${h1_A_addr}:${h1_A_port} |
| server B ${h2_B_addr}:${h2_B_port} |
| server C |
| table stkt type string size 10m store server_id,gpc0,conn_cur,conn_rate(50000) |
| |
| frontend fe |
| bind "fd@${fe}" |
| http-request track-sc0 url table peers/stkt |
| http-request sc-inc-gpc0(0) |
| } |
| |
| client c1 -connect ${h1_fe_sock} { |
| txreq -url "/c1_client" |
| expect_close |
| } -start |
| |
| client c2 -connect ${h1_fe_sock} { |
| txreq -url "/c2_client" |
| expect_close |
| } -start |
| |
| client c3 -connect ${h1_fe_sock} { |
| txreq -url "/c3_client" |
| expect_close |
| } -start |
| |
| client c4 -connect ${h1_fe_sock} { |
| txreq -url "/c4_client" |
| expect_close |
| } -start |
| |
| haproxy h1 -start |
| delay 0.2 |
| haproxy h2 -start |
| delay 0.2 |
| haproxy h3 -start |
| delay 0.2 |
| |
| client c1 -wait |
| client c2 -wait |
| client c3 -wait |
| client c4 -wait |
| |
| delay 2 |
| |
| haproxy h1 -cli { |
| send "show table peers/stkt" |
| expect ~ "# table: peers/stkt, type: string, size:1048[0-9]{4}, used:4(\n0x[0-9a-f]*: key=/c[1-4]_client use=0 exp=0 shard=0 server_id=0 gpc0=1 conn_rate\\(50000\\)=1 conn_cur=0){4}" |
| } |
| |
| haproxy h2 -cli { |
| send "show table peers/stkt" |
| expect ~ "# table: peers/stkt, type: string, size:1048[0-9]{4}, used:4(\n0x[0-9a-f]*: key=/c[1-4]_client use=0 exp=0 shard=0 server_id=0 gpc0=1 conn_rate\\(50000\\)=1 conn_cur=0){4}" |
| } |
| |
| haproxy h3 -cli { |
| send "show table peers/stkt" |
| expect ~ "# table: peers/stkt, type: string, size:1048[0-9]{4}, used:4(\n0x[0-9a-f]*: key=/c[1-4]_client use=0 exp=0 shard=0 server_id=0 gpc0=1 conn_rate\\(50000\\)=1 conn_cur=0){4}" |
| } |
| |