net-http-persistent 1.4 → 1.4.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.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
|