handle invalid lock data

This commit is contained in:
Nick Elser
2015-04-13 21:40:54 -07:00
parent 2724ec6d9d
commit 10d3ab09cf
4 changed files with 12 additions and 6 deletions

View File

@@ -123,7 +123,7 @@ module Suo
fail NotImplementedError
end
def initial_set(key) # rubocop:disable Lint/UnusedMethodArgument
def initial_set(key, val = "") # rubocop:disable Lint/UnusedMethodArgument
fail NotImplementedError
end
@@ -162,7 +162,7 @@ module Suo
unpacked.map do |time, token|
[Time.at(time), token]
end
rescue EOFError => _
rescue EOFError, MessagePack::MalformedFormatError => _
[]
end

View File

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

View File

@@ -32,8 +32,8 @@ module Suo
@client.unwatch
end
def initial_set(key)
@client.set(key, "")
def initial_set(key, val = "")
@client.set(key, val)
end
end
end

View File

@@ -31,6 +31,12 @@ module ClientTests
assert_equal false, locked
end
def test_empty_lock_on_invalid_data
@client.send(:initial_set, TEST_KEY, "bad value")
locked = @client.locked?(TEST_KEY)
assert_equal false, locked
end
def test_clear
lock1 = @client.lock(TEST_KEY, 1)
refute_nil lock1