connection_pool 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
@@ -11,18 +11,19 @@ class TimedQueue
|
|
11
11
|
def push(obj)
|
12
12
|
@mutex.synchronize do
|
13
13
|
@que.push obj
|
14
|
-
@resource.
|
14
|
+
@resource.broadcast
|
15
15
|
end
|
16
16
|
end
|
17
17
|
alias_method :<<, :push
|
18
18
|
|
19
19
|
def timed_pop(timeout=0.5)
|
20
|
+
deadline = Time.now + timeout
|
20
21
|
@mutex.synchronize do
|
21
|
-
|
22
|
+
loop do
|
23
|
+
return @que.shift unless @que.empty?
|
24
|
+
raise Timeout::Error if Time.now > deadline
|
22
25
|
@resource.wait(@mutex, timeout)
|
23
|
-
raise Timeout::Error if @que.empty?
|
24
26
|
end
|
25
|
-
return @que.shift
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
@@ -37,4 +38,4 @@ class TimedQueue
|
|
37
38
|
def length
|
38
39
|
@que.length
|
39
40
|
end
|
40
|
-
end
|
41
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
Thread.abort_on_exception = true
|
1
2
|
require 'helper'
|
2
3
|
|
3
4
|
class TestConnectionPool < MiniTest::Unit::TestCase
|
@@ -47,6 +48,7 @@ class TestConnectionPool < MiniTest::Unit::TestCase
|
|
47
48
|
pool.do_something
|
48
49
|
end
|
49
50
|
|
51
|
+
sleep 0.05
|
50
52
|
pool.with do |conn|
|
51
53
|
refute_nil conn
|
52
54
|
end
|
@@ -65,4 +67,16 @@ class TestConnectionPool < MiniTest::Unit::TestCase
|
|
65
67
|
end
|
66
68
|
assert_equal 1, result
|
67
69
|
end
|
70
|
+
|
71
|
+
def test_heavy_threading
|
72
|
+
pool = ConnectionPool.new(:timeout => 0.5, :size => 3) { NetworkConnection.new }
|
73
|
+
20.times do
|
74
|
+
Thread.new do
|
75
|
+
pool.with do |net|
|
76
|
+
sleep 0.05
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
sleep 0.5
|
81
|
+
end
|
68
82
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: connection_pool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Mike Perham
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-09-
|
13
|
+
date: 2011-09-12 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|