grpc 0.13.1-x86-mingw32 → 0.14.1.pre1-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/grpc_c.32.ruby +0 -0
  3. data/grpc_c.64.ruby +0 -0
  4. data/src/ruby/ext/grpc/extconf.rb +14 -20
  5. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -3
  6. data/src/ruby/ext/grpc/rb_call.c +37 -4
  7. data/src/ruby/ext/grpc/rb_call_credentials.c +13 -3
  8. data/src/ruby/ext/grpc/rb_channel.c +2 -3
  9. data/src/ruby/ext/grpc/rb_channel_args.c +2 -3
  10. data/src/ruby/ext/grpc/rb_channel_credentials.c +31 -3
  11. data/src/ruby/ext/grpc/rb_completion_queue.c +2 -2
  12. data/src/ruby/ext/grpc/rb_event_thread.c +1 -1
  13. data/src/ruby/ext/grpc/rb_grpc.c +4 -2
  14. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +8 -0
  15. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +14 -2
  16. data/src/ruby/ext/grpc/rb_server.c +2 -3
  17. data/src/ruby/ext/grpc/rb_server_credentials.c +16 -13
  18. data/src/ruby/ext/grpc/rb_signal.c +70 -0
  19. data/src/ruby/ext/grpc/rb_signal.h +39 -0
  20. data/src/ruby/lib/grpc.rb +21 -13
  21. data/src/ruby/lib/grpc/2.0/grpc_c.so +0 -0
  22. data/src/ruby/lib/grpc/2.1/grpc_c.so +0 -0
  23. data/src/ruby/lib/grpc/2.2/grpc_c.so +0 -0
  24. data/src/ruby/lib/grpc/2.3/grpc_c.so +0 -0
  25. data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
  26. data/src/ruby/lib/grpc/errors.rb +2 -2
  27. data/src/ruby/lib/grpc/generic/active_call.rb +10 -3
  28. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -2
  29. data/src/ruby/lib/grpc/generic/client_stub.rb +10 -7
  30. data/src/ruby/lib/grpc/generic/rpc_desc.rb +2 -2
  31. data/src/ruby/lib/grpc/generic/rpc_server.rb +21 -61
  32. data/src/ruby/lib/grpc/generic/service.rb +5 -15
  33. data/src/ruby/lib/grpc/grpc.rb +3 -3
  34. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  35. data/src/ruby/{bin/interop/interop_client.rb → lib/grpc/signals.rb} +39 -21
  36. data/src/ruby/lib/grpc/version.rb +2 -2
  37. data/src/ruby/pb/generate_proto_ruby.sh +9 -2
  38. data/src/ruby/pb/grpc/health/checker.rb +1 -1
  39. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services.rb +28 -0
  40. data/src/ruby/pb/grpc/testing/metrics.rb +28 -0
  41. data/src/ruby/pb/grpc/testing/metrics_services.rb +27 -0
  42. data/src/ruby/pb/test/client.rb +12 -23
  43. data/src/ruby/pb/test/server.rb +1 -1
  44. data/src/ruby/spec/client_server_spec.rb +1 -1
  45. data/src/ruby/spec/generic/client_stub_spec.rb +18 -17
  46. data/src/ruby/spec/generic/rpc_server_spec.rb +23 -7
  47. data/src/ruby/spec/generic/service_spec.rb +0 -69
  48. data/src/ruby/{bin/interop/interop_server.rb → spec/pb/duplicate/codegen_spec.rb} +41 -20
  49. data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
  50. metadata +27 -15
  51. data/src/ruby/bin/grpc_ruby_interop_client +0 -33
  52. data/src/ruby/bin/grpc_ruby_interop_server +0 -33
@@ -39,7 +39,7 @@
39
39
 
40
40
  this_dir = File.expand_path(File.dirname(__FILE__))
41
41
  lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib')
42
- pb_dir = File.dirname(File.dirname(this_dir))
42
+ pb_dir = File.dirname(this_dir)
43
43
  $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
44
44
  $LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir)
45
45
  $LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir)
@@ -1,4 +1,4 @@
1
- # Copyright 2015-2016, Google Inc.
1
+ # Copyright 2015, Google Inc.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -193,44 +193,45 @@ describe 'ClientStub' do
193
193
  describe '#client_streamer' do
194
194
  shared_examples 'client streaming' do
195
195
  before(:each) do
196
+ server_port = create_test_server
197
+ host = "localhost:#{server_port}"
198
+ @stub = GRPC::ClientStub.new(host, @cq, :this_channel_is_insecure)
199
+ @options = { k1: 'v1', k2: 'v2' }
196
200
  @sent_msgs = Array.new(3) { |i| 'msg_' + (i + 1).to_s }
197
201
  @resp = 'a_reply'
198
202
  end
199
203
 
200
204
  it 'should send requests to/receive a reply from a server' do
201
- server_port = create_test_server
202
- host = "localhost:#{server_port}"
203
205
  th = run_client_streamer(@sent_msgs, @resp, @pass)
204
- stub = GRPC::ClientStub.new(host, @cq, :this_channel_is_insecure)
205
- expect(get_response(stub)).to eq(@resp)
206
+ expect(get_response(@stub)).to eq(@resp)
206
207
  th.join
207
208
  end
208
209
 
209
210
  it 'should send metadata to the server ok' do
210
- server_port = create_test_server
211
- host = "localhost:#{server_port}"
212
- th = run_client_streamer(@sent_msgs, @resp, @pass,
213
- k1: 'v1', k2: 'v2')
214
- stub = GRPC::ClientStub.new(host, @cq, :this_channel_is_insecure)
215
- expect(get_response(stub)).to eq(@resp)
211
+ th = run_client_streamer(@sent_msgs, @resp, @pass, @options)
212
+ expect(get_response(@stub)).to eq(@resp)
216
213
  th.join
217
214
  end
218
215
 
219
216
  it 'should raise an error if the status is not ok' do
220
- server_port = create_test_server
221
- host = "localhost:#{server_port}"
222
217
  th = run_client_streamer(@sent_msgs, @resp, @fail)
223
- stub = GRPC::ClientStub.new(host, @cq, :this_channel_is_insecure)
224
- blk = proc { get_response(stub) }
218
+ blk = proc { get_response(@stub) }
225
219
  expect(&blk).to raise_error(GRPC::BadStatus)
226
220
  th.join
227
221
  end
222
+
223
+ it 'should raise ArgumentError if metadata contains invalid values' do
224
+ @options.merge!(k3: 3)
225
+ expect do
226
+ get_response(@stub)
227
+ end.to raise_error(ArgumentError,
228
+ /Header values must be of type string or array/)
229
+ end
228
230
  end
229
231
 
230
232
  describe 'without a call operation' do
231
233
  def get_response(stub)
232
- stub.client_streamer(@method, @sent_msgs, noop, noop,
233
- k1: 'v1', k2: 'v2')
234
+ stub.client_streamer(@method, @sent_msgs, noop, noop, @options)
234
235
  end
235
236
 
236
237
  it_behaves_like 'client streaming'
@@ -239,7 +240,7 @@ describe 'ClientStub' do
239
240
  describe 'via a call operation' do
240
241
  def get_response(stub)
241
242
  op = stub.client_streamer(@method, @sent_msgs, noop, noop,
242
- return_op: true, k1: 'v1', k2: 'v2')
243
+ @options.merge(return_op: true))
243
244
  expect(op).to be_a(GRPC::ActiveCall::Operation)
244
245
  op.execute
245
246
  end
@@ -1,4 +1,4 @@
1
- # Copyright 2015-2016, Google Inc.
1
+ # Copyright 2015, Google Inc.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
@@ -308,10 +308,6 @@ describe GRPC::RpcServer do
308
308
  expect { @srv.handle(EmptyService) }.to raise_error
309
309
  end
310
310
 
311
- it 'raises if the service does not define its rpc methods' do
312
- expect { @srv.handle(NoRpcImplementation) }.to raise_error
313
- end
314
-
315
311
  it 'raises if a handler method is already registered' do
316
312
  @srv.handle(EchoService)
317
313
  expect { r.handle(EchoService) }.to raise_error
@@ -349,6 +345,25 @@ describe GRPC::RpcServer do
349
345
  t.join
350
346
  end
351
347
 
348
+ it 'should return UNIMPLEMENTED on unimplemented methods', server: true do
349
+ @srv.handle(NoRpcImplementation)
350
+ t = Thread.new { @srv.run }
351
+ @srv.wait_till_running
352
+ req = EchoMsg.new
353
+ blk = proc do
354
+ cq = GRPC::Core::CompletionQueue.new
355
+ stub = GRPC::ClientStub.new(@host, cq, :this_channel_is_insecure,
356
+ **client_opts)
357
+ stub.request_response('/an_rpc', req, marshal, unmarshal)
358
+ end
359
+ expect(&blk).to raise_error do |error|
360
+ expect(error).to be_a(GRPC::BadStatus)
361
+ expect(error.code).to be(GRPC::Core::StatusCodes::UNIMPLEMENTED)
362
+ end
363
+ @srv.stop
364
+ t.join
365
+ end
366
+
352
367
  it 'should handle multiple sequential requests', server: true do
353
368
  @srv.handle(EchoService)
354
369
  t = Thread.new { @srv.run }
@@ -426,7 +441,7 @@ describe GRPC::RpcServer do
426
441
  threads.each(&:join)
427
442
  end
428
443
 
429
- it 'should return UNAVAILABLE on too many jobs', server: true do
444
+ it 'should return RESOURCE_EXHAUSTED on too many jobs', server: true do
430
445
  opts = {
431
446
  a_channel_arg: 'an_arg',
432
447
  server_override: @server,
@@ -449,7 +464,8 @@ describe GRPC::RpcServer do
449
464
  begin
450
465
  stub.an_rpc(req)
451
466
  rescue GRPC::BadStatus => e
452
- one_failed_as_unavailable = e.code == StatusCodes::UNAVAILABLE
467
+ one_failed_as_unavailable =
468
+ e.code == StatusCodes::RESOURCE_EXHAUSTED
453
469
  end
454
470
  end
455
471
  end
@@ -273,73 +273,4 @@ describe GenericService do
273
273
  end
274
274
  end
275
275
  end
276
-
277
- describe '#assert_rpc_descs_have_methods' do
278
- it 'fails if there is no instance method for an rpc descriptor' do
279
- c1 = Class.new do
280
- include GenericService
281
- rpc :AnRpc, GoodMsg, GoodMsg
282
- end
283
- expect { c1.assert_rpc_descs_have_methods }.to raise_error
284
-
285
- c2 = Class.new do
286
- include GenericService
287
- rpc :AnRpc, GoodMsg, GoodMsg
288
- rpc :AnotherRpc, GoodMsg, GoodMsg
289
-
290
- def an_rpc
291
- end
292
- end
293
- expect { c2.assert_rpc_descs_have_methods }.to raise_error
294
- end
295
-
296
- it 'passes if there are corresponding methods for each descriptor' do
297
- c = Class.new do
298
- include GenericService
299
- rpc :AnRpc, GoodMsg, GoodMsg
300
- rpc :AServerStreamer, GoodMsg, stream(GoodMsg)
301
- rpc :AClientStreamer, stream(GoodMsg), GoodMsg
302
- rpc :ABidiStreamer, stream(GoodMsg), stream(GoodMsg)
303
-
304
- def an_rpc(_req, _call)
305
- end
306
-
307
- def a_server_streamer(_req, _call)
308
- end
309
-
310
- def a_client_streamer(_call)
311
- end
312
-
313
- def a_bidi_streamer(_call)
314
- end
315
- end
316
- expect { c.assert_rpc_descs_have_methods }.to_not raise_error
317
- end
318
-
319
- it 'passes for subclasses of that include GenericService' do
320
- base = Class.new do
321
- include GenericService
322
- rpc :AnRpc, GoodMsg, GoodMsg
323
-
324
- def an_rpc(_req, _call)
325
- end
326
- end
327
- c = Class.new(base)
328
- expect { c.assert_rpc_descs_have_methods }.to_not raise_error
329
- expect(c.include?(GenericService)).to be(true)
330
- end
331
-
332
- it 'passes if subclasses define the rpc methods' do
333
- base = Class.new do
334
- include GenericService
335
- rpc :AnRpc, GoodMsg, GoodMsg
336
- end
337
- c = Class.new(base) do
338
- def an_rpc(_req, _call)
339
- end
340
- end
341
- expect { c.assert_rpc_descs_have_methods }.to_not raise_error
342
- expect(c.include?(GenericService)).to be(true)
343
- end
344
- end
345
276
  end
@@ -1,6 +1,4 @@
1
- #!/usr/bin/env ruby
2
-
3
- # Copyright 2015, Google Inc.
1
+ # Copyright 2016, Google Inc.
4
2
  # All rights reserved.
5
3
  #
6
4
  # Redistribution and use in source and binary forms, with or without
@@ -29,22 +27,45 @@
29
27
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
28
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
29
 
32
- # #######################################################################
33
- # DEPRECATED: The behaviour in this file has been moved to pb/test/server.rb
34
- #
35
- # This file remains to support existing tools and scripts that use it.
36
- # ######################################################################
37
- #
38
- # interop_server is a Testing app that runs a gRPC interop testing server.
39
- #
40
- # It helps validate interoperation b/w gRPC in different environments
41
- #
42
- # Helps validate interoperation b/w different gRPC implementations.
43
- #
44
- # Usage: $ path/to/interop_server.rb --port
30
+ require 'open3'
31
+ require 'tmpdir'
32
+
33
+ def can_run_codegen_check
34
+ system('which grpc_ruby_plugin') && system('which protoc')
35
+ end
36
+
37
+ describe 'Ping protobuf code generation' do
38
+ if !can_run_codegen_check
39
+ skip 'protoc || grpc_ruby_plugin missing, cannot verify ping code-gen'
40
+ else
41
+ it 'should have the same content as created by code generation' do
42
+ root_dir = File.join(File.dirname(__FILE__), '..', '..', '..', '..', '..')
45
43
 
46
- this_dir = File.expand_path(File.dirname(__FILE__))
47
- pb_dir = File.join(File.dirname(File.dirname(this_dir)), 'pb')
48
- $LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir)
44
+ # Get the current content
45
+ service_path = File.join(root_dir, 'src', 'ruby', 'pb', 'grpc',
46
+ 'testing', 'duplicate',
47
+ 'echo_duplicate_services.rb')
48
+ want = nil
49
+ File.open(service_path) { |f| want = f.read }
49
50
 
50
- require 'test/server'
51
+ # Regenerate it
52
+ plugin, = Open3.capture2('which', 'grpc_ruby_plugin')
53
+ plugin = plugin.strip
54
+ got = nil
55
+ Dir.mktmpdir do |tmp_dir|
56
+ gen_out = File.join(tmp_dir, 'src', 'proto', 'grpc', 'testing',
57
+ 'duplicate', 'echo_duplicate_services.rb')
58
+ pid = spawn(
59
+ 'protoc',
60
+ '-I.',
61
+ 'src/proto/grpc/testing/duplicate/echo_duplicate.proto',
62
+ "--grpc_out=#{tmp_dir}",
63
+ "--plugin=protoc-gen-grpc=#{plugin}",
64
+ chdir: root_dir)
65
+ Process.wait(pid)
66
+ File.open(gen_out) { |f| got = f.read }
67
+ end
68
+ expect(got).to eq(want)
69
+ end
70
+ end
71
+ end
@@ -1,4 +1,4 @@
1
- # Copyright 2015-2016, Google Inc.
1
+ # Copyright 2015, Google Inc.
2
2
  # All rights reserved.
3
3
  #
4
4
  # Redistribution and use in source and binary forms, with or without
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.14.1.pre1
5
5
  platform: x86-mingw32
6
6
  authors:
7
7
  - gRPC Authors
8
8
  autorequire:
9
9
  bindir: src/ruby/bin
10
10
  cert_chain: []
11
- date: 2016-03-31 00:00:00.000000000 Z
11
+ date: 2016-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: facter
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.4'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.4'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: logging
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -166,13 +180,7 @@ dependencies:
166
180
  version: 0.7.0
167
181
  description: Send RPCs from Ruby using GRPC
168
182
  email: temiola@google.com
169
- executables:
170
- - math_client.rb
171
- - math_server.rb
172
- - noproto_client.rb
173
- - noproto_server.rb
174
- - grpc_ruby_interop_client
175
- - grpc_ruby_interop_server
183
+ executables: []
176
184
  extensions: []
177
185
  extra_rdoc_files: []
178
186
  files:
@@ -183,10 +191,6 @@ files:
183
191
  - src/ruby/bin/apis/pubsub_demo.rb
184
192
  - src/ruby/bin/apis/tech/pubsub/proto/pubsub.rb
185
193
  - src/ruby/bin/apis/tech/pubsub/proto/pubsub_services.rb
186
- - src/ruby/bin/grpc_ruby_interop_client
187
- - src/ruby/bin/grpc_ruby_interop_server
188
- - src/ruby/bin/interop/interop_client.rb
189
- - src/ruby/bin/interop/interop_server.rb
190
194
  - src/ruby/bin/math.rb
191
195
  - src/ruby/bin/math_client.rb
192
196
  - src/ruby/bin/math_server.rb
@@ -220,6 +224,8 @@ files:
220
224
  - src/ruby/ext/grpc/rb_server.h
221
225
  - src/ruby/ext/grpc/rb_server_credentials.c
222
226
  - src/ruby/ext/grpc/rb_server_credentials.h
227
+ - src/ruby/ext/grpc/rb_signal.c
228
+ - src/ruby/ext/grpc/rb_signal.h
223
229
  - src/ruby/lib/grpc.rb
224
230
  - src/ruby/lib/grpc/2.0/grpc_c.so
225
231
  - src/ruby/lib/grpc/2.1/grpc_c.so
@@ -237,12 +243,16 @@ files:
237
243
  - src/ruby/lib/grpc/grpc_c.so
238
244
  - src/ruby/lib/grpc/logconfig.rb
239
245
  - src/ruby/lib/grpc/notifier.rb
246
+ - src/ruby/lib/grpc/signals.rb
240
247
  - src/ruby/lib/grpc/version.rb
241
248
  - src/ruby/pb/README.md
242
249
  - src/ruby/pb/generate_proto_ruby.sh
243
250
  - src/ruby/pb/grpc/health/checker.rb
244
251
  - src/ruby/pb/grpc/health/v1/health.rb
245
252
  - src/ruby/pb/grpc/health/v1/health_services.rb
253
+ - src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services.rb
254
+ - src/ruby/pb/grpc/testing/metrics.rb
255
+ - src/ruby/pb/grpc/testing/metrics_services.rb
246
256
  - src/ruby/pb/test/client.rb
247
257
  - src/ruby/pb/test/proto/empty.rb
248
258
  - src/ruby/pb/test/proto/messages.rb
@@ -261,6 +271,7 @@ files:
261
271
  - src/ruby/spec/generic/rpc_server_pool_spec.rb
262
272
  - src/ruby/spec/generic/rpc_server_spec.rb
263
273
  - src/ruby/spec/generic/service_spec.rb
274
+ - src/ruby/spec/pb/duplicate/codegen_spec.rb
264
275
  - src/ruby/spec/pb/health/checker_spec.rb
265
276
  - src/ruby/spec/server_credentials_spec.rb
266
277
  - src/ruby/spec/server_spec.rb
@@ -287,9 +298,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
287
298
  version: 2.0.0
288
299
  required_rubygems_version: !ruby/object:Gem::Requirement
289
300
  requirements:
290
- - - ">="
301
+ - - ">"
291
302
  - !ruby/object:Gem::Version
292
- version: '0'
303
+ version: 1.3.1
293
304
  requirements: []
294
305
  rubyforge_project:
295
306
  rubygems_version: 2.5.1
@@ -304,6 +315,7 @@ test_files:
304
315
  - src/ruby/spec/generic/service_spec.rb
305
316
  - src/ruby/spec/generic/active_call_spec.rb
306
317
  - src/ruby/spec/pb/health/checker_spec.rb
318
+ - src/ruby/spec/pb/duplicate/codegen_spec.rb
307
319
  - src/ruby/spec/channel_spec.rb
308
320
  - src/ruby/spec/client_server_spec.rb
309
321
  - src/ruby/spec/testdata/README
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # Copyright 2015, Google Inc.
4
- # All rights reserved.
5
- #
6
- # Redistribution and use in source and binary forms, with or without
7
- # modification, are permitted provided that the following conditions are
8
- # met:
9
- #
10
- # * Redistributions of source code must retain the above copyright
11
- # notice, this list of conditions and the following disclaimer.
12
- # * Redistributions in binary form must reproduce the above
13
- # copyright notice, this list of conditions and the following disclaimer
14
- # in the documentation and/or other materials provided with the
15
- # distribution.
16
- # * Neither the name of Google Inc. nor the names of its
17
- # contributors may be used to endorse or promote products derived from
18
- # this software without specific prior written permission.
19
- #
20
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
- # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
-
32
- # Provides a gem binary entry point for the interop client.
33
- require 'test/client'