3e37a449c8
* feat(ingress-gateway): support outlier detection of upstream service for ingress gateway * changelog Co-authored-by: Eric Haberkorn <erichaberkorn@gmail.com>
107 lines
3.3 KiB
Bash
107 lines
3.3 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load helpers
|
|
|
|
@test "ingress proxy admin is up on :20000" {
|
|
retry_default curl -f -s localhost:20000/stats -o /dev/null
|
|
}
|
|
|
|
@test "s1 proxy admin is up on :19000" {
|
|
retry_default curl -f -s localhost:19000/stats -o /dev/null
|
|
}
|
|
|
|
@test "s2 proxy admin is up on :19001" {
|
|
retry_default curl -f -s localhost:19001/stats -o /dev/null
|
|
}
|
|
|
|
@test "s1 proxy listener should be up and have right cert" {
|
|
assert_proxy_presents_cert_uri localhost:21000 s1
|
|
}
|
|
|
|
@test "s2 proxy listener should be up and have right cert" {
|
|
assert_proxy_presents_cert_uri localhost:21001 s2
|
|
}
|
|
|
|
@test "ingress-gateway should have healthy endpoints for s1" {
|
|
assert_upstream_has_endpoints_in_status 127.0.0.1:20000 s1 HEALTHY 1
|
|
}
|
|
|
|
@test "ingress-gateway should have healthy endpoints for s2" {
|
|
assert_upstream_has_endpoints_in_status 127.0.0.1:20000 s2 HEALTHY 1
|
|
}
|
|
|
|
@test "ingress should be able to connect to s1 via configured path" {
|
|
assert_expected_fortio_name s1 router.ingress.consul 9999 /s1
|
|
}
|
|
|
|
@test "ingress should be able to connect to s2 via configured path" {
|
|
assert_expected_fortio_name s2 router.ingress.consul 9999 /s2
|
|
}
|
|
|
|
@test "test request header manipulation" {
|
|
run retry_default curl -s -f \
|
|
-H "Host: router.ingress.consul" \
|
|
-H "X-Existing-1: original" \
|
|
-H "X-Existing-2: original" \
|
|
-H "X-Bad-Req: true" \
|
|
"localhost:9999/s2/debug?env=dump"
|
|
|
|
echo "GOT: $output"
|
|
|
|
[ "$status" == "0" ]
|
|
|
|
# Should have been routed to the right server
|
|
echo "$output" | grep -E "^FORTIO_NAME=s2"
|
|
|
|
# Ingress should have added the new request header
|
|
echo "$output" | grep -E "^X-Foo: bar-req"
|
|
|
|
# Ingress should have appended the first existing header - both should be
|
|
# present
|
|
echo "$output" | grep -E "^X-Existing-1: original,appended-req"
|
|
|
|
# Ingress should have replaced the second existing header
|
|
echo "$output" | grep -E "^X-Existing-2: replaced-req"
|
|
|
|
# Ingress should have set the client ip from dynamic Envoy variable
|
|
echo "$output" | grep -E "^X-Client-Ip: 127.0.0.1"
|
|
|
|
# Ingress should have removed the bad request header
|
|
if echo "$output" | grep -E "^X-Bad-Req: true"; then
|
|
echo "X-Bad-Req request header should have been stripped but was still present"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
@test "test response header manipulation" {
|
|
# Add a response header that should be stripped by the route.
|
|
run retry_default curl -v -s -f -X PUT \
|
|
-H "Host: router.ingress.consul" \
|
|
"localhost:9999/s2/echo?header=x-bad-resp:true&header=x-existing-1:original&header=x-existing-2:original"
|
|
|
|
echo "GOT: $output"
|
|
|
|
[ "$status" == "0" ]
|
|
|
|
# Ingress should have added the new response header
|
|
echo "$output" | grep -E "^< x-foo: bar-resp"
|
|
|
|
# Ingress should have appended the first existing header - both should be
|
|
# present
|
|
echo "$output" | grep -E "^< x-existing-1: original"
|
|
echo "$output" | grep -E "^< x-existing-1: appended-resp"
|
|
|
|
# Ingress should have replaced the second existing header
|
|
echo "$output" | grep -E "^< x-existing-2: replaced-resp"
|
|
if echo "$output" | grep -E "^< x-existing-2: original"; then
|
|
echo "x-existing-2 response header should have been overridden, original still present"
|
|
exit 1
|
|
fi
|
|
|
|
# Ingress should have removed the bad response header
|
|
if echo "$output" | grep -E "^< x-bad-resp: true"; then
|
|
echo "X-Bad-Resp response header should have been stripped but was still present"
|
|
exit 1
|
|
fi
|
|
}
|