| ... | @@ -630,7 +630,10 @@ inline fn check_errno(res: usize) !void { | ... | @@ -630,7 +630,10 @@ inline fn check_errno(res: usize) !void { |
| 630 | test "queue_nop" { | 630 | test "queue_nop" { |
| 631 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 631 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 632 | | 632 | |
| 633 | var ring = try IO_Uring.init(1, 0); | 633 | var ring = IO_Uring.init(1, 0) catch |err| { |
| | 634 | if (err == error.UnsupportedKernel) return error.SkipZigTest; |
| | 635 | return err; |
| | 636 | }; |
| 634 | defer { | 637 | defer { |
| 635 | ring.deinit(); | 638 | ring.deinit(); |
| 636 | testing.expectEqual(@as(i32, -1), ring.fd); | 639 | testing.expectEqual(@as(i32, -1), ring.fd); |
| ... | @@ -693,7 +696,10 @@ test "queue_nop" { | ... | @@ -693,7 +696,10 @@ test "queue_nop" { |
| 693 | test "queue_readv" { | 696 | test "queue_readv" { |
| 694 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 697 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 695 | | 698 | |
| 696 | var ring = try IO_Uring.init(1, 0); | 699 | var ring = IO_Uring.init(1, 0) catch |err| { |
| | 700 | if (err == error.UnsupportedKernel) return error.SkipZigTest; |
| | 701 | return err; |
| | 702 | }; |
| 697 | defer ring.deinit(); | 703 | defer ring.deinit(); |
| 698 | | 704 | |
| 699 | const fd = try os.openZ("/dev/zero", os.O_RDONLY | os.O_CLOEXEC, 0); | 705 | const fd = try os.openZ("/dev/zero", os.O_RDONLY | os.O_CLOEXEC, 0); |
| ... | @@ -731,7 +737,10 @@ test "queue_readv" { | ... | @@ -731,7 +737,10 @@ test "queue_readv" { |
| 731 | test "queue_writev/queue_fsync" { | 737 | test "queue_writev/queue_fsync" { |
| 732 | if (builtin.os.tag != .linux) return error.SkipZigTest; | 738 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 733 | | 739 | |
| 734 | var ring = try IO_Uring.init(2, 0); | 740 | var ring = IO_Uring.init(2, 0) catch |err| { |
| | 741 | if (err == error.UnsupportedKernel) return error.SkipZigTest; |
| | 742 | return err; |
| | 743 | }; |
| 735 | defer ring.deinit(); | 744 | defer ring.deinit(); |
| 736 | | 745 | |
| 737 | const path = "test_io_uring_queue_writev"; | 746 | const path = "test_io_uring_queue_writev"; |
| ... | @@ -770,10 +779,12 @@ test "queue_writev/queue_fsync" { | ... | @@ -770,10 +779,12 @@ test "queue_writev/queue_fsync" { |
| 770 | } | 779 | } |
| 771 | | 780 | |
| 772 | test "queue_write/queue_read" { | 781 | test "queue_write/queue_read" { |
| 773 | // TODO | 782 | if (builtin.os.tag != .linux) return error.SkipZigTest; |
| 774 | if (builtin.os.tag != .linux or true) return error.SkipZigTest; | | |
| 775 | | 783 | |
| 776 | var ring = try IO_Uring.init(2, 0); | 784 | var ring = IO_Uring.init(2, 0) catch |err| { |
| | 785 | if (err == error.UnsupportedKernel) return error.SkipZigTest; |
| | 786 | return err; |
| | 787 | }; |
| 777 | defer ring.deinit(); | 788 | defer ring.deinit(); |
| 778 | | 789 | |
| 779 | const path = "test_io_uring_queue_write"; | 790 | const path = "test_io_uring_queue_write"; |
| ... | @@ -788,15 +799,20 @@ test "queue_write/queue_read" { | ... | @@ -788,15 +799,20 @@ test "queue_write/queue_read" { |
| 788 | ring.link_with_next_sqe(sqe_write); | 799 | ring.link_with_next_sqe(sqe_write); |
| 789 | var sqe_read = try ring.queue_read(456, fd, buffer_read[0..], 10); | 800 | var sqe_read = try ring.queue_read(456, fd, buffer_read[0..], 10); |
| 790 | testing.expectEqual(@as(u32, 2), try ring.submit()); | 801 | testing.expectEqual(@as(u32, 2), try ring.submit()); |
| | 802 | |
| | 803 | var cqe1 = try ring.copy_cqe(); |
| | 804 | var cqe2 = try ring.copy_cqe(); |
| | 805 | if (cqe1.res == -linux.EOPNOTSUPP) return error.SkipZigTest; |
| | 806 | if (cqe2.res == -linux.EOPNOTSUPP) return error.SkipZigTest; |
| 791 | testing.expectEqual(linux.io_uring_cqe { | 807 | testing.expectEqual(linux.io_uring_cqe { |
| 792 | .user_data = 123, | 808 | .user_data = 123, |
| 793 | .res = buffer_write.len, | 809 | .res = buffer_write.len, |
| 794 | .flags = 0, | 810 | .flags = 0, |
| 795 | }, try ring.copy_cqe()); | 811 | }, cqe1); |
| 796 | testing.expectEqual(linux.io_uring_cqe { | 812 | testing.expectEqual(linux.io_uring_cqe { |
| 797 | .user_data = 456, | 813 | .user_data = 456, |
| 798 | .res = buffer_read.len, | 814 | .res = buffer_read.len, |
| 799 | .flags = 0, | 815 | .flags = 0, |
| 800 | }, try ring.copy_cqe()); | 816 | }, cqe2); |
| 801 | testing.expectEqualSlices(u8, buffer_write[0..], buffer_read[0..]); | 817 | testing.expectEqualSlices(u8, buffer_write[0..], buffer_read[0..]); |
| 802 | } | 818 | } |