haproxy/tests/test-handshakes-chk.cfg

149 lines
4.3 KiB
INI

# This config tries to involve the various possible combinations of connection
# handshakes, on the accept side and on the connect side. It also produces logs
# indicating the handshake time.
#
# May be tested with tcploop as the server, both for TCP and HTTP mode :
# - accept new connection
# - pause 100ms
# - send what looks like an HTTP response
# - wait 500ms and close
#
# Starting log server (mainly to check timers) :
# $ socat udp-recvfrom:5514,fork -
#
# Starting server :
# $ tcploop 8000 L N A W P100 S:"HTTP/1.0 200 OK\r\nConnection: close\r\n\r\n" P500
#
# Testing all combinations with server-speaks-first (tcp) :
# $ nc 0 8007
#
# Testing all combinations with client-speaks-first (tcp) :
# $ (printf "GET / HTTP/1.0\r\n\r\n";sleep 1) | nc 0 8007
#
# Testing all combinations with client-speaks-first after pause (tcp) :
# $ (usleep 0.05 ; printf "GET / HTTP/1.0\r\n\r\n";sleep 1) | nc 0 8007
#
# Testing all combinations with client-speaks-first (http) :
# $ (printf "GET / HTTP/1.0\r\n\r\n";sleep 1) | nc 0 8017
#
# Testing all combinations with client-speaks-first after pause (http) :
# $ (usleep 0.05 ; printf "GET / HTTP/1.0\r\n\r\n";sleep 1) | nc 0 8017
#
# Same tests must be redone after surrounding connect() in tcp_connect_server()
# with fcntl(fd, F_SETFL, 0) and fcntl(fd, F_SETFL, O_NONBLOCK) for sycnhronous
# connect().
global
stats socket /tmp/sock1 level admin
stats timeout 1h
ssl-server-verify none
tune.ssl.default-dh-param 2048
log 127.0.0.1:5514 local0 debug debug
#################################################################
## stats instance (8181)
#################################################################
listen stats
bind :8181
timeout client 5s
timeout server 4s
timeout connect 3s
mode http
stats uri /
#################################################################
## TCP instances connect to port 8000 and listen to 8001..8007
#################################################################
defaults TCP
timeout client 5s
timeout server 4s
timeout connect 3s
log global
log-format "%ci:%cp %ft %b/%s h=%Th/w=%Tw/c=%Tc/t=%Tt %ST %B %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs"
# connects to port local 8000
listen tcp-none-in-none-out
bind :8001
server s 127.0.0.1:8000 check
# takes ssl+pp on input, nothing on output
listen tcp-sslpp-in-none-out
bind :8002 ssl crt rsa2048.pem accept-proxy
server s 127.0.0.1:8001 check
# takes nothing on input, sends ssl+pp
listen tcp-none-in-sslpp-out
bind :8003
server s 127.0.0.1:8002 check ssl send-proxy-v2
# takes pp on input, nothing on output
listen tcp-pp-in-none-out
bind :8004 accept-proxy
server s 127.0.0.1:8003 check
# takes nothing on input, sends pp
listen tcp-none-in-pp-out
bind :8005
server s 127.0.0.1:8004 check send-proxy-v2
# takes ssl on input, sends nothing
listen tcp-ssl-in-none-out
bind :8006 ssl crt rsa2048.pem
server s 127.0.0.1:8005 check
# takes nothing on input, sends ssl
listen tcp-none-in-ssl-out
bind :8007
server s 127.0.0.1:8006 check ssl
#################################################################
## HTTP instances also connect to port 8000 but they listen to
## 8011..8017
#################################################################
defaults HTTP
timeout client 5s
timeout server 4s
timeout connect 3s
mode http
log global
log-format "%ci:%cp [%tr] %ft %b/%s h=%Th/i=%Ti/R=%TR/w=%Tw/c=%Tc/r=%Tr/a=%Ta/t=%Tt %ST %B %CC %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r"
# connects to port local 8000
listen http-none-in-none-out
bind :8011
server s 127.0.0.1:8000 check
# takes ssl+pp on input, nothing on output
listen http-sslpp-in-none-out
bind :8012 ssl crt rsa2048.pem accept-proxy
server s 127.0.0.1:8011 check
# takes nothing on input, sends ssl+pp
listen http-none-in-sslpp-out
bind :8013
server s 127.0.0.1:8012 check ssl send-proxy-v2
# takes pp on input, nothing on output
listen http-pp-in-none-out
bind :8014 accept-proxy
server s 127.0.0.1:8013 check
# takes nothing on input, sends pp
listen http-none-in-pp-out
bind :8015
server s 127.0.0.1:8014 check send-proxy-v2
# takes ssl on input, sends nothing
listen http-ssl-in-none-out
bind :8016 ssl crt rsa2048.pem
server s 127.0.0.1:8015 check
# takes nothing on input, sends ssl
listen http-none-in-ssl-out
bind :8017
server s 127.0.0.1:8016 check ssl