Skip to content

Commit e76976e

Browse files
committed
Fix test failure seen intermittently
1 parent f52f674 commit e76976e

2 files changed

Lines changed: 23 additions & 7 deletions

File tree

internal/app/proxy_tracker.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ func (w *countingResponseWriter) Write(p []byte) (int, error) {
8787
return n, err
8888
}
8989

90+
func (w *countingResponseWriter) Unwrap() http.ResponseWriter {
91+
return w.ResponseWriter
92+
}
93+
9094
// Support Flush for streaming/SSE.
9195
func (w *countingResponseWriter) Flush() {
9296
if f, ok := w.ResponseWriter.(http.Flusher); ok {

internal/app/proxy_tracker_test.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@ import (
1313
"time"
1414
)
1515

16+
func newTestReverseProxy(t *testing.T, target *url.URL) *httputil.ReverseProxy {
17+
t.Helper()
18+
19+
proxy := httputil.NewSingleHostReverseProxy(target)
20+
transport := http.DefaultTransport.(*http.Transport).Clone()
21+
transport.DisableKeepAlives = true
22+
proxy.Transport = transport
23+
t.Cleanup(transport.CloseIdleConnections)
24+
25+
return proxy
26+
}
27+
1628
func TestTracker_BasicByteTracking(t *testing.T) {
1729
t.Parallel()
1830

@@ -26,7 +38,7 @@ func TestTracker_BasicByteTracking(t *testing.T) {
2638

2739
// Create reverse proxy to backend
2840
backendURL, _ := url.Parse(backend.URL)
29-
proxy := httputil.NewSingleHostReverseProxy(backendURL)
41+
proxy := newTestReverseProxy(t, backendURL)
3042

3143
// Create tracker with 5 second window
3244
tracker := NewTracker(proxy, 5)
@@ -77,7 +89,7 @@ func TestTracker_MultipleRequests(t *testing.T) {
7789

7890
// Create reverse proxy and tracker
7991
backendURL, _ := url.Parse(backend.URL)
80-
proxy := httputil.NewSingleHostReverseProxy(backendURL)
92+
proxy := newTestReverseProxy(t, backendURL)
8193
tracker := NewTracker(proxy, 5)
8294

8395
frontend := httptest.NewServer(tracker)
@@ -140,7 +152,7 @@ func TestTracker_StreamingResponse(t *testing.T) {
140152

141153
// Create reverse proxy and tracker
142154
backendURL, _ := url.Parse(backend.URL)
143-
proxy := httputil.NewSingleHostReverseProxy(backendURL)
155+
proxy := newTestReverseProxy(t, backendURL)
144156
tracker := NewTracker(proxy, 5)
145157

146158
frontend := httptest.NewServer(tracker)
@@ -201,7 +213,7 @@ func TestTracker_ConcurrentRequests(t *testing.T) {
201213

202214
// Create reverse proxy and tracker
203215
backendURL, _ := url.Parse(backend.URL)
204-
proxy := httputil.NewSingleHostReverseProxy(backendURL)
216+
proxy := newTestReverseProxy(t, backendURL)
205217
tracker := NewTracker(proxy, 5)
206218

207219
frontend := httptest.NewServer(tracker)
@@ -256,7 +268,7 @@ func TestTracker_RollingWindow(t *testing.T) {
256268

257269
// Create reverse proxy and tracker with SHORT 2-second window
258270
backendURL, _ := url.Parse(backend.URL)
259-
proxy := httputil.NewSingleHostReverseProxy(backendURL)
271+
proxy := newTestReverseProxy(t, backendURL)
260272
tracker := NewTracker(proxy, 2)
261273

262274
frontend := httptest.NewServer(tracker)
@@ -313,7 +325,7 @@ func TestTracker_LargePayloads(t *testing.T) {
313325

314326
// Create reverse proxy and tracker
315327
backendURL, _ := url.Parse(backend.URL)
316-
proxy := httputil.NewSingleHostReverseProxy(backendURL)
328+
proxy := newTestReverseProxy(t, backendURL)
317329
tracker := NewTracker(proxy, 5)
318330

319331
frontend := httptest.NewServer(tracker)
@@ -383,7 +395,7 @@ func TestTracker_SpreadOver5Seconds(t *testing.T) {
383395

384396
// Create reverse proxy and tracker with 10-second window
385397
backendURL, _ := url.Parse(backend.URL)
386-
proxy := httputil.NewSingleHostReverseProxy(backendURL)
398+
proxy := newTestReverseProxy(t, backendURL)
387399
tracker := NewTracker(proxy, 10)
388400

389401
frontend := httptest.NewServer(tracker)

0 commit comments

Comments
 (0)