Skip to content

Commit 1593da4

Browse files
mllkenandrewrk
authored andcommitted
io_uring: let the OS choose a free local port for all tests
closes ziglang#14907
1 parent 8b1976c commit 1593da4

File tree

1 file changed

+15
-36
lines changed

1 file changed

+15
-36
lines changed

lib/std/os/linux/io_uring.zig

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1978,11 +1978,6 @@ test "close" {
19781978
test "accept/connect/send/recv" {
19791979
if (builtin.os.tag != .linux) return error.SkipZigTest;
19801980

1981-
if (true) {
1982-
// https://github.com/ziglang/zig/issues/14907
1983-
return error.SkipZigTest;
1984-
}
1985-
19861981
var ring = IO_Uring.init(16, 0) catch |err| switch (err) {
19871982
error.SystemOutdated => return error.SkipZigTest,
19881983
error.PermissionDenied => return error.SkipZigTest,
@@ -2024,27 +2019,25 @@ test "accept/connect/send/recv" {
20242019
test "sendmsg/recvmsg" {
20252020
if (builtin.os.tag != .linux) return error.SkipZigTest;
20262021

2027-
if (true) {
2028-
// https://github.com/ziglang/zig/issues/14907
2029-
return error.SkipZigTest;
2030-
}
2031-
20322022
var ring = IO_Uring.init(2, 0) catch |err| switch (err) {
20332023
error.SystemOutdated => return error.SkipZigTest,
20342024
error.PermissionDenied => return error.SkipZigTest,
20352025
else => return err,
20362026
};
20372027
defer ring.deinit();
20382028

2039-
if (true) @compileError("don't hard code port numbers in unit tests"); // https://github.com/ziglang/zig/issues/14907
2040-
const address_server = try net.Address.parseIp4("127.0.0.1", 3131);
2029+
var address_server = try net.Address.parseIp4("127.0.0.1", 0);
20412030

20422031
const server = try os.socket(address_server.any.family, os.SOCK.DGRAM, 0);
20432032
defer os.close(server);
20442033
try os.setsockopt(server, os.SOL.SOCKET, os.SO.REUSEPORT, &mem.toBytes(@as(c_int, 1)));
20452034
try os.setsockopt(server, os.SOL.SOCKET, os.SO.REUSEADDR, &mem.toBytes(@as(c_int, 1)));
20462035
try os.bind(server, &address_server.any, address_server.getOsSockLen());
20472036

2037+
// set address_server to the OS-chosen IP/port.
2038+
var slen: os.socklen_t = address_server.getOsSockLen();
2039+
try os.getsockname(server, &address_server.any, &slen);
2040+
20482041
const client = try os.socket(address_server.any.family, os.SOCK.DGRAM, 0);
20492042
defer os.close(client);
20502043

@@ -2236,11 +2229,6 @@ test "timeout_remove" {
22362229
test "accept/connect/recv/link_timeout" {
22372230
if (builtin.os.tag != .linux) return error.SkipZigTest;
22382231

2239-
if (true) {
2240-
// https://github.com/ziglang/zig/issues/14907
2241-
return error.SkipZigTest;
2242-
}
2243-
22442232
var ring = IO_Uring.init(16, 0) catch |err| switch (err) {
22452233
error.SystemOutdated => return error.SkipZigTest,
22462234
error.PermissionDenied => return error.SkipZigTest,
@@ -2391,11 +2379,6 @@ test "statx" {
23912379
test "accept/connect/recv/cancel" {
23922380
if (builtin.os.tag != .linux) return error.SkipZigTest;
23932381

2394-
if (true) {
2395-
// https://github.com/ziglang/zig/issues/14907
2396-
return error.SkipZigTest;
2397-
}
2398-
23992382
var ring = IO_Uring.init(16, 0) catch |err| switch (err) {
24002383
error.SystemOutdated => return error.SkipZigTest,
24012384
error.PermissionDenied => return error.SkipZigTest,
@@ -2533,20 +2516,14 @@ test "register_files_update" {
25332516
test "shutdown" {
25342517
if (builtin.os.tag != .linux) return error.SkipZigTest;
25352518

2536-
if (true) {
2537-
// https://github.com/ziglang/zig/issues/14907
2538-
return error.SkipZigTest;
2539-
}
2540-
25412519
var ring = IO_Uring.init(16, 0) catch |err| switch (err) {
25422520
error.SystemOutdated => return error.SkipZigTest,
25432521
error.PermissionDenied => return error.SkipZigTest,
25442522
else => return err,
25452523
};
25462524
defer ring.deinit();
25472525

2548-
if (true) @compileError("don't hard code port numbers in unit tests"); // https://github.com/ziglang/zig/issues/14907
2549-
const address = try net.Address.parseIp4("127.0.0.1", 3131);
2526+
var address = try net.Address.parseIp4("127.0.0.1", 0);
25502527

25512528
// Socket bound, expect shutdown to work
25522529
{
@@ -2556,6 +2533,10 @@ test "shutdown" {
25562533
try os.bind(server, &address.any, address.getOsSockLen());
25572534
try os.listen(server, 1);
25582535

2536+
// set address to the OS-chosen IP/port.
2537+
var slen: os.socklen_t = address.getOsSockLen();
2538+
try os.getsockname(server, &address.any, &slen);
2539+
25592540
var shutdown_sqe = try ring.shutdown(0x445445445, server, os.linux.SHUT.RD);
25602541
try testing.expectEqual(linux.IORING_OP.SHUTDOWN, shutdown_sqe.opcode);
25612542
try testing.expectEqual(@as(i32, server), shutdown_sqe.fd);
@@ -3091,11 +3072,6 @@ test "remove_buffers" {
30913072
test "provide_buffers: accept/connect/send/recv" {
30923073
if (builtin.os.tag != .linux) return error.SkipZigTest;
30933074

3094-
if (true) {
3095-
// https://github.com/ziglang/zig/issues/14907
3096-
return error.SkipZigTest;
3097-
}
3098-
30993075
var ring = IO_Uring.init(16, 0) catch |err| switch (err) {
31003076
error.SystemOutdated => return error.SkipZigTest,
31013077
error.PermissionDenied => return error.SkipZigTest,
@@ -3272,8 +3248,7 @@ const SocketTestHarness = struct {
32723248
fn createSocketTestHarness(ring: *IO_Uring) !SocketTestHarness {
32733249
// Create a TCP server socket
32743250

3275-
if (true) @compileError("don't hard code port numbers in unit tests"); // https://github.com/ziglang/zig/issues/14907
3276-
const address = try net.Address.parseIp4("127.0.0.1", 3131);
3251+
var address = try net.Address.parseIp4("127.0.0.1", 0);
32773252
const kernel_backlog = 1;
32783253
const listener_socket = try os.socket(address.any.family, os.SOCK.STREAM | os.SOCK.CLOEXEC, 0);
32793254
errdefer os.closeSocket(listener_socket);
@@ -3282,6 +3257,10 @@ fn createSocketTestHarness(ring: *IO_Uring) !SocketTestHarness {
32823257
try os.bind(listener_socket, &address.any, address.getOsSockLen());
32833258
try os.listen(listener_socket, kernel_backlog);
32843259

3260+
// set address to the OS-chosen IP/port.
3261+
var slen: os.socklen_t = address.getOsSockLen();
3262+
try os.getsockname(listener_socket, &address.any, &slen);
3263+
32853264
// Submit 1 accept
32863265
var accept_addr: os.sockaddr = undefined;
32873266
var accept_addr_len: os.socklen_t = @sizeOf(@TypeOf(accept_addr));

0 commit comments

Comments
 (0)