summaryrefslogtreecommitdiffstats
path: root/reg-tests/server/cli_add_check_server.vtc
blob: c63710c6bf5aae9ff1633f64752c0aeaeb40bc92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
varnishtest "Add/Delete server via cli with check support"

feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev3)'"
feature cmd "$HAPROXY_PROGRAM -cc 'feature(OPENSSL)'"
feature ignore_unknown_macro

barrier b1 cond 2 -cyclic
barrier b2 cond 2 -cyclic

server s1 {
	rxreq
	txresp
} -start

server s2 {
} -start

# used for agent checks
server s3 {
	recv 5
	send "ready up\n"
	barrier b2 sync
} -start

syslog S1 -level notice {
	recv
	expect ~ ".*Server be1/s1 is UP/READY \\(leaving forced maintenance\\)."
	recv
	expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/s1 succeeded.+reason: Layer7 check passed, code: 200, check duration: [[:digit:]]+ms.+status: 1/1 UP"

	barrier b1 sync

	recv
	expect ~ ".*Server be1/s2 is UP/READY \\(leaving forced maintenance\\)."
	recv
	expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/s2 failed.+reason: Layer7 timeout, check duration: [[:digit:]]+ms.+status: 0/1 DOWN"

	barrier b1 sync

	recv
	expect ~ ".*Server be1/s2 was DOWN and now enters maintenance."

	recv
	expect ~ ".*Server be1/s3 is UP/READY \\(leaving forced maintenance\\)."

	recv
	expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Agent check for server be1/s3 succeeded.+reason: Layer7 check passed, code: 0, info: \"via agent : up\", check duration: [[:digit:]]+ms.+status: 1/1 UP"

	barrier b1 sync
	barrier b2 sync

	recv
	expect ~ ".*Server be1/s4 is UP/READY \\(leaving forced maintenance\\)."
	recv
	expect ~ "Health check for server be1/s4 failed"

	barrier b1 sync

	recv
	expect ~ ".*Server be1/s5 is UP/READY \\(leaving forced maintenance\\)."
	recv
	expect ~ "Health check for server be1/s5 succeeded."
} -start

haproxy h1 -conf {
	global
		stats socket "${tmpdir}/h1/stats" level admin

	backend be1
		option log-health-checks
		option httpchk GET /
		log ${S1_addr}:${S1_port} daemon

	frontend fe-proxy
		mode http
		bind "fd@${hapsrv}" accept-proxy
		http-request return status 200
} -start

# check on a functional server
haproxy h1 -cli {
	send "add server be1/s1 ${s1_addr}:${s1_port} check inter 200ms rise 1 fall 1"
	expect ~ "New server registered."

	send "enable server be1/s1"
	expect ~ ".*"
	send "enable health be1/s1"
	expect ~ ".*"

	barrier b1 sync

	send "disable server be1/s1"
	expect ~ ".*"

	send "del server be1/s1"
	expect ~ "Server deleted."
}

server s2 -break

# check on a disabled server
haproxy h1 -cli {
	send "add server be1/s2 ${s2_addr}:${s2_port} check inter 200ms rise 1 fall 1"
	expect ~ "New server registered."

	send "enable server be1/s2"
	expect ~ ".*"
	send "enable health be1/s2"
	expect ~ ".*"

	barrier b1 sync

	send "disable server be1/s2"
	expect ~ ".*"

	send "del server be1/s2"
	expect ~ "Server deleted."
}

# agent check
haproxy h1 -cli {
	send "add server be1/s3 ${s1_addr}:${s1_port} agent-check agent-addr ${s3_addr} agent-port ${s3_port} agent-send 'hello' agent-inter 200ms rise 1 fall 1"
	expect ~ "New server registered."

	send "enable agent be1/s3"
	expect ~ ".*"

	barrier b1 sync

	send "disable agent be1/s3; disable server be1/s3"
	expect ~ ".*"

	send "del server be1/s3"
	expect ~ "Server deleted."
}

# check PROXY protocol interaction with checks
haproxy h1 -cli {
	# no explicit check-send-proxy
	# The health check should failed.
	send "add server be1/s4 ${h1_hapsrv_addr}:${h1_hapsrv_port} send-proxy check rise 1 fall 1"
	expect ~ "New server registered."

	send "enable server be1/s4"
	expect ~ ".*"
	send "enable health be1/s4"
	expect ~ ".*"

	barrier b1 sync

	# explicit check-send-proxy : health check should succeeded
	send "add server be1/s5 ${h1_hapsrv_addr}:${h1_hapsrv_port} send-proxy check rise 1 fall 1 check-send-proxy"
	expect ~ "New server registered."

	send "enable server be1/s5"
	expect ~ ".*"
	send "enable health be1/s5"
	expect ~ ".*"
}

syslog S1 -wait