From fc862fdf0d7fe950584e487984687cab7c32ef97 Mon Sep 17 00:00:00 2001 From: Jamie Hall Date: Tue, 3 Mar 2015 22:25:53 +0000 Subject: [PATCH] Added test for client concurrency --- client_test.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/client_test.go b/client_test.go index 2c1b4ee..beadd01 100644 --- a/client_test.go +++ b/client_test.go @@ -8,9 +8,12 @@ import ( "crypto/tls" "fmt" "io" + "io/ioutil" + "log" "net/http" "net/http/httptest" "strings" + "sync" "testing" "github.com/SlyMarbo/spdy" @@ -53,6 +56,40 @@ func TestClientHead(t *testing.T) { } } +func TestClientInGoroutines(t *testing.T) { + ts := newServer(robotsTxtHandler) + ts.Config.ErrorLog = log.New(ioutil.Discard, "", 0) // ignore messages + defer ts.Close() + + client := spdy.NewClient(false) + + var wg sync.WaitGroup + + for i := 0; i < 10; i++ { + wg.Add(1) + go func() { + defer wg.Done() + var b []byte + r, err := client.Get(ts.URL) + if err == nil { + b, err = pedanticReadAll(r.Body) + r.Body.Close() + } + if err != nil { + // We've turned off InsecureSkipVerify, so + // ignore bad cert warnings. + if !strings.Contains(err.Error(), "certificate signed by unknown authority") { + t.Error(err) + } + } else if s := string(b); !strings.HasPrefix(s, "User-agent:") { + t.Errorf("Incorrect page body (did not begin with User-agent): %q", s) + } + }() + } + + wg.Wait() +} + // FIXME: Fails // func TestClientRedirects(t *testing.T) { // defer afterTest(t)