Skip to content

Commit 07fddf8

Browse files
committed
Add MustParse* variants
1 parent 29f6996 commit 07fddf8

File tree

2 files changed

+55
-30
lines changed

2 files changed

+55
-30
lines changed

net/v2/multi_listen_test.go

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,8 @@ import (
2626
"sync/atomic"
2727
"testing"
2828
"time"
29-
30-
forkednet "k8s.io/utils/internal/third_party/forked/golang/net"
3129
)
3230

33-
// Temporary
34-
var parseIPSloppy = forkednet.ParseIP
35-
3631
type fakeCon struct {
3732
remoteAddr net.Addr
3833
}
@@ -118,7 +113,7 @@ func listenFuncFactory(listeners []*fakeListener) func(_ context.Context, networ
118113
}
119114
listener := listeners[index]
120115
addr := &net.TCPAddr{
121-
IP: parseIPSloppy(host),
116+
IP: MustParseIP(host),
122117
Port: port,
123118
}
124119
if err != nil {
@@ -270,14 +265,14 @@ func TestMultiListen_Close(t *testing.T) {
270265
},
271266
fakeListeners: []*fakeListener{{
272267
connErrPairs: []connErrPair{{
273-
conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("10.10.10.10"), Port: 50001}},
268+
conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("10.10.10.10"), Port: 50001}},
274269
}}}, {
275270
connErrPairs: []connErrPair{{
276-
conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("192.168.1.10"), Port: 50002}},
271+
conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("192.168.1.10"), Port: 50002}},
277272
},
278273
}}, {
279274
connErrPairs: []connErrPair{{
280-
conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("127.0.0.1"), Port: 50003}},
275+
conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("127.0.0.1"), Port: 50003}},
281276
}},
282277
}},
283278
},
@@ -299,13 +294,13 @@ func TestMultiListen_Close(t *testing.T) {
299294
},
300295
fakeListeners: []*fakeListener{{
301296
connErrPairs: []connErrPair{
302-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("10.10.10.10"), Port: 50001}}},
297+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("10.10.10.10"), Port: 50001}}},
303298
}}, {
304299
connErrPairs: []connErrPair{
305-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("192.168.1.10"), Port: 50002}}},
300+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("192.168.1.10"), Port: 50002}}},
306301
}}, {
307302
connErrPairs: []connErrPair{
308-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("127.0.0.1"), Port: 50003}}},
303+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("127.0.0.1"), Port: 50003}}},
309304
},
310305
}},
311306
acceptCalls: 3,
@@ -386,13 +381,13 @@ func TestMultiListen_Accept(t *testing.T) {
386381
},
387382
fakeListeners: []*fakeListener{{
388383
connErrPairs: []connErrPair{
389-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("10.10.10.10"), Port: 50001}}},
384+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("10.10.10.10"), Port: 50001}}},
390385
}}, {
391386
connErrPairs: []connErrPair{
392-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("192.168.1.10"), Port: 50002}}},
387+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("192.168.1.10"), Port: 50002}}},
393388
}}, {
394389
connErrPairs: []connErrPair{
395-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("127.0.0.1"), Port: 50003}}},
390+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("127.0.0.1"), Port: 50003}}},
396391
},
397392
}},
398393
acceptCalls: 3,
@@ -417,24 +412,24 @@ func TestMultiListen_Accept(t *testing.T) {
417412
},
418413
fakeListeners: []*fakeListener{{
419414
connErrPairs: []connErrPair{
420-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("10.10.10.10"), Port: 30001}}},
415+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("10.10.10.10"), Port: 30001}}},
421416
}}, {
422417
connErrPairs: []connErrPair{
423-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("192.168.1.10"), Port: 40001}}},
424-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("192.168.1.10"), Port: 40002}}},
418+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("192.168.1.10"), Port: 40001}}},
419+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("192.168.1.10"), Port: 40002}}},
425420
}}, {
426421
connErrPairs: []connErrPair{
427-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("172.16.20.10"), Port: 50001}}},
428-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("172.16.20.10"), Port: 50002}}},
429-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("172.16.20.10"), Port: 50003}}},
430-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("172.16.20.10"), Port: 50004}}},
422+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("172.16.20.10"), Port: 50001}}},
423+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("172.16.20.10"), Port: 50002}}},
424+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("172.16.20.10"), Port: 50003}}},
425+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("172.16.20.10"), Port: 50004}}},
431426
}}, {
432427
connErrPairs: []connErrPair{
433-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("127.0.0.1"), Port: 60001}}},
434-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("127.0.0.1"), Port: 60002}}},
435-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("127.0.0.1"), Port: 60003}}},
436-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("127.0.0.1"), Port: 60004}}},
437-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("127.0.0.1"), Port: 60005}}},
428+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("127.0.0.1"), Port: 60001}}},
429+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("127.0.0.1"), Port: 60002}}},
430+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("127.0.0.1"), Port: 60003}}},
431+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("127.0.0.1"), Port: 60004}}},
432+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("127.0.0.1"), Port: 60005}}},
438433
},
439434
}},
440435
acceptCalls: 3,
@@ -457,13 +452,13 @@ func TestMultiListen_Accept(t *testing.T) {
457452
},
458453
fakeListeners: []*fakeListener{{
459454
connErrPairs: []connErrPair{
460-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("10.10.10.10"), Port: 50001}}},
455+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("10.10.10.10"), Port: 50001}}},
461456
}}, {
462457
connErrPairs: []connErrPair{
463-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("192.168.1.10"), Port: 50002}}},
458+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("192.168.1.10"), Port: 50002}}},
464459
}}, {
465460
connErrPairs: []connErrPair{
466-
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: parseIPSloppy("127.0.0.1"), Port: 50003}}},
461+
{conn: &fakeCon{remoteAddr: &net.TCPAddr{IP: MustParseIP("127.0.0.1"), Port: 50003}}},
467462
},
468463
}},
469464
acceptCalls: 1,

net/v2/parse.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,33 @@ func ParseAddrAsPrefix(cidrStr string) (netip.Prefix, error) {
165165
ipnet, err := ParseIPAsIPNet(cidrStr)
166166
return PrefixFromIPNet(ipnet), err
167167
}
168+
169+
type parser[T any] func(string) (T, error)
170+
171+
func must[T any](parse parser[T]) func(string) T {
172+
return func(str string) T {
173+
ret, err := parse(str)
174+
if err != nil {
175+
panic(err)
176+
}
177+
return ret
178+
}
179+
}
180+
181+
// MustParseIP is like ParseIP, but it panics on error instead of returning an error value.
182+
var MustParseIP = must(ParseIP)
183+
184+
// MustParseIPNet is like ParseIPNet, but it panics on error instead of returning an error value.
185+
var MustParseIPNet = must(ParseIPNet)
186+
187+
// MustParseAddr is like ParseAddr, but it panics on error instead of returning an error value.
188+
var MustParseAddr = must(ParseAddr)
189+
190+
// MustParsePrefix is like ParsePrefix, but it panics on error instead of returning an error value.
191+
var MustParsePrefix = must(ParsePrefix)
192+
193+
// MustParseIPAsIPNet is like ParseIPAsIPNet, but it panics on error instead of returning an error value.
194+
var MustParseIPAsIPNet = must(ParseIPAsIPNet)
195+
196+
// MustParseAddrAsPrefix is like ParseAddrAsPrefix, but it panics on error instead of returning an error value.
197+
var MustParseAddrAsPrefix = must(ParseAddrAsPrefix)

0 commit comments

Comments
 (0)