| vtest "Basic test for peers protocol" |
| feature ignore_unknown_macro |
| |
| haproxy h1 -arg "-L A" -conf { |
| defaults |
| timeout client 1s |
| timeout connect 1s |
| timeout server 1s |
| |
| backend stkt |
| stick-table type string size 10m store server_id,gpc0,conn_cur,conn_rate(50000) peers peers |
| |
| peers peers |
| bind "fd@${A}" |
| server A |
| server B ${h2_B_addr}:${h2_B_port} |
| server C ${h3_C_addr}:${h3_C_port} |
| |
| frontend fe |
| bind "fd@${fe}" |
| tcp-request content track-sc0 url table stkt |
| tcp-request content sc-inc-gpc0(0) |
| } |
| |
| haproxy h2 -arg "-L B" -conf { |
| defaults |
| timeout client 1s |
| timeout connect 1s |
| timeout server 1s |
| |
| backend stkt |
| stick-table type string size 10m store server_id,gpc0,conn_cur,conn_rate(50000) peers peers |
| |
| peers peers |
| bind "fd@${B}" |
| server A ${h1_A_addr}:${h1_A_port} |
| server B |
| server C ${h3_C_addr}:${h3_C_port} |
| |
| frontend fe |
| bind "fd@${fe}" |
| http-request track-sc0 url table stkt |
| http-request sc-inc-gpc0(0) |
| } |
| |
| haproxy h3 -arg "-L C" -conf { |
| defaults |
| timeout client 1s |
| timeout connect 1s |
| timeout server 1s |
| |
| backend stkt |
| stick-table type string size 10m store server_id,gpc0,conn_cur,conn_rate(50000) peers peers |
| |
| peers peers |
| bind "fd@${C}" |
| server A ${h1_A_addr}:${h1_A_port} |
| server B ${h2_B_addr}:${h2_B_port} |
| server C |
| |
| frontend fe |
| bind "fd@${fe}" |
| http-request track-sc0 url table 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 stkt" |
| expect ~ "# table: stkt, type: string, size:1048[0-9]{4}, used:4(\n0x[0-9a-f]*: key=c[1-4]_client use=0 exp=0 server_id=0 gpc0=1 conn_rate\\(50000\\)=1 conn_cur=0){4}" |
| } |
| |
| haproxy h2 -cli { |
| send "show table stkt" |
| expect ~ "# table: stkt, type: string, size:1048[0-9]{4}, used:4(\n0x[0-9a-f]*: key=c[1-4]_client use=0 exp=0 server_id=0 gpc0=1 conn_rate\\(50000\\)=1 conn_cur=0){4}" |
| } |
| |
| haproxy h3 -cli { |
| send "show table stkt" |
| expect ~ "# table: stkt, type: string, size:1048[0-9]{4}, used:4(\n0x[0-9a-f]*: key=c[1-4]_client use=0 exp=0 server_id=0 gpc0=1 conn_rate\\(50000\\)=1 conn_cur=0){4}" |
| } |
| |