thrift 0.13.0 → 0.15.0
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/ext/compact_protocol.c +1 -0
- data/ext/struct.c +9 -0
- data/ext/thrift_native.c +17 -0
- data/lib/thrift/transport/http_client_transport.rb +2 -0
- data/spec/http_client_spec.rb +22 -0
- data/spec/spec_helper.rb +5 -0
- metadata +25 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f990b7528ad0c61eee1ef6fb2ff0cfc85c7f4912ec34eb6919e998f5dbbf016
|
4
|
+
data.tar.gz: d6958229cbc05dbe919746ec9019823635a29018e8f6c6542c5698bc61d5444a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 649454979aca2efed3f750e6d81a5b4763e46d16ea2d7ae795401bca2ec94f4b4a93a8264bf010d3ff54674cb6f206d52a65a886b197dd9ae677a53ff835d79b
|
7
|
+
data.tar.gz: 3b257ad43df2146a8ee1bc96d06142476004de18af38080799fe197864cda0858479e18955d20f9dc271f9c40ec106783e87ece7bbc0c3ccba6c32dafda34707
|
data/ext/compact_protocol.c
CHANGED
@@ -567,6 +567,7 @@ VALUE rb_thrift_compact_proto_read_binary(VALUE self) {
|
|
567
567
|
|
568
568
|
static void Init_constants() {
|
569
569
|
thrift_compact_protocol_class = rb_const_get(thrift_module, rb_intern("CompactProtocol"));
|
570
|
+
rb_global_variable(&thrift_compact_protocol_class);
|
570
571
|
|
571
572
|
VERSION = rb_num2ll(rb_const_get(thrift_compact_protocol_class, rb_intern("VERSION")));
|
572
573
|
VERSION_MASK = rb_num2ll(rb_const_get(thrift_compact_protocol_class, rb_intern("VERSION_MASK")));
|
data/ext/struct.c
CHANGED
@@ -698,14 +698,23 @@ void Init_struct() {
|
|
698
698
|
rb_define_method(struct_module, "read", rb_thrift_struct_read, 1);
|
699
699
|
|
700
700
|
thrift_union_class = rb_const_get(thrift_module, rb_intern("Union"));
|
701
|
+
rb_global_variable(&thrift_union_class);
|
701
702
|
|
702
703
|
rb_define_method(thrift_union_class, "write", rb_thrift_union_write, 1);
|
703
704
|
rb_define_method(thrift_union_class, "read", rb_thrift_union_read, 1);
|
704
705
|
|
705
706
|
setfield_id = rb_intern("@setfield");
|
707
|
+
rb_global_variable(&setfield_id);
|
708
|
+
|
706
709
|
setvalue_id = rb_intern("@value");
|
710
|
+
rb_global_variable(&setvalue_id);
|
707
711
|
|
708
712
|
to_s_method_id = rb_intern("to_s");
|
713
|
+
rb_global_variable(&to_s_method_id);
|
714
|
+
|
709
715
|
name_to_id_method_id = rb_intern("name_to_id");
|
716
|
+
rb_global_variable(&name_to_id_method_id);
|
717
|
+
|
710
718
|
sorted_field_ids_method_id = rb_intern("sorted_field_ids");
|
719
|
+
rb_global_variable(&sorted_field_ids_method_id);
|
711
720
|
}
|
data/ext/thrift_native.c
CHANGED
@@ -112,10 +112,19 @@ VALUE protocol_exception_class;
|
|
112
112
|
void Init_thrift_native() {
|
113
113
|
// cached classes
|
114
114
|
thrift_module = rb_const_get(rb_cObject, rb_intern("Thrift"));
|
115
|
+
rb_global_variable(&thrift_module);
|
116
|
+
|
115
117
|
thrift_bytes_module = rb_const_get(thrift_module, rb_intern("Bytes"));
|
118
|
+
rb_global_variable(&thrift_bytes_module);
|
119
|
+
|
116
120
|
thrift_types_module = rb_const_get(thrift_module, rb_intern("Types"));
|
121
|
+
rb_global_variable(&thrift_types_module);
|
122
|
+
|
117
123
|
rb_cSet = rb_const_get(rb_cObject, rb_intern("Set"));
|
124
|
+
rb_global_variable(&rb_cSet);
|
125
|
+
|
118
126
|
protocol_exception_class = rb_const_get(thrift_module, rb_intern("ProtocolException"));
|
127
|
+
rb_global_variable(&protocol_exception_class);
|
119
128
|
|
120
129
|
// Init ttype constants
|
121
130
|
TTYPE_BOOL = FIX2INT(rb_const_get(thrift_types_module, rb_intern("BOOL")));
|
@@ -194,6 +203,14 @@ void Init_thrift_native() {
|
|
194
203
|
class_sym = ID2SYM(rb_intern("class"));
|
195
204
|
binary_sym = ID2SYM(rb_intern("binary"));
|
196
205
|
|
206
|
+
rb_global_variable(&type_sym);
|
207
|
+
rb_global_variable(&name_sym);
|
208
|
+
rb_global_variable(&key_sym);
|
209
|
+
rb_global_variable(&value_sym);
|
210
|
+
rb_global_variable(&element_sym);
|
211
|
+
rb_global_variable(&class_sym);
|
212
|
+
rb_global_variable(&binary_sym);
|
213
|
+
|
197
214
|
Init_struct();
|
198
215
|
Init_binary_protocol_accelerated();
|
199
216
|
Init_compact_protocol();
|
@@ -47,6 +47,8 @@ module Thrift
|
|
47
47
|
http.use_ssl = @url.scheme == 'https'
|
48
48
|
http.verify_mode = @ssl_verify_mode if @url.scheme == 'https'
|
49
49
|
resp = http.post(@url.request_uri, @outbuf, @headers)
|
50
|
+
raise TransportException.new(TransportException::UNKNOWN, "#{self.class.name} Could not connect to #{@url}, HTTP status code #{resp.code.to_i}") unless (200..299).include?(resp.code.to_i)
|
51
|
+
|
50
52
|
data = resp.body
|
51
53
|
data = Bytes.force_binary_encoding(data)
|
52
54
|
@inbuf = StringIO.new data
|
data/spec/http_client_spec.rb
CHANGED
@@ -45,6 +45,7 @@ describe 'Thrift::HTTPClientTransport' do
|
|
45
45
|
expect(http).to receive(:post).with("/path/to/service?param=value", "a test frame", {"Content-Type"=>"application/x-thrift"}) do
|
46
46
|
double("Net::HTTPOK").tap do |response|
|
47
47
|
expect(response).to receive(:body).and_return "data"
|
48
|
+
expect(response).to receive(:code).and_return "200"
|
48
49
|
end
|
49
50
|
end
|
50
51
|
end
|
@@ -65,6 +66,7 @@ describe 'Thrift::HTTPClientTransport' do
|
|
65
66
|
expect(http).to receive(:post).with("/path/to/service?param=value", "test", headers) do
|
66
67
|
double("Net::HTTPOK").tap do |response|
|
67
68
|
expect(response).to receive(:body).and_return "data"
|
69
|
+
expect(response).to receive(:code).and_return "200"
|
68
70
|
end
|
69
71
|
end
|
70
72
|
end
|
@@ -86,6 +88,24 @@ describe 'Thrift::HTTPClientTransport' do
|
|
86
88
|
expect(@client.instance_variable_get(:@outbuf)).to eq(Thrift::Bytes.empty_byte_buffer)
|
87
89
|
end
|
88
90
|
|
91
|
+
it 'should raise TransportError on HTTP failures' do
|
92
|
+
@client.write "test"
|
93
|
+
|
94
|
+
expect(Net::HTTP).to receive(:new).with("my.domain.com", 80) do
|
95
|
+
double("Net::HTTP").tap do |http|
|
96
|
+
expect(http).to receive(:use_ssl=).with(false)
|
97
|
+
expect(http).to receive(:post).with("/path/to/service?param=value", "test", {"Content-Type"=>"application/x-thrift"}) do
|
98
|
+
double("Net::HTTPOK").tap do |response|
|
99
|
+
expect(response).not_to receive(:body)
|
100
|
+
expect(response).to receive(:code).at_least(:once).and_return "503"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
expect { @client.flush }.to raise_error(Thrift::TransportException)
|
107
|
+
end
|
108
|
+
|
89
109
|
end
|
90
110
|
|
91
111
|
describe 'ssl enabled' do
|
@@ -107,6 +127,7 @@ describe 'Thrift::HTTPClientTransport' do
|
|
107
127
|
"Content-Type" => "application/x-thrift") do
|
108
128
|
double("Net::HTTPOK").tap do |response|
|
109
129
|
expect(response).to receive(:body).and_return "data"
|
130
|
+
expect(response).to receive(:code).and_return "200"
|
110
131
|
end
|
111
132
|
end
|
112
133
|
end
|
@@ -128,6 +149,7 @@ describe 'Thrift::HTTPClientTransport' do
|
|
128
149
|
"Content-Type" => "application/x-thrift") do
|
129
150
|
double("Net::HTTPOK").tap do |response|
|
130
151
|
expect(response).to receive(:body).and_return "data"
|
152
|
+
expect(response).to receive(:code).and_return "200"
|
131
153
|
end
|
132
154
|
end
|
133
155
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -62,3 +62,8 @@ end
|
|
62
62
|
|
63
63
|
$:.unshift File.join(File.dirname(__FILE__), *%w[gen-rb/flat])
|
64
64
|
|
65
|
+
if defined?(GC.verify_compaction_references) == 'method'
|
66
|
+
# This method was added in Ruby 3.0.0. Calling it this way asks the GC to
|
67
|
+
# move objects around, helping to find object movement bugs.
|
68
|
+
GC.verify_compaction_references(double_heap: true, toward: :empty)
|
69
|
+
end
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thrift
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Apache Thrift Developers
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.11'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.11'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -70,16 +70,16 @@ dependencies:
|
|
70
70
|
name: rack
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 2.0.8
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 2.0.8
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rack-test
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '3.7'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: srv
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: thin
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -309,7 +323,7 @@ homepage: http://thrift.apache.org
|
|
309
323
|
licenses:
|
310
324
|
- Apache-2.0
|
311
325
|
metadata: {}
|
312
|
-
post_install_message:
|
326
|
+
post_install_message:
|
313
327
|
rdoc_options:
|
314
328
|
- "--line-numbers"
|
315
329
|
- "--inline-source"
|
@@ -333,7 +347,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
333
347
|
requirements: []
|
334
348
|
rubyforge_project: thrift
|
335
349
|
rubygems_version: 2.7.6.2
|
336
|
-
signing_key:
|
350
|
+
signing_key:
|
337
351
|
specification_version: 4
|
338
352
|
summary: Ruby bindings for Apache Thrift
|
339
353
|
test_files:
|