Skip to content

Commit 0cdfa5c

Browse files
authored
Merge branch 'master' into adamvduke/add-buffer-limit-test-cases
2 parents dfdf4a4 + c07a75c commit 0cdfa5c

18 files changed

+40
-47
lines changed

.github/workflows/pr.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
runs-on: ubuntu-latest
1818
env:
1919
GO_VERSION: stable
20-
GOLANGCI_LINT_VERSION: v1.62.2
20+
GOLANGCI_LINT_VERSION: v1.64.8
2121

2222
steps:
2323
- uses: actions/checkout@v4

.golangci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
linters:
22
enable-all: true
33
disable:
4-
- exportloopref # deprecated
4+
- tenv # deprecated
55
- sqlclosecheck # not relevant (SQL)
66
- rowserrcheck # not relevant (SQL)
77
- cyclop # duplicate of gocyclo

cbreaker/cbreaker_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func TestCircuitBreaker_fullCycle(t *testing.T) {
7676
// 5 seconds after we should be allowing some requests to pass
7777
clock.Advance(5 * clock.Second)
7878
allowed := 0
79-
for i := 0; i < 100; i++ {
79+
for range 100 {
8080
re, _, err = testutils.Get(srv.URL)
8181
if re.StatusCode == http.StatusOK && err == nil {
8282
allowed++
@@ -184,7 +184,7 @@ func TestCircuitBreaker_triggerDuringRecovery(t *testing.T) {
184184
clock.Advance(5 * clock.Second)
185185
cb.metrics = statsNetErrors(0.6)
186186
allowed := 0
187-
for i := 0; i < 100; i++ {
187+
for range 100 {
188188
re, _, err = testutils.Get(srv.URL)
189189
if re.StatusCode == http.StatusOK && err == nil {
190190
allowed++
@@ -296,7 +296,7 @@ func statsNetErrors(threshold float64) *memmetrics.RTMetrics {
296296
if err != nil {
297297
panic(err)
298298
}
299-
for i := 0; i < 100; i++ {
299+
for i := range 100 {
300300
if i < int(threshold*100) {
301301
m.Record(http.StatusGatewayTimeout, 0)
302302
} else {
@@ -321,7 +321,7 @@ func statsResponseCodes(codes ...statusCode) *memmetrics.RTMetrics {
321321
panic(err)
322322
}
323323
for _, c := range codes {
324-
for i := int64(0); i < c.Count; i++ {
324+
for range c.Count {
325325
m.Record(c.Code, 0)
326326
}
327327
}

cbreaker/predicates_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ func Test_parseExpression_tripped(t *testing.T) {
5454
}
5555

5656
for _, test := range testCases {
57-
test := test
5857
t.Run(test.expression, func(t *testing.T) {
5958
t.Parallel()
6059

cbreaker/ratio_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func Test_ratioController_rampUp(t *testing.T) {
1717
rc := newRatioController(duration, &utils.NoopLogger{})
1818

1919
allowed, denied := 0, 0
20-
for i := 0; i < int(duration/clock.Millisecond); i++ {
20+
for range duration / clock.Millisecond {
2121
ratio := sendRequest(&allowed, &denied, rc)
2222
expected := rc.targetRatio()
2323
diff := math.Abs(expected - ratio)

forward/fwd_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ func TestXForwardedHostHeader(t *testing.T) {
5050
}
5151

5252
for _, test := range tests {
53-
test := test
5453
t.Run(test.Description, func(t *testing.T) {
5554
t.Parallel()
5655

forward/rewrite_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ func Test_ipv6fix(t *testing.T) {
5050
}
5151

5252
for _, test := range testCases {
53-
test := test
5453
t.Run(test.desc, func(t *testing.T) {
5554
t.Parallel()
5655

go.mod

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/vulcand/oxy/v2
22

3-
go 1.19
3+
go 1.23.0
44

55
require (
66
github.com/HdrHistogram/hdrhistogram-go v1.1.2
@@ -9,7 +9,7 @@ require (
99
github.com/segmentio/fasthash v1.0.3
1010
github.com/stretchr/testify v1.10.0
1111
github.com/vulcand/predicate v1.2.0
12-
golang.org/x/net v0.32.0
12+
golang.org/x/net v0.37.0
1313
)
1414

1515
require (
@@ -18,8 +18,8 @@ require (
1818
github.com/jonboulle/clockwork v0.4.0 // indirect
1919
github.com/pmezard/go-difflib v1.0.0 // indirect
2020
github.com/sirupsen/logrus v1.9.3 // indirect
21-
golang.org/x/crypto v0.31.0 // indirect
22-
golang.org/x/sys v0.28.0 // indirect
23-
golang.org/x/term v0.27.0 // indirect
21+
golang.org/x/crypto v0.36.0 // indirect
22+
golang.org/x/sys v0.31.0 // indirect
23+
golang.org/x/term v0.30.0 // indirect
2424
gopkg.in/yaml.v3 v3.0.1 // indirect
2525
)

go.sum

+8-8
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
5959
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
6060
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
6161
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
62-
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
63-
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
62+
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
63+
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
6464
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
6565
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
6666
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -83,8 +83,8 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn
8383
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
8484
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
8585
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
86-
golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
87-
golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
86+
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
87+
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
8888
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
8989
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
9090
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -96,10 +96,10 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
9696
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
9797
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
9898
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
99-
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
100-
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
101-
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
102-
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
99+
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
100+
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
101+
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
102+
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
103103
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
104104
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
105105
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

memmetrics/anomaly_test.go

-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ func TestMedian(t *testing.T) {
2828
}
2929

3030
for _, test := range testCases {
31-
test := test
3231
t.Run(test.desc, func(t *testing.T) {
3332
t.Parallel()
3433

@@ -104,7 +103,6 @@ func TestSplitRatios(t *testing.T) {
104103
}
105104

106105
for ind, test := range testCases {
107-
test := test
108106
t.Run(strconv.Itoa(ind), func(t *testing.T) {
109107
t.Parallel()
110108

@@ -170,7 +168,6 @@ func TestSplitLatencies(t *testing.T) {
170168
}
171169

172170
for ind, test := range testCases {
173-
test := test
174171
t.Run(strconv.Itoa(ind), func(t *testing.T) {
175172
t.Parallel()
176173

memmetrics/counter_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func TestRollingCounter_cleanup(t *testing.T) {
3838

3939
cnt.Inc(1)
4040

41-
for i := 0; i < 9; i++ {
41+
for i := range 9 {
4242
clock.Advance(clock.Second)
4343
cnt.Inc(int(math.Pow10(i + 1)))
4444
}

memmetrics/roundtrip_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ func TestRTMetrics_concurrentRecords(t *testing.T) {
8383
rr, err := NewRTMetrics()
8484
require.NoError(t, err)
8585

86-
for code := 0; code < 100; code++ {
87-
for numRecords := 0; numRecords < 10; numRecords++ {
86+
for code := range 100 {
87+
for range 10 {
8888
go func(statusCode int) {
8989
_ = rr.recordStatusCode(statusCode)
9090
}(code)

roundrobin/rebalancer_test.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func TestRebalancer_recovery(t *testing.T) {
108108
proxy := httptest.NewServer(rb)
109109
t.Cleanup(proxy.Close)
110110

111-
for i := 0; i < 6; i++ {
111+
for range 6 {
112112
_, _, err = testutils.Get(proxy.URL)
113113
require.NoError(t, err)
114114
_, _, err = testutils.Get(proxy.URL)
@@ -125,7 +125,7 @@ func TestRebalancer_recovery(t *testing.T) {
125125
// server a is now recovering, the weights should go back to the original state
126126
rb.servers[0].meter.(*testMeter).rating = 0
127127

128-
for i := 0; i < 6; i++ {
128+
for range 6 {
129129
_, _, err = testutils.Get(proxy.URL)
130130
require.NoError(t, err)
131131
_, _, err = testutils.Get(proxy.URL)
@@ -173,7 +173,7 @@ func TestRebalancer_cascading(t *testing.T) {
173173
proxy := httptest.NewServer(rb)
174174
t.Cleanup(proxy.Close)
175175

176-
for i := 0; i < 6; i++ {
176+
for range 6 {
177177
_, _, err = testutils.Get(proxy.URL)
178178
require.NoError(t, err)
179179
_, _, err = testutils.Get(proxy.URL)
@@ -191,7 +191,7 @@ func TestRebalancer_cascading(t *testing.T) {
191191
rb.servers[1].meter.(*testMeter).rating = 0.2
192192
rb.servers[2].meter.(*testMeter).rating = 0.2
193193

194-
for i := 0; i < 6; i++ {
194+
for range 6 {
195195
_, _, err = testutils.Get(proxy.URL)
196196
require.NoError(t, err)
197197
_, _, err = testutils.Get(proxy.URL)
@@ -239,7 +239,7 @@ func TestRebalancer_allBad(t *testing.T) {
239239
proxy := httptest.NewServer(rb)
240240
t.Cleanup(proxy.Close)
241241

242-
for i := 0; i < 6; i++ {
242+
for range 6 {
243243
_, _, err = testutils.Get(proxy.URL)
244244
require.NoError(t, err)
245245
_, _, err = testutils.Get(proxy.URL)
@@ -287,7 +287,7 @@ func TestRebalancer_reset(t *testing.T) {
287287
proxy := httptest.NewServer(rb)
288288
t.Cleanup(proxy.Close)
289289

290-
for i := 0; i < 6; i++ {
290+
for range 6 {
291291
_, _, err = testutils.Get(proxy.URL)
292292
require.NoError(t, err)
293293
_, _, err = testutils.Get(proxy.URL)
@@ -332,7 +332,7 @@ func TestRebalancer_requestRewriteListenerLive(t *testing.T) {
332332
proxy := httptest.NewServer(rb)
333333
t.Cleanup(proxy.Close)
334334

335-
for i := 0; i < 1000; i++ {
335+
for i := range 1000 {
336336
_, _, err = testutils.Get(proxy.URL)
337337
require.NoError(t, err)
338338
if i%10 == 0 {
@@ -388,7 +388,7 @@ func TestRebalancer_stickySession(t *testing.T) {
388388
proxy := httptest.NewServer(rb)
389389
t.Cleanup(proxy.Close)
390390

391-
for i := 0; i < 10; i++ {
391+
for range 10 {
392392
req, err := http.NewRequest(http.MethodGet, proxy.URL, nil)
393393
require.NoError(t, err)
394394
req.AddCookie(&http.Cookie{Name: "test", Value: a.URL})

roundrobin/rr_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ func seq(t *testing.T, url string, repeat int) []string {
204204
t.Helper()
205205

206206
var out []string
207-
for i := 0; i < repeat; i++ {
207+
for range repeat {
208208
_, body, err := testutils.Get(url)
209209
require.NoError(t, err)
210210
out = append(out, string(body))

roundrobin/stickycookie/aes_value.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func (v *AESValue) Get(raw *url.URL) string {
6262
panic(err)
6363
}
6464

65-
for i := 0; i < 4; i++ {
65+
for i := range 4 {
6666
nonce[i+8] = rpend[i]
6767
}
6868

roundrobin/stickycookie/fallback_value_test.go

-2
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ func TestFallbackValue_FindURL(t *testing.T) {
3232
}
3333

3434
for _, from := range values {
35-
from := from
3635
for _, to := range values {
37-
to := to
3836
t.Run(fmt.Sprintf("From: %s, To %s", from.Name, to.Name), func(t *testing.T) {
3937
t.Parallel()
4038

roundrobin/stickysessions_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func TestStickySession_basic(t *testing.T) {
3838

3939
client := http.DefaultClient
4040

41-
for i := 0; i < 10; i++ {
41+
for range 10 {
4242
req, err := http.NewRequest(http.MethodGet, proxy.URL, nil)
4343
require.NoError(t, err)
4444
req.AddCookie(&http.Cookie{Name: "test", Value: a.URL})
@@ -79,7 +79,7 @@ func TestStickySession_basicWithHashValue(t *testing.T) {
7979

8080
client := http.DefaultClient
8181
var cookie *http.Cookie
82-
for i := 0; i < 10; i++ {
82+
for range 10 {
8383
req, err := http.NewRequest(http.MethodGet, proxy.URL, nil)
8484
require.NoError(t, err)
8585
if cookie != nil {
@@ -132,7 +132,7 @@ func TestStickySession_basicWithAESValue(t *testing.T) {
132132

133133
client := http.DefaultClient
134134
var cookie *http.Cookie
135-
for i := 0; i < 10; i++ {
135+
for range 10 {
136136
req, err := http.NewRequest(http.MethodGet, proxy.URL, nil)
137137
require.NoError(t, err)
138138
if cookie != nil {
@@ -355,7 +355,7 @@ func TestStickySession_removeRespondingServer(t *testing.T) {
355355

356356
client := http.DefaultClient
357357

358-
for i := 0; i < 10; i++ {
358+
for range 10 {
359359
req, errReq := http.NewRequest(http.MethodGet, proxy.URL, nil)
360360
require.NoError(t, errReq)
361361

@@ -384,7 +384,7 @@ func TestStickySession_removeRespondingServer(t *testing.T) {
384384
assert.Equal(t, "test", resp.Cookies()[0].Name)
385385
assert.Equal(t, b.URL, resp.Cookies()[0].Value)
386386

387-
for i := 0; i < 10; i++ {
387+
for range 10 {
388388
req, err := http.NewRequest(http.MethodGet, proxy.URL, nil)
389389
require.NoError(t, err)
390390

@@ -421,7 +421,7 @@ func TestStickySession_removeAllServers(t *testing.T) {
421421

422422
client := http.DefaultClient
423423

424-
for i := 0; i < 10; i++ {
424+
for range 10 {
425425
req, errReq := http.NewRequest(http.MethodGet, proxy.URL, nil)
426426
require.NoError(t, errReq)
427427
req.AddCookie(&http.Cookie{Name: "test", Value: a.URL})

utils/netutils_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ func TestRemoveHeaders(t *testing.T) {
7474
assert.Equal(t, "d", source.Get("c"))
7575
}
7676

77+
//nolint:intrange // benchmarks
7778
func BenchmarkCopyHeaders(b *testing.B) {
7879
dstHeaders := make([]http.Header, 0, b.N)
7980
sourceHeaders := make([]http.Header, 0, b.N)

0 commit comments

Comments
 (0)