sdb_lock 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a9b9ebf2fa554880afaa6906692e45d7a04ab855
4
- data.tar.gz: 684b125391fb61cb928bf685543ddd66987f7b4d
3
+ metadata.gz: a5e7a44b667ffa0738e16fa2f8ecc5be2b43c085
4
+ data.tar.gz: 4e30eedc8fdbd10920711b802f731c0ba54eb7e6
5
5
  SHA512:
6
- metadata.gz: cdf66afa2420112cdc27aa0b8ef656a926c46ed209b80b000a6ed391d1e76312a44aca1dbd9585b62387ec4c08a47237f04155c70284545e5aa58949241d4912
7
- data.tar.gz: 4aae120e31e057fcbddf5411a7ffa363c0416efcf418c3ae0053266ec3a22d16556487770ac71bd4eff97e054b645ec9d456c7ea312e6a381d0050f0d1ab5d08
6
+ metadata.gz: 3504f3056d664a84d3b3eb6003e5e926f968c369b7f4def347b1df5f1357179f586c74f9bf8d7c7d5aa94b28728ae5f5099f4f6d4c9ed5cca5b7dbaa43e22b60
7
+ data.tar.gz: 518a2590612a46f21c41533c75bda96b07a387b3af3f848df3b03cd5b65d3dbc0027e623569ebe187afa7c3befb53d47a6e6757df66a86a318fa1f5f73968b5e
data/lib/sdb_lock.rb CHANGED
@@ -45,14 +45,15 @@ class SdbLock
45
45
  # Try to lock resource_name
46
46
  #
47
47
  # @param [String] resource_name name to lock
48
+ # @param [Array] additional_attributes include additional attributes
48
49
  # @return [TrueClass] true when locked, unless false
49
- def try_lock(resource_name)
50
+ def try_lock(resource_name, additional_attributes = [])
50
51
  attributes = [
51
52
  {
52
53
  name: LOCK_TIME,
53
54
  value: format_time(Time.now)
54
55
  }
55
- ]
56
+ ].concat(additional_attributes)
56
57
 
57
58
  @sdb.put_attributes(
58
59
  domain_name: @domain_name,
@@ -79,10 +80,11 @@ class SdbLock
79
80
  # It blocks until lock is succeeded.
80
81
  #
81
82
  # @param [String] resource_name
82
- def lock(resource_name)
83
+ # @param [Array] additional_attributes include additional attributes
84
+ def lock(resource_name, additional_attributes = [])
83
85
  wait_secs = 0.5
84
86
  while true
85
- lock = try_lock(resource_name)
87
+ lock = try_lock(resource_name, additional_attributes)
86
88
  break if lock
87
89
  sleep([wait_secs, MAX_WAIT_SECS].min)
88
90
  wait_secs *= 2
@@ -1,3 +1,3 @@
1
1
  class SdbLock
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/test/test_lock.rb CHANGED
@@ -36,4 +36,32 @@ class LockTest < MiniTest::Test
36
36
  threads.each { |thread| thread.join }
37
37
  assert_equal(10, shared_var)
38
38
  end
39
+
40
+ def test_additional_attributes
41
+ additional_attributes = [
42
+ {
43
+ name: 'additional_attribute',
44
+ value: 'test'
45
+ }
46
+ ]
47
+
48
+ @lock.lock("test", additional_attributes)
49
+ # Checking the values of an attribute are not always immediately available,
50
+ # so sleep for a second.
51
+ sleep(1)
52
+ attributes = @lock.send(:item, "test")
53
+ value = attributes.each do |a|
54
+ break a.value if a.name == 'additional_attribute'
55
+ end
56
+ # Additional attributes were set
57
+ assert_equal('test', value)
58
+
59
+ @lock.unlock("test")
60
+ # Checking the values of an attribute are not always immediately available,
61
+ # so sleep for a second.
62
+ sleep(1)
63
+ attributes = @lock.send(:item, "test")
64
+ # Additional attributes were unset
65
+ assert_equal([], attributes)
66
+ end
39
67
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sdb_lock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - KAWACHI Takashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-31 00:00:00.000000000 Z
11
+ date: 2016-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk