thrift-mavericks 0.8.0 → 0.9.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +8 -8
  2. data/ext/binary_protocol_accelerated.c +21 -2
  3. data/ext/bytes.c +36 -0
  4. data/ext/bytes.h +31 -0
  5. data/ext/compact_protocol.c +24 -7
  6. data/ext/constants.h +5 -5
  7. data/ext/extconf.rb +3 -1
  8. data/ext/memory_buffer.c +11 -8
  9. data/ext/protocol.c +0 -185
  10. data/ext/protocol.h +0 -20
  11. data/ext/struct.c +0 -3
  12. data/ext/thrift_native.c +10 -11
  13. data/lib/thrift.rb +3 -0
  14. data/lib/thrift/bytes.rb +131 -0
  15. data/lib/thrift/exceptions.rb +3 -0
  16. data/lib/thrift/protocol/base_protocol.rb +96 -9
  17. data/lib/thrift/protocol/binary_protocol.rb +15 -7
  18. data/lib/thrift/protocol/compact_protocol.rb +14 -6
  19. data/lib/thrift/protocol/json_protocol.rb +766 -0
  20. data/lib/thrift/server/mongrel_http_server.rb +2 -0
  21. data/lib/thrift/server/thin_http_server.rb +91 -0
  22. data/lib/thrift/struct.rb +1 -1
  23. data/lib/thrift/struct_union.rb +2 -2
  24. data/lib/thrift/transport/base_transport.rb +22 -20
  25. data/lib/thrift/transport/buffered_transport.rb +16 -10
  26. data/lib/thrift/transport/framed_transport.rb +11 -10
  27. data/lib/thrift/transport/http_client_transport.rb +11 -6
  28. data/lib/thrift/transport/io_stream_transport.rb +1 -1
  29. data/lib/thrift/transport/memory_buffer_transport.rb +6 -6
  30. data/lib/thrift/transport/socket.rb +4 -2
  31. data/spec/ThriftSpec.thrift +52 -1
  32. data/spec/base_protocol_spec.rb +108 -51
  33. data/spec/base_transport_spec.rb +49 -50
  34. data/spec/binary_protocol_accelerated_spec.rb +9 -13
  35. data/spec/binary_protocol_spec.rb +15 -10
  36. data/spec/binary_protocol_spec_shared.rb +92 -12
  37. data/spec/bytes_spec.rb +160 -0
  38. data/spec/client_spec.rb +13 -14
  39. data/spec/compact_protocol_spec.rb +4 -5
  40. data/spec/exception_spec.rb +39 -40
  41. data/spec/gen-rb/thrift_spec_types.rb +192 -0
  42. data/spec/http_client_spec.rb +65 -9
  43. data/spec/json_protocol_spec.rb +513 -0
  44. data/spec/nonblocking_server_spec.rb +18 -20
  45. data/spec/processor_spec.rb +13 -16
  46. data/spec/serializer_spec.rb +17 -19
  47. data/spec/server_socket_spec.rb +6 -7
  48. data/spec/server_spec.rb +46 -58
  49. data/spec/socket_spec.rb +11 -11
  50. data/spec/socket_spec_shared.rb +1 -1
  51. data/spec/spec_helper.rb +13 -10
  52. data/spec/struct_nested_containers_spec.rb +191 -0
  53. data/spec/struct_spec.rb +84 -86
  54. data/spec/thin_http_server_spec.rb +140 -0
  55. data/spec/types_spec.rb +65 -66
  56. data/spec/union_spec.rb +57 -47
  57. data/spec/unix_socket_spec.rb +8 -9
  58. metadata +72 -14
  59. data/spec/mongrel_http_server_spec.rb +0 -117
@@ -17,11 +17,9 @@
17
17
  # under the License.
18
18
  #
19
19
 
20
- require File.expand_path("#{File.dirname(__FILE__)}/spec_helper")
20
+ require 'spec_helper'
21
21
 
22
- class ThriftNonblockingServerSpec < Spec::ExampleGroup
23
- include Thrift
24
- include SpecNamespace
22
+ describe 'NonblockingServer' do
25
23
 
26
24
  class Handler
27
25
  def initialize
@@ -55,7 +53,7 @@ class ThriftNonblockingServerSpec < Spec::ExampleGroup
55
53
  end
56
54
  end
57
55
 
58
- class SpecTransport < BaseTransport
56
+ class SpecTransport < Thrift::BaseTransport
59
57
  def initialize(transport, queue)
60
58
  @transport = transport
61
59
  @queue = queue
@@ -89,7 +87,7 @@ class ThriftNonblockingServerSpec < Spec::ExampleGroup
89
87
  end
90
88
  end
91
89
 
92
- class SpecServerSocket < ServerSocket
90
+ class SpecServerSocket < Thrift::ServerSocket
93
91
  def initialize(host, port, queue)
94
92
  super(host, port)
95
93
  @queue = queue
@@ -105,13 +103,13 @@ class ThriftNonblockingServerSpec < Spec::ExampleGroup
105
103
  before(:each) do
106
104
  @port = 43251
107
105
  handler = Handler.new
108
- processor = NonblockingService::Processor.new(handler)
106
+ processor = SpecNamespace::NonblockingService::Processor.new(handler)
109
107
  queue = Queue.new
110
108
  @transport = SpecServerSocket.new('localhost', @port, queue)
111
- transport_factory = FramedTransportFactory.new
109
+ transport_factory = Thrift::FramedTransportFactory.new
112
110
  logger = Logger.new(STDERR)
113
111
  logger.level = Logger::WARN
114
- @server = NonblockingServer.new(processor, @transport, transport_factory, nil, 5, logger)
112
+ @server = Thrift::NonblockingServer.new(processor, @transport, transport_factory, nil, 5, logger)
115
113
  handler.server = @server
116
114
  @server_thread = Thread.new(Thread.current) do |master_thread|
117
115
  begin
@@ -136,9 +134,9 @@ class ThriftNonblockingServerSpec < Spec::ExampleGroup
136
134
  end
137
135
 
138
136
  def setup_client(queue = nil)
139
- transport = SpecTransport.new(FramedTransport.new(Socket.new('localhost', @port)), queue)
140
- protocol = BinaryProtocol.new(transport)
141
- client = NonblockingService::Client.new(protocol)
137
+ transport = SpecTransport.new(Thrift::FramedTransport.new(Thrift::Socket.new('localhost', @port)), queue)
138
+ protocol = Thrift::BinaryProtocol.new(transport)
139
+ client = SpecNamespace::NonblockingService::Client.new(protocol)
142
140
  transport.open
143
141
  @clients << [client, transport]
144
142
  client
@@ -178,8 +176,8 @@ class ThriftNonblockingServerSpec < Spec::ExampleGroup
178
176
 
179
177
  it "should handle basic message passing" do
180
178
  client = setup_client
181
- client.greeting(true).should == Hello.new
182
- client.greeting(false).should == Hello.new(:greeting => 'Aloha!')
179
+ client.greeting(true).should == SpecNamespace::Hello.new
180
+ client.greeting(false).should == SpecNamespace::Hello.new(:greeting => 'Aloha!')
183
181
  @server.shutdown
184
182
  end
185
183
 
@@ -214,15 +212,15 @@ class ThriftNonblockingServerSpec < Spec::ExampleGroup
214
212
  queues[4] << :hello
215
213
  queues[5] << :hello
216
214
  queues[6] << :hello
217
- 3.times { result.pop.should == Hello.new }
218
- client.greeting(true).should == Hello.new
215
+ 3.times { result.pop.should == SpecNamespace::Hello.new }
216
+ client.greeting(true).should == SpecNamespace::Hello.new
219
217
  queues[5] << [:unblock, 4]
220
218
  4.times { result.pop.should be_true }
221
219
  queues[2] << :hello
222
- result.pop.should == Hello.new
223
- client.greeting(false).should == Hello.new(:greeting => 'Aloha!')
220
+ result.pop.should == SpecNamespace::Hello.new
221
+ client.greeting(false).should == SpecNamespace::Hello.new(:greeting => 'Aloha!')
224
222
  7.times { queues.shift << :exit }
225
- client.greeting(true).should == Hello.new
223
+ client.greeting(true).should == SpecNamespace::Hello.new
226
224
  @server.shutdown
227
225
  end
228
226
 
@@ -257,7 +255,7 @@ class ThriftNonblockingServerSpec < Spec::ExampleGroup
257
255
 
258
256
  it "should allow shutting down in response to a message" do
259
257
  client = setup_client
260
- client.greeting(true).should == Hello.new
258
+ client.greeting(true).should == SpecNamespace::Hello.new
261
259
  client.shutdown
262
260
  @server_thread.join(2).should_not be_nil
263
261
  end
@@ -17,16 +17,15 @@
17
17
  # under the License.
18
18
  #
19
19
 
20
- require File.expand_path("#{File.dirname(__FILE__)}/spec_helper")
20
+ require 'spec_helper'
21
21
 
22
- class ThriftProcessorSpec < Spec::ExampleGroup
23
- include Thrift
22
+ describe 'Processor' do
24
23
 
25
24
  class ProcessorSpec
26
25
  include Thrift::Processor
27
26
  end
28
27
 
29
- describe "Processor" do
28
+ describe Thrift::Processor do
30
29
  before(:each) do
31
30
  @processor = ProcessorSpec.new(mock("MockHandler"))
32
31
  @prot = mock("MockProtocol")
@@ -34,28 +33,26 @@ class ThriftProcessorSpec < Spec::ExampleGroup
34
33
 
35
34
  def mock_trans(obj)
36
35
  obj.should_receive(:trans).ordered.and_return do
37
- mock("trans").tee do |trans|
36
+ mock("trans").tap do |trans|
38
37
  trans.should_receive(:flush).ordered
39
38
  end
40
39
  end
41
40
  end
42
41
 
43
42
  it "should call process_<message> when it receives that message" do
44
- @prot.should_receive(:read_message_begin).ordered.and_return ['testMessage', MessageTypes::CALL, 17]
43
+ @prot.should_receive(:read_message_begin).ordered.and_return ['testMessage', Thrift::MessageTypes::CALL, 17]
45
44
  @processor.should_receive(:process_testMessage).with(17, @prot, @prot).ordered
46
45
  @processor.process(@prot, @prot).should == true
47
46
  end
48
47
 
49
48
  it "should raise an ApplicationException when the received message cannot be processed" do
50
- @prot.should_receive(:read_message_begin).ordered.and_return ['testMessage', MessageTypes::CALL, 4]
51
- @prot.should_receive(:skip).with(Types::STRUCT).ordered
49
+ @prot.should_receive(:read_message_begin).ordered.and_return ['testMessage', Thrift::MessageTypes::CALL, 4]
50
+ @prot.should_receive(:skip).with(Thrift::Types::STRUCT).ordered
52
51
  @prot.should_receive(:read_message_end).ordered
53
- @prot.should_receive(:write_message_begin).with('testMessage', MessageTypes::EXCEPTION, 4).ordered
54
- ApplicationException.should_receive(:new).with(ApplicationException::UNKNOWN_METHOD, "Unknown function testMessage").and_return do
55
- mock(ApplicationException).tee do |e|
56
- e.should_receive(:write).with(@prot).ordered
57
- end
58
- end
52
+ @prot.should_receive(:write_message_begin).with('testMessage', Thrift::MessageTypes::EXCEPTION, 4).ordered
53
+ e = mock(Thrift::ApplicationException)
54
+ e.should_receive(:write).with(@prot).ordered
55
+ Thrift::ApplicationException.should_receive(:new).with(Thrift::ApplicationException::UNKNOWN_METHOD, "Unknown function testMessage").and_return(e)
59
56
  @prot.should_receive(:write_message_end).ordered
60
57
  mock_trans(@prot)
61
58
  @processor.process(@prot, @prot)
@@ -63,7 +60,7 @@ class ThriftProcessorSpec < Spec::ExampleGroup
63
60
 
64
61
  it "should pass args off to the args class" do
65
62
  args_class = mock("MockArgsClass")
66
- args = mock("#<MockArgsClass:mock>").tee do |args|
63
+ args = mock("#<MockArgsClass:mock>").tap do |args|
67
64
  args.should_receive(:read).with(@prot).ordered
68
65
  end
69
66
  args_class.should_receive(:new).and_return args
@@ -72,7 +69,7 @@ class ThriftProcessorSpec < Spec::ExampleGroup
72
69
  end
73
70
 
74
71
  it "should write out a reply when asked" do
75
- @prot.should_receive(:write_message_begin).with('testMessage', MessageTypes::REPLY, 23).ordered
72
+ @prot.should_receive(:write_message_begin).with('testMessage', Thrift::MessageTypes::REPLY, 23).ordered
76
73
  result = mock("MockResult")
77
74
  result.should_receive(:write).with(@prot).ordered
78
75
  @prot.should_receive(:write_message_end).ordered
@@ -17,53 +17,51 @@
17
17
  # under the License.
18
18
  #
19
19
 
20
- require File.expand_path("#{File.dirname(__FILE__)}/spec_helper")
20
+ require 'spec_helper'
21
21
 
22
- class ThriftSerializerSpec < Spec::ExampleGroup
23
- include Thrift
24
- include SpecNamespace
22
+ describe 'Serializer' do
25
23
 
26
- describe Serializer do
24
+ describe Thrift::Serializer do
27
25
  it "should serialize structs to binary by default" do
28
- serializer = Serializer.new(Thrift::BinaryProtocolAcceleratedFactory.new)
29
- data = serializer.serialize(Hello.new(:greeting => "'Ello guv'nor!"))
26
+ serializer = Thrift::Serializer.new(Thrift::BinaryProtocolAcceleratedFactory.new)
27
+ data = serializer.serialize(SpecNamespace::Hello.new(:greeting => "'Ello guv'nor!"))
30
28
  data.should == "\x0B\x00\x01\x00\x00\x00\x0E'Ello guv'nor!\x00"
31
29
  end
32
30
 
33
31
  it "should serialize structs to the given protocol" do
34
- protocol = BaseProtocol.new(mock("transport"))
32
+ protocol = Thrift::BaseProtocol.new(mock("transport"))
35
33
  protocol.should_receive(:write_struct_begin).with("SpecNamespace::Hello")
36
- protocol.should_receive(:write_field_begin).with("greeting", Types::STRING, 1)
34
+ protocol.should_receive(:write_field_begin).with("greeting", Thrift::Types::STRING, 1)
37
35
  protocol.should_receive(:write_string).with("Good day")
38
36
  protocol.should_receive(:write_field_end)
39
37
  protocol.should_receive(:write_field_stop)
40
38
  protocol.should_receive(:write_struct_end)
41
39
  protocol_factory = mock("ProtocolFactory")
42
40
  protocol_factory.stub!(:get_protocol).and_return(protocol)
43
- serializer = Serializer.new(protocol_factory)
44
- serializer.serialize(Hello.new(:greeting => "Good day"))
41
+ serializer = Thrift::Serializer.new(protocol_factory)
42
+ serializer.serialize(SpecNamespace::Hello.new(:greeting => "Good day"))
45
43
  end
46
44
  end
47
45
 
48
- describe Deserializer do
46
+ describe Thrift::Deserializer do
49
47
  it "should deserialize structs from binary by default" do
50
- deserializer = Deserializer.new
48
+ deserializer = Thrift::Deserializer.new
51
49
  data = "\x0B\x00\x01\x00\x00\x00\x0E'Ello guv'nor!\x00"
52
- deserializer.deserialize(Hello.new, data).should == Hello.new(:greeting => "'Ello guv'nor!")
50
+ deserializer.deserialize(SpecNamespace::Hello.new, data).should == SpecNamespace::Hello.new(:greeting => "'Ello guv'nor!")
53
51
  end
54
52
 
55
53
  it "should deserialize structs from the given protocol" do
56
- protocol = BaseProtocol.new(mock("transport"))
54
+ protocol = Thrift::BaseProtocol.new(mock("transport"))
57
55
  protocol.should_receive(:read_struct_begin).and_return("SpecNamespace::Hello")
58
- protocol.should_receive(:read_field_begin).and_return(["greeting", Types::STRING, 1],
59
- [nil, Types::STOP, 0])
56
+ protocol.should_receive(:read_field_begin).and_return(["greeting", Thrift::Types::STRING, 1],
57
+ [nil, Thrift::Types::STOP, 0])
60
58
  protocol.should_receive(:read_string).and_return("Good day")
61
59
  protocol.should_receive(:read_field_end)
62
60
  protocol.should_receive(:read_struct_end)
63
61
  protocol_factory = mock("ProtocolFactory")
64
62
  protocol_factory.stub!(:get_protocol).and_return(protocol)
65
- deserializer = Deserializer.new(protocol_factory)
66
- deserializer.deserialize(Hello.new, "").should == Hello.new(:greeting => "Good day")
63
+ deserializer = Thrift::Deserializer.new(protocol_factory)
64
+ deserializer.deserialize(SpecNamespace::Hello.new, "").should == SpecNamespace::Hello.new(:greeting => "Good day")
67
65
  end
68
66
  end
69
67
  end
@@ -17,15 +17,14 @@
17
17
  # under the License.
18
18
  #
19
19
 
20
- require File.expand_path("#{File.dirname(__FILE__)}/spec_helper")
20
+ require 'spec_helper'
21
21
  require File.expand_path("#{File.dirname(__FILE__)}/socket_spec_shared")
22
22
 
23
- class ThriftServerSocketSpec < Spec::ExampleGroup
24
- include Thrift
23
+ describe 'Thrift::ServerSocket' do
25
24
 
26
- describe ServerSocket do
25
+ describe Thrift::ServerSocket do
27
26
  before(:each) do
28
- @socket = ServerSocket.new(1234)
27
+ @socket = Thrift::ServerSocket.new(1234)
29
28
  end
30
29
 
31
30
  it "should create a handle when calling listen" do
@@ -34,7 +33,7 @@ class ThriftServerSocketSpec < Spec::ExampleGroup
34
33
  end
35
34
 
36
35
  it "should accept an optional host argument" do
37
- @socket = ServerSocket.new('localhost', 1234)
36
+ @socket = Thrift::ServerSocket.new('localhost', 1234)
38
37
  TCPServer.should_receive(:new).with('localhost', 1234)
39
38
  @socket.listen
40
39
  end
@@ -46,7 +45,7 @@ class ThriftServerSocketSpec < Spec::ExampleGroup
46
45
  sock = mock("sock")
47
46
  handle.should_receive(:accept).and_return(sock)
48
47
  trans = mock("Socket")
49
- Socket.should_receive(:new).and_return(trans)
48
+ Thrift::Socket.should_receive(:new).and_return(trans)
50
49
  trans.should_receive(:handle=).with(sock)
51
50
  @socket.accept.should == trans
52
51
  end
data/spec/server_spec.rb CHANGED
@@ -16,39 +16,30 @@
16
16
  # specific language governing permissions and limitations
17
17
  # under the License.
18
18
  #
19
- require File.expand_path("#{File.dirname(__FILE__)}/spec_helper")
19
+ require 'spec_helper'
20
20
 
21
- class ThriftServerSpec < Spec::ExampleGroup
22
- include Thrift
21
+ describe 'Server' do
23
22
 
24
- describe BaseServer do
23
+ describe Thrift::BaseServer do
25
24
  it "should default to BaseTransportFactory and BinaryProtocolFactory when not specified" do
26
- server = BaseServer.new(mock("Processor"), mock("BaseServerTransport"))
27
- server.instance_variable_get(:'@transport_factory').should be_an_instance_of(BaseTransportFactory)
28
- server.instance_variable_get(:'@protocol_factory').should be_an_instance_of(BinaryProtocolFactory)
25
+ server = Thrift::BaseServer.new(mock("Processor"), mock("BaseServerTransport"))
26
+ server.instance_variable_get(:'@transport_factory').should be_an_instance_of(Thrift::BaseTransportFactory)
27
+ server.instance_variable_get(:'@protocol_factory').should be_an_instance_of(Thrift::BinaryProtocolFactory)
29
28
  end
30
29
 
31
30
  # serve is a noop, so can't test that
32
31
  end
33
32
 
34
- shared_examples_for "servers" do
33
+ describe Thrift::SimpleServer do
35
34
  before(:each) do
36
35
  @processor = mock("Processor")
37
36
  @serverTrans = mock("ServerTransport")
38
37
  @trans = mock("BaseTransport")
39
38
  @prot = mock("BaseProtocol")
40
39
  @client = mock("Client")
41
- @server = server_type.new(@processor, @serverTrans, @trans, @prot)
40
+ @server = described_class.new(@processor, @serverTrans, @trans, @prot)
42
41
  end
43
- end
44
-
45
- describe SimpleServer do
46
- it_should_behave_like "servers"
47
-
48
- def server_type
49
- SimpleServer
50
- end
51
-
42
+
52
43
  it "should serve in the main thread" do
53
44
  @serverTrans.should_receive(:listen).ordered
54
45
  @serverTrans.should_receive(:accept).exactly(3).times.and_return(@client)
@@ -68,11 +59,14 @@ class ThriftServerSpec < Spec::ExampleGroup
68
59
  end
69
60
  end
70
61
 
71
- describe ThreadedServer do
72
- it_should_behave_like "servers"
73
-
74
- def server_type
75
- ThreadedServer
62
+ describe Thrift::ThreadedServer do
63
+ before(:each) do
64
+ @processor = mock("Processor")
65
+ @serverTrans = mock("ServerTransport")
66
+ @trans = mock("BaseTransport")
67
+ @prot = mock("BaseProtocol")
68
+ @client = mock("Client")
69
+ @server = described_class.new(@processor, @serverTrans, @trans, @prot)
76
70
  end
77
71
 
78
72
  it "should serve using threads" do
@@ -95,50 +89,44 @@ class ThriftServerSpec < Spec::ExampleGroup
95
89
  end
96
90
  end
97
91
 
98
- describe ThreadPoolServer do
99
- it_should_behave_like "servers"
100
-
101
- def server_type
102
- # put this stuff here so it runs before the server is created
103
- @threadQ = mock("SizedQueue")
104
- SizedQueue.should_receive(:new).with(20).and_return(@threadQ)
105
- @excQ = mock("Queue")
106
- Queue.should_receive(:new).and_return(@excQ)
107
- ThreadPoolServer
108
- end
109
-
110
- it "should set up the queues" do
111
- @server.instance_variable_get(:'@thread_q').should be(@threadQ)
112
- @server.instance_variable_get(:'@exception_q').should be(@excQ)
92
+ describe Thrift::ThreadPoolServer do
93
+ before(:each) do
94
+ @processor = mock("Processor")
95
+ @server_trans = mock("ServerTransport")
96
+ @trans = mock("BaseTransport")
97
+ @prot = mock("BaseProtocol")
98
+ @client = mock("Client")
99
+ @server = described_class.new(@processor, @server_trans, @trans, @prot)
113
100
  end
114
101
 
115
102
  it "should serve inside a thread" do
116
- Thread.should_receive(:new).and_return do |block|
117
- @server.should_receive(:serve)
118
- block.call
119
- @server.rspec_verify
103
+ exception_q = @server.instance_variable_get(:@exception_q)
104
+ described_class.any_instance.should_receive(:serve) do
105
+ exception_q.push(StandardError.new('ERROR'))
120
106
  end
121
- @excQ.should_receive(:pop).and_throw(:popped)
122
- lambda { @server.rescuable_serve }.should throw_symbol(:popped)
107
+ expect { @server.rescuable_serve }.to(raise_error('ERROR'))
123
108
  end
124
109
 
125
110
  it "should avoid running the server twice when retrying rescuable_serve" do
126
- Thread.should_receive(:new).and_return do |block|
127
- @server.should_receive(:serve)
128
- block.call
129
- @server.rspec_verify
111
+ exception_q = @server.instance_variable_get(:@exception_q)
112
+ described_class.any_instance.should_receive(:serve) do
113
+ exception_q.push(StandardError.new('ERROR1'))
114
+ exception_q.push(StandardError.new('ERROR2'))
130
115
  end
131
- @excQ.should_receive(:pop).twice.and_throw(:popped)
132
- lambda { @server.rescuable_serve }.should throw_symbol(:popped)
133
- lambda { @server.rescuable_serve }.should throw_symbol(:popped)
116
+ expect { @server.rescuable_serve }.to(raise_error('ERROR1'))
117
+ expect { @server.rescuable_serve }.to(raise_error('ERROR2'))
134
118
  end
135
119
 
136
120
  it "should serve using a thread pool" do
137
- @serverTrans.should_receive(:listen).ordered
138
- @threadQ.should_receive(:push).with(:token)
139
- @threadQ.should_receive(:pop)
121
+ thread_q = mock("SizedQueue")
122
+ exception_q = mock("Queue")
123
+ @server.instance_variable_set(:@thread_q, thread_q)
124
+ @server.instance_variable_set(:@exception_q, exception_q)
125
+ @server_trans.should_receive(:listen).ordered
126
+ thread_q.should_receive(:push).with(:token)
127
+ thread_q.should_receive(:pop)
140
128
  Thread.should_receive(:new).and_yield
141
- @serverTrans.should_receive(:accept).exactly(3).times.and_return(@client)
129
+ @server_trans.should_receive(:accept).exactly(3).times.and_return(@client)
142
130
  @trans.should_receive(:get_transport).exactly(3).times.and_return(@trans)
143
131
  @prot.should_receive(:get_protocol).exactly(3).times.and_return(@prot)
144
132
  x = 0
@@ -151,9 +139,9 @@ class ThriftServerSpec < Spec::ExampleGroup
151
139
  end
152
140
  end
153
141
  @trans.should_receive(:close).exactly(3).times
154
- @excQ.should_receive(:push).with(error).and_throw(:stop)
155
- @serverTrans.should_receive(:close)
156
- lambda { @server.serve }.should throw_symbol(:stop)
142
+ exception_q.should_receive(:push).with(error).and_throw(:stop)
143
+ @server_trans.should_receive(:close)
144
+ expect { @server.serve }.to(throw_symbol(:stop))
157
145
  end
158
146
  end
159
147
  end
data/spec/socket_spec.rb CHANGED
@@ -17,18 +17,18 @@
17
17
  # under the License.
18
18
  #
19
19
 
20
- require File.expand_path("#{File.dirname(__FILE__)}/spec_helper")
20
+ require 'spec_helper'
21
21
  require File.expand_path("#{File.dirname(__FILE__)}/socket_spec_shared")
22
22
 
23
- class ThriftSocketSpec < Spec::ExampleGroup
24
- include Thrift
23
+ describe 'Socket' do
25
24
 
26
- describe Socket do
25
+ describe Thrift::Socket do
27
26
  before(:each) do
28
- @socket = Socket.new
27
+ @socket = Thrift::Socket.new
29
28
  @handle = mock("Handle", :closed? => false)
30
29
  @handle.stub!(:close)
31
30
  @handle.stub!(:connect_nonblock)
31
+ @handle.stub!(:setsockopt)
32
32
  ::Socket.stub!(:new).and_return(@handle)
33
33
  end
34
34
 
@@ -40,22 +40,22 @@ class ThriftSocketSpec < Spec::ExampleGroup
40
40
  end
41
41
 
42
42
  it "should open a ::Socket with default args" do
43
- ::Socket.should_receive(:new).and_return(mock("Handle", :connect_nonblock => true))
44
- ::Socket.should_receive(:getaddrinfo).with("localhost", 9090).and_return([[]])
43
+ ::Socket.should_receive(:new).and_return(mock("Handle", :connect_nonblock => true, :setsockopt => nil))
44
+ ::Socket.should_receive(:getaddrinfo).with("localhost", 9090, nil, ::Socket::SOCK_STREAM).and_return([[]])
45
45
  ::Socket.should_receive(:sockaddr_in)
46
46
  @socket.open
47
47
  end
48
48
 
49
49
  it "should accept host/port options" do
50
- ::Socket.should_receive(:new).and_return(mock("Handle", :connect_nonblock => true))
51
- ::Socket.should_receive(:getaddrinfo).with("my.domain", 1234).and_return([[]])
50
+ ::Socket.should_receive(:new).and_return(mock("Handle", :connect_nonblock => true, :setsockopt => nil))
51
+ ::Socket.should_receive(:getaddrinfo).with("my.domain", 1234, nil, ::Socket::SOCK_STREAM).and_return([[]])
52
52
  ::Socket.should_receive(:sockaddr_in)
53
- Socket.new('my.domain', 1234).open
53
+ Thrift::Socket.new('my.domain', 1234).open
54
54
  end
55
55
 
56
56
  it "should accept an optional timeout" do
57
57
  ::Socket.stub!(:new)
58
- Socket.new('localhost', 8080, 5).timeout.should == 5
58
+ Thrift::Socket.new('localhost', 8080, 5).timeout.should == 5
59
59
  end
60
60
  end
61
61
  end