thrift 0.9.3.0 → 0.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/ext/compact_protocol.c +1 -0
  3. data/ext/struct.c +14 -1
  4. data/ext/thrift_native.c +17 -0
  5. data/lib/thrift/client.rb +10 -2
  6. data/lib/thrift/processor.rb +10 -3
  7. data/lib/thrift/protocol/base_protocol.rb +11 -3
  8. data/lib/thrift/protocol/binary_protocol.rb +8 -1
  9. data/lib/thrift/protocol/binary_protocol_accelerated.rb +8 -0
  10. data/lib/thrift/protocol/compact_protocol.rb +8 -0
  11. data/lib/thrift/protocol/json_protocol.rb +21 -4
  12. data/lib/thrift/protocol/multiplexed_protocol.rb +5 -1
  13. data/lib/thrift/server/base_server.rb +8 -2
  14. data/lib/thrift/server/simple_server.rb +5 -1
  15. data/lib/thrift/server/thread_pool_server.rb +5 -1
  16. data/lib/thrift/server/threaded_server.rb +5 -1
  17. data/lib/thrift/transport/base_server_transport.rb +1 -1
  18. data/lib/thrift/transport/base_transport.rb +8 -0
  19. data/lib/thrift/transport/buffered_transport.rb +9 -1
  20. data/lib/thrift/transport/framed_transport.rb +9 -1
  21. data/lib/thrift/transport/http_client_transport.rb +7 -0
  22. data/lib/thrift/transport/io_stream_transport.rb +4 -1
  23. data/lib/thrift/transport/memory_buffer_transport.rb +4 -0
  24. data/lib/thrift/transport/server_socket.rb +6 -1
  25. data/lib/thrift/transport/socket.rb +21 -17
  26. data/lib/thrift/transport/ssl_server_socket.rb +41 -0
  27. data/lib/thrift/transport/ssl_socket.rb +51 -0
  28. data/lib/thrift/transport/unix_server_socket.rb +5 -1
  29. data/lib/thrift/transport/unix_socket.rb +5 -1
  30. data/lib/thrift.rb +6 -4
  31. data/spec/base_protocol_spec.rb +79 -71
  32. data/spec/base_transport_spec.rb +155 -117
  33. data/spec/binary_protocol_accelerated_spec.rb +6 -2
  34. data/spec/binary_protocol_spec.rb +16 -8
  35. data/spec/binary_protocol_spec_shared.rb +75 -72
  36. data/spec/bytes_spec.rb +38 -38
  37. data/spec/client_spec.rb +43 -42
  38. data/spec/compact_protocol_spec.rb +32 -17
  39. data/spec/exception_spec.rb +54 -54
  40. data/spec/flat_spec.rb +5 -5
  41. data/spec/http_client_spec.rb +74 -33
  42. data/spec/json_protocol_spec.rb +170 -131
  43. data/spec/namespaced_spec.rb +5 -5
  44. data/spec/nonblocking_server_spec.rb +16 -16
  45. data/spec/processor_spec.rb +26 -26
  46. data/spec/serializer_spec.rb +20 -20
  47. data/spec/server_socket_spec.rb +27 -22
  48. data/spec/server_spec.rb +91 -51
  49. data/spec/socket_spec.rb +23 -16
  50. data/spec/socket_spec_shared.rb +31 -31
  51. data/spec/spec_helper.rb +6 -1
  52. data/spec/ssl_server_socket_spec.rb +34 -0
  53. data/spec/ssl_socket_spec.rb +78 -0
  54. data/spec/struct_nested_containers_spec.rb +24 -24
  55. data/spec/struct_spec.rb +120 -120
  56. data/spec/thin_http_server_spec.rb +18 -18
  57. data/spec/types_spec.rb +56 -53
  58. data/spec/union_spec.rb +47 -41
  59. data/spec/unix_socket_spec.rb +43 -34
  60. metadata +195 -146
data/spec/types_spec.rb CHANGED
@@ -31,85 +31,88 @@ describe Thrift::Types do
31
31
 
32
32
  context 'type checking' do
33
33
  it "should return the proper name for each type" do
34
- Thrift.type_name(Thrift::Types::I16).should == "Types::I16"
35
- Thrift.type_name(Thrift::Types::VOID).should == "Types::VOID"
36
- Thrift.type_name(Thrift::Types::LIST).should == "Types::LIST"
37
- Thrift.type_name(42).should be_nil
34
+ expect(Thrift.type_name(Thrift::Types::I16)).to eq("Types::I16")
35
+ expect(Thrift.type_name(Thrift::Types::VOID)).to eq("Types::VOID")
36
+ expect(Thrift.type_name(Thrift::Types::LIST)).to eq("Types::LIST")
37
+ expect(Thrift.type_name(42)).to be_nil
38
38
  end
39
39
 
40
40
  it "should check types properly" do
41
41
  # lambda { Thrift.check_type(nil, Thrift::Types::STOP) }.should raise_error(Thrift::TypeError)
42
- lambda { Thrift.check_type(3, {:type => Thrift::Types::STOP}, :foo) }.should raise_error(Thrift::TypeError)
43
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::VOID}, :foo) }.should_not raise_error(Thrift::TypeError)
44
- lambda { Thrift.check_type(3, {:type => Thrift::Types::VOID}, :foo) }.should raise_error(Thrift::TypeError)
45
- lambda { Thrift.check_type(true, {:type => Thrift::Types::BOOL}, :foo) }.should_not raise_error(Thrift::TypeError)
46
- lambda { Thrift.check_type(3, {:type => Thrift::Types::BOOL}, :foo) }.should raise_error(Thrift::TypeError)
47
- lambda { Thrift.check_type(42, {:type => Thrift::Types::BYTE}, :foo) }.should_not raise_error(Thrift::TypeError)
48
- lambda { Thrift.check_type(42, {:type => Thrift::Types::I16}, :foo) }.should_not raise_error(Thrift::TypeError)
49
- lambda { Thrift.check_type(42, {:type => Thrift::Types::I32}, :foo) }.should_not raise_error(Thrift::TypeError)
50
- lambda { Thrift.check_type(42, {:type => Thrift::Types::I64}, :foo) }.should_not raise_error(Thrift::TypeError)
51
- lambda { Thrift.check_type(3.14, {:type => Thrift::Types::I32}, :foo) }.should raise_error(Thrift::TypeError)
52
- lambda { Thrift.check_type(3.14, {:type => Thrift::Types::DOUBLE}, :foo) }.should_not raise_error(Thrift::TypeError)
53
- lambda { Thrift.check_type(3, {:type => Thrift::Types::DOUBLE}, :foo) }.should raise_error(Thrift::TypeError)
54
- lambda { Thrift.check_type("3", {:type => Thrift::Types::STRING}, :foo) }.should_not raise_error(Thrift::TypeError)
55
- lambda { Thrift.check_type(3, {:type => Thrift::Types::STRING}, :foo) }.should raise_error(Thrift::TypeError)
42
+ expect { Thrift.check_type(3, {:type => Thrift::Types::STOP}, :foo) }.to raise_error(Thrift::TypeError)
43
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::VOID}, :foo) }.not_to raise_error
44
+ expect { Thrift.check_type(3, {:type => Thrift::Types::VOID}, :foo) }.to raise_error(Thrift::TypeError)
45
+ expect { Thrift.check_type(true, {:type => Thrift::Types::BOOL}, :foo) }.not_to raise_error
46
+ expect { Thrift.check_type(3, {:type => Thrift::Types::BOOL}, :foo) }.to raise_error(Thrift::TypeError)
47
+ expect { Thrift.check_type(42, {:type => Thrift::Types::BYTE}, :foo) }.not_to raise_error
48
+ expect { Thrift.check_type(42, {:type => Thrift::Types::I16}, :foo) }.not_to raise_error
49
+ expect { Thrift.check_type(42, {:type => Thrift::Types::I32}, :foo) }.not_to raise_error
50
+ expect { Thrift.check_type(42, {:type => Thrift::Types::I64}, :foo) }.not_to raise_error
51
+ expect { Thrift.check_type(3.14, {:type => Thrift::Types::I32}, :foo) }.to raise_error(Thrift::TypeError)
52
+ expect { Thrift.check_type(3.14, {:type => Thrift::Types::DOUBLE}, :foo) }.not_to raise_error
53
+ expect { Thrift.check_type(3, {:type => Thrift::Types::DOUBLE}, :foo) }.to raise_error(Thrift::TypeError)
54
+ expect { Thrift.check_type("3", {:type => Thrift::Types::STRING}, :foo) }.not_to raise_error
55
+ expect { Thrift.check_type(3, {:type => Thrift::Types::STRING}, :foo) }.to raise_error(Thrift::TypeError)
56
56
  hello = SpecNamespace::Hello.new
57
- lambda { Thrift.check_type(hello, {:type => Thrift::Types::STRUCT, :class => SpecNamespace::Hello}, :foo) }.should_not raise_error(Thrift::TypeError)
58
- lambda { Thrift.check_type("foo", {:type => Thrift::Types::STRUCT}, :foo) }.should raise_error(Thrift::TypeError)
59
- lambda { Thrift.check_type({:foo => 1}, {:type => Thrift::Types::MAP}, :foo) }.should_not raise_error(Thrift::TypeError)
60
- lambda { Thrift.check_type([1], {:type => Thrift::Types::MAP}, :foo) }.should raise_error(Thrift::TypeError)
61
- lambda { Thrift.check_type([1], {:type => Thrift::Types::LIST}, :foo) }.should_not raise_error(Thrift::TypeError)
62
- lambda { Thrift.check_type({:foo => 1}, {:type => Thrift::Types::LIST}, :foo) }.should raise_error(Thrift::TypeError)
63
- lambda { Thrift.check_type(Set.new([1,2]), {:type => Thrift::Types::SET}, :foo) }.should_not raise_error(Thrift::TypeError)
64
- lambda { Thrift.check_type([1,2], {:type => Thrift::Types::SET}, :foo) }.should raise_error(Thrift::TypeError)
65
- lambda { Thrift.check_type({:foo => true}, {:type => Thrift::Types::SET}, :foo) }.should raise_error(Thrift::TypeError)
57
+ expect { Thrift.check_type(hello, {:type => Thrift::Types::STRUCT, :class => SpecNamespace::Hello}, :foo) }.not_to raise_error
58
+ expect { Thrift.check_type("foo", {:type => Thrift::Types::STRUCT}, :foo) }.to raise_error(Thrift::TypeError)
59
+ field = {:type => Thrift::Types::MAP, :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::STRING}}
60
+ expect { Thrift.check_type({1 => "one"}, field, :foo) }.not_to raise_error
61
+ expect { Thrift.check_type([1], field, :foo) }.to raise_error(Thrift::TypeError)
62
+ field = {:type => Thrift::Types::LIST, :element => {:type => Thrift::Types::I32}}
63
+ expect { Thrift.check_type([1], field, :foo) }.not_to raise_error
64
+ expect { Thrift.check_type({:foo => 1}, field, :foo) }.to raise_error(Thrift::TypeError)
65
+ field = {:type => Thrift::Types::SET, :element => {:type => Thrift::Types::I32}}
66
+ expect { Thrift.check_type(Set.new([1,2]), field, :foo) }.not_to raise_error
67
+ expect { Thrift.check_type([1,2], field, :foo) }.to raise_error(Thrift::TypeError)
68
+ expect { Thrift.check_type({:foo => true}, field, :foo) }.to raise_error(Thrift::TypeError)
66
69
  end
67
70
 
68
71
  it "should error out if nil is passed and skip_types is false" do
69
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::BOOL}, :foo, false) }.should raise_error(Thrift::TypeError)
70
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::BYTE}, :foo, false) }.should raise_error(Thrift::TypeError)
71
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::I16}, :foo, false) }.should raise_error(Thrift::TypeError)
72
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::I32}, :foo, false) }.should raise_error(Thrift::TypeError)
73
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::I64}, :foo, false) }.should raise_error(Thrift::TypeError)
74
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::DOUBLE}, :foo, false) }.should raise_error(Thrift::TypeError)
75
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::STRING}, :foo, false) }.should raise_error(Thrift::TypeError)
76
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::STRUCT}, :foo, false) }.should raise_error(Thrift::TypeError)
77
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::LIST}, :foo, false) }.should raise_error(Thrift::TypeError)
78
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::SET}, :foo, false) }.should raise_error(Thrift::TypeError)
79
- lambda { Thrift.check_type(nil, {:type => Thrift::Types::MAP}, :foo, false) }.should raise_error(Thrift::TypeError)
72
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::BOOL}, :foo, false) }.to raise_error(Thrift::TypeError)
73
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::BYTE}, :foo, false) }.to raise_error(Thrift::TypeError)
74
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::I16}, :foo, false) }.to raise_error(Thrift::TypeError)
75
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::I32}, :foo, false) }.to raise_error(Thrift::TypeError)
76
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::I64}, :foo, false) }.to raise_error(Thrift::TypeError)
77
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::DOUBLE}, :foo, false) }.to raise_error(Thrift::TypeError)
78
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::STRING}, :foo, false) }.to raise_error(Thrift::TypeError)
79
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::STRUCT}, :foo, false) }.to raise_error(Thrift::TypeError)
80
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::LIST}, :foo, false) }.to raise_error(Thrift::TypeError)
81
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::SET}, :foo, false) }.to raise_error(Thrift::TypeError)
82
+ expect { Thrift.check_type(nil, {:type => Thrift::Types::MAP}, :foo, false) }.to raise_error(Thrift::TypeError)
80
83
  end
81
84
 
82
85
  it "should check element types on containers" do
83
86
  field = {:type => Thrift::Types::LIST, :element => {:type => Thrift::Types::I32}}
84
- lambda { Thrift.check_type([1, 2], field, :foo) }.should_not raise_error(Thrift::TypeError)
85
- lambda { Thrift.check_type([1, nil, 2], field, :foo) }.should raise_error(Thrift::TypeError)
87
+ expect { Thrift.check_type([1, 2], field, :foo) }.not_to raise_error
88
+ expect { Thrift.check_type([1, nil, 2], field, :foo) }.to raise_error(Thrift::TypeError)
86
89
  field = {:type => Thrift::Types::MAP, :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::STRING}}
87
- lambda { Thrift.check_type({1 => "one", 2 => "two"}, field, :foo) }.should_not raise_error(Thrift::TypeError)
88
- lambda { Thrift.check_type({1 => "one", nil => "nil"}, field, :foo) }.should raise_error(Thrift::TypeError)
89
- lambda { Thrift.check_type({1 => nil, 2 => "two"}, field, :foo) }.should raise_error(Thrift::TypeError)
90
+ expect { Thrift.check_type({1 => "one", 2 => "two"}, field, :foo) }.not_to raise_error
91
+ expect { Thrift.check_type({1 => "one", nil => "nil"}, field, :foo) }.to raise_error(Thrift::TypeError)
92
+ expect { Thrift.check_type({1 => nil, 2 => "two"}, field, :foo) }.to raise_error(Thrift::TypeError)
90
93
  field = {:type => Thrift::Types::SET, :element => {:type => Thrift::Types::I32}}
91
- lambda { Thrift.check_type(Set.new([1, 2]), field, :foo) }.should_not raise_error(Thrift::TypeError)
92
- lambda { Thrift.check_type(Set.new([1, nil, 2]), field, :foo) }.should raise_error(Thrift::TypeError)
93
- lambda { Thrift.check_type(Set.new([1, 2.3, 2]), field, :foo) }.should raise_error(Thrift::TypeError)
94
+ expect { Thrift.check_type(Set.new([1, 2]), field, :foo) }.not_to raise_error
95
+ expect { Thrift.check_type(Set.new([1, nil, 2]), field, :foo) }.to raise_error(Thrift::TypeError)
96
+ expect { Thrift.check_type(Set.new([1, 2.3, 2]), field, :foo) }.to raise_error(Thrift::TypeError)
94
97
 
95
98
  field = {:type => Thrift::Types::STRUCT, :class => SpecNamespace::Hello}
96
- lambda { Thrift.check_type(SpecNamespace::BoolStruct, field, :foo) }.should raise_error(Thrift::TypeError)
99
+ expect { Thrift.check_type(SpecNamespace::BoolStruct, field, :foo) }.to raise_error(Thrift::TypeError)
97
100
  end
98
101
 
99
102
  it "should give the Thrift::TypeError a readable message" do
100
- msg = "Expected Types::STRING, received Fixnum for field foo"
101
- lambda { Thrift.check_type(3, {:type => Thrift::Types::STRING}, :foo) }.should raise_error(Thrift::TypeError, msg)
102
- msg = "Expected Types::STRING, received Fixnum for field foo.element"
103
+ msg = /Expected Types::STRING, received (Integer|Fixnum) for field foo/
104
+ expect { Thrift.check_type(3, {:type => Thrift::Types::STRING}, :foo) }.to raise_error(Thrift::TypeError, msg)
105
+ msg = /Expected Types::STRING, received (Integer|Fixnum) for field foo.element/
103
106
  field = {:type => Thrift::Types::LIST, :element => {:type => Thrift::Types::STRING}}
104
- lambda { Thrift.check_type([3], field, :foo) }.should raise_error(Thrift::TypeError, msg)
107
+ expect { Thrift.check_type([3], field, :foo) }.to raise_error(Thrift::TypeError, msg)
105
108
  msg = "Expected Types::I32, received NilClass for field foo.element.key"
106
109
  field = {:type => Thrift::Types::LIST,
107
110
  :element => {:type => Thrift::Types::MAP,
108
111
  :key => {:type => Thrift::Types::I32},
109
112
  :value => {:type => Thrift::Types::I32}}}
110
- lambda { Thrift.check_type([{nil => 3}], field, :foo) }.should raise_error(Thrift::TypeError, msg)
113
+ expect { Thrift.check_type([{nil => 3}], field, :foo) }.to raise_error(Thrift::TypeError, msg)
111
114
  msg = "Expected Types::I32, received NilClass for field foo.element.value"
112
- lambda { Thrift.check_type([{1 => nil}], field, :foo) }.should raise_error(Thrift::TypeError, msg)
115
+ expect { Thrift.check_type([{1 => nil}], field, :foo) }.to raise_error(Thrift::TypeError, msg)
113
116
  end
114
117
  end
115
118
  end
data/spec/union_spec.rb CHANGED
@@ -24,78 +24,84 @@ describe 'Union' do
24
24
  describe Thrift::Union do
25
25
  it "should return nil value in unset union" do
26
26
  union = SpecNamespace::My_union.new
27
- union.get_set_field.should == nil
28
- union.get_value.should == nil
27
+ expect(union.get_set_field).to eq(nil)
28
+ expect(union.get_value).to eq(nil)
29
29
  end
30
30
 
31
31
  it "should set a field and be accessible through get_value and the named field accessor" do
32
32
  union = SpecNamespace::My_union.new
33
33
  union.integer32 = 25
34
- union.get_set_field.should == :integer32
35
- union.get_value.should == 25
36
- union.integer32.should == 25
34
+ expect(union.get_set_field).to eq(:integer32)
35
+ expect(union.get_value).to eq(25)
36
+ expect(union.integer32).to eq(25)
37
37
  end
38
38
 
39
39
  it "should work correctly when instantiated with static field constructors" do
40
40
  union = SpecNamespace::My_union.integer32(5)
41
- union.get_set_field.should == :integer32
42
- union.integer32.should == 5
41
+ expect(union.get_set_field).to eq(:integer32)
42
+ expect(union.integer32).to eq(5)
43
43
  end
44
44
 
45
45
  it "should raise for wrong set field" do
46
46
  union = SpecNamespace::My_union.new
47
47
  union.integer32 = 25
48
- lambda { union.some_characters }.should raise_error(RuntimeError, "some_characters is not union's set field.")
48
+ expect { union.some_characters }.to raise_error(RuntimeError, "some_characters is not union's set field.")
49
+ end
50
+
51
+ it "should raise for wrong set field when hash initialized and type checking is off" do
52
+ Thrift.type_checking = false
53
+ union = SpecNamespace::My_union.new({incorrect_field: :incorrect})
54
+ expect { Thrift::Serializer.new.serialize(union) }.to raise_error(RuntimeError, "set_field is not valid for this union!")
49
55
  end
50
56
 
51
57
  it "should not be equal to nil" do
52
58
  union = SpecNamespace::My_union.new
53
- union.should_not == nil
59
+ expect(union).not_to eq(nil)
54
60
  end
55
61
 
56
62
  it "should not be equal with an empty String" do
57
63
  union = SpecNamespace::My_union.new
58
- union.should_not == ''
64
+ expect(union).not_to eq('')
59
65
  end
60
66
 
61
67
  it "should not equate two different unions, i32 vs. string" do
62
68
  union = SpecNamespace::My_union.new(:integer32, 25)
63
69
  other_union = SpecNamespace::My_union.new(:some_characters, "blah!")
64
- union.should_not == other_union
70
+ expect(union).not_to eq(other_union)
65
71
  end
66
72
 
67
73
  it "should properly reset setfield and setvalue" do
68
74
  union = SpecNamespace::My_union.new(:integer32, 25)
69
- union.get_set_field.should == :integer32
75
+ expect(union.get_set_field).to eq(:integer32)
70
76
  union.some_characters = "blah!"
71
- union.get_set_field.should == :some_characters
72
- union.get_value.should == "blah!"
73
- lambda { union.integer32 }.should raise_error(RuntimeError, "integer32 is not union's set field.")
77
+ expect(union.get_set_field).to eq(:some_characters)
78
+ expect(union.get_value).to eq("blah!")
79
+ expect { union.integer32 }.to raise_error(RuntimeError, "integer32 is not union's set field.")
74
80
  end
75
81
 
76
82
  it "should not equate two different unions with different values" do
77
83
  union = SpecNamespace::My_union.new(:integer32, 25)
78
84
  other_union = SpecNamespace::My_union.new(:integer32, 400)
79
- union.should_not == other_union
85
+ expect(union).not_to eq(other_union)
80
86
  end
81
87
 
82
88
  it "should not equate two different unions with different fields" do
83
89
  union = SpecNamespace::My_union.new(:integer32, 25)
84
90
  other_union = SpecNamespace::My_union.new(:other_i32, 25)
85
- union.should_not == other_union
91
+ expect(union).not_to eq(other_union)
86
92
  end
87
93
 
88
94
  it "should inspect properly" do
89
95
  union = SpecNamespace::My_union.new(:integer32, 25)
90
- union.inspect.should == "<SpecNamespace::My_union integer32: 25>"
96
+ expect(union.inspect).to eq("<SpecNamespace::My_union integer32: 25>")
91
97
  end
92
98
 
93
99
  it "should not allow setting with instance_variable_set" do
94
100
  union = SpecNamespace::My_union.new(:integer32, 27)
95
101
  union.instance_variable_set(:@some_characters, "hallo!")
96
- union.get_set_field.should == :integer32
97
- union.get_value.should == 27
98
- lambda { union.some_characters }.should raise_error(RuntimeError, "some_characters is not union's set field.")
102
+ expect(union.get_set_field).to eq(:integer32)
103
+ expect(union.get_value).to eq(27)
104
+ expect { union.some_characters }.to raise_error(RuntimeError, "some_characters is not union's set field.")
99
105
  end
100
106
 
101
107
  it "should serialize to binary correctly" do
@@ -107,7 +113,7 @@ describe 'Union' do
107
113
 
108
114
  other_union = SpecNamespace::My_union.new(:integer32, 25)
109
115
  other_union.read(proto)
110
- other_union.should == union
116
+ expect(other_union).to eq(union)
111
117
  end
112
118
 
113
119
  it "should serialize to json correctly" do
@@ -119,24 +125,24 @@ describe 'Union' do
119
125
 
120
126
  other_union = SpecNamespace::My_union.new(:integer32, 25)
121
127
  other_union.read(proto)
122
- other_union.should == union
128
+ expect(other_union).to eq(union)
123
129
  end
124
130
 
125
131
  it "should raise when validating unset union" do
126
132
  union = SpecNamespace::My_union.new
127
- lambda { union.validate }.should raise_error(StandardError, "Union fields are not set.")
133
+ expect { union.validate }.to raise_error(StandardError, "Union fields are not set.")
128
134
 
129
135
  other_union = SpecNamespace::My_union.new(:integer32, 1)
130
- lambda { other_union.validate }.should_not raise_error(StandardError, "Union fields are not set.")
136
+ expect { other_union.validate }.not_to raise_error
131
137
  end
132
138
 
133
139
  it "should validate an enum field properly" do
134
140
  union = SpecNamespace::TestUnion.new(:enum_field, 3)
135
- union.get_set_field.should == :enum_field
136
- lambda { union.validate }.should raise_error(Thrift::ProtocolException, "Invalid value of field enum_field!")
141
+ expect(union.get_set_field).to eq(:enum_field)
142
+ expect { union.validate }.to raise_error(Thrift::ProtocolException, "Invalid value of field enum_field!")
137
143
 
138
144
  other_union = SpecNamespace::TestUnion.new(:enum_field, 1)
139
- lambda { other_union.validate }.should_not raise_error(Thrift::ProtocolException, "Invalid value of field enum_field!")
145
+ expect { other_union.validate }.not_to raise_error
140
146
  end
141
147
 
142
148
  it "should properly serialize and match structs with a union" do
@@ -151,37 +157,37 @@ describe 'Union' do
151
157
  other_union = SpecNamespace::My_union.new(:some_characters, "hello there")
152
158
  swu2 = SpecNamespace::Struct_with_union.new(:fun_union => other_union)
153
159
 
154
- swu2.should_not == swu
160
+ expect(swu2).not_to eq(swu)
155
161
 
156
162
  swu2.read(proto)
157
- swu2.should == swu
163
+ expect(swu2).to eq(swu)
158
164
  end
159
165
 
160
166
  it "should support old style constructor" do
161
167
  union = SpecNamespace::My_union.new(:integer32 => 26)
162
- union.get_set_field.should == :integer32
163
- union.get_value.should == 26
168
+ expect(union.get_set_field).to eq(:integer32)
169
+ expect(union.get_value).to eq(26)
164
170
  end
165
171
 
166
172
  it "should not throw an error when inspected and unset" do
167
- lambda{SpecNamespace::TestUnion.new().inspect}.should_not raise_error
173
+ expect{SpecNamespace::TestUnion.new().inspect}.not_to raise_error
168
174
  end
169
175
 
170
176
  it "should print enum value name when inspected" do
171
- SpecNamespace::My_union.new(:some_enum => SpecNamespace::SomeEnum::ONE).inspect.should == "<SpecNamespace::My_union some_enum: ONE (0)>"
177
+ expect(SpecNamespace::My_union.new(:some_enum => SpecNamespace::SomeEnum::ONE).inspect).to eq("<SpecNamespace::My_union some_enum: ONE (0)>")
172
178
 
173
- SpecNamespace::My_union.new(:my_map => {SpecNamespace::SomeEnum::ONE => [SpecNamespace::SomeEnum::TWO]}).inspect.should == "<SpecNamespace::My_union my_map: {ONE (0): [TWO (1)]}>"
179
+ expect(SpecNamespace::My_union.new(:my_map => {SpecNamespace::SomeEnum::ONE => [SpecNamespace::SomeEnum::TWO]}).inspect).to eq("<SpecNamespace::My_union my_map: {ONE (0): [TWO (1)]}>")
174
180
  end
175
181
 
176
182
  it "should offer field? methods" do
177
- SpecNamespace::My_union.new.some_enum?.should be_false
178
- SpecNamespace::My_union.new(:some_enum => SpecNamespace::SomeEnum::ONE).some_enum?.should be_true
179
- SpecNamespace::My_union.new(:im_true => false).im_true?.should be_true
180
- SpecNamespace::My_union.new(:im_true => true).im_true?.should be_true
183
+ expect(SpecNamespace::My_union.new.some_enum?).to be_falsey
184
+ expect(SpecNamespace::My_union.new(:some_enum => SpecNamespace::SomeEnum::ONE).some_enum?).to be_truthy
185
+ expect(SpecNamespace::My_union.new(:im_true => false).im_true?).to be_truthy
186
+ expect(SpecNamespace::My_union.new(:im_true => true).im_true?).to be_truthy
181
187
  end
182
188
 
183
189
  it "should pretty print binary fields" do
184
- SpecNamespace::TestUnion.new(:binary_field => "\001\002\003").inspect.should == "<SpecNamespace::TestUnion binary_field: 010203>"
190
+ expect(SpecNamespace::TestUnion.new(:binary_field => "\001\002\003").inspect).to eq("<SpecNamespace::TestUnion binary_field: 010203>")
185
191
  end
186
192
 
187
193
  it "should be comparable" do
@@ -200,7 +206,7 @@ describe 'Union' do
200
206
  for y in 0..3
201
207
  for x in 0..3
202
208
  # puts "#{objs[y].inspect} <=> #{objs[x].inspect} should == #{relationships[y][x]}"
203
- (objs[y] <=> objs[x]).should == relationships[y][x]
209
+ expect(objs[y] <=> objs[x]).to eq(relationships[y][x])
204
210
  end
205
211
  end
206
212
  end
@@ -26,21 +26,26 @@ describe 'UNIXSocket' do
26
26
  before(:each) do
27
27
  @path = '/tmp/thrift_spec_socket'
28
28
  @socket = Thrift::UNIXSocket.new(@path)
29
- @handle = mock("Handle", :closed? => false)
30
- @handle.stub!(:close)
31
- ::UNIXSocket.stub!(:new).and_return(@handle)
29
+ @handle = double("Handle", :closed? => false)
30
+ allow(@handle).to receive(:close)
31
+ allow(::UNIXSocket).to receive(:new).and_return(@handle)
32
32
  end
33
33
 
34
34
  it_should_behave_like "a socket"
35
35
 
36
36
  it "should raise a TransportException when it cannot open a socket" do
37
- ::UNIXSocket.should_receive(:new).and_raise(StandardError)
38
- lambda { @socket.open }.should raise_error(Thrift::TransportException) { |e| e.type.should == Thrift::TransportException::NOT_OPEN }
37
+ expect(::UNIXSocket).to receive(:new).and_raise(StandardError)
38
+ expect { @socket.open }.to raise_error(Thrift::TransportException) { |e| expect(e.type).to eq(Thrift::TransportException::NOT_OPEN) }
39
39
  end
40
40
 
41
41
  it "should accept an optional timeout" do
42
- ::UNIXSocket.stub!(:new)
43
- Thrift::UNIXSocket.new(@path, 5).timeout.should == 5
42
+ allow(::UNIXSocket).to receive(:new)
43
+ expect(Thrift::UNIXSocket.new(@path, 5).timeout).to eq(5)
44
+ end
45
+
46
+ it "should provide a reasonable to_s" do
47
+ allow(::UNIXSocket).to receive(:new)
48
+ expect(Thrift::UNIXSocket.new(@path).to_s).to eq("domain(#{@path})")
44
49
  end
45
50
  end
46
51
 
@@ -51,57 +56,61 @@ describe 'UNIXSocket' do
51
56
  end
52
57
 
53
58
  it "should create a handle when calling listen" do
54
- UNIXServer.should_receive(:new).with(@path)
59
+ expect(UNIXServer).to receive(:new).with(@path)
55
60
  @socket.listen
56
61
  end
57
62
 
58
63
  it "should create a Thrift::UNIXSocket to wrap accepted sockets" do
59
- handle = mock("UNIXServer")
60
- UNIXServer.should_receive(:new).with(@path).and_return(handle)
64
+ handle = double("UNIXServer")
65
+ expect(UNIXServer).to receive(:new).with(@path).and_return(handle)
61
66
  @socket.listen
62
- sock = mock("sock")
63
- handle.should_receive(:accept).and_return(sock)
64
- trans = mock("UNIXSocket")
65
- Thrift::UNIXSocket.should_receive(:new).and_return(trans)
66
- trans.should_receive(:handle=).with(sock)
67
- @socket.accept.should == trans
67
+ sock = double("sock")
68
+ expect(handle).to receive(:accept).and_return(sock)
69
+ trans = double("UNIXSocket")
70
+ expect(Thrift::UNIXSocket).to receive(:new).and_return(trans)
71
+ expect(trans).to receive(:handle=).with(sock)
72
+ expect(@socket.accept).to eq(trans)
68
73
  end
69
74
 
70
75
  it "should close the handle when closed" do
71
- handle = mock("UNIXServer", :closed? => false)
72
- UNIXServer.should_receive(:new).with(@path).and_return(handle)
76
+ handle = double("UNIXServer", :closed? => false)
77
+ expect(UNIXServer).to receive(:new).with(@path).and_return(handle)
73
78
  @socket.listen
74
- handle.should_receive(:close)
75
- File.stub!(:delete)
79
+ expect(handle).to receive(:close)
80
+ allow(File).to receive(:delete)
76
81
  @socket.close
77
82
  end
78
83
 
79
84
  it "should delete the socket when closed" do
80
- handle = mock("UNIXServer", :closed? => false)
81
- UNIXServer.should_receive(:new).with(@path).and_return(handle)
85
+ handle = double("UNIXServer", :closed? => false)
86
+ expect(UNIXServer).to receive(:new).with(@path).and_return(handle)
82
87
  @socket.listen
83
- handle.stub!(:close)
84
- File.should_receive(:delete).with(@path)
88
+ allow(handle).to receive(:close)
89
+ expect(File).to receive(:delete).with(@path)
85
90
  @socket.close
86
91
  end
87
92
 
88
93
  it "should return nil when accepting if there is no handle" do
89
- @socket.accept.should be_nil
94
+ expect(@socket.accept).to be_nil
90
95
  end
91
96
 
92
97
  it "should return true for closed? when appropriate" do
93
- handle = mock("UNIXServer", :closed? => false)
94
- UNIXServer.stub!(:new).and_return(handle)
95
- File.stub!(:delete)
98
+ handle = double("UNIXServer", :closed? => false)
99
+ allow(UNIXServer).to receive(:new).and_return(handle)
100
+ allow(File).to receive(:delete)
96
101
  @socket.listen
97
- @socket.should_not be_closed
98
- handle.stub!(:close)
102
+ expect(@socket).not_to be_closed
103
+ allow(handle).to receive(:close)
99
104
  @socket.close
100
- @socket.should be_closed
105
+ expect(@socket).to be_closed
101
106
  @socket.listen
102
- @socket.should_not be_closed
103
- handle.stub!(:closed?).and_return(true)
104
- @socket.should be_closed
107
+ expect(@socket).not_to be_closed
108
+ allow(handle).to receive(:closed?).and_return(true)
109
+ expect(@socket).to be_closed
110
+ end
111
+
112
+ it "should provide a reasonable to_s" do
113
+ expect(@socket.to_s).to eq("domain(#{@path})")
105
114
  end
106
115
  end
107
116
  end