From 676d7fc63c057d24a3cbaa30b786e63de6f40d4a Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Sat, 21 Nov 2020 21:06:55 +0100 Subject: [PATCH] std: Add a small test for i/o on unix sockets --- lib/std/net/test.zig | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/lib/std/net/test.zig b/lib/std/net/test.zig index 1f156bb1b8..a49b8f7551 100644 --- a/lib/std/net/test.zig +++ b/lib/std/net/test.zig @@ -165,6 +165,7 @@ test "listen on a port, send bytes, receive bytes" { defer t.wait(); var client = try server.accept(); + defer client.stream.close(); var buf: [16]u8 = undefined; const n = try client.stream.reader().read(&buf); @@ -252,3 +253,37 @@ fn testServer(server: *net.StreamServer) anyerror!void { const stream = client.stream.writer(); try stream.print("hello from server\n", .{}); } + +test "listen on a unix socket, send bytes, receive bytes" { + if (builtin.single_threaded) return error.SkipZigTest; + if (!net.has_unix_sockets) return error.SkipZigTest; + + var server = net.StreamServer.init(.{}); + defer server.deinit(); + + const socket_path = "socket.unix"; + + var socket_addr = try net.Address.initUnix(socket_path); + defer std.fs.cwd().deleteFile(socket_path) catch {}; + try server.listen(socket_addr); + + const S = struct { + fn clientFn(_: void) !void { + const socket = try net.connectUnixSocket(socket_path); + defer socket.close(); + + _ = try socket.writer().writeAll("Hello world!"); + } + }; + + const t = try std.Thread.spawn({}, S.clientFn); + defer t.wait(); + + var client = try server.accept(); + defer client.stream.close(); + var buf: [16]u8 = undefined; + const n = try client.stream.reader().read(&buf); + + testing.expectEqual(@as(usize, 12), n); + testing.expectEqualSlices(u8, "Hello world!", buf[0..n]); +}