authorgravatar for emilliken@gmail.commllken <emilliken@gmail.com> 2023-03-14 17:17:54+07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-07-24 20:12:41-07:00
logdc24835168d107183671288899954f5af56b0ba1
treeae67be45fb5a083383214a9e12fe4bd3eadcbf35
parent9892ec31a06d2c5806ccfbdf4cd03f1a40de3ab8

io_uring: let the OS choose a free local port for all tests

closes #14907

1 files changed, 15 insertions(+), 36 deletions(-)

lib/std/os/linux/io_uring.zig+15-36
......@@ -1978,11 +1978,6 @@ test "close" {
19781978test "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,11 +2019,6 @@ test "accept/connect/send/recv" {
20242019test "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,
......@@ -2036,8 +2026,7 @@ test "sendmsg/recvmsg" {
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);
......@@ -2045,6 +2034,10 @@ test "sendmsg/recvmsg" {
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" {
22362229test "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" {
23912379test "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,11 +2516,6 @@ test "register_files_update" {
25332516test "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,
......@@ -2545,8 +2523,7 @@ test "shutdown" {
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" {
30913072test "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 {
32723248fn 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));