net-http-persistent 1.4 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +6 -0
- data/lib/net/http/persistent.rb +10 -6
- data/test/test_net_http_persistent.rb +41 -54
- metadata +4 -3
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
data/lib/net/http/persistent.rb
CHANGED
@@ -37,7 +37,7 @@ class Net::HTTP::Persistent
|
|
37
37
|
##
|
38
38
|
# The version of Net::HTTP::Persistent use are using
|
39
39
|
|
40
|
-
VERSION = '1.4'
|
40
|
+
VERSION = '1.4.1'
|
41
41
|
|
42
42
|
##
|
43
43
|
# Error class for errors raised by Net::HTTP::Persistent. Various
|
@@ -370,13 +370,17 @@ class Net::HTTP::Persistent
|
|
370
370
|
retry
|
371
371
|
rescue IOError, EOFError, Timeout::Error,
|
372
372
|
Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EPIPE => e
|
373
|
-
due_to = "(due to #{e.message} - #{e.class})"
|
374
|
-
message = error_message connection
|
375
373
|
|
376
|
-
|
374
|
+
if retried or not idempotent? req
|
375
|
+
due_to = "(due to #{e.message} - #{e.class})"
|
376
|
+
message = error_message connection
|
377
|
+
|
378
|
+
finish connection
|
379
|
+
|
380
|
+
raise Error, "too many connection resets #{due_to} #{message}"
|
381
|
+
end
|
377
382
|
|
378
|
-
|
379
|
-
retried or not idempotent? req
|
383
|
+
reset connection
|
380
384
|
|
381
385
|
retried = true
|
382
386
|
retry
|
@@ -42,21 +42,32 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
def
|
53
|
-
|
54
|
-
|
55
|
-
def
|
56
|
-
|
57
|
-
|
58
|
-
def
|
45
|
+
class BasicConnection
|
46
|
+
attr_accessor :started, :finished, :address, :port
|
47
|
+
attr_reader :req
|
48
|
+
def initialize
|
49
|
+
@started, @finished = 0, 0
|
50
|
+
@address, @port = 'example.com', 80
|
51
|
+
end
|
52
|
+
def finish
|
53
|
+
@finished += 1
|
54
|
+
end
|
55
|
+
def start
|
56
|
+
@started += 1
|
57
|
+
end
|
58
|
+
def reset?
|
59
|
+
@started == @finished + 1
|
60
|
+
end
|
61
|
+
def started?
|
62
|
+
@started >= 1
|
63
|
+
end
|
64
|
+
def finished?
|
65
|
+
@finished >= 1
|
66
|
+
end
|
67
|
+
end
|
59
68
|
|
69
|
+
def basic_connection
|
70
|
+
c = BasicConnection.new
|
60
71
|
conns["#{@uri.host}:#{@uri.port}"] = c
|
61
72
|
c
|
62
73
|
end
|
@@ -124,8 +135,8 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
124
135
|
end
|
125
136
|
|
126
137
|
def test_connection_for_cached
|
127
|
-
cached =
|
128
|
-
|
138
|
+
cached = basic_connection
|
139
|
+
cached.start
|
129
140
|
conns['example.com:80'] = cached
|
130
141
|
|
131
142
|
c = @http.connection_for @uri
|
@@ -165,9 +176,7 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
165
176
|
end
|
166
177
|
|
167
178
|
def test_connection_for_host_down
|
168
|
-
cached =
|
169
|
-
def cached.address; 'example.com' end
|
170
|
-
def cached.port; 80 end
|
179
|
+
cached = basic_connection
|
171
180
|
def cached.start; raise Errno::EHOSTDOWN end
|
172
181
|
def cached.started?; false end
|
173
182
|
conns['example.com:80'] = cached
|
@@ -208,9 +217,7 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
208
217
|
end
|
209
218
|
|
210
219
|
def test_connection_for_refused
|
211
|
-
cached =
|
212
|
-
def cached.address; 'example.com' end
|
213
|
-
def cached.port; 80 end
|
220
|
+
cached = basic_connection
|
214
221
|
def cached.start; raise Errno::ECONNREFUSED end
|
215
222
|
def cached.started?; false end
|
216
223
|
conns['example.com:80'] = cached
|
@@ -223,7 +230,7 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
223
230
|
end
|
224
231
|
|
225
232
|
def test_error_message
|
226
|
-
c =
|
233
|
+
c = basic_connection
|
227
234
|
reqs[c.object_id] = 5
|
228
235
|
|
229
236
|
assert_equal "after 5 requests on #{c.object_id}", @http.error_message(c)
|
@@ -236,12 +243,7 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
236
243
|
end
|
237
244
|
|
238
245
|
def test_finish
|
239
|
-
c =
|
240
|
-
c.instance_variable_set :@started, false
|
241
|
-
def c.finish; @finished = true end
|
242
|
-
def c.finished?; @finished end
|
243
|
-
def c.start; @started = true end
|
244
|
-
def c.started?; @started end
|
246
|
+
c = basic_connection
|
245
247
|
reqs[c.object_id] = 5
|
246
248
|
|
247
249
|
@http.finish c
|
@@ -252,12 +254,8 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
252
254
|
end
|
253
255
|
|
254
256
|
def test_finish_io_error
|
255
|
-
c =
|
256
|
-
c.
|
257
|
-
def c.finish; @finished = true; raise IOError end
|
258
|
-
def c.finished?; @finished end
|
259
|
-
def c.start; @started = true end
|
260
|
-
def c.started?; @started end
|
257
|
+
c = basic_connection
|
258
|
+
def c.finish; @finished += 1; raise IOError end
|
261
259
|
reqs[c.object_id] = 5
|
262
260
|
|
263
261
|
@http.finish c
|
@@ -334,26 +332,20 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
334
332
|
end
|
335
333
|
|
336
334
|
def test_reset
|
337
|
-
c =
|
338
|
-
|
339
|
-
def c.finished?; @finished end
|
340
|
-
def c.start; @started = true end
|
341
|
-
def c.started?; @started end
|
335
|
+
c = basic_connection
|
336
|
+
c.start
|
342
337
|
reqs[c.object_id] = 5
|
343
338
|
|
344
339
|
@http.reset c
|
345
340
|
|
346
341
|
assert c.started?
|
347
342
|
assert c.finished?
|
343
|
+
assert c.reset?
|
348
344
|
assert_nil reqs[c.object_id]
|
349
345
|
end
|
350
346
|
|
351
347
|
def test_reset_io_error
|
352
|
-
c =
|
353
|
-
def c.finish; @finished = true; raise IOError end
|
354
|
-
def c.finished?; @finished end
|
355
|
-
def c.start; @started = true end
|
356
|
-
def c.started?; @started end
|
348
|
+
c = basic_connection
|
357
349
|
reqs[c.object_id] = 5
|
358
350
|
|
359
351
|
@http.reset c
|
@@ -363,10 +355,7 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
363
355
|
end
|
364
356
|
|
365
357
|
def test_reset_host_down
|
366
|
-
c =
|
367
|
-
def c.address; 'example.com' end
|
368
|
-
def c.finish; end
|
369
|
-
def c.port; 80 end
|
358
|
+
c = basic_connection
|
370
359
|
def c.start; raise Errno::EHOSTDOWN end
|
371
360
|
reqs[c.object_id] = 5
|
372
361
|
|
@@ -378,10 +367,7 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
378
367
|
end
|
379
368
|
|
380
369
|
def test_reset_refused
|
381
|
-
c =
|
382
|
-
def c.address; 'example.com' end
|
383
|
-
def c.finish; end
|
384
|
-
def c.port; 80 end
|
370
|
+
c = basic_connection
|
385
371
|
def c.start; raise Errno::ECONNREFUSED end
|
386
372
|
reqs[c.object_id] = 5
|
387
373
|
|
@@ -505,6 +491,7 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
505
491
|
|
506
492
|
@http.request @uri
|
507
493
|
|
494
|
+
assert c.reset?
|
508
495
|
assert c.finished?
|
509
496
|
end
|
510
497
|
|
@@ -557,7 +544,7 @@ class TestNetHttpPersistent < MiniTest::Unit::TestCase
|
|
557
544
|
end
|
558
545
|
|
559
546
|
def test_shutdown_not_started
|
560
|
-
c =
|
547
|
+
c = basic_connection
|
561
548
|
def c.finish() raise IOError end
|
562
549
|
|
563
550
|
conns["#{@uri.host}:#{@uri.port}"] = c
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-http-persistent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 4
|
9
|
-
|
9
|
+
- 1
|
10
|
+
version: 1.4.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Eric Hodel
|
@@ -35,7 +36,7 @@ cert_chain:
|
|
35
36
|
x52qPcexcYZR7w==
|
36
37
|
-----END CERTIFICATE-----
|
37
38
|
|
38
|
-
date: 2010-
|
39
|
+
date: 2010-10-13 00:00:00 -07:00
|
39
40
|
default_executable:
|
40
41
|
dependencies:
|
41
42
|
- !ruby/object:Gem::Dependency
|
metadata.gz.sig
CHANGED
Binary file
|