5 Commits

Author SHA1 Message Date
Nick Elser
857fc63378 release 0.2.1 2015-04-12 23:45:09 -07:00
Nick Elser
bb6762bbc6 ret is not always an array 2015-04-12 23:45:00 -07:00
Nick Elser
f0977c89f2 remove redundant require file 2015-04-12 23:03:54 -07:00
Nick Elser
4d5c96309f some style fixes 2015-04-12 22:54:53 -07:00
Nick Elser
8d6061b137 rename some tests, fix rare edge condition 2015-04-12 22:49:02 -07:00
9 changed files with 35 additions and 31 deletions

View File

@@ -1,3 +1,7 @@
## 0.2.1
- Fix bug when dealing with real-world Redis error conditions.
## 0.2.0
- Refactor class methods into instance methods to simplify implementation.

View File

@@ -1,2 +1,16 @@
require "securerandom"
require "monitor"
require "dalli"
require "dalli/cas/client"
require "redis"
require "msgpack"
require "suo/version"
require "suo/clients"
require "suo/errors"
require "suo/client/base"
require "suo/client/memcached"
require "suo/client/redis"

View File

@@ -49,7 +49,7 @@ module Suo
val, cas = get(key)
if val.nil?
set_initial(key)
initial_set(key)
next
end
@@ -94,7 +94,7 @@ module Suo
val, cas = get(key)
if val.nil?
set_initial(key)
initial_set(key)
next
end
@@ -123,7 +123,7 @@ module Suo
fail NotImplementedError
end
def set_initial(key) # rubocop:disable Lint/UnusedMethodArgument
def initial_set(key) # rubocop:disable Lint/UnusedMethodArgument
fail NotImplementedError
end

View File

@@ -20,7 +20,7 @@ module Suo
@client.set_cas(key, newval, cas)
end
def set_initial(key)
def initial_set(key)
@client.set(key, "")
end
end

View File

@@ -21,7 +21,7 @@ module Suo
multi.set(key, newval)
end
ret[0] == "OK"
ret && ret[0] == "OK"
end
def synchronize(key)
@@ -32,7 +32,7 @@ module Suo
@client.unwatch
end
def set_initial(key)
def initial_set(key)
@client.set(key, "")
end
end

View File

@@ -1,14 +0,0 @@
require "securerandom"
require "monitor"
require "dalli"
require "dalli/cas/client"
require "redis"
require "msgpack"
require "suo/errors"
require "suo/client/base"
require "suo/client/memcached"
require "suo/client/redis"

View File

@@ -1,3 +1,3 @@
module Suo
VERSION = "0.2.0"
VERSION = "0.2.1"
end

View File

@@ -10,7 +10,7 @@ module ClientTests
end
end
def test_class_single_resource_locking
def test_single_resource_locking
lock1 = @client.lock(TEST_KEY, 1)
refute_nil lock1
@@ -27,7 +27,7 @@ module ClientTests
assert_equal false, locked
end
def test_class_multiple_resource_locking
def test_multiple_resource_locking
lock1 = @client.lock(TEST_KEY, 2)
refute_nil lock1
@@ -72,8 +72,9 @@ module ClientTests
output = Queue.new
threads = []
threads << Thread.new { @client.lock(TEST_KEY, 2) { output << "One"; sleep 2 } }
threads << Thread.new { @client.lock(TEST_KEY, 2) { output << "Two"; sleep 2 } }
threads << Thread.new { @client.lock(TEST_KEY, 2) { output << "One"; sleep 0.5 } }
threads << Thread.new { @client.lock(TEST_KEY, 2) { output << "Two"; sleep 0.5 } }
sleep 0.1
threads << Thread.new { @client.lock(TEST_KEY, 2) { output << "Three" } }
threads.map(&:join)
@@ -86,10 +87,10 @@ module ClientTests
ret.sort!
assert_equal 0, output.size
assert_equal ["One", "Two"], ret
assert_equal %w(One Two), ret
end
def test_instance_multiple_resource_locking
def test_block_multiple_resource_locking
success_counter = Queue.new
failure_counter = Queue.new
@@ -97,7 +98,7 @@ module ClientTests
100.times.map do |i|
Thread.new do
success = @client.lock(TEST_KEY, 50) do
success = client.lock(TEST_KEY, 50) do
sleep(3)
success_counter << i
end
@@ -110,7 +111,7 @@ module ClientTests
assert_equal 50, failure_counter.size
end
def test_instance_multiple_resource_locking_longer_timeout
def test_block_multiple_resource_locking_longer_timeout
success_counter = Queue.new
failure_counter = Queue.new

View File

@@ -6,4 +6,3 @@ require "minitest/autorun"
require "minitest/benchmark"
ENV["SUO_TEST"] = "true"