uringmachine 0.32.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +2 -2
- data/TODO.md +38 -22
- data/benchmark/bm_redis_client.rb +23 -14
- data/benchmark/common.rb +4 -4
- data/docs/um_api.md +4 -9
- data/ext/um/extconf.rb +0 -7
- data/ext/um/um.c +50 -106
- data/ext/um/um.h +3 -22
- data/ext/um/um_class.c +11 -65
- data/ext/um/um_io.c +0 -1
- data/ext/um/um_op.c +0 -1
- data/ext/um/um_utils.c +0 -86
- data/lib/uringmachine/version.rb +1 -1
- data/test/test_io.rb +34 -34
- data/test/test_um.rb +10 -88
- metadata +1 -1
data/test/test_um.rb
CHANGED
|
@@ -653,8 +653,6 @@ class ReadEachTest < UMBaseTest
|
|
|
653
653
|
def test_read_each
|
|
654
654
|
r, w = IO.pipe
|
|
655
655
|
bufs = []
|
|
656
|
-
bgid = machine.setup_buffer_ring(4096, 1024)
|
|
657
|
-
assert_equal 0, bgid
|
|
658
656
|
|
|
659
657
|
f = Fiber.new do
|
|
660
658
|
w << 'foo'
|
|
@@ -669,7 +667,7 @@ class ReadEachTest < UMBaseTest
|
|
|
669
667
|
|
|
670
668
|
machine.schedule(f, nil)
|
|
671
669
|
|
|
672
|
-
machine.read_each(r.fileno
|
|
670
|
+
machine.read_each(r.fileno) do |buf|
|
|
673
671
|
bufs << buf
|
|
674
672
|
end
|
|
675
673
|
|
|
@@ -681,15 +679,13 @@ class ReadEachTest < UMBaseTest
|
|
|
681
679
|
# send once and close write fd
|
|
682
680
|
def test_read_each_raising_1
|
|
683
681
|
r, w = IO.pipe
|
|
684
|
-
bgid = machine.setup_buffer_ring(4096, 1024)
|
|
685
|
-
assert_equal 0, bgid
|
|
686
682
|
|
|
687
683
|
w << 'foo'
|
|
688
684
|
w.close
|
|
689
685
|
|
|
690
686
|
e = nil
|
|
691
687
|
begin
|
|
692
|
-
machine.read_each(r.fileno
|
|
688
|
+
machine.read_each(r.fileno) do |buf|
|
|
693
689
|
raise 'hi'
|
|
694
690
|
end
|
|
695
691
|
rescue => e
|
|
@@ -704,14 +700,12 @@ class ReadEachTest < UMBaseTest
|
|
|
704
700
|
# send once and leave write fd open
|
|
705
701
|
def test_read_each_raising_2
|
|
706
702
|
r, w = IO.pipe
|
|
707
|
-
bgid = machine.setup_buffer_ring(4096, 1024)
|
|
708
|
-
assert_equal 0, bgid
|
|
709
703
|
|
|
710
704
|
w << 'foo'
|
|
711
705
|
|
|
712
706
|
e = nil
|
|
713
707
|
begin
|
|
714
|
-
machine.read_each(r.fileno
|
|
708
|
+
machine.read_each(r.fileno) do |buf|
|
|
715
709
|
raise 'hi'
|
|
716
710
|
end
|
|
717
711
|
rescue => e
|
|
@@ -728,15 +722,13 @@ class ReadEachTest < UMBaseTest
|
|
|
728
722
|
# send twice
|
|
729
723
|
def test_read_each_raising_3
|
|
730
724
|
r, w = IO.pipe
|
|
731
|
-
bgid = machine.setup_buffer_ring(4096, 1024)
|
|
732
|
-
assert_equal 0, bgid
|
|
733
725
|
|
|
734
726
|
w << 'foo'
|
|
735
727
|
w << 'bar'
|
|
736
728
|
|
|
737
729
|
e = nil
|
|
738
730
|
begin
|
|
739
|
-
machine.read_each(r.fileno
|
|
731
|
+
machine.read_each(r.fileno) do |buf|
|
|
740
732
|
raise 'hi'
|
|
741
733
|
end
|
|
742
734
|
rescue => e
|
|
@@ -752,7 +744,6 @@ class ReadEachTest < UMBaseTest
|
|
|
752
744
|
|
|
753
745
|
def test_read_each_break
|
|
754
746
|
r, w = IO.pipe
|
|
755
|
-
bgid = machine.setup_buffer_ring(4096, 1024)
|
|
756
747
|
|
|
757
748
|
t = Thread.new do
|
|
758
749
|
sleep 0.1
|
|
@@ -762,7 +753,7 @@ class ReadEachTest < UMBaseTest
|
|
|
762
753
|
end
|
|
763
754
|
|
|
764
755
|
bufs = []
|
|
765
|
-
machine.read_each(r.fileno
|
|
756
|
+
machine.read_each(r.fileno) do |b|
|
|
766
757
|
bufs << b
|
|
767
758
|
break
|
|
768
759
|
end
|
|
@@ -779,13 +770,12 @@ class ReadEachTest < UMBaseTest
|
|
|
779
770
|
|
|
780
771
|
def test_read_each_timeout
|
|
781
772
|
r, _w = IO.pipe
|
|
782
|
-
bgid = machine.setup_buffer_ring(4096, 1024)
|
|
783
773
|
|
|
784
774
|
bufs = []
|
|
785
775
|
e = nil
|
|
786
776
|
begin
|
|
787
777
|
machine.timeout(0.01, TOError) do
|
|
788
|
-
machine.read_each(r.fileno
|
|
778
|
+
machine.read_each(r.fileno) do |b|
|
|
789
779
|
bufs << b
|
|
790
780
|
end
|
|
791
781
|
end
|
|
@@ -804,10 +794,9 @@ class ReadEachTest < UMBaseTest
|
|
|
804
794
|
|
|
805
795
|
def test_read_each_bad_file
|
|
806
796
|
_r, w = IO.pipe
|
|
807
|
-
bgid = machine.setup_buffer_ring(4096, 1024)
|
|
808
797
|
|
|
809
798
|
assert_raises(Errno::EBADF) do
|
|
810
|
-
machine.read_each(w.fileno
|
|
799
|
+
machine.read_each(w.fileno)
|
|
811
800
|
end
|
|
812
801
|
assert_equal 0, machine.metrics[:ops_pending]
|
|
813
802
|
assert_equal 256, machine.metrics[:ops_free]
|
|
@@ -1892,15 +1881,9 @@ class RecvEachTest < UMBaseTest
|
|
|
1892
1881
|
res = machine.connect(fd, '127.0.0.1', @port)
|
|
1893
1882
|
assert_equal 0, res
|
|
1894
1883
|
|
|
1895
|
-
bgid = machine.setup_buffer_ring(4096, 1024)
|
|
1896
|
-
assert_equal 0, bgid
|
|
1897
|
-
|
|
1898
|
-
bgid2 = machine.setup_buffer_ring(4096, 1024)
|
|
1899
|
-
assert_equal 1, bgid2
|
|
1900
|
-
|
|
1901
1884
|
bufs = []
|
|
1902
1885
|
|
|
1903
|
-
machine.recv_each(fd,
|
|
1886
|
+
machine.recv_each(fd, 0) do |buf|
|
|
1904
1887
|
bufs << buf
|
|
1905
1888
|
end
|
|
1906
1889
|
assert_equal ['abc', 'def', 'ghi'], bufs
|
|
@@ -1922,14 +1905,11 @@ class RecvEachTest < UMBaseTest
|
|
|
1922
1905
|
res = machine.connect(fd, '127.0.0.1', @port)
|
|
1923
1906
|
assert_equal 0, res
|
|
1924
1907
|
|
|
1925
|
-
bgid = machine.setup_buffer_ring(4096, 1024)
|
|
1926
|
-
assert_equal 0, bgid
|
|
1927
|
-
|
|
1928
1908
|
bufs = []
|
|
1929
1909
|
e = nil
|
|
1930
1910
|
begin
|
|
1931
1911
|
machine.timeout(0.01, TOError) do
|
|
1932
|
-
machine.recv_each(fd,
|
|
1912
|
+
machine.recv_each(fd, 0) do |buf|
|
|
1933
1913
|
bufs << buf
|
|
1934
1914
|
end
|
|
1935
1915
|
end
|
|
@@ -1953,9 +1933,6 @@ class RecvEachTest < UMBaseTest
|
|
|
1953
1933
|
res = machine.connect(fd, '127.0.0.1', @port)
|
|
1954
1934
|
assert_equal 0, res
|
|
1955
1935
|
|
|
1956
|
-
bgid = machine.setup_buffer_ring(4096, 1024)
|
|
1957
|
-
assert_equal 0, bgid
|
|
1958
|
-
|
|
1959
1936
|
bufs = []
|
|
1960
1937
|
e = nil
|
|
1961
1938
|
|
|
@@ -1965,7 +1942,7 @@ class RecvEachTest < UMBaseTest
|
|
|
1965
1942
|
}
|
|
1966
1943
|
|
|
1967
1944
|
begin
|
|
1968
|
-
machine.recv_each(fd,
|
|
1945
|
+
machine.recv_each(fd, 0) do |buf|
|
|
1969
1946
|
bufs << buf
|
|
1970
1947
|
end
|
|
1971
1948
|
rescue => e
|
|
@@ -3097,61 +3074,6 @@ class ForkTest < UMBaseTest
|
|
|
3097
3074
|
end
|
|
3098
3075
|
end
|
|
3099
3076
|
|
|
3100
|
-
class SendBundleTest < UMBaseTest
|
|
3101
|
-
def setup
|
|
3102
|
-
super
|
|
3103
|
-
@client_fd, @server_fd = UM.socketpair(UM::AF_UNIX, UM::SOCK_STREAM, 0)
|
|
3104
|
-
end
|
|
3105
|
-
|
|
3106
|
-
def test_send_bundle_splat
|
|
3107
|
-
bgid = machine.setup_buffer_ring(0, 8)
|
|
3108
|
-
assert_equal 0, bgid
|
|
3109
|
-
|
|
3110
|
-
strs = ['foo', 'bar', 'bazzzzz']
|
|
3111
|
-
len = strs.inject(0) { |len, s| len + s.bytesize }
|
|
3112
|
-
|
|
3113
|
-
ret = machine.send_bundle(@client_fd, bgid, *strs)
|
|
3114
|
-
assert_equal len, ret
|
|
3115
|
-
|
|
3116
|
-
buf = +''
|
|
3117
|
-
ret = machine.recv(@server_fd, buf, 8192, 0)
|
|
3118
|
-
assert_equal len, ret
|
|
3119
|
-
assert_equal strs.join, buf
|
|
3120
|
-
end
|
|
3121
|
-
|
|
3122
|
-
def test_send_bundle_array
|
|
3123
|
-
bgid = machine.setup_buffer_ring(0, 8)
|
|
3124
|
-
assert_equal 0, bgid
|
|
3125
|
-
|
|
3126
|
-
strs = ['foo', 'bar', 'bazzzzz']
|
|
3127
|
-
len = strs.inject(0) { |len, s| len + s.bytesize }
|
|
3128
|
-
|
|
3129
|
-
ret = machine.send_bundle(@client_fd, bgid, strs)
|
|
3130
|
-
assert_equal len, ret
|
|
3131
|
-
|
|
3132
|
-
buf = +''
|
|
3133
|
-
ret = machine.recv(@server_fd, buf, 8192, 0)
|
|
3134
|
-
assert_equal len, ret
|
|
3135
|
-
assert_equal strs.join, buf
|
|
3136
|
-
end
|
|
3137
|
-
|
|
3138
|
-
def test_send_bundle_non_strings
|
|
3139
|
-
bgid = machine.setup_buffer_ring(0, 8)
|
|
3140
|
-
assert_equal 0, bgid
|
|
3141
|
-
|
|
3142
|
-
strs = [42, 'bar', false]
|
|
3143
|
-
len = strs.inject(0) { |len, s| len + s.to_s.bytesize }
|
|
3144
|
-
|
|
3145
|
-
ret = machine.send_bundle(@client_fd, bgid, strs)
|
|
3146
|
-
assert_equal len, ret
|
|
3147
|
-
|
|
3148
|
-
buf = +''
|
|
3149
|
-
ret = machine.recv(@server_fd, buf, 8192, 0)
|
|
3150
|
-
assert_equal len, ret
|
|
3151
|
-
assert_equal strs.map(&:to_s).join, buf
|
|
3152
|
-
end
|
|
3153
|
-
end
|
|
3154
|
-
|
|
3155
3077
|
class MetricsTest < UMBaseTest
|
|
3156
3078
|
def test_metrics_empty
|
|
3157
3079
|
assert_equal({
|