Skip to content

Commit a70f9b2

Browse files
committed
Revert "Revert "Mitigate port allocation race conditions in tests""
This reverts commit e00ba78. Signed-off-by: Kapil Lamba <[email protected]>
1 parent a65b519 commit a70f9b2

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

util/testutil/port.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,20 @@ func RandomUnprivilegedPort(t *testing.T) int {
3131
mu.Lock()
3232
defer mu.Unlock()
3333

34-
port, err := getPort()
34+
port, listener, err := getPort()
35+
if listener != nil {
36+
defer listener.Close()
37+
}
38+
3539
if err != nil {
3640
t.Fatal(err)
3741
}
3842

3943
for portWasUsed(port) {
40-
port, err = getPort()
44+
port, listener, err = getPort()
45+
if listener != nil {
46+
defer listener.Close()
47+
}
4148
if err != nil {
4249
t.Fatal(err)
4350
}
@@ -52,15 +59,11 @@ func portWasUsed(port int) bool {
5259
return slices.Contains(usedPorts, port)
5360
}
5461

55-
func getPort() (int, error) {
62+
func getPort() (int, net.Listener, error) {
5663
listener, err := net.Listen("tcp", ":0")
5764
if err != nil {
58-
return 0, err
59-
}
60-
61-
if err := listener.Close(); err != nil {
62-
return 0, err
65+
return 0, nil, err
6366
}
6467

65-
return listener.Addr().(*net.TCPAddr).Port, nil
68+
return listener.Addr().(*net.TCPAddr).Port, listener, nil
6669
}

0 commit comments

Comments
 (0)