attempt_this 0.9.0 → 0.9.1
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.
- data/Gemfile +1 -5
- data/Gemfile.lock +22 -5
- data/README.md +13 -10
- data/attempt_this.gemspec +16 -9
- data/lib/attempt_this/attempt_object.rb +121 -129
- data/lib/attempt_this/attempt_this.rb +11 -11
- data/lib/attempt_this/binary_backoff_policy.rb +12 -12
- data/lib/attempt_this/exception_type_filter.rb +11 -11
- data/spec/attempt_spec.rb +292 -287
- data/spec/scenarios_spec.rb +47 -47
- data/spec/spec_helper.rb +1 -0
- metadata +98 -12
- checksums.yaml +0 -7
data/spec/scenarios_spec.rb
CHANGED
@@ -1,51 +1,51 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe AttemptThis do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
4
|
+
include AttemptThis
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
AttemptThis.reset
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'validation' do
|
11
|
+
it 'should reject nil scenario id' do
|
12
|
+
->{AttemptThis.attempt(3.times).scenario(nil)}.should raise_error(ArgumentError)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should reject empty scenario id' do
|
16
|
+
->{AttemptThis.attempt(3.times).scenario('')}.should raise_error(ArgumentError)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should accept string ids' do
|
20
|
+
->{AttemptThis.attempt(3.times).scenario('uploads')}.should_not raise_error
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should accept symbol ids' do
|
24
|
+
->{AttemptThis.attempt(3.times).scenario(:uploads)}.should_not raise_error
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should reject duplicate names' do
|
28
|
+
AttemptThis.attempt(3.times).scenario(:uploads)
|
29
|
+
->{AttemptThis.attempt(3.times).scenario(:uploads)}.should raise_error(ArgumentError)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'operation' do
|
34
|
+
it 'should attempt given number of times' do
|
35
|
+
AttemptThis.attempt(3.times).scenario(:test)
|
36
|
+
count = 0
|
37
|
+
|
38
|
+
->{attempt(:test) { count += 1; raise 'Test' }}.should raise_error('Test')
|
39
|
+
count.should eql(3)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should reuse scenario' do
|
43
|
+
AttemptThis.attempt(3.times).scenario(:test)
|
44
|
+
->{attempt(:test) { raise 'Test'}}.should raise_error('Test')
|
45
|
+
|
46
|
+
count = 0
|
47
|
+
->{attempt(:test) {count += 1; raise 'Test'}}.should raise_error('Test')
|
48
|
+
count.should eql(3)
|
49
|
+
end
|
50
|
+
end
|
51
51
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,19 +1,103 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attempt_this
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Aliaksei Baturytski
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
|
14
|
-
|
12
|
+
date: 2014-02-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: simplecov
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: uuid
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
description: ! 'Retry policy mix-in with configurable number of attempts, delays,
|
95
|
+
exception filters, and fall back strategies.
|
15
96
|
|
16
|
-
|
97
|
+
|
98
|
+
See project''s home page for usage examples and more information.
|
99
|
+
|
100
|
+
'
|
17
101
|
email: abaturytski@gmail.com
|
18
102
|
executables: []
|
19
103
|
extensions: []
|
@@ -34,26 +118,28 @@ files:
|
|
34
118
|
- spec/scenarios_spec.rb
|
35
119
|
- spec/spec_helper.rb
|
36
120
|
homepage: https://github.com/aliakb/attempt_this
|
37
|
-
licenses:
|
38
|
-
|
121
|
+
licenses:
|
122
|
+
- MIT
|
39
123
|
post_install_message:
|
40
124
|
rdoc_options: []
|
41
125
|
require_paths:
|
42
126
|
- lib
|
43
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
44
129
|
requirements:
|
45
|
-
- - '>='
|
130
|
+
- - ! '>='
|
46
131
|
- !ruby/object:Gem::Version
|
47
132
|
version: '0'
|
48
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
+
none: false
|
49
135
|
requirements:
|
50
|
-
- - '>='
|
136
|
+
- - ! '>='
|
51
137
|
- !ruby/object:Gem::Version
|
52
138
|
version: '0'
|
53
139
|
requirements: []
|
54
140
|
rubyforge_project:
|
55
|
-
rubygems_version:
|
141
|
+
rubygems_version: 1.8.24
|
56
142
|
signing_key:
|
57
|
-
specification_version:
|
143
|
+
specification_version: 3
|
58
144
|
summary: Retry policy mix-in
|
59
145
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 99adc9216b884599d6cdf76e1232bd76ac60f58f
|
4
|
-
data.tar.gz: f284433eefff3989b31ffefe6438264c19b7c6ee
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 5b26edd0f899dd2d1f37ca0ea35a888b4a246e565b190a8e970cff6c85bc78ab81177c5f5f1687e8fcf7f776c58c5944a800e639d81e21a387aefd08f3cc7827
|
7
|
-
data.tar.gz: 8938c34e49c4ea02ed9123c655900e62914b72895a84d75d24bc656268340be9ca66e5ebf9430984870e050f1ad9178b05aca70aa12cf593d5a1a4972e121dd1
|