Skip to content

Fix cache test intermittent failure when ctx is cancelled

Jaime Martinez requested to merge 436-fix-client-cache-test-failures into master

This fixes intermittently failing test TestResolve/when_retrieval_failed_because_of_resolution_context_being_canceled found in #436 (closed).

Problem

The problem is the call to go e.setResponse(e.retriever.Retrieve(e.domain) sometimes finishes (in tests only) before ctx.Done() closing the e.setResponse channel first.

Test output

Running without fix, it eventually fails

 go test ./internal/source/gitlab/cache  -run TestResolve/when_retrieval_failed_because_of_resolution_context_being_canceled  -count 1000 -race -failfast -timeout 10s
--- FAIL: TestResolve (0.00s)
    --- FAIL: TestResolve/when_retrieval_failed_because_of_resolution_context_being_canceled (0.00s)
        cache_test.go:264:
            	Error Trace:	cache_test.go:264
            	            				cache_test.go:113
            	            				cache_test.go:253
            	            				cache_test.go:93
            	            				cache_test.go:252
            	Error:      	An error is expected but got nil.
            	Test:       	TestResolve/when_retrieval_failed_because_of_resolution_context_being_canceled
FAIL
FAIL	gitlab.com/gitlab-org/gitlab-pages/internal/source/gitlab/cache	0.317s
FAIL

Running test with fix

go test ./internal/source/gitlab/cache  -run TestResolve/when_retrieval_failed_because_of_resolution_context_being_canceled  -count 1000 -race -failfast -timeout 10s
ok  	gitlab.com/gitlab-org/gitlab-pages/internal/source/gitlab/cache	1.954s
Edited by Jaime Martinez

Merge request reports