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  1s
        timeout connect 1s
        timeout server  1s


    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 content track-sc0 url table peers/stkt
        tcp-request content sc-inc-gpc0(0)
}

haproxy h2 -arg "-L B" -conf {
    defaults
        timeout client  1s
        timeout connect 1s
        timeout server  1s

    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
        timeout client  1s
        timeout connect 1s
        timeout server  1s

    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 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 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 server_id=0 gpc0=1 conn_rate\\(50000\\)=1 conn_cur=0){4}"
}

