Skip to content

Commit

Permalink
Merge pull request #10262 from johncming/tcpproxy
Browse files Browse the repository at this point in the history
tcpproxy: add a test.
  • Loading branch information
xiang90 authored Nov 15, 2018
2 parents c2d023c + 92cb9c3 commit 322339b
Showing 1 changed file with 62 additions and 0 deletions.
62 changes: 62 additions & 0 deletions proxy/tcpproxy/userspace_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,65 @@ func TestUserspaceProxy(t *testing.T) {
t.Errorf("got = %s, want %s", got, want)
}
}

func TestUserspaceProxyPriority(t *testing.T) {
l, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Fatal(err)
}
defer l.Close()

backends := []struct {
Payload string
Priority uint16
}{
{"hello proxy 1", 1},
{"hello proxy 2", 2},
{"hello proxy 3", 3},
}

var eps []*net.SRV
var front *url.URL
for _, b := range backends {
backend := b
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, backend.Payload)
}))
defer ts.Close()

front, err = url.Parse(ts.URL)
if err != nil {
t.Fatal(err)
}

var port uint16
fmt.Sscanf(front.Port(), "%d", &port)

ep := &net.SRV{Target: front.Hostname(), Port: port, Priority: backend.Priority}
eps = append(eps, ep)
}

p := TCPProxy{
Listener: l,
Endpoints: eps,
}
go p.Run()
defer p.Stop()

front.Host = l.Addr().String()

res, err := http.Get(front.String())
if err != nil {
t.Fatal(err)
}
got, gerr := ioutil.ReadAll(res.Body)
res.Body.Close()
if gerr != nil {
t.Fatal(gerr)
}

want := "hello proxy 1"
if string(got) != want {
t.Errorf("got = %s, want %s", got, want)
}
}

0 comments on commit 322339b

Please sign in to comment.