dynamodb-mutex 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.rst +2 -2
- data/lib/dynamodb_mutex/lock.rb +2 -1
- data/lib/dynamodb_mutex/version.rb +1 -1
- data/spec/dynamodb_mutex_spec.rb +2 -0
- data/spec/spec_helper.rb +43 -25
- metadata +27 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f3a77760615a522845fc8f07bddf52f6bec983d8d5fc7dae92c1d9fa4d69129d
|
4
|
+
data.tar.gz: 34e0bec90f3428ddd4dff85c402d9a06e2ac010fb1ef7e6e50623fecbdee49fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9462029628137e2a983a8d39a66ecab8ed5d665887a626bb0df51f2142b3ad01754e989c616066b7b8a5ad3ddc981b686620953e2aba8cbd44d5887d8d6bea92
|
7
|
+
data.tar.gz: 0d6af63b18901d4b862b34ffc5ffa93ed30a438dfca308fa8513ead80b9217b46c6d77cffb2a4617173c136b7029ecae529afea76b1dbca2bd2b72d35c2f8f28
|
data/README.rst
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
DynamoDB Mutex
|
2
2
|
==============
|
3
3
|
|
4
|
-
.. image:: https://
|
4
|
+
.. image:: https://circleci.com/gh/clearhaus/dynamodb-mutex.svg?style=shield
|
5
5
|
:alt: Build Status
|
6
|
-
:target: https://
|
6
|
+
:target: https://circleci.com/gh/clearhaus/dynamodb-mutex
|
7
7
|
|
8
8
|
.. image:: https://codeclimate.com/github/clearhaus/dynamodb-mutex/badges/gpa.svg
|
9
9
|
:alt: Code Climate
|
data/lib/dynamodb_mutex/lock.rb
CHANGED
data/spec/dynamodb_mutex_spec.rb
CHANGED
@@ -53,6 +53,7 @@ describe DynamoDBMutex::Lock do
|
|
53
53
|
|
54
54
|
ensure
|
55
55
|
Process.kill('QUIT', child)
|
56
|
+
Process.waitpid(child)
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
@@ -69,6 +70,7 @@ describe DynamoDBMutex::Lock do
|
|
69
70
|
|
70
71
|
ensure
|
71
72
|
Process.kill('QUIT', child)
|
73
|
+
Process.waitpid(child)
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,46 +1,64 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler/setup'
|
3
1
|
require 'rspec'
|
4
|
-
require 'fake_dynamo'
|
5
|
-
require 'aws-sdk'
|
6
2
|
|
7
|
-
|
3
|
+
require 'aws-sdk-dynamodb'
|
4
|
+
require 'dynamodb-mutex'
|
5
|
+
|
6
|
+
Aws.config.update(
|
8
7
|
credentials: Aws::Credentials.new(
|
9
8
|
'your_access_key_id',
|
10
9
|
'your_secret_access_key'
|
11
10
|
),
|
12
11
|
endpoint: 'http://localhost:4567'
|
13
|
-
|
12
|
+
)
|
14
13
|
|
15
|
-
|
14
|
+
AMAZON_LOCAL_DYNAMODB_URL =
|
15
|
+
'https://s3.eu-central-1.amazonaws.com/dynamodb-local-frankfurt/dynamodb_local_latest.tar.gz'.freeze
|
16
|
+
DYNAMODB_JAR_DIR = 'resources'.freeze
|
17
|
+
DYNAMODB_TMP_PATH = '/tmp/dynamodb_local_latest.tar.gz'.freeze
|
18
|
+
|
19
|
+
def fetch_amazon_dynamodb_local
|
20
|
+
Dir.mkdir(DYNAMODB_JAR_DIR) unless Dir.exist?(DYNAMODB_JAR_DIR)
|
21
|
+
|
22
|
+
return if File.exist?("./#{DYNAMODB_JAR_DIR}/DynamoDBLocal.jar")
|
23
|
+
|
24
|
+
system("wget #{AMAZON_LOCAL_DYNAMODB_URL} -O #{DYNAMODB_TMP_PATH} -q") ||
|
25
|
+
raise("Error downloading #{AMAZON_LOCAL_DYNAMODB_URL}")
|
26
|
+
|
27
|
+
system("tar -xf #{DYNAMODB_TMP_PATH} -C #{DYNAMODB_JAR_DIR}") ||
|
28
|
+
raise("Error unpacking #{DYNAMODB_TMP_PATH}")
|
29
|
+
end
|
30
|
+
|
31
|
+
def spawn_dynamodb
|
32
|
+
Dir.chdir(DYNAMODB_JAR_DIR)
|
33
|
+
$stdout.reopen('/dev/null', 'w')
|
34
|
+
|
35
|
+
exec('java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -inMemory -port 4567')
|
36
|
+
end
|
16
37
|
|
17
38
|
RSpec.configure do |config|
|
18
|
-
log_stream = ENV['DEBUG'] =~
|
39
|
+
log_stream = ENV['DEBUG'] =~ /^(true|t|yes|y|1)$/i ? STDERR : StringIO.new
|
19
40
|
|
20
41
|
DynamoDBMutex::Lock.logger = Logger.new(log_stream)
|
21
42
|
|
22
|
-
|
43
|
+
dynamo_pid = nil
|
23
44
|
|
24
45
|
config.before(:suite) do
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
$stdout = log_stream # Throw FakeDynamo's stdout logging somewhere else.
|
31
|
-
FakeDynamo::Server.run!(port: 4567, bind: 'localhost') do |server|
|
32
|
-
if server.respond_to?('config') && server.config.respond_to?('[]=')
|
33
|
-
server.config[:AccessLog] = []
|
34
|
-
end
|
35
|
-
end
|
46
|
+
# Download Amazons local DynamoDB and use that as an endpoint for specs.
|
47
|
+
fetch_amazon_dynamodb_local
|
48
|
+
|
49
|
+
dynamo_pid = Process.fork do
|
50
|
+
spawn_dynamodb
|
36
51
|
end
|
37
|
-
|
52
|
+
|
53
|
+
[0.1, 0.5, 1, 3, 5, 7, 10].lazy.map do |sleep_interval|
|
54
|
+
Aws::DynamoDB::Client.new.list_tables rescue (sleep sleep_interval; false)
|
55
|
+
end.any? || raise('DynamoDB did not start in time')
|
38
56
|
end
|
39
57
|
|
40
58
|
config.after(:suite) do
|
41
|
-
|
42
|
-
|
43
|
-
|
59
|
+
if dynamo_pid
|
60
|
+
Process.kill('INT', dynamo_pid)
|
61
|
+
Process.waitpid(dynamo_pid)
|
62
|
+
end
|
44
63
|
end
|
45
|
-
|
46
64
|
end
|
metadata
CHANGED
@@ -1,88 +1,74 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamodb-mutex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Clearhaus
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: aws-sdk
|
14
|
+
name: aws-sdk-dynamodb
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '1.6'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 2.0.0
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '>='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 2.0.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec-mocks
|
28
|
+
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- -
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
33
|
+
version: '12.3'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- -
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
40
|
+
version: '12.3'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
42
|
+
name: rspec
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- -
|
45
|
+
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
47
|
+
version: '2.0'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- -
|
52
|
+
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
54
|
+
version: '2.0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
56
|
+
name: rspec-mocks
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- -
|
59
|
+
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
61
|
+
version: '3.7'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- -
|
66
|
+
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
68
|
+
version: '3.7'
|
83
69
|
description: dynamodb-mutex implements a simple mutex that can be used to coordinate
|
84
70
|
access to shared data from multiple concurrent hosts
|
85
|
-
email:
|
71
|
+
email: hello@clearhaus.com
|
86
72
|
executables: []
|
87
73
|
extensions: []
|
88
74
|
extra_rdoc_files: []
|
@@ -107,17 +93,17 @@ require_paths:
|
|
107
93
|
- lib
|
108
94
|
required_ruby_version: !ruby/object:Gem::Requirement
|
109
95
|
requirements:
|
110
|
-
- -
|
96
|
+
- - ">="
|
111
97
|
- !ruby/object:Gem::Version
|
112
98
|
version: '0'
|
113
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
requirements: []
|
119
105
|
rubyforge_project:
|
120
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.7.6
|
121
107
|
signing_key:
|
122
108
|
specification_version: 4
|
123
109
|
summary: Distributed mutex based on AWS DynamoDB
|