mirror of https://github.com/go-gost/gost.git
e2e: add cmd probe failover test with true/false command nodes
parent
bef00dffef
commit
e9cf3b4d3f
|
|
@ -85,6 +85,21 @@ func (s *ProbeSuite) TestLowestLatencyProbe() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestCmdProbeFailover verifies that the cmd probe detects a dead node via
|
||||||
|
// shell exit code and marks it before real traffic, so FailFilter excludes it.
|
||||||
|
func (s *ProbeSuite) TestCmdProbeFailover() {
|
||||||
|
gostC, err := RunGostContainerWithPorts(s.ctx, SharedNetworkName, "testdata/probe/cmd.yaml", "8080/tcp")
|
||||||
|
s.Require().NoError(err)
|
||||||
|
defer gostC.Terminate(s.ctx)
|
||||||
|
|
||||||
|
// The probe fires at startup; the dead node is already marked.
|
||||||
|
for range 10 {
|
||||||
|
code, body := s.proxyRequest(gostC, "8080")
|
||||||
|
s.Require().Equal(0, code, "all requests must succeed; dead cmd node pre-marked")
|
||||||
|
s.Require().Contains(body, "hello-gost")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestProbeSuite(t *testing.T) {
|
func TestProbeSuite(t *testing.T) {
|
||||||
suite.Run(t, new(ProbeSuite))
|
suite.Run(t, new(ProbeSuite))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
services:
|
||||||
|
- name: proxy
|
||||||
|
addr: :8080
|
||||||
|
handler:
|
||||||
|
type: http
|
||||||
|
chain: my-chain
|
||||||
|
listener:
|
||||||
|
type: tcp
|
||||||
|
|
||||||
|
# Live relay: forwards to the echo server.
|
||||||
|
- name: relay
|
||||||
|
addr: 127.0.0.1:18081
|
||||||
|
handler:
|
||||||
|
type: http
|
||||||
|
listener:
|
||||||
|
type: tcp
|
||||||
|
|
||||||
|
chains:
|
||||||
|
- name: my-chain
|
||||||
|
hops:
|
||||||
|
- name: hop-1
|
||||||
|
selector:
|
||||||
|
strategy: round
|
||||||
|
maxFails: 1
|
||||||
|
failTimeout: 10s
|
||||||
|
nodes:
|
||||||
|
- name: node-live
|
||||||
|
addr: 127.0.0.1:18081
|
||||||
|
connector:
|
||||||
|
type: http
|
||||||
|
probe:
|
||||||
|
type: cmd
|
||||||
|
command: "true"
|
||||||
|
interval: 5s
|
||||||
|
# This node's probe always fails → pre-marked dead → FailFilter excludes it.
|
||||||
|
- name: node-dead
|
||||||
|
addr: 127.0.0.1:18082
|
||||||
|
connector:
|
||||||
|
type: http
|
||||||
|
probe:
|
||||||
|
type: cmd
|
||||||
|
command: "false"
|
||||||
|
interval: 5s
|
||||||
Loading…
Reference in New Issue