Sha256: 95e09ff8715077d6e3ecd5fa7e828f94f696d402d775c2e71dda48c34920040d
Contents?: true
Size: 787 Bytes
Versions: 2
Compression:
Stored size: 787 Bytes
Contents
shared_examples :concurrent_increment do def increment_thread(name) Thread.new do s = new_store 100.times do |i| 100.times do |j| s.increment("counter#{j}", 1, expires: false) Thread.pass if rand(1000) >= 995 end s.store("#{name}#{i}", i.to_s, expires: false) end s.close end end it 'have atomic increment across multiple threads', isolate: true do a = increment_thread('a') b = increment_thread('b') c = increment_thread('c') a.join b.join c.join 100.times do |i| store["a#{i}"].should == i.to_s store["b#{i}"].should == i.to_s store["c#{i}"].should == i.to_s end 100.times do |j| store.raw["counter#{j}"].should == 300.to_s end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
moneta-1.1.1 | spec/features/concurrent_increment.rb |
moneta-1.1.0 | spec/features/concurrent_increment.rb |