resque-exceptional 0.1.0 → 0.2.0
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/HISTORY.md +7 -0
- data/Rakefile +3 -2
- data/lib/resque/failure/exceptional.rb +2 -2
- data/lib/resque-exceptional.rb +1 -1
- data/test/exceptional_test.rb +16 -16
- data/test/resque_test.rb +4 -3
- data/test/test_helper.rb +16 -10
- metadata +137 -118
data/HISTORY.md
CHANGED
data/Rakefile
CHANGED
@@ -10,6 +10,7 @@ task :default => :test
|
|
10
10
|
##
|
11
11
|
# Test task.
|
12
12
|
Rake::TestTask.new(:test) do |task|
|
13
|
+
task.libs << 'test'
|
13
14
|
task.test_files = FileList['test/*_test.rb']
|
14
15
|
task.verbose = true
|
15
16
|
end
|
@@ -19,7 +20,7 @@ end
|
|
19
20
|
YARD::Rake::YardocTask.new :yardoc do |t|
|
20
21
|
t.files = ['lib/**/*.rb']
|
21
22
|
t.options = ['--output-dir', 'doc/',
|
22
|
-
'--files', 'LICENSE
|
23
|
+
'--files', 'LICENSE HISTORY.md',
|
23
24
|
'--readme', 'README.md',
|
24
25
|
'--title', 'resque-exceptional documentation']
|
25
|
-
end
|
26
|
+
end
|
@@ -73,7 +73,7 @@ module Resque
|
|
73
73
|
|
74
74
|
# Returns the compressed request data.
|
75
75
|
def compressed_request
|
76
|
-
Zlib::Deflate.deflate(api_request
|
76
|
+
Zlib::Deflate.deflate(MultiJson.dump(api_request), Zlib::BEST_SPEED)
|
77
77
|
end
|
78
78
|
|
79
79
|
# Path & query options used by the HTTP Post.
|
@@ -105,7 +105,7 @@ module Resque
|
|
105
105
|
# pass any proxy settings.
|
106
106
|
proxy = Net::HTTP::Proxy(self.class.proxy_host, self.class.proxy_port,
|
107
107
|
self.class.proxy_user, self.class.proxy_pass)
|
108
|
-
http = proxy.new('api.
|
108
|
+
http = proxy.new('api.exceptional.io', http_port)
|
109
109
|
|
110
110
|
# set http client options.
|
111
111
|
http.read_timeout = self.class.http_read_timeout || 5
|
data/lib/resque-exceptional.rb
CHANGED
data/test/exceptional_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
# Tests the failure backend works with resque, does not contact the api.
|
4
|
-
class ExceptionalTest <
|
4
|
+
class ExceptionalTest < MiniTest::Unit::TestCase
|
5
5
|
def setup
|
6
6
|
@exception = TestApp.grab_exception
|
7
7
|
@worker = FakeWorker.new
|
@@ -9,7 +9,7 @@ class ExceptionalTest < Test::Unit::TestCase
|
|
9
9
|
@payload = { 'class' => 'TestJob', 'args' => ['foo', 'bar'] }
|
10
10
|
@failure = Resque::Failure::Exceptional.new(@exception, @worker, @queue, @payload)
|
11
11
|
WebMock.disable_net_connect!
|
12
|
-
WebMock.
|
12
|
+
WebMock.reset!
|
13
13
|
end
|
14
14
|
|
15
15
|
# test we can build a hash to send to the api.
|
@@ -95,9 +95,9 @@ class ExceptionalTest < Test::Unit::TestCase
|
|
95
95
|
# test save success.
|
96
96
|
def test_save_success
|
97
97
|
with_api_key '27810b263f0e11eef2f1d29be75d2f39' do
|
98
|
-
stub_request(:post, /.*api.
|
98
|
+
stub_request(:post, /.*api.exceptional.io.*/)
|
99
99
|
@failure.save
|
100
|
-
assert_requested(:post, /.*api.
|
100
|
+
assert_requested(:post, /.*api.exceptional.io.*/)
|
101
101
|
assert_match /^(resque-exception).*(success).*$/, @worker.log_history.first
|
102
102
|
end
|
103
103
|
end
|
@@ -105,9 +105,9 @@ class ExceptionalTest < Test::Unit::TestCase
|
|
105
105
|
# test save fail.
|
106
106
|
def test_save_fail
|
107
107
|
with_api_key '27810b263f0e11eef2f1d29be75d2f39' do
|
108
|
-
stub_request(:post, /.*api.
|
108
|
+
stub_request(:post, /.*api.exceptional.io.*/).to_return(:status => [500, 'Internal Server Error'])
|
109
109
|
@failure.save
|
110
|
-
assert_requested(:post, /.*api.
|
110
|
+
assert_requested(:post, /.*api.exceptional.io.*/)
|
111
111
|
assert_match /^(resque-exception).*(fail).*(500).*$/, @worker.log_history.first
|
112
112
|
end
|
113
113
|
end
|
@@ -198,7 +198,7 @@ class ExceptionalTest < Test::Unit::TestCase
|
|
198
198
|
|
199
199
|
# raise exception if api key is not set.
|
200
200
|
def test_http_path_query_without_api_key_raises_exception
|
201
|
-
|
201
|
+
assert_raises Resque::Failure::Exceptional::APIKeyError, 'should raise APIKeyError if api key is not set' do
|
202
202
|
@failure.http_path_query
|
203
203
|
end
|
204
204
|
end
|
@@ -206,10 +206,10 @@ class ExceptionalTest < Test::Unit::TestCase
|
|
206
206
|
# should return http response if successful.
|
207
207
|
def test_http_post_request
|
208
208
|
with_api_key '27810b263f0e11eef2f1d29be75d2f39' do
|
209
|
-
stub_request(:post, /.*api.
|
209
|
+
stub_request(:post, /.*api.exceptional.io.*/)
|
210
210
|
|
211
211
|
response = @failure.http_post_request
|
212
|
-
assert_requested(:post, /.*api.
|
212
|
+
assert_requested(:post, /.*api.exceptional.io.*/)
|
213
213
|
assert_equal '200', response.code, 'should be a successful http request'
|
214
214
|
end
|
215
215
|
end
|
@@ -220,26 +220,26 @@ class ExceptionalTest < Test::Unit::TestCase
|
|
220
220
|
assert_equal nil, @failure.http_post_request, 'should be nil, APIKeyError should have been caught.'
|
221
221
|
|
222
222
|
with_api_key '27810b263f0e11eef2f1d29be75d2f39' do
|
223
|
-
WebMock.
|
224
|
-
stub_request(:post, /.*api.
|
223
|
+
WebMock.reset!
|
224
|
+
stub_request(:post, /.*api.exceptional.io.*/).to_raise(StandardError)
|
225
225
|
assert_equal nil, @failure.http_post_request, 'should be nil, StandardError should have been caught.'
|
226
|
-
assert_requested(:post, /.*api.
|
226
|
+
assert_requested(:post, /.*api.exceptional.io.*/)
|
227
227
|
end
|
228
228
|
end
|
229
229
|
|
230
230
|
# make sure we catch timeout errors.
|
231
231
|
def test_http_post_request_timeout
|
232
232
|
with_api_key '27810b263f0e11eef2f1d29be75d2f39' do
|
233
|
-
stub_request(:post, /.*api.
|
233
|
+
stub_request(:post, /.*api.exceptional.io.*/).to_timeout
|
234
234
|
assert_equal nil, @failure.http_post_request, 'should be nil, TimeoutError should have been caught.'
|
235
|
-
assert_requested(:post, /.*api.
|
235
|
+
assert_requested(:post, /.*api.exceptional.io.*/)
|
236
236
|
end
|
237
237
|
end
|
238
238
|
|
239
239
|
# perform a test with the real api.
|
240
240
|
def test_live_fire_with_real_api!
|
241
241
|
unless ENV['EXCEPTIONAL_API_KEY']
|
242
|
-
|
242
|
+
skip 'Test with the REAL API. Example: `EXCEPTIONAL_API_KEY=27810b263f0e11eef2f1d29be75d2f39 bundle exec rake test`'
|
243
243
|
end
|
244
244
|
|
245
245
|
with_api_key ENV['EXCEPTIONAL_API_KEY'] do
|
data/test/resque_test.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
# make sure the worlds not fallen from beneith us.
|
4
|
-
class ResqueTest <
|
4
|
+
class ResqueTest < MiniTest::Unit::TestCase
|
5
5
|
def test_resque_version
|
6
6
|
major, minor, patch = Resque::Version.split('.')
|
7
7
|
assert_equal 1, major.to_i, 'major version does not match'
|
8
8
|
assert_operator minor.to_i, :>=, 8, 'minor version is too low'
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,24 +1,30 @@
|
|
1
|
-
|
2
|
-
SimpleCov.start do
|
3
|
-
add_filter '/test/'
|
4
|
-
end
|
5
|
-
|
1
|
+
# fix load path.
|
6
2
|
dir = File.dirname(File.expand_path(__FILE__))
|
7
3
|
$LOAD_PATH.unshift dir + '/../lib'
|
8
4
|
$TESTING = true
|
9
5
|
|
10
|
-
require
|
6
|
+
# require gems for testing.
|
11
7
|
require 'rubygems'
|
8
|
+
require 'minitest/unit'
|
9
|
+
require 'minitest/pride'
|
10
|
+
require 'minitest/autorun'
|
12
11
|
require 'rr'
|
13
12
|
require 'webmock'
|
14
|
-
require 'webmock/
|
13
|
+
require 'webmock/minitest'
|
14
|
+
|
15
|
+
# Run code coverage in MRI 1.9 only.
|
16
|
+
if RUBY_VERSION >= '1.9' && RUBY_ENGINE == 'ruby'
|
17
|
+
require 'simplecov'
|
18
|
+
SimpleCov.start do
|
19
|
+
add_filter '/test/'
|
20
|
+
end
|
21
|
+
end
|
15
22
|
|
16
23
|
# require our failure backend to test.
|
17
24
|
require 'resque-exceptional'
|
18
25
|
|
19
|
-
class
|
26
|
+
class MiniTest::Unit::TestCase
|
20
27
|
include RR::Adapters::TestUnit
|
21
|
-
include WebMock::API
|
22
28
|
|
23
29
|
# periodicly set the api key.
|
24
30
|
def with_api_key(key, &block)
|
@@ -67,4 +73,4 @@ module TestApp
|
|
67
73
|
end
|
68
74
|
end
|
69
75
|
|
70
|
-
end
|
76
|
+
end
|
metadata
CHANGED
@@ -1,122 +1,151 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-exceptional
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 0
|
10
|
-
version: 0.1.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Luke Antins
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-09-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: resque
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.8.0
|
22
|
+
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 55
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 8
|
33
|
-
- 0
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
34
29
|
version: 1.8.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: multi_json
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
35
38
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: test-unit
|
39
39
|
prerelease: false
|
40
|
-
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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: rake
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
49
54
|
type: :development
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: rr
|
53
55
|
prerelease: false
|
54
|
-
|
55
|
-
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
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: minitest
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
65
70
|
type: :development
|
66
|
-
version_requirements: *id003
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
name: webmock
|
69
71
|
prerelease: false
|
70
|
-
|
71
|
-
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
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: rr
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
79
86
|
type: :development
|
80
|
-
version_requirements: *id004
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: yard
|
83
87
|
prerelease: false
|
84
|
-
|
85
|
-
none: false
|
86
|
-
requirements:
|
87
|
-
- -
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: webmock
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: yard
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
93
118
|
type: :development
|
94
|
-
version_requirements: *id005
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: simplecov
|
97
119
|
prerelease: false
|
98
|
-
|
99
|
-
none: false
|
100
|
-
requirements:
|
101
|
-
- -
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: simplecov
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
109
134
|
type: :development
|
110
|
-
|
111
|
-
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
description: ! " resque-exceptional provides a Resque failure backend that sends
|
143
|
+
exceptions\n raised by jobs to getexceptional.com.\n"
|
112
144
|
email: luke@lividpenguin.com
|
113
145
|
executables: []
|
114
|
-
|
115
146
|
extensions: []
|
116
|
-
|
117
147
|
extra_rdoc_files: []
|
118
|
-
|
119
|
-
files:
|
148
|
+
files:
|
120
149
|
- LICENSE
|
121
150
|
- Rakefile
|
122
151
|
- README.md
|
@@ -126,39 +155,29 @@ files:
|
|
126
155
|
- test/test_helper.rb
|
127
156
|
- lib/resque/failure/exceptional.rb
|
128
157
|
- lib/resque-exceptional.rb
|
129
|
-
has_rdoc: false
|
130
158
|
homepage: http://github.com/lantins/resque-exceptional
|
131
159
|
licenses: []
|
132
|
-
|
133
160
|
post_install_message:
|
134
161
|
rdoc_options: []
|
135
|
-
|
136
|
-
require_paths:
|
162
|
+
require_paths:
|
137
163
|
- lib
|
138
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
164
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
139
165
|
none: false
|
140
|
-
requirements:
|
141
|
-
- -
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
|
144
|
-
|
145
|
-
- 0
|
146
|
-
version: "0"
|
147
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - ! '>='
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0'
|
170
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
171
|
none: false
|
149
|
-
requirements:
|
150
|
-
- -
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
|
153
|
-
segments:
|
154
|
-
- 0
|
155
|
-
version: "0"
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
156
176
|
requirements: []
|
157
|
-
|
158
177
|
rubyforge_project:
|
159
|
-
rubygems_version: 1.
|
178
|
+
rubygems_version: 1.8.24
|
160
179
|
signing_key:
|
161
180
|
specification_version: 3
|
162
181
|
summary: A Resque failure backend for getexceptional.com
|
163
182
|
test_files: []
|
164
|
-
|
183
|
+
has_rdoc: false
|