vtest "Basic test for peers protocol"
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}"

    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 inspect-delay 100ms
        tcp-request content track-sc0 url table 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}"

    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
	mode http
        timeout client  "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout server  "${HAPROXY_TEST_TIMEOUT-5s}"

    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}"
}

