sessionm-thrift 0.8.0.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.
Files changed (81) hide show
  1. data/CHANGELOG +1 -0
  2. data/README +43 -0
  3. data/benchmark/Benchmark.thrift +24 -0
  4. data/benchmark/benchmark.rb +271 -0
  5. data/benchmark/client.rb +74 -0
  6. data/benchmark/server.rb +82 -0
  7. data/benchmark/thin_server.rb +44 -0
  8. data/ext/binary_protocol_accelerated.c +441 -0
  9. data/ext/binary_protocol_accelerated.h +20 -0
  10. data/ext/compact_protocol.c +618 -0
  11. data/ext/compact_protocol.h +20 -0
  12. data/ext/constants.h +96 -0
  13. data/ext/extconf.rb +30 -0
  14. data/ext/macros.h +41 -0
  15. data/ext/memory_buffer.c +131 -0
  16. data/ext/memory_buffer.h +20 -0
  17. data/ext/protocol.c +185 -0
  18. data/ext/protocol.h +20 -0
  19. data/ext/strlcpy.c +41 -0
  20. data/ext/strlcpy.h +30 -0
  21. data/ext/struct.c +691 -0
  22. data/ext/struct.h +25 -0
  23. data/ext/thrift_native.c +196 -0
  24. data/lib/thrift.rb +64 -0
  25. data/lib/thrift/client.rb +62 -0
  26. data/lib/thrift/core_ext.rb +23 -0
  27. data/lib/thrift/core_ext/fixnum.rb +29 -0
  28. data/lib/thrift/exceptions.rb +84 -0
  29. data/lib/thrift/processor.rb +57 -0
  30. data/lib/thrift/protocol/base_protocol.rb +290 -0
  31. data/lib/thrift/protocol/binary_protocol.rb +229 -0
  32. data/lib/thrift/protocol/binary_protocol_accelerated.rb +39 -0
  33. data/lib/thrift/protocol/compact_protocol.rb +426 -0
  34. data/lib/thrift/serializer/deserializer.rb +33 -0
  35. data/lib/thrift/serializer/serializer.rb +34 -0
  36. data/lib/thrift/server/base_server.rb +31 -0
  37. data/lib/thrift/server/mongrel_http_server.rb +58 -0
  38. data/lib/thrift/server/nonblocking_server.rb +305 -0
  39. data/lib/thrift/server/simple_server.rb +43 -0
  40. data/lib/thrift/server/thread_pool_server.rb +75 -0
  41. data/lib/thrift/server/threaded_server.rb +47 -0
  42. data/lib/thrift/struct.rb +237 -0
  43. data/lib/thrift/struct_union.rb +192 -0
  44. data/lib/thrift/thrift_native.rb +24 -0
  45. data/lib/thrift/transport/base_server_transport.rb +37 -0
  46. data/lib/thrift/transport/base_transport.rb +107 -0
  47. data/lib/thrift/transport/buffered_transport.rb +108 -0
  48. data/lib/thrift/transport/framed_transport.rb +116 -0
  49. data/lib/thrift/transport/http_client_transport.rb +51 -0
  50. data/lib/thrift/transport/io_stream_transport.rb +39 -0
  51. data/lib/thrift/transport/memory_buffer_transport.rb +125 -0
  52. data/lib/thrift/transport/server_socket.rb +63 -0
  53. data/lib/thrift/transport/socket.rb +137 -0
  54. data/lib/thrift/transport/unix_server_socket.rb +60 -0
  55. data/lib/thrift/transport/unix_socket.rb +40 -0
  56. data/lib/thrift/types.rb +101 -0
  57. data/lib/thrift/union.rb +179 -0
  58. data/spec/ThriftSpec.thrift +132 -0
  59. data/spec/base_protocol_spec.rb +160 -0
  60. data/spec/base_transport_spec.rb +351 -0
  61. data/spec/binary_protocol_accelerated_spec.rb +46 -0
  62. data/spec/binary_protocol_spec.rb +61 -0
  63. data/spec/binary_protocol_spec_shared.rb +375 -0
  64. data/spec/client_spec.rb +100 -0
  65. data/spec/compact_protocol_spec.rb +144 -0
  66. data/spec/exception_spec.rb +142 -0
  67. data/spec/http_client_spec.rb +64 -0
  68. data/spec/mongrel_http_server_spec.rb +117 -0
  69. data/spec/nonblocking_server_spec.rb +265 -0
  70. data/spec/processor_spec.rb +83 -0
  71. data/spec/serializer_spec.rb +69 -0
  72. data/spec/server_socket_spec.rb +80 -0
  73. data/spec/server_spec.rb +159 -0
  74. data/spec/socket_spec.rb +61 -0
  75. data/spec/socket_spec_shared.rb +104 -0
  76. data/spec/spec_helper.rb +58 -0
  77. data/spec/struct_spec.rb +295 -0
  78. data/spec/types_spec.rb +116 -0
  79. data/spec/union_spec.rb +193 -0
  80. data/spec/unix_socket_spec.rb +108 -0
  81. metadata +247 -0
@@ -0,0 +1,116 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing,
13
+ # software distributed under the License is distributed on an
14
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ # KIND, either express or implied. See the License for the
16
+ # specific language governing permissions and limitations
17
+ # under the License.
18
+ #
19
+
20
+ require File.expand_path("#{File.dirname(__FILE__)}/spec_helper")
21
+
22
+ class ThriftTypesSpec < Spec::ExampleGroup
23
+ include Thrift
24
+
25
+ before(:each) do
26
+ Thrift.type_checking = true
27
+ end
28
+
29
+ after(:each) do
30
+ Thrift.type_checking = false
31
+ end
32
+
33
+ describe "Type checking" do
34
+ it "should return the proper name for each type" do
35
+ Thrift.type_name(Types::I16).should == "Types::I16"
36
+ Thrift.type_name(Types::VOID).should == "Types::VOID"
37
+ Thrift.type_name(Types::LIST).should == "Types::LIST"
38
+ Thrift.type_name(42).should be_nil
39
+ end
40
+
41
+ it "should check types properly" do
42
+ # lambda { Thrift.check_type(nil, Types::STOP) }.should raise_error(TypeError)
43
+ lambda { Thrift.check_type(3, {:type => Types::STOP}, :foo) }.should raise_error(TypeError)
44
+ lambda { Thrift.check_type(nil, {:type => Types::VOID}, :foo) }.should_not raise_error(TypeError)
45
+ lambda { Thrift.check_type(3, {:type => Types::VOID}, :foo) }.should raise_error(TypeError)
46
+ lambda { Thrift.check_type(true, {:type => Types::BOOL}, :foo) }.should_not raise_error(TypeError)
47
+ lambda { Thrift.check_type(3, {:type => Types::BOOL}, :foo) }.should raise_error(TypeError)
48
+ lambda { Thrift.check_type(42, {:type => Types::BYTE}, :foo) }.should_not raise_error(TypeError)
49
+ lambda { Thrift.check_type(42, {:type => Types::I16}, :foo) }.should_not raise_error(TypeError)
50
+ lambda { Thrift.check_type(42, {:type => Types::I32}, :foo) }.should_not raise_error(TypeError)
51
+ lambda { Thrift.check_type(42, {:type => Types::I64}, :foo) }.should_not raise_error(TypeError)
52
+ lambda { Thrift.check_type(3.14, {:type => Types::I32}, :foo) }.should raise_error(TypeError)
53
+ lambda { Thrift.check_type(3.14, {:type => Types::DOUBLE}, :foo) }.should_not raise_error(TypeError)
54
+ lambda { Thrift.check_type(3, {:type => Types::DOUBLE}, :foo) }.should raise_error(TypeError)
55
+ lambda { Thrift.check_type("3", {:type => Types::STRING}, :foo) }.should_not raise_error(TypeError)
56
+ lambda { Thrift.check_type(3, {:type => Types::STRING}, :foo) }.should raise_error(TypeError)
57
+ hello = SpecNamespace::Hello.new
58
+ lambda { Thrift.check_type(hello, {:type => Types::STRUCT, :class => SpecNamespace::Hello}, :foo) }.should_not raise_error(TypeError)
59
+ lambda { Thrift.check_type("foo", {:type => Types::STRUCT}, :foo) }.should raise_error(TypeError)
60
+ lambda { Thrift.check_type({:foo => 1}, {:type => Types::MAP}, :foo) }.should_not raise_error(TypeError)
61
+ lambda { Thrift.check_type([1], {:type => Types::MAP}, :foo) }.should raise_error(TypeError)
62
+ lambda { Thrift.check_type([1], {:type => Types::LIST}, :foo) }.should_not raise_error(TypeError)
63
+ lambda { Thrift.check_type({:foo => 1}, {:type => Types::LIST}, :foo) }.should raise_error(TypeError)
64
+ lambda { Thrift.check_type(Set.new([1,2]), {:type => Types::SET}, :foo) }.should_not raise_error(TypeError)
65
+ lambda { Thrift.check_type([1,2], {:type => Types::SET}, :foo) }.should raise_error(TypeError)
66
+ lambda { Thrift.check_type({:foo => true}, {:type => Types::SET}, :foo) }.should raise_error(TypeError)
67
+ end
68
+
69
+ it "should error out if nil is passed and skip_types is false" do
70
+ lambda { Thrift.check_type(nil, {:type => Types::BOOL}, :foo, false) }.should raise_error(TypeError)
71
+ lambda { Thrift.check_type(nil, {:type => Types::BYTE}, :foo, false) }.should raise_error(TypeError)
72
+ lambda { Thrift.check_type(nil, {:type => Types::I16}, :foo, false) }.should raise_error(TypeError)
73
+ lambda { Thrift.check_type(nil, {:type => Types::I32}, :foo, false) }.should raise_error(TypeError)
74
+ lambda { Thrift.check_type(nil, {:type => Types::I64}, :foo, false) }.should raise_error(TypeError)
75
+ lambda { Thrift.check_type(nil, {:type => Types::DOUBLE}, :foo, false) }.should raise_error(TypeError)
76
+ lambda { Thrift.check_type(nil, {:type => Types::STRING}, :foo, false) }.should raise_error(TypeError)
77
+ lambda { Thrift.check_type(nil, {:type => Types::STRUCT}, :foo, false) }.should raise_error(TypeError)
78
+ lambda { Thrift.check_type(nil, {:type => Types::LIST}, :foo, false) }.should raise_error(TypeError)
79
+ lambda { Thrift.check_type(nil, {:type => Types::SET}, :foo, false) }.should raise_error(TypeError)
80
+ lambda { Thrift.check_type(nil, {:type => Types::MAP}, :foo, false) }.should raise_error(TypeError)
81
+ end
82
+
83
+ it "should check element types on containers" do
84
+ field = {:type => Types::LIST, :element => {:type => Types::I32}}
85
+ lambda { Thrift.check_type([1, 2], field, :foo) }.should_not raise_error(TypeError)
86
+ lambda { Thrift.check_type([1, nil, 2], field, :foo) }.should raise_error(TypeError)
87
+ field = {:type => Types::MAP, :key => {:type => Types::I32}, :value => {:type => Types::STRING}}
88
+ lambda { Thrift.check_type({1 => "one", 2 => "two"}, field, :foo) }.should_not raise_error(TypeError)
89
+ lambda { Thrift.check_type({1 => "one", nil => "nil"}, field, :foo) }.should raise_error(TypeError)
90
+ lambda { Thrift.check_type({1 => nil, 2 => "two"}, field, :foo) }.should raise_error(TypeError)
91
+ field = {:type => Types::SET, :element => {:type => Types::I32}}
92
+ lambda { Thrift.check_type(Set.new([1, 2]), field, :foo) }.should_not raise_error(TypeError)
93
+ lambda { Thrift.check_type(Set.new([1, nil, 2]), field, :foo) }.should raise_error(TypeError)
94
+ lambda { Thrift.check_type(Set.new([1, 2.3, 2]), field, :foo) }.should raise_error(TypeError)
95
+
96
+ field = {:type => Types::STRUCT, :class => SpecNamespace::Hello}
97
+ lambda { Thrift.check_type(SpecNamespace::BoolStruct, field, :foo) }.should raise_error(TypeError)
98
+ end
99
+
100
+ it "should give the TypeError a readable message" do
101
+ msg = "Expected Types::STRING, received Fixnum for field foo"
102
+ lambda { Thrift.check_type(3, {:type => Types::STRING}, :foo) }.should raise_error(TypeError, msg)
103
+ msg = "Expected Types::STRING, received Fixnum for field foo.element"
104
+ field = {:type => Types::LIST, :element => {:type => Types::STRING}}
105
+ lambda { Thrift.check_type([3], field, :foo) }.should raise_error(TypeError, msg)
106
+ msg = "Expected Types::I32, received NilClass for field foo.element.key"
107
+ field = {:type => Types::LIST,
108
+ :element => {:type => Types::MAP,
109
+ :key => {:type => Types::I32},
110
+ :value => {:type => Types::I32}}}
111
+ lambda { Thrift.check_type([{nil => 3}], field, :foo) }.should raise_error(TypeError, msg)
112
+ msg = "Expected Types::I32, received NilClass for field foo.element.value"
113
+ lambda { Thrift.check_type([{1 => nil}], field, :foo) }.should raise_error(TypeError, msg)
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,193 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing,
13
+ # software distributed under the License is distributed on an
14
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ # KIND, either express or implied. See the License for the
16
+ # specific language governing permissions and limitations
17
+ # under the License.
18
+ #
19
+
20
+ require File.expand_path("#{File.dirname(__FILE__)}/spec_helper")
21
+
22
+ class ThriftUnionSpec < Spec::ExampleGroup
23
+ include Thrift
24
+ include SpecNamespace
25
+
26
+ describe Union do
27
+ it "should return nil value in unset union" do
28
+ union = My_union.new
29
+ union.get_set_field.should == nil
30
+ union.get_value.should == nil
31
+ end
32
+
33
+ it "should set a field and be accessible through get_value and the named field accessor" do
34
+ union = My_union.new
35
+ union.integer32 = 25
36
+ union.get_set_field.should == :integer32
37
+ union.get_value.should == 25
38
+ union.integer32.should == 25
39
+ end
40
+
41
+ it "should work correctly when instantiated with static field constructors" do
42
+ union = My_union.integer32(5)
43
+ union.get_set_field.should == :integer32
44
+ union.integer32.should == 5
45
+ end
46
+
47
+ it "should raise for wrong set field" do
48
+ union = My_union.new
49
+ union.integer32 = 25
50
+ lambda { union.some_characters }.should raise_error(RuntimeError, "some_characters is not union's set field.")
51
+ end
52
+
53
+ it "should not be equal to nil" do
54
+ union = My_union.new
55
+ union.should_not == nil
56
+ end
57
+
58
+ it "should not equate two different unions, i32 vs. string" do
59
+ union = My_union.new(:integer32, 25)
60
+ other_union = My_union.new(:some_characters, "blah!")
61
+ union.should_not == other_union
62
+ end
63
+
64
+ it "should properly reset setfield and setvalue" do
65
+ union = My_union.new(:integer32, 25)
66
+ union.get_set_field.should == :integer32
67
+ union.some_characters = "blah!"
68
+ union.get_set_field.should == :some_characters
69
+ union.get_value.should == "blah!"
70
+ lambda { union.integer32 }.should raise_error(RuntimeError, "integer32 is not union's set field.")
71
+ end
72
+
73
+ it "should not equate two different unions with different values" do
74
+ union = My_union.new(:integer32, 25)
75
+ other_union = My_union.new(:integer32, 400)
76
+ union.should_not == other_union
77
+ end
78
+
79
+ it "should not equate two different unions with different fields" do
80
+ union = My_union.new(:integer32, 25)
81
+ other_union = My_union.new(:other_i32, 25)
82
+ union.should_not == other_union
83
+ end
84
+
85
+ it "should inspect properly" do
86
+ union = My_union.new(:integer32, 25)
87
+ union.inspect.should == "<SpecNamespace::My_union integer32: 25>"
88
+ end
89
+
90
+ it "should not allow setting with instance_variable_set" do
91
+ union = My_union.new(:integer32, 27)
92
+ union.instance_variable_set(:@some_characters, "hallo!")
93
+ union.get_set_field.should == :integer32
94
+ union.get_value.should == 27
95
+ lambda { union.some_characters }.should raise_error(RuntimeError, "some_characters is not union's set field.")
96
+ end
97
+
98
+ it "should serialize correctly" do
99
+ trans = Thrift::MemoryBufferTransport.new
100
+ proto = Thrift::BinaryProtocol.new(trans)
101
+
102
+ union = My_union.new(:integer32, 25)
103
+ union.write(proto)
104
+
105
+ other_union = My_union.new(:integer32, 25)
106
+ other_union.read(proto)
107
+ other_union.should == union
108
+ end
109
+
110
+ it "should raise when validating unset union" do
111
+ union = My_union.new
112
+ lambda { union.validate }.should raise_error(StandardError, "Union fields are not set.")
113
+
114
+ other_union = My_union.new(:integer32, 1)
115
+ lambda { other_union.validate }.should_not raise_error(StandardError, "Union fields are not set.")
116
+ end
117
+
118
+ it "should validate an enum field properly" do
119
+ union = TestUnion.new(:enum_field, 3)
120
+ union.get_set_field.should == :enum_field
121
+ lambda { union.validate }.should raise_error(ProtocolException, "Invalid value of field enum_field!")
122
+
123
+ other_union = TestUnion.new(:enum_field, 1)
124
+ lambda { other_union.validate }.should_not raise_error(ProtocolException, "Invalid value of field enum_field!")
125
+ end
126
+
127
+ it "should properly serialize and match structs with a union" do
128
+ union = My_union.new(:integer32, 26)
129
+ swu = Struct_with_union.new(:fun_union => union)
130
+
131
+ trans = Thrift::MemoryBufferTransport.new
132
+ proto = Thrift::CompactProtocol.new(trans)
133
+
134
+ swu.write(proto)
135
+
136
+ other_union = My_union.new(:some_characters, "hello there")
137
+ swu2 = Struct_with_union.new(:fun_union => other_union)
138
+
139
+ swu2.should_not == swu
140
+
141
+ swu2.read(proto)
142
+ swu2.should == swu
143
+ end
144
+
145
+ it "should support old style constructor" do
146
+ union = My_union.new(:integer32 => 26)
147
+ union.get_set_field.should == :integer32
148
+ union.get_value.should == 26
149
+ end
150
+
151
+ it "should not throw an error when inspected and unset" do
152
+ lambda{TestUnion.new().inspect}.should_not raise_error
153
+ end
154
+
155
+ it "should print enum value name when inspected" do
156
+ My_union.new(:some_enum => SomeEnum::ONE).inspect.should == "<SpecNamespace::My_union some_enum: ONE (0)>"
157
+
158
+ My_union.new(:my_map => {SomeEnum::ONE => [SomeEnum::TWO]}).inspect.should == "<SpecNamespace::My_union my_map: {ONE (0): [TWO (1)]}>"
159
+ end
160
+
161
+ it "should offer field? methods" do
162
+ My_union.new.some_enum?.should be_false
163
+ My_union.new(:some_enum => SomeEnum::ONE).some_enum?.should be_true
164
+ My_union.new(:im_true => false).im_true?.should be_true
165
+ My_union.new(:im_true => true).im_true?.should be_true
166
+ end
167
+
168
+ it "should pretty print binary fields" do
169
+ TestUnion.new(:binary_field => "\001\002\003").inspect.should == "<SpecNamespace::TestUnion binary_field: 010203>"
170
+ end
171
+
172
+ it "should be comparable" do
173
+ relationships = [
174
+ [0, -1, -1, -1],
175
+ [1, 0, -1, -1],
176
+ [1, 1, 0, -1],
177
+ [1, 1, 1, 0]]
178
+
179
+ objs = [
180
+ TestUnion.new(:string_field, "blah"),
181
+ TestUnion.new(:string_field, "blahblah"),
182
+ TestUnion.new(:i32_field, 1),
183
+ TestUnion.new()]
184
+
185
+ for y in 0..3
186
+ for x in 0..3
187
+ # puts "#{objs[y].inspect} <=> #{objs[x].inspect} should == #{relationships[y][x]}"
188
+ (objs[y] <=> objs[x]).should == relationships[y][x]
189
+ end
190
+ end
191
+ end
192
+ end
193
+ end
@@ -0,0 +1,108 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing,
13
+ # software distributed under the License is distributed on an
14
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ # KIND, either express or implied. See the License for the
16
+ # specific language governing permissions and limitations
17
+ # under the License.
18
+ #
19
+
20
+ require File.expand_path("#{File.dirname(__FILE__)}/spec_helper")
21
+ require File.expand_path("#{File.dirname(__FILE__)}/socket_spec_shared")
22
+
23
+ class ThriftUNIXSocketSpec < Spec::ExampleGroup
24
+ include Thrift
25
+
26
+ describe UNIXSocket do
27
+ before(:each) do
28
+ @path = '/tmp/thrift_spec_socket'
29
+ @socket = UNIXSocket.new(@path)
30
+ @handle = mock("Handle", :closed? => false)
31
+ @handle.stub!(:close)
32
+ ::UNIXSocket.stub!(:new).and_return(@handle)
33
+ end
34
+
35
+ it_should_behave_like "a socket"
36
+
37
+ it "should raise a TransportException when it cannot open a socket" do
38
+ ::UNIXSocket.should_receive(:new).and_raise(StandardError)
39
+ lambda { @socket.open }.should raise_error(Thrift::TransportException) { |e| e.type.should == Thrift::TransportException::NOT_OPEN }
40
+ end
41
+
42
+ it "should accept an optional timeout" do
43
+ ::UNIXSocket.stub!(:new)
44
+ UNIXSocket.new(@path, 5).timeout.should == 5
45
+ end
46
+ end
47
+
48
+ describe UNIXServerSocket do
49
+ before(:each) do
50
+ @path = '/tmp/thrift_spec_socket'
51
+ @socket = UNIXServerSocket.new(@path)
52
+ end
53
+
54
+ it "should create a handle when calling listen" do
55
+ UNIXServer.should_receive(:new).with(@path)
56
+ @socket.listen
57
+ end
58
+
59
+ it "should create a Thrift::UNIXSocket to wrap accepted sockets" do
60
+ handle = mock("UNIXServer")
61
+ UNIXServer.should_receive(:new).with(@path).and_return(handle)
62
+ @socket.listen
63
+ sock = mock("sock")
64
+ handle.should_receive(:accept).and_return(sock)
65
+ trans = mock("UNIXSocket")
66
+ UNIXSocket.should_receive(:new).and_return(trans)
67
+ trans.should_receive(:handle=).with(sock)
68
+ @socket.accept.should == trans
69
+ end
70
+
71
+ it "should close the handle when closed" do
72
+ handle = mock("UNIXServer", :closed? => false)
73
+ UNIXServer.should_receive(:new).with(@path).and_return(handle)
74
+ @socket.listen
75
+ handle.should_receive(:close)
76
+ File.stub!(:delete)
77
+ @socket.close
78
+ end
79
+
80
+ it "should delete the socket when closed" do
81
+ handle = mock("UNIXServer", :closed? => false)
82
+ UNIXServer.should_receive(:new).with(@path).and_return(handle)
83
+ @socket.listen
84
+ handle.stub!(:close)
85
+ File.should_receive(:delete).with(@path)
86
+ @socket.close
87
+ end
88
+
89
+ it "should return nil when accepting if there is no handle" do
90
+ @socket.accept.should be_nil
91
+ end
92
+
93
+ it "should return true for closed? when appropriate" do
94
+ handle = mock("UNIXServer", :closed? => false)
95
+ UNIXServer.stub!(:new).and_return(handle)
96
+ File.stub!(:delete)
97
+ @socket.listen
98
+ @socket.should_not be_closed
99
+ handle.stub!(:close)
100
+ @socket.close
101
+ @socket.should be_closed
102
+ @socket.listen
103
+ @socket.should_not be_closed
104
+ handle.stub!(:closed?).and_return(true)
105
+ @socket.should be_closed
106
+ end
107
+ end
108
+ end
metadata ADDED
@@ -0,0 +1,247 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sessionm-thrift
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Thrift Developers
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-11-29 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &70252672445820 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70252672445820
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &70252672445180 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - =
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.2
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70252672445180
36
+ - !ruby/object:Gem::Dependency
37
+ name: mongrel
38
+ requirement: &70252672444640 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70252672444640
47
+ description: Ruby bindings for the Apache Thrift RPC system
48
+ email:
49
+ - dev@thrift.apache.org
50
+ executables: []
51
+ extensions:
52
+ - ext/extconf.rb
53
+ extra_rdoc_files:
54
+ - CHANGELOG
55
+ - README
56
+ - ext/binary_protocol_accelerated.c
57
+ - ext/compact_protocol.c
58
+ - ext/memory_buffer.c
59
+ - ext/protocol.c
60
+ - ext/strlcpy.c
61
+ - ext/struct.c
62
+ - ext/thrift_native.c
63
+ - ext/binary_protocol_accelerated.h
64
+ - ext/compact_protocol.h
65
+ - ext/constants.h
66
+ - ext/macros.h
67
+ - ext/memory_buffer.h
68
+ - ext/protocol.h
69
+ - ext/strlcpy.h
70
+ - ext/struct.h
71
+ - ext/extconf.rb
72
+ - lib/thrift/client.rb
73
+ - lib/thrift/core_ext/fixnum.rb
74
+ - lib/thrift/core_ext.rb
75
+ - lib/thrift/exceptions.rb
76
+ - lib/thrift/processor.rb
77
+ - lib/thrift/protocol/base_protocol.rb
78
+ - lib/thrift/protocol/binary_protocol.rb
79
+ - lib/thrift/protocol/binary_protocol_accelerated.rb
80
+ - lib/thrift/protocol/compact_protocol.rb
81
+ - lib/thrift/serializer/deserializer.rb
82
+ - lib/thrift/serializer/serializer.rb
83
+ - lib/thrift/server/base_server.rb
84
+ - lib/thrift/server/mongrel_http_server.rb
85
+ - lib/thrift/server/nonblocking_server.rb
86
+ - lib/thrift/server/simple_server.rb
87
+ - lib/thrift/server/thread_pool_server.rb
88
+ - lib/thrift/server/threaded_server.rb
89
+ - lib/thrift/struct.rb
90
+ - lib/thrift/struct_union.rb
91
+ - lib/thrift/thrift_native.rb
92
+ - lib/thrift/transport/base_server_transport.rb
93
+ - lib/thrift/transport/base_transport.rb
94
+ - lib/thrift/transport/buffered_transport.rb
95
+ - lib/thrift/transport/framed_transport.rb
96
+ - lib/thrift/transport/http_client_transport.rb
97
+ - lib/thrift/transport/io_stream_transport.rb
98
+ - lib/thrift/transport/memory_buffer_transport.rb
99
+ - lib/thrift/transport/server_socket.rb
100
+ - lib/thrift/transport/socket.rb
101
+ - lib/thrift/transport/unix_server_socket.rb
102
+ - lib/thrift/transport/unix_socket.rb
103
+ - lib/thrift/types.rb
104
+ - lib/thrift/union.rb
105
+ - lib/thrift.rb
106
+ files:
107
+ - lib/thrift/client.rb
108
+ - lib/thrift/core_ext/fixnum.rb
109
+ - lib/thrift/core_ext.rb
110
+ - lib/thrift/exceptions.rb
111
+ - lib/thrift/processor.rb
112
+ - lib/thrift/protocol/base_protocol.rb
113
+ - lib/thrift/protocol/binary_protocol.rb
114
+ - lib/thrift/protocol/binary_protocol_accelerated.rb
115
+ - lib/thrift/protocol/compact_protocol.rb
116
+ - lib/thrift/serializer/deserializer.rb
117
+ - lib/thrift/serializer/serializer.rb
118
+ - lib/thrift/server/base_server.rb
119
+ - lib/thrift/server/mongrel_http_server.rb
120
+ - lib/thrift/server/nonblocking_server.rb
121
+ - lib/thrift/server/simple_server.rb
122
+ - lib/thrift/server/thread_pool_server.rb
123
+ - lib/thrift/server/threaded_server.rb
124
+ - lib/thrift/struct.rb
125
+ - lib/thrift/struct_union.rb
126
+ - lib/thrift/thrift_native.rb
127
+ - lib/thrift/transport/base_server_transport.rb
128
+ - lib/thrift/transport/base_transport.rb
129
+ - lib/thrift/transport/buffered_transport.rb
130
+ - lib/thrift/transport/framed_transport.rb
131
+ - lib/thrift/transport/http_client_transport.rb
132
+ - lib/thrift/transport/io_stream_transport.rb
133
+ - lib/thrift/transport/memory_buffer_transport.rb
134
+ - lib/thrift/transport/server_socket.rb
135
+ - lib/thrift/transport/socket.rb
136
+ - lib/thrift/transport/unix_server_socket.rb
137
+ - lib/thrift/transport/unix_socket.rb
138
+ - lib/thrift/types.rb
139
+ - lib/thrift/union.rb
140
+ - lib/thrift.rb
141
+ - spec/base_protocol_spec.rb
142
+ - spec/base_transport_spec.rb
143
+ - spec/binary_protocol_accelerated_spec.rb
144
+ - spec/binary_protocol_spec.rb
145
+ - spec/binary_protocol_spec_shared.rb
146
+ - spec/client_spec.rb
147
+ - spec/compact_protocol_spec.rb
148
+ - spec/exception_spec.rb
149
+ - spec/http_client_spec.rb
150
+ - spec/mongrel_http_server_spec.rb
151
+ - spec/nonblocking_server_spec.rb
152
+ - spec/processor_spec.rb
153
+ - spec/serializer_spec.rb
154
+ - spec/server_socket_spec.rb
155
+ - spec/server_spec.rb
156
+ - spec/socket_spec.rb
157
+ - spec/socket_spec_shared.rb
158
+ - spec/spec_helper.rb
159
+ - spec/struct_spec.rb
160
+ - spec/ThriftSpec.thrift
161
+ - spec/types_spec.rb
162
+ - spec/union_spec.rb
163
+ - spec/unix_socket_spec.rb
164
+ - CHANGELOG
165
+ - README
166
+ - ext/binary_protocol_accelerated.c
167
+ - ext/compact_protocol.c
168
+ - ext/memory_buffer.c
169
+ - ext/protocol.c
170
+ - ext/strlcpy.c
171
+ - ext/struct.c
172
+ - ext/thrift_native.c
173
+ - ext/binary_protocol_accelerated.h
174
+ - ext/compact_protocol.h
175
+ - ext/constants.h
176
+ - ext/macros.h
177
+ - ext/memory_buffer.h
178
+ - ext/protocol.h
179
+ - ext/strlcpy.h
180
+ - ext/struct.h
181
+ - ext/extconf.rb
182
+ - benchmark/benchmark.rb
183
+ - benchmark/Benchmark.thrift
184
+ - benchmark/client.rb
185
+ - benchmark/server.rb
186
+ - benchmark/thin_server.rb
187
+ homepage: http://thrift.apache.org
188
+ licenses:
189
+ - Apache 2.0
190
+ post_install_message:
191
+ rdoc_options:
192
+ - --line-numbers
193
+ - --inline-source
194
+ - --title
195
+ - Thrift
196
+ - --main
197
+ - README
198
+ require_paths:
199
+ - lib
200
+ - ext
201
+ required_ruby_version: !ruby/object:Gem::Requirement
202
+ none: false
203
+ requirements:
204
+ - - ! '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ required_rubygems_version: !ruby/object:Gem::Requirement
208
+ none: false
209
+ requirements:
210
+ - - ! '>='
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ requirements: []
214
+ rubyforge_project: thrift
215
+ rubygems_version: 1.8.6
216
+ signing_key:
217
+ specification_version: 3
218
+ summary: Ruby bindings for Apache Thrift
219
+ test_files:
220
+ - spec/base_protocol_spec.rb
221
+ - spec/base_transport_spec.rb
222
+ - spec/binary_protocol_accelerated_spec.rb
223
+ - spec/binary_protocol_spec.rb
224
+ - spec/binary_protocol_spec_shared.rb
225
+ - spec/client_spec.rb
226
+ - spec/compact_protocol_spec.rb
227
+ - spec/exception_spec.rb
228
+ - spec/http_client_spec.rb
229
+ - spec/mongrel_http_server_spec.rb
230
+ - spec/nonblocking_server_spec.rb
231
+ - spec/processor_spec.rb
232
+ - spec/serializer_spec.rb
233
+ - spec/server_socket_spec.rb
234
+ - spec/server_spec.rb
235
+ - spec/socket_spec.rb
236
+ - spec/socket_spec_shared.rb
237
+ - spec/spec_helper.rb
238
+ - spec/struct_spec.rb
239
+ - spec/ThriftSpec.thrift
240
+ - spec/types_spec.rb
241
+ - spec/union_spec.rb
242
+ - spec/unix_socket_spec.rb
243
+ - benchmark/benchmark.rb
244
+ - benchmark/Benchmark.thrift
245
+ - benchmark/client.rb
246
+ - benchmark/server.rb
247
+ - benchmark/thin_server.rb