| ... | @@ -1,4 +1,4 @@ | ... | @@ -1,4 +1,4 @@ |
| 1 | const std = @import("../std.zig"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | 2 | const builtin = @import("builtin"); |
| 3 | const net = std.net; | 3 | const net = std.net; |
| 4 | const mem = std.mem; | 4 | const mem = std.mem; |
| ... | @@ -300,22 +300,23 @@ test "listen on a unix socket, send bytes, receive bytes" { | ... | @@ -300,22 +300,23 @@ test "listen on a unix socket, send bytes, receive bytes" { |
| 300 | var server = net.StreamServer.init(.{}); | 300 | var server = net.StreamServer.init(.{}); |
| 301 | defer server.deinit(); | 301 | defer server.deinit(); |
| 302 | | 302 | |
| 303 | const socket_path = "socket.unix"; | 303 | var socket_path = try generateFileName("socket.unix"); |
| | 304 | defer testing.allocator.free(socket_path); |
| 304 | | 305 | |
| 305 | var socket_addr = try net.Address.initUnix(socket_path); | 306 | var socket_addr = try net.Address.initUnix(socket_path); |
| 306 | defer std.fs.cwd().deleteFile(socket_path) catch {}; | 307 | defer std.fs.cwd().deleteFile(socket_path) catch {}; |
| 307 | try server.listen(socket_addr); | 308 | try server.listen(socket_addr); |
| 308 | | 309 | |
| 309 | const S = struct { | 310 | const S = struct { |
| 310 | fn clientFn() !void { | 311 | fn clientFn(path: []const u8) !void { |
| 311 | const socket = try net.connectUnixSocket(socket_path); | 312 | const socket = try net.connectUnixSocket(path); |
| 312 | defer socket.close(); | 313 | defer socket.close(); |
| 313 | | 314 | |
| 314 | _ = try socket.writer().writeAll("Hello world!"); | 315 | _ = try socket.writer().writeAll("Hello world!"); |
| 315 | } | 316 | } |
| 316 | }; | 317 | }; |
| 317 | | 318 | |
| 318 | const t = try std.Thread.spawn(.{}, S.clientFn, .{}); | 319 | const t = try std.Thread.spawn(.{}, S.clientFn, .{socket_path}); |
| 319 | defer t.join(); | 320 | defer t.join(); |
| 320 | | 321 | |
| 321 | var client = try server.accept(); | 322 | var client = try server.accept(); |
| ... | @@ -326,3 +327,13 @@ test "listen on a unix socket, send bytes, receive bytes" { | ... | @@ -326,3 +327,13 @@ test "listen on a unix socket, send bytes, receive bytes" { |
| 326 | try testing.expectEqual(@as(usize, 12), n); | 327 | try testing.expectEqual(@as(usize, 12), n); |
| 327 | try testing.expectEqualSlices(u8, "Hello world!", buf[0..n]); | 328 | try testing.expectEqualSlices(u8, "Hello world!", buf[0..n]); |
| 328 | } | 329 | } |
| | 330 | |
| | 331 | fn generateFileName(base_name: []const u8) ![]const u8 { |
| | 332 | const random_bytes_count = 12; |
| | 333 | const sub_path_len = comptime std.fs.base64_encoder.calcSize(random_bytes_count); |
| | 334 | var random_bytes: [12]u8 = undefined; |
| | 335 | std.crypto.random.bytes(&random_bytes); |
| | 336 | var sub_path: [sub_path_len]u8 = undefined; |
| | 337 | _ = std.fs.base64_encoder.encode(&sub_path, &random_bytes); |
| | 338 | return std.fmt.allocPrint(testing.allocator, "{s}-{s}", .{ sub_path[0..], base_name }); |
| | 339 | } |