| ... | ... | @@ -630,7 +630,10 @@ inline fn check_errno(res: usize) !void { |
| 630 | 630 | test "queue_nop" { |
| 631 | 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 | 637 | defer { |
| 635 | 638 | ring.deinit(); |
| 636 | 639 | testing.expectEqual(@as(i32, -1), ring.fd); |
| ... | ... | @@ -693,7 +696,10 @@ test "queue_nop" { |
| 693 | 696 | test "queue_readv" { |
| 694 | 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 | 703 | defer ring.deinit(); |
| 698 | 704 | |
| 699 | 705 | const fd = try os.openZ("/dev/zero", os.O_RDONLY | os.O_CLOEXEC, 0); |
| ... | ... | @@ -731,7 +737,10 @@ test "queue_readv" { |
| 731 | 737 | test "queue_writev/queue_fsync" { |
| 732 | 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 | 744 | defer ring.deinit(); |
| 736 | 745 | |
| 737 | 746 | const path = "test_io_uring_queue_writev"; |
| ... | ... | @@ -770,10 +779,12 @@ test "queue_writev/queue_fsync" { |
| 770 | 779 | } |
| 771 | 780 | |
| 772 | 781 | test "queue_write/queue_read" { |
| 773 | | // TODO |
| 774 | | if (builtin.os.tag != .linux or true) return error.SkipZigTest; |
| 782 | if (builtin.os.tag != .linux) 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 | 788 | defer ring.deinit(); |
| 778 | 789 | |
| 779 | 790 | const path = "test_io_uring_queue_write"; |
| ... | ... | @@ -788,15 +799,20 @@ test "queue_write/queue_read" { |
| 788 | 799 | ring.link_with_next_sqe(sqe_write); |
| 789 | 800 | var sqe_read = try ring.queue_read(456, fd, buffer_read[0..], 10); |
| 790 | 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 | 807 | testing.expectEqual(linux.io_uring_cqe { |
| 792 | 808 | .user_data = 123, |
| 793 | 809 | .res = buffer_write.len, |
| 794 | 810 | .flags = 0, |
| 795 | | }, try ring.copy_cqe()); |
| 811 | }, cqe1); |
| 796 | 812 | testing.expectEqual(linux.io_uring_cqe { |
| 797 | 813 | .user_data = 456, |
| 798 | 814 | .res = buffer_read.len, |
| 799 | 815 | .flags = 0, |
| 800 | | }, try ring.copy_cqe()); |
| 816 | }, cqe2); |
| 801 | 817 | testing.expectEqualSlices(u8, buffer_write[0..], buffer_read[0..]); |
| 802 | 818 | } |