thrift_client 0.6.2 → 0.6.3
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/CHANGELOG +8 -0
- data/lib/thrift_client.rb +1 -0
- data/lib/thrift_client/abstract_thrift_client.rb +15 -1
- data/lib/thrift_client/thrift.rb +19 -0
- data/test/test_helper.rb +1 -1
- data/test/thrift_client_test.rb +31 -1
- data/thrift_client.gemspec +9 -9
- metadata +5 -5
data/CHANGELOG
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
v0.6.3 Document the :connect_timeout option.
|
2
|
+
Add support for specifying client-side timeouts when using FramedTransport
|
3
|
+
set transport timeout after connection is established
|
4
|
+
Add a method `add_callback` allowing a client to register a block that is invoked at a certain event.
|
5
|
+
Fixup socket timeouts.
|
6
|
+
|
7
|
+
|
8
|
+
|
1
9
|
v0.6.2 Remove lingering thrift v0.5.0 reference.
|
2
10
|
|
3
11
|
v0.6.1 Add connect timeout. Bump thrift dependency to ~> v0.6.0.
|
data/lib/thrift_client.rb
CHANGED
@@ -21,6 +21,7 @@ Valid optional parameters are:
|
|
21
21
|
<tt>:server_retry_period</tt>:: How many seconds to wait before trying to reconnect to a dead server. Defaults to <tt>1</tt>. Set to <tt>nil</tt> to disable.
|
22
22
|
<tt>:server_max_requests</tt>:: How many requests to perform before moving on to the next server in the pool, regardless of error status. Defaults to <tt>nil</tt> (no limit).
|
23
23
|
<tt>:timeout</tt>:: Specify the default timeout in seconds. Defaults to <tt>1</tt>.
|
24
|
+
<tt>:connect_timeout</tt>:: Specify the connection timeout in seconds. Defaults to <tt>0.1</tt>.
|
24
25
|
<tt>:timeout_overrides</tt>:: Specify additional timeouts on a per-method basis, in seconds. Only works with <tt>Thrift::BufferedTransport</tt>.
|
25
26
|
<tt>:defaults</tt>:: Specify default values to return on a per-method basis, if <tt>:raise</tt> is set to false.
|
26
27
|
=end rdoc
|
@@ -52,6 +52,7 @@ class AbstractThriftClient
|
|
52
52
|
@server_list = Array(servers).collect{|s| Server.new(s)}.sort_by { rand }
|
53
53
|
@current_server = @server_list.first
|
54
54
|
|
55
|
+
@callbacks = {}
|
55
56
|
@client_methods = []
|
56
57
|
@client_class.instance_methods.each do |method_name|
|
57
58
|
if method_name != 'send_message' && method_name =~ /^send_(.*)$/
|
@@ -70,6 +71,16 @@ class AbstractThriftClient
|
|
70
71
|
end
|
71
72
|
end
|
72
73
|
|
74
|
+
def add_callback(cb, &blk)
|
75
|
+
if cb == :post_connect
|
76
|
+
@callbacks[cb] = blk
|
77
|
+
# Allow chaining
|
78
|
+
return self
|
79
|
+
else
|
80
|
+
return nil
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
73
84
|
def inspect
|
74
85
|
"<#{self.class}(#{client_class}) @current_server=#{@current_server}>"
|
75
86
|
end
|
@@ -81,7 +92,10 @@ class AbstractThriftClient
|
|
81
92
|
@current_server = next_live_server
|
82
93
|
@connection = Connection::Factory.create(@options[:transport], @options[:transport_wrapper], @current_server.connection_string, @options[:connect_timeout])
|
83
94
|
@connection.connect!
|
84
|
-
|
95
|
+
transport = @connection.transport
|
96
|
+
transport.timeout = @options[:timeout] if transport_can_timeout?
|
97
|
+
@client = @client_class.new(@options[:protocol].new(transport, *@options[:protocol_extra_params]))
|
98
|
+
@callbacks[:post_connect].call(self) if @callbacks[:post_connect]
|
85
99
|
end
|
86
100
|
|
87
101
|
def disconnect!
|
data/lib/thrift_client/thrift.rb
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
module Thrift
|
2
|
+
class BaseTransport
|
3
|
+
def timeout=(timeout)
|
4
|
+
end
|
5
|
+
|
6
|
+
def timeout
|
7
|
+
nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
2
11
|
class BufferedTransport
|
3
12
|
def timeout=(timeout)
|
4
13
|
@transport.timeout = timeout
|
@@ -9,6 +18,16 @@ module Thrift
|
|
9
18
|
end
|
10
19
|
end
|
11
20
|
|
21
|
+
class FramedTransport
|
22
|
+
def timeout=(timeout)
|
23
|
+
@transport.timeout = timeout
|
24
|
+
end
|
25
|
+
|
26
|
+
def timeout
|
27
|
+
@transport.timeout
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
12
31
|
module Client
|
13
32
|
def timeout=(timeout)
|
14
33
|
@iprot.trans.timeout = timeout
|
data/test/test_helper.rb
CHANGED
data/test/thrift_client_test.rb
CHANGED
@@ -83,12 +83,42 @@ class ThriftClientTest < Test::Unit::TestCase
|
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
86
|
+
def test_post_conn_cb
|
87
|
+
calledcnt = 0
|
88
|
+
client = ThriftClient.new(Greeter::Client, @servers, @options.merge(:retries => 2))
|
89
|
+
r = client.add_callback :post_connect do |cl|
|
90
|
+
calledcnt += 1
|
91
|
+
assert_equal(client, cl)
|
92
|
+
end
|
93
|
+
assert_equal(client, r)
|
94
|
+
assert_nothing_raised do
|
95
|
+
client.greeting("someone")
|
96
|
+
client.disconnect!
|
97
|
+
end
|
98
|
+
assert_equal(1, calledcnt)
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
def test_unknown_cb
|
103
|
+
calledcnt = 0
|
104
|
+
client = ThriftClient.new(Greeter::Client, @servers, @options.merge(:retries => 2))
|
105
|
+
r = client.add_callback :unknown do |cl|
|
106
|
+
assert(false)
|
107
|
+
end
|
108
|
+
assert_equal(nil, r)
|
109
|
+
end
|
110
|
+
|
86
111
|
def test_no_servers_eventually_raise
|
112
|
+
wascalled = false
|
87
113
|
client = ThriftClient.new(Greeter::Client, @servers[0,2], @options.merge(:retries => 2))
|
114
|
+
client.add_callback :post_connect do
|
115
|
+
wascalled = true
|
116
|
+
end
|
88
117
|
assert_raises(ThriftClient::NoServersAvailable) do
|
89
118
|
client.greeting("someone")
|
90
119
|
client.disconnect!
|
91
120
|
end
|
121
|
+
assert(!wascalled)
|
92
122
|
end
|
93
123
|
|
94
124
|
def test_socket_timeout
|
@@ -100,7 +130,7 @@ class ThriftClientTest < Test::Unit::TestCase
|
|
100
130
|
).greeting("someone")
|
101
131
|
end
|
102
132
|
end
|
103
|
-
assert(measurement.real > 0.5 && measurement.real < 1)
|
133
|
+
assert(measurement.real > 0.5 && measurement.real < 1.05)
|
104
134
|
end
|
105
135
|
end
|
106
136
|
|
data/thrift_client.gemspec
CHANGED
@@ -2,22 +2,22 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{thrift_client}
|
5
|
-
s.version = "0.6.
|
5
|
+
s.version = "0.6.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0.8") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = [
|
9
|
-
s.date = %q{2011-
|
8
|
+
s.authors = [%q{Evan Weaver, Ryan King, Jeff Hodges}]
|
9
|
+
s.date = %q{2011-06-30}
|
10
10
|
s.description = %q{A Thrift client wrapper that encapsulates some common failover behavior.}
|
11
11
|
s.email = %q{}
|
12
|
-
s.extra_rdoc_files = [
|
13
|
-
s.files = [
|
12
|
+
s.extra_rdoc_files = [%q{CHANGELOG}, %q{LICENSE}, %q{README.rdoc}, %q{lib/thrift_client.rb}, %q{lib/thrift_client/abstract_thrift_client.rb}, %q{lib/thrift_client/connection.rb}, %q{lib/thrift_client/connection/base.rb}, %q{lib/thrift_client/connection/factory.rb}, %q{lib/thrift_client/connection/http.rb}, %q{lib/thrift_client/connection/socket.rb}, %q{lib/thrift_client/event_machine.rb}, %q{lib/thrift_client/simple.rb}, %q{lib/thrift_client/thrift.rb}]
|
13
|
+
s.files = [%q{CHANGELOG}, %q{LICENSE}, %q{Manifest}, %q{README.rdoc}, %q{Rakefile}, %q{lib/thrift_client.rb}, %q{lib/thrift_client/abstract_thrift_client.rb}, %q{lib/thrift_client/connection.rb}, %q{lib/thrift_client/connection/base.rb}, %q{lib/thrift_client/connection/factory.rb}, %q{lib/thrift_client/connection/http.rb}, %q{lib/thrift_client/connection/socket.rb}, %q{lib/thrift_client/event_machine.rb}, %q{lib/thrift_client/simple.rb}, %q{lib/thrift_client/thrift.rb}, %q{test/greeter/greeter.rb}, %q{test/greeter/greeter.thrift}, %q{test/greeter/server.rb}, %q{test/multiple_working_servers_test.rb}, %q{test/simple_test.rb}, %q{test/test_helper.rb}, %q{test/thrift_client_http_test.rb}, %q{test/thrift_client_test.rb}, %q{thrift_client.gemspec}]
|
14
14
|
s.homepage = %q{http://fauna.github.com/fauna/thrift_client/}
|
15
|
-
s.rdoc_options = [
|
16
|
-
s.require_paths = [
|
15
|
+
s.rdoc_options = [%q{--line-numbers}, %q{--inline-source}, %q{--title}, %q{Thrift_client}, %q{--main}, %q{README.rdoc}]
|
16
|
+
s.require_paths = [%q{lib}]
|
17
17
|
s.rubyforge_project = %q{fauna}
|
18
|
-
s.rubygems_version = %q{1.
|
18
|
+
s.rubygems_version = %q{1.8.5}
|
19
19
|
s.summary = %q{A Thrift client wrapper that encapsulates some common failover behavior.}
|
20
|
-
s.test_files = [
|
20
|
+
s.test_files = [%q{test/multiple_working_servers_test.rb}, %q{test/simple_test.rb}, %q{test/test_helper.rb}, %q{test/thrift_client_http_test.rb}, %q{test/thrift_client_test.rb}]
|
21
21
|
|
22
22
|
if s.respond_to? :specification_version then
|
23
23
|
s.specification_version = 3
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thrift_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
version: 0.6.
|
9
|
+
- 3
|
10
|
+
version: 0.6.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Evan Weaver, Ryan King, Jeff Hodges
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-06-30 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: thrift
|
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
113
|
requirements: []
|
114
114
|
|
115
115
|
rubyforge_project: fauna
|
116
|
-
rubygems_version: 1.
|
116
|
+
rubygems_version: 1.8.5
|
117
117
|
signing_key:
|
118
118
|
specification_version: 3
|
119
119
|
summary: A Thrift client wrapper that encapsulates some common failover behavior.
|