thrift-client 0.1.0 → 0.3.4
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.
- checksums.yaml +4 -4
- data/lib/thrift_client.rb +6 -5
- data/lib/thrift_client/abstract_thrift_client.rb +106 -69
- data/lib/thrift_client/pool.rb +34 -0
- data/lib/thrift_client/pool/fiber_connection_pool.rb +67 -0
- data/lib/thrift_client/pool/thread_connection_pool.rb +69 -0
- data/lib/thrift_client/{abstract_server.rb → server.rb} +62 -60
- data/lib/thrift_client/thrift/client.rb +15 -0
- data/lib/thrift_client/thrift/processor.rb +44 -0
- data/lib/thrift_client/{thrift.rb → thrift/protocol.rb} +1 -72
- data/lib/thrift_client/thrift/struct.rb +15 -0
- data/lib/thrift_client/thrift/transport.rb +208 -0
- data/test/em_test.rb +1 -0
- data/test/foobar/bar_service.rb +133 -0
- data/test/foobar/common_service.rb +388 -0
- data/test/foobar/foo_service.rb +133 -0
- data/test/{foobar_constants.rb → foobar/foobar_constants.rb} +3 -3
- data/test/{foobar_types.rb → foobar/foobar_types.rb} +12 -10
- data/test/foobar/handler.rb +74 -0
- data/test/helper.rb +50 -0
- data/test/passport.rb +51 -0
- data/test/start_server.rb +8 -0
- data/test/test.rb +27 -0
- data/test/test_client.rb +111 -0
- data/test/test_config.rb +54 -0
- data/test/test_connection_pool.rb +43 -0
- data/test/test_eventmachine_transprot.rb +146 -0
- data/test/test_multiplexed.rb +62 -0
- metadata +47 -24
- data/lib/thrift_client/multi_client_server.rb +0 -59
- data/lib/thrift_client/single_client_server.rb +0 -37
- data/test/client_test.rb +0 -172
- data/test/foobar_service.rb +0 -282
- data/test/multiplexed_protocol_test.rb +0 -60
- data/test/multiplexed_server.rb +0 -102
- data/test/server.rb +0 -97
@@ -1,60 +0,0 @@
|
|
1
|
-
$:.unshift File.expand_path("../../lib", __FILE__)
|
2
|
-
$:.unshift File.expand_path("../../test", __FILE__)
|
3
|
-
|
4
|
-
require "test/unit"
|
5
|
-
require "thrift_client"
|
6
|
-
require "foobar_service"
|
7
|
-
require 'foobar_types'
|
8
|
-
require 'thrift'
|
9
|
-
# require 'yaml'
|
10
|
-
|
11
|
-
class ClientTest < Test::Unit::TestCase
|
12
|
-
include Test::Unit::Assertions
|
13
|
-
def setup
|
14
|
-
super
|
15
|
-
transport = Thrift::Socket.new('127.0.0.1', 9999)
|
16
|
-
transport = Thrift::FramedTransport.new(transport)
|
17
|
-
protocol = Thrift::BinaryProtocol.new(transport)
|
18
|
-
# protocol = Thrift::MultiplexedProtocol.new(protocol,"foobar")
|
19
|
-
@client = Foo::FoobarService::Client.new(protocol)
|
20
|
-
transport.open
|
21
|
-
puts "setup"
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_multiprotocol
|
25
|
-
puts "test start"
|
26
|
-
|
27
|
-
@client.ping
|
28
|
-
|
29
|
-
|
30
|
-
assert_nothing_raised do @client.ping
|
31
|
-
end
|
32
|
-
|
33
|
-
bar = @client.getBar
|
34
|
-
|
35
|
-
assert_not_nil(bar)
|
36
|
-
# puts bar.to_hash.class
|
37
|
-
# hash_bar = bar.to_hash
|
38
|
-
# puts hash_bar['first']
|
39
|
-
# puts hash_bar['second']
|
40
|
-
# puts hash_bar['third']
|
41
|
-
# puts hash_bar['fourth']
|
42
|
-
|
43
|
-
foo = Foo::Foo.new
|
44
|
-
foo.first = 1
|
45
|
-
foo.second = 2
|
46
|
-
foo.third = 3.0
|
47
|
-
foo.fourth = "4"
|
48
|
-
assert(@client.putFoo(foo))
|
49
|
-
|
50
|
-
assert_nothing_raised do @client.ping
|
51
|
-
end
|
52
|
-
|
53
|
-
puts "test stop"
|
54
|
-
end
|
55
|
-
|
56
|
-
def teardown
|
57
|
-
super
|
58
|
-
puts "teardown"
|
59
|
-
end
|
60
|
-
end
|
data/test/multiplexed_server.rb
DELETED
@@ -1,102 +0,0 @@
|
|
1
|
-
$:.unshift File.expand_path("../../test", __FILE__)
|
2
|
-
$:.unshift File.expand_path("../../lib", __FILE__)
|
3
|
-
require 'thrift'
|
4
|
-
require 'foobar_service'
|
5
|
-
require 'foobar_types'
|
6
|
-
require 'thrift_client'
|
7
|
-
|
8
|
-
module Server
|
9
|
-
include Thrift
|
10
|
-
|
11
|
-
class FooHandler
|
12
|
-
|
13
|
-
def ping
|
14
|
-
puts "ping"
|
15
|
-
end
|
16
|
-
|
17
|
-
def getBar
|
18
|
-
bar = Foo::Bar.new
|
19
|
-
bar.fourth = "4"
|
20
|
-
bar.third = 3.0
|
21
|
-
bar.second = 2
|
22
|
-
bar.first = 1
|
23
|
-
return bar
|
24
|
-
end
|
25
|
-
|
26
|
-
def putFoo(foo)
|
27
|
-
puts foo.inspect
|
28
|
-
return true
|
29
|
-
end
|
30
|
-
|
31
|
-
def getTimeout
|
32
|
-
sleep(2)
|
33
|
-
return false
|
34
|
-
end
|
35
|
-
|
36
|
-
def getError()
|
37
|
-
puts "error"
|
38
|
-
raise ApplicationException.new("Exception")
|
39
|
-
return true
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.start_server(host, port, serverClass)
|
45
|
-
handler = FooHandler.new
|
46
|
-
foo_processor = Foo::FoobarService::Processor.new(handler)
|
47
|
-
# puts foo_processor.class.name.split("::")[-2].downcase.gsub("service","")
|
48
|
-
# multi_processor = Thrift::MultiplexedProcessor.new
|
49
|
-
# multi_processor.register(foo_processor.class.name.split("::")[-2].downcase.gsub("service",""), foo_processor)
|
50
|
-
transport = ServerSocket.new(host, port)
|
51
|
-
# transport = FramedTransport.new(transport)
|
52
|
-
transport_factory = FramedTransportFactory.new
|
53
|
-
args = [foo_processor, transport, transport_factory]
|
54
|
-
if serverClass == NonblockingServer
|
55
|
-
# logger = Logger.new(STDOUT)
|
56
|
-
# logger.level = Logger::WARN
|
57
|
-
# args << logger
|
58
|
-
end
|
59
|
-
server = serverClass.new(*args)
|
60
|
-
@server_thread = Thread.new do
|
61
|
-
server.serve
|
62
|
-
end
|
63
|
-
@server = server
|
64
|
-
end
|
65
|
-
|
66
|
-
def self.shutdown
|
67
|
-
return if @server.nil?
|
68
|
-
if @server.respond_to? :shutdown
|
69
|
-
@server.shutdown
|
70
|
-
else
|
71
|
-
@server_thread.kill
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def resolve_const(const)
|
77
|
-
const and const.split('::').inject(Object) { |k,c| k.const_get(c) }
|
78
|
-
end
|
79
|
-
|
80
|
-
host = '127.0.0.1'
|
81
|
-
port = ARGV[0] || 9999
|
82
|
-
|
83
|
-
#serverklass = 'Thrift::SimpleServer'
|
84
|
-
#serverklass = 'Thrift::ThreadedServer'
|
85
|
-
serverklass = 'Thrift::ThreadPoolServer'
|
86
|
-
# serverklass = 'Thrift::NonblockingServer'
|
87
|
-
|
88
|
-
Server.start_server(host, port.to_i, resolve_const(serverklass))
|
89
|
-
# let our host know that the interpreter has started
|
90
|
-
# ideally we'd wait until the server was serving, but we don't have a hook for that
|
91
|
-
|
92
|
-
puts "multiplexed server start on #{host}:#{port}"
|
93
|
-
puts ""
|
94
|
-
|
95
|
-
# STDOUT.flush
|
96
|
-
|
97
|
-
Marshal.load(STDIN) # wait until we're instructed to shut down
|
98
|
-
|
99
|
-
Server.shutdown
|
100
|
-
|
101
|
-
puts "server shutdown"
|
102
|
-
|
data/test/server.rb
DELETED
@@ -1,97 +0,0 @@
|
|
1
|
-
$:.unshift File.expand_path("../../test", __FILE__)
|
2
|
-
require 'thrift'
|
3
|
-
require 'foobar_service'
|
4
|
-
require 'foobar_types'
|
5
|
-
|
6
|
-
module Server
|
7
|
-
include Thrift
|
8
|
-
|
9
|
-
class FooHandler
|
10
|
-
|
11
|
-
def ping
|
12
|
-
puts "ping"
|
13
|
-
end
|
14
|
-
|
15
|
-
def getBar
|
16
|
-
bar = Foo::Bar.new
|
17
|
-
bar.fourth = "4"
|
18
|
-
bar.third = 3.0
|
19
|
-
bar.second = 2
|
20
|
-
bar.first = 1
|
21
|
-
return bar
|
22
|
-
end
|
23
|
-
|
24
|
-
def putFoo(foo)
|
25
|
-
puts foo.inspect
|
26
|
-
return true
|
27
|
-
end
|
28
|
-
|
29
|
-
def getTimeout
|
30
|
-
sleep(2)
|
31
|
-
return false
|
32
|
-
end
|
33
|
-
|
34
|
-
def getError()
|
35
|
-
puts "error"
|
36
|
-
raise ApplicationException.new("Exception")
|
37
|
-
return true
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.start_server(host, port, serverClass)
|
43
|
-
handler = FooHandler.new
|
44
|
-
processor = Foo::FoobarService::Processor.new(handler)
|
45
|
-
transport = ServerSocket.new(host, port)
|
46
|
-
# transport = FramedTransport.new(transport)
|
47
|
-
transport_factory = FramedTransportFactory.new
|
48
|
-
args = [processor, transport, transport_factory]
|
49
|
-
if serverClass == NonblockingServer
|
50
|
-
# logger = Logger.new(STDOUT)
|
51
|
-
# logger.level = Logger::WARN
|
52
|
-
# args << logger
|
53
|
-
end
|
54
|
-
server = serverClass.new(*args)
|
55
|
-
@server_thread = Thread.new do
|
56
|
-
server.serve
|
57
|
-
end
|
58
|
-
@server = server
|
59
|
-
end
|
60
|
-
|
61
|
-
def self.shutdown
|
62
|
-
return if @server.nil?
|
63
|
-
if @server.respond_to? :shutdown
|
64
|
-
@server.shutdown
|
65
|
-
else
|
66
|
-
@server_thread.kill
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def resolve_const(const)
|
72
|
-
const and const.split('::').inject(Object) { |k,c| k.const_get(c) }
|
73
|
-
end
|
74
|
-
|
75
|
-
host = '127.0.0.1'
|
76
|
-
port = ARGV[0] || 9999
|
77
|
-
|
78
|
-
#serverklass = 'Thrift::SimpleServer'
|
79
|
-
#serverklass = 'Thrift::ThreadedServer'
|
80
|
-
serverklass = 'Thrift::ThreadPoolServer'
|
81
|
-
# serverklass = 'Thrift::NonblockingServer'
|
82
|
-
|
83
|
-
Server.start_server(host, port.to_i, resolve_const(serverklass))
|
84
|
-
# let our host know that the interpreter has started
|
85
|
-
# ideally we'd wait until the server was serving, but we don't have a hook for that
|
86
|
-
|
87
|
-
puts "server start on #{host}:#{port}"
|
88
|
-
puts ""
|
89
|
-
|
90
|
-
# STDOUT.flush
|
91
|
-
|
92
|
-
Marshal.load(STDIN) # wait until we're instructed to shut down
|
93
|
-
|
94
|
-
Server.shutdown
|
95
|
-
|
96
|
-
puts "server shutdown"
|
97
|
-
|