File tree Expand file tree Collapse file tree 4 files changed +30
-3
lines changed Expand file tree Collapse file tree 4 files changed +30
-3
lines changed Original file line number Diff line number Diff line change @@ -144,7 +144,8 @@ true == flag.marked? # => EXISTS myflag
144144flag.remove # => DEL myflag
145145false == flag.marked? # => EXISTS myflag
146146
147- flag.mark(expires_in: 1 .second) # => SET myflag 1 EX 1
147+ true == flag.mark(expires_in: 1 .second, force: false ) # => SET myflag 1 EX 1 NX
148+ false == flag.mark(expires_in: 10 .seconds, force: false ) # => SET myflag 10 EX 1 NX
148149true == flag.marked? # => EXISTS myflag
149150sleep 0.5 .seconds
150151true == flag.marked? # => EXISTS myflag
Original file line number Diff line number Diff line change @@ -3,8 +3,8 @@ class Kredis::Types::Flag < Kredis::Types::Proxying
33
44 attr_accessor :expires_in
55
6- def mark ( expires_in : nil )
7- set 1 , ex : expires_in || self . expires_in
6+ def mark ( expires_in : nil , force : true )
7+ set 1 , ex : expires_in || self . expires_in , nx : ! force
88 end
99
1010 def marked?
Original file line number Diff line number Diff line change @@ -244,4 +244,15 @@ def suddenly_implemented_person.id; 8; end
244244 sleep 1.1 . seconds
245245 end
246246 end
247+
248+ test "expiring flag with force" do
249+ assert @person . temporary_special . mark
250+
251+ sleep 0.5 . seconds
252+ assert_not @person . temporary_special . mark ( force : false )
253+
254+ assert_changes "@person.temporary_special.marked?" , from : true , to : false do
255+ sleep 0.6 . seconds
256+ end
257+ end
247258end
Original file line number Diff line number Diff line change @@ -23,4 +23,19 @@ class FlagTest < ActiveSupport::TestCase
2323 sleep 0.6 . seconds
2424 assert_not @flag . marked?
2525 end
26+
27+ test "mark with force" do
28+ assert @flag . mark ( expires_in : 1 . second , force : false )
29+ assert @flag . mark ( expires_in : 1 . second )
30+ assert @flag . mark ( expires_in : 1 . second , force : true )
31+ assert_not @flag . mark ( expires_in : 10 . seconds , force : false )
32+
33+ assert @flag . marked?
34+
35+ sleep 0.5 . seconds
36+ assert @flag . marked?
37+
38+ sleep 0.6 . seconds
39+ assert_not @flag . marked?
40+ end
2641end
You can’t perform that action at this time.
0 commit comments