File tree Expand file tree Collapse file tree 2 files changed +40
-4
lines changed Expand file tree Collapse file tree 2 files changed +40
-4
lines changed Original file line number Diff line number Diff line change @@ -19,27 +19,36 @@ def reserve
1919 release
2020 end
2121 else
22- if incr <= available
22+ if available?
23+ incr
2324 true
2425 else
25- release
2626 false
2727 end
2828 end
2929 end
3030 end
3131
3232 def release
33- decr
33+ if taken > 0
34+ decr
35+ true
36+ else
37+ false
38+ end
3439 end
3540
3641 def available?
3742 failsafe returning : false do
38- get . to_i < available
43+ taken < available
3944 end
4045 end
4146
4247 def reset
4348 del
4449 end
50+
51+ def taken
52+ get . to_i
53+ end
4554end
Original file line number Diff line number Diff line change @@ -26,6 +26,22 @@ class SlotsTest < ActiveSupport::TestCase
2626 assert @slots . available?
2727 end
2828
29+ test "release when slots are reserved" do
30+ assert_not @slots . release
31+
32+ 3 . times do
33+ assert @slots . reserve
34+ end
35+
36+ 3 . times do
37+ assert @slots . release
38+ end
39+
40+ assert_not @slots . release
41+
42+ assert_equal 0 , @slots . taken
43+ end
44+
2945 test "reserve with block" do
3046 assert @slots . reserve
3147 assert @slots . reserve
@@ -70,6 +86,17 @@ class SlotsTest < ActiveSupport::TestCase
7086 assert_not slot . available?
7187 end
7288
89+ test "release single slot when reserved" do
90+ slot = Kredis . slot "myslot"
91+
92+ assert_not slot . release
93+
94+ assert slot . reserve
95+ assert slot . release
96+
97+ assert_not slot . release
98+ end
99+
73100 test "failing open" do
74101 stub_redis_down ( @slots ) do
75102 assert_not @slots . available?
You can’t perform that action at this time.
0 commit comments