test: make http client in TestActivationRouting thread-safe
testplanet executes cockroach and postgress tests parallel, therefore using http.DefaultClient is safe only as long as we don't modify it. TestActivationRouting modifies it (client.CheckRedirect=...), therefore it should use a local version instead of the default one. Problem reported by a jenkins build: ``` ================== WARNING: DATA RACE Write at 0x000003486af0 by goroutine 143: storj.io/storj/satellite/console/consoleweb_test.TestActivationRouting.func1() /home/jenkins/workspace/storj-testing-experiments/satellite/console/consoleweb/server_test.go:66 +0x378 storj.io/storj/private/testplanet.Run.func1.1() ... Previous read at 0x000003486af0 by goroutine 104: net/http.(*Client).checkRedirect() /usr/local/go/src/net/http/client.go:494 +0xd73 net/http.(*Client).do() /usr/local/go/src/net/http/client.go:691 +0xd31 net/http.(*Client).Do() /usr/local/go/src/net/http/client.go:593 +0x204 storj.io/storj/satellite/console/consoleweb_test.TestActivationRouting.func1.1() /home/jenkins/workspace/storj-testing-experiments/satellite/console/consoleweb/server_test.go:48 +0x1e5 storj.io/storj/satellite/console/consoleweb_test.TestActivationRouting.func1() /home/jenkins/workspace/storj-testing-experiments/satellite/console/consoleweb/server_test.go:74 +0x49d storj.io/storj/private/testplanet.Run.func1.1() ... ``` Change-Id: I73319a5a593e067b906ec1fda70a44ca1e5a49a2
This commit is contained in:
parent
6759ba831c
commit
c136796308
@ -39,13 +39,15 @@ func TestActivationRouting(t *testing.T) {
|
||||
activationToken, err := service.GenerateActivationToken(ctx, user.ID, user.Email)
|
||||
require.NoError(t, err)
|
||||
|
||||
client := http.Client{}
|
||||
|
||||
checkActivationRedirect := func(testMsg, redirectURL string, shouldHaveCookie bool) {
|
||||
url := "http://" + sat.API.Console.Listener.Addr().String() + "/activation/?token=" + activationToken
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, http.NoBody)
|
||||
require.NoError(t, err, testMsg)
|
||||
|
||||
result, err := http.DefaultClient.Do(req)
|
||||
result, err := client.Do(req)
|
||||
require.NoError(t, err, testMsg)
|
||||
|
||||
// cookie should be set on successful activation
|
||||
@ -63,7 +65,7 @@ func TestActivationRouting(t *testing.T) {
|
||||
require.NoError(t, result.Body.Close(), testMsg)
|
||||
}
|
||||
|
||||
http.DefaultClient.CheckRedirect = func(req *http.Request, via []*http.Request) error {
|
||||
client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
|
||||
return http.ErrUseLastResponse
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user