grpc 1.37.0.pre1-x86-linux → 1.39.0.pre1-x86-linux

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.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6acc47f4cc6e6965f793e5a2cada7e13bfd1ce36a269ef906890042ac15c5f45
4
- data.tar.gz: 78cc0d5aff2e5d19184d086f7a2e5dc188b23717acced34689d0d98d892eade0
3
+ metadata.gz: 1d4d3e994cd8784ebe417f5632a2d498753eecc9eedd735dc47b00996e4526d7
4
+ data.tar.gz: fe297117be8800d05840ee840d3a3470e4c2f2ff5f47b5a2153c63fb28d47928
5
5
  SHA512:
6
- metadata.gz: 50ed0e473677924974aceb5059c7651d230d28411d56cd56294f48be5a5b5633ea047fb12055caf3579f91a9db9dfa5049a023ae4677fd250c920de4b6069ee7
7
- data.tar.gz: d1cb4c19d3bacbe36998e1a7da6183675b2e60b65dc57d8cb4c74b5da6e91ddc43b09679e25df268e98ca9273391509920d2c15d377355674f1893bfb308cfea
6
+ metadata.gz: 9a4723dd072b0621982e403e72c90f89e4b80563336c3507f7a1942cd2316e68c0184f3b0064dfde7e5f1ce789ac038211a866f75075f4a2291ecaa4b442e1df
7
+ data.tar.gz: 5a40fa288f005be4726512ceab4cf9b7a511b768c8de2d3236e96fa344c093f7c96d0a8577cd32b1e154f2d7a61888530a59e51f4d412408b585bd2b127f5fc3
@@ -23,7 +23,7 @@ module Math
23
23
  module Math
24
24
  class Service
25
25
 
26
- include GRPC::GenericService
26
+ include ::GRPC::GenericService
27
27
 
28
28
  self.marshal_class_method = :encode
29
29
  self.unmarshal_class_method = :decode
@@ -56,6 +56,8 @@ if RUBY_PLATFORM =~ /darwin/
56
56
  end
57
57
 
58
58
  ENV['CPPFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
59
+ ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_NAME_SUFFIX="\"RUBY\"" '
60
+ ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX="\"1.39.0.pre1\"" '
59
61
 
60
62
  output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
61
63
  grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
@@ -107,6 +107,7 @@ grpc_channelz_get_server_sockets_type grpc_channelz_get_server_sockets_import;
107
107
  grpc_channelz_get_channel_type grpc_channelz_get_channel_import;
108
108
  grpc_channelz_get_subchannel_type grpc_channelz_get_subchannel_import;
109
109
  grpc_channelz_get_socket_type grpc_channelz_get_socket_import;
110
+ grpc_authorization_policy_provider_arg_vtable_type grpc_authorization_policy_provider_arg_vtable_import;
110
111
  grpc_insecure_channel_create_from_fd_type grpc_insecure_channel_create_from_fd_import;
111
112
  grpc_server_add_insecure_channel_from_fd_type grpc_server_add_insecure_channel_from_fd_import;
112
113
  grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
@@ -182,6 +183,8 @@ grpc_tls_server_authorization_check_config_create_type grpc_tls_server_authoriza
182
183
  grpc_tls_server_authorization_check_config_release_type grpc_tls_server_authorization_check_config_release_import;
183
184
  grpc_xds_credentials_create_type grpc_xds_credentials_create_import;
184
185
  grpc_xds_server_credentials_create_type grpc_xds_server_credentials_create_import;
186
+ grpc_authorization_policy_provider_static_data_create_type grpc_authorization_policy_provider_static_data_create_import;
187
+ grpc_authorization_policy_provider_release_type grpc_authorization_policy_provider_release_import;
185
188
  grpc_raw_byte_buffer_create_type grpc_raw_byte_buffer_create_import;
186
189
  grpc_raw_compressed_byte_buffer_create_type grpc_raw_compressed_byte_buffer_create_import;
187
190
  grpc_byte_buffer_copy_type grpc_byte_buffer_copy_import;
@@ -392,6 +395,7 @@ void grpc_rb_load_imports(HMODULE library) {
392
395
  grpc_channelz_get_channel_import = (grpc_channelz_get_channel_type) GetProcAddress(library, "grpc_channelz_get_channel");
393
396
  grpc_channelz_get_subchannel_import = (grpc_channelz_get_subchannel_type) GetProcAddress(library, "grpc_channelz_get_subchannel");
394
397
  grpc_channelz_get_socket_import = (grpc_channelz_get_socket_type) GetProcAddress(library, "grpc_channelz_get_socket");
398
+ grpc_authorization_policy_provider_arg_vtable_import = (grpc_authorization_policy_provider_arg_vtable_type) GetProcAddress(library, "grpc_authorization_policy_provider_arg_vtable");
395
399
  grpc_insecure_channel_create_from_fd_import = (grpc_insecure_channel_create_from_fd_type) GetProcAddress(library, "grpc_insecure_channel_create_from_fd");
396
400
  grpc_server_add_insecure_channel_from_fd_import = (grpc_server_add_insecure_channel_from_fd_type) GetProcAddress(library, "grpc_server_add_insecure_channel_from_fd");
397
401
  grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
@@ -467,6 +471,8 @@ void grpc_rb_load_imports(HMODULE library) {
467
471
  grpc_tls_server_authorization_check_config_release_import = (grpc_tls_server_authorization_check_config_release_type) GetProcAddress(library, "grpc_tls_server_authorization_check_config_release");
468
472
  grpc_xds_credentials_create_import = (grpc_xds_credentials_create_type) GetProcAddress(library, "grpc_xds_credentials_create");
469
473
  grpc_xds_server_credentials_create_import = (grpc_xds_server_credentials_create_type) GetProcAddress(library, "grpc_xds_server_credentials_create");
474
+ grpc_authorization_policy_provider_static_data_create_import = (grpc_authorization_policy_provider_static_data_create_type) GetProcAddress(library, "grpc_authorization_policy_provider_static_data_create");
475
+ grpc_authorization_policy_provider_release_import = (grpc_authorization_policy_provider_release_type) GetProcAddress(library, "grpc_authorization_policy_provider_release");
470
476
  grpc_raw_byte_buffer_create_import = (grpc_raw_byte_buffer_create_type) GetProcAddress(library, "grpc_raw_byte_buffer_create");
471
477
  grpc_raw_compressed_byte_buffer_create_import = (grpc_raw_compressed_byte_buffer_create_type) GetProcAddress(library, "grpc_raw_compressed_byte_buffer_create");
472
478
  grpc_byte_buffer_copy_import = (grpc_byte_buffer_copy_type) GetProcAddress(library, "grpc_byte_buffer_copy");
@@ -110,7 +110,7 @@ extern grpc_completion_queue_create_for_next_type grpc_completion_queue_create_f
110
110
  typedef grpc_completion_queue*(*grpc_completion_queue_create_for_pluck_type)(void* reserved);
111
111
  extern grpc_completion_queue_create_for_pluck_type grpc_completion_queue_create_for_pluck_import;
112
112
  #define grpc_completion_queue_create_for_pluck grpc_completion_queue_create_for_pluck_import
113
- typedef grpc_completion_queue*(*grpc_completion_queue_create_for_callback_type)(grpc_experimental_completion_queue_functor* shutdown_callback, void* reserved);
113
+ typedef grpc_completion_queue*(*grpc_completion_queue_create_for_callback_type)(grpc_completion_queue_functor* shutdown_callback, void* reserved);
114
114
  extern grpc_completion_queue_create_for_callback_type grpc_completion_queue_create_for_callback_import;
115
115
  #define grpc_completion_queue_create_for_callback grpc_completion_queue_create_for_callback_import
116
116
  typedef grpc_completion_queue*(*grpc_completion_queue_create_type)(const grpc_completion_queue_factory* factory, const grpc_completion_queue_attributes* attributes, void* reserved);
@@ -215,7 +215,7 @@ extern grpc_server_create_type grpc_server_create_import;
215
215
  typedef void(*grpc_server_register_completion_queue_type)(grpc_server* server, grpc_completion_queue* cq, void* reserved);
216
216
  extern grpc_server_register_completion_queue_type grpc_server_register_completion_queue_import;
217
217
  #define grpc_server_register_completion_queue grpc_server_register_completion_queue_import
218
- typedef grpc_server_config_fetcher*(*grpc_server_config_fetcher_xds_create_type)(grpc_server_xds_status_notifier notifier);
218
+ typedef grpc_server_config_fetcher*(*grpc_server_config_fetcher_xds_create_type)(grpc_server_xds_status_notifier notifier, const grpc_channel_args* args);
219
219
  extern grpc_server_config_fetcher_xds_create_type grpc_server_config_fetcher_xds_create_import;
220
220
  #define grpc_server_config_fetcher_xds_create grpc_server_config_fetcher_xds_create_import
221
221
  typedef void(*grpc_server_config_fetcher_destroy_type)(grpc_server_config_fetcher* config_fetcher);
@@ -296,6 +296,9 @@ extern grpc_channelz_get_subchannel_type grpc_channelz_get_subchannel_import;
296
296
  typedef char*(*grpc_channelz_get_socket_type)(intptr_t socket_id);
297
297
  extern grpc_channelz_get_socket_type grpc_channelz_get_socket_import;
298
298
  #define grpc_channelz_get_socket grpc_channelz_get_socket_import
299
+ typedef const grpc_arg_pointer_vtable*(*grpc_authorization_policy_provider_arg_vtable_type)(void);
300
+ extern grpc_authorization_policy_provider_arg_vtable_type grpc_authorization_policy_provider_arg_vtable_import;
301
+ #define grpc_authorization_policy_provider_arg_vtable grpc_authorization_policy_provider_arg_vtable_import
299
302
  typedef grpc_channel*(*grpc_insecure_channel_create_from_fd_type)(const char* target, int fd, const grpc_channel_args* args);
300
303
  extern grpc_insecure_channel_create_from_fd_type grpc_insecure_channel_create_from_fd_import;
301
304
  #define grpc_insecure_channel_create_from_fd grpc_insecure_channel_create_from_fd_import
@@ -521,6 +524,12 @@ extern grpc_xds_credentials_create_type grpc_xds_credentials_create_import;
521
524
  typedef grpc_server_credentials*(*grpc_xds_server_credentials_create_type)(grpc_server_credentials* fallback_credentials);
522
525
  extern grpc_xds_server_credentials_create_type grpc_xds_server_credentials_create_import;
523
526
  #define grpc_xds_server_credentials_create grpc_xds_server_credentials_create_import
527
+ typedef grpc_authorization_policy_provider*(*grpc_authorization_policy_provider_static_data_create_type)(const char* authz_policy, grpc_status_code* code, const char** error_details);
528
+ extern grpc_authorization_policy_provider_static_data_create_type grpc_authorization_policy_provider_static_data_create_import;
529
+ #define grpc_authorization_policy_provider_static_data_create grpc_authorization_policy_provider_static_data_create_import
530
+ typedef void(*grpc_authorization_policy_provider_release_type)(grpc_authorization_policy_provider* provider);
531
+ extern grpc_authorization_policy_provider_release_type grpc_authorization_policy_provider_release_import;
532
+ #define grpc_authorization_policy_provider_release grpc_authorization_policy_provider_release_import
524
533
  typedef grpc_byte_buffer*(*grpc_raw_byte_buffer_create_type)(grpc_slice* slices, size_t nslices);
525
534
  extern grpc_raw_byte_buffer_create_type grpc_raw_byte_buffer_create_import;
526
535
  #define grpc_raw_byte_buffer_create grpc_raw_byte_buffer_create_import
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -14,5 +14,5 @@
14
14
 
15
15
  # GRPC contains the General RPC module.
16
16
  module GRPC
17
- VERSION = '1.37.0.pre1'
17
+ VERSION = '1.39.0.pre1'
18
18
  end
@@ -28,7 +28,7 @@ module Grpc
28
28
  module Health
29
29
  class Service
30
30
 
31
- include GRPC::GenericService
31
+ include ::GRPC::GenericService
32
32
 
33
33
  self.marshal_class_method = :encode
34
34
  self.unmarshal_class_method = :decode
@@ -29,7 +29,7 @@ module Grpc
29
29
  # performance with various types of payload.
30
30
  class Service
31
31
 
32
- include GRPC::GenericService
32
+ include ::GRPC::GenericService
33
33
 
34
34
  self.marshal_class_method = :encode
35
35
  self.unmarshal_class_method = :decode
@@ -70,7 +70,7 @@ module Grpc
70
70
  # that case.
71
71
  class Service
72
72
 
73
- include GRPC::GenericService
73
+ include ::GRPC::GenericService
74
74
 
75
75
  self.marshal_class_method = :encode
76
76
  self.unmarshal_class_method = :decode
@@ -86,7 +86,7 @@ module Grpc
86
86
  # A service used to control reconnect server.
87
87
  class Service
88
88
 
89
- include GRPC::GenericService
89
+ include ::GRPC::GenericService
90
90
 
91
91
  self.marshal_class_method = :encode
92
92
  self.unmarshal_class_method = :decode
@@ -102,7 +102,7 @@ module Grpc
102
102
  # A service used to obtain stats for verifying LB behavior.
103
103
  class Service
104
104
 
105
- include GRPC::GenericService
105
+ include ::GRPC::GenericService
106
106
 
107
107
  self.marshal_class_method = :encode
108
108
  self.unmarshal_class_method = :decode
@@ -120,7 +120,7 @@ module Grpc
120
120
  # A service to remotely control health status of an xDS test server.
121
121
  class Service
122
122
 
123
- include GRPC::GenericService
123
+ include ::GRPC::GenericService
124
124
 
125
125
  self.marshal_class_method = :encode
126
126
  self.unmarshal_class_method = :decode
@@ -136,7 +136,7 @@ module Grpc
136
136
  # A service to dynamically update the configuration of an xDS test client.
137
137
  class Service
138
138
 
139
- include GRPC::GenericService
139
+ include ::GRPC::GenericService
140
140
 
141
141
  self.marshal_class_method = :encode
142
142
  self.unmarshal_class_method = :decode
@@ -63,6 +63,8 @@ $shutdown = false
63
63
  $rpc_config = RpcConfig.new
64
64
  $rpc_config.init([:UNARY_CALL], {})
65
65
  # These stats are shared across threads
66
+ $thread_results = Array.new
67
+ $thread_results_mu = Mutex.new
66
68
  $accumulated_stats_mu = Mutex.new
67
69
  $num_rpcs_started_by_method = {}
68
70
  $num_rpcs_succeeded_by_method = {}
@@ -188,54 +190,28 @@ class TestTarget < Grpc::Testing::LoadBalancerStatsService::Service
188
190
  end
189
191
  end
190
192
 
191
- # execute 1 RPC and return remote hostname
192
- def execute_rpc(op, fail_on_failed_rpcs, rpc_stats_key)
193
- remote_peer = ""
194
- status_code = 0
195
- begin
196
- op.execute
197
- if op.metadata.key?('hostname')
198
- remote_peer = op.metadata['hostname']
199
- end
200
- rescue GRPC::BadStatus => e
201
- if fail_on_failed_rpcs
202
- raise e
203
- end
204
- status_code = e.code
205
- end
206
- $accumulated_stats_mu.synchronize do
207
- $accumulated_method_stats[rpc_stats_key].add_result(status_code)
208
- if remote_peer.empty?
209
- $num_rpcs_failed_by_method[rpc_stats_key] += 1
210
- else
211
- $num_rpcs_succeeded_by_method[rpc_stats_key] += 1
212
- end
213
- end
214
- remote_peer
215
- end
216
-
217
- def execute_rpc_in_thread(op, rpc_stats_key)
193
+ def execute_rpc_in_thread(op, rpc)
218
194
  Thread.new {
195
+ rpc_stats_key = rpc.to_s
196
+ remote_peer = ""
219
197
  begin
220
198
  op.execute
221
- # The following should _not_ happen with the current spec
222
- # because we are only executing RPCs in a thread if we expect it
223
- # to be kept open, or deadline_exceeded, or dropped by the load
224
- # balancing policy. These RPCs should not complete successfully.
225
- # Doing this for consistency
199
+ if op.metadata.key?('hostname')
200
+ remote_peer = op.metadata['hostname']
201
+ end
226
202
  $accumulated_stats_mu.synchronize do
227
203
  $num_rpcs_succeeded_by_method[rpc_stats_key] += 1
228
204
  $accumulated_method_stats[rpc_stats_key].add_result(0)
229
205
  end
230
206
  rescue GRPC::BadStatus => e
231
- # Normal execution arrives here,
232
- # either because of deadline_exceeded or "call dropped by load
233
- # balancing policy"
234
207
  $accumulated_stats_mu.synchronize do
235
208
  $num_rpcs_failed_by_method[rpc_stats_key] += 1
236
209
  $accumulated_method_stats[rpc_stats_key].add_result(e.code)
237
210
  end
238
211
  end
212
+ $thread_results_mu.synchronize do
213
+ $thread_results << [rpc, remote_peer]
214
+ end
239
215
  }
240
216
  end
241
217
 
@@ -282,14 +258,15 @@ def run_test_loop(stub, target_seconds_between_rpcs, fail_on_failed_rpcs)
282
258
  else
283
259
  raise "Unsupported rpc #{rpc}"
284
260
  end
285
- rpc_stats_key = rpc.to_s
286
- if metadata.key?('rpc-behavior') and
287
- ((metadata['rpc-behavior'] == 'keep-open') or
288
- (metadata['rpc-behavior'].start_with?('sleep')))
289
- keep_open_threads << execute_rpc_in_thread(op, rpc_stats_key)
290
- else
291
- results[rpc] = execute_rpc(op, fail_on_failed_rpcs, rpc_stats_key)
261
+ keep_open_threads << execute_rpc_in_thread(op, rpc)
262
+ end
263
+ # collect results from threads
264
+ $thread_results_mu.synchronize do
265
+ $thread_results.each do |r|
266
+ rpc_name, remote_peer = r
267
+ results[rpc_name] = remote_peer
292
268
  end
269
+ $thread_results = Array.new
293
270
  end
294
271
  $watchers_mutex.synchronize do
295
272
  $watchers.each do |watcher|
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: 1.37.0.pre1
4
+ version: 1.39.0.pre1
5
5
  platform: x86-linux
6
6
  authors:
7
7
  - gRPC Authors
8
8
  autorequire:
9
9
  bindir: src/ruby/bin
10
10
  cert_chain: []
11
- date: 2021-03-30 00:00:00.000000000 Z
11
+ date: 2021-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -354,51 +354,51 @@ required_rubygems_version: !ruby/object:Gem::Requirement
354
354
  - !ruby/object:Gem::Version
355
355
  version: 1.3.1
356
356
  requirements: []
357
- rubygems_version: 3.2.15
357
+ rubygems_version: 3.2.21
358
358
  signing_key:
359
359
  specification_version: 4
360
360
  summary: GRPC system in Ruby
361
361
  test_files:
362
- - src/ruby/spec/call_credentials_spec.rb
363
- - src/ruby/spec/user_agent_spec.rb
362
+ - src/ruby/spec/compression_options_spec.rb
364
363
  - src/ruby/spec/error_sanity_spec.rb
365
364
  - src/ruby/spec/debug_message_spec.rb
366
- - src/ruby/spec/server_credentials_spec.rb
367
- - src/ruby/spec/testdata/client.key
368
- - src/ruby/spec/testdata/ca.pem
369
365
  - src/ruby/spec/testdata/server1.key
370
- - src/ruby/spec/testdata/client.pem
371
366
  - src/ruby/spec/testdata/README
367
+ - src/ruby/spec/testdata/client.pem
368
+ - src/ruby/spec/testdata/ca.pem
372
369
  - src/ruby/spec/testdata/server1.pem
373
- - src/ruby/spec/client_auth_spec.rb
370
+ - src/ruby/spec/testdata/client.key
371
+ - src/ruby/spec/time_consts_spec.rb
372
+ - src/ruby/spec/server_credentials_spec.rb
373
+ - src/ruby/spec/generic/rpc_desc_spec.rb
374
+ - src/ruby/spec/generic/active_call_spec.rb
375
+ - src/ruby/spec/generic/client_interceptors_spec.rb
376
+ - src/ruby/spec/generic/client_stub_spec.rb
377
+ - src/ruby/spec/generic/rpc_server_spec.rb
378
+ - src/ruby/spec/generic/interceptor_registry_spec.rb
379
+ - src/ruby/spec/generic/rpc_server_pool_spec.rb
380
+ - src/ruby/spec/generic/service_spec.rb
381
+ - src/ruby/spec/generic/server_interceptors_spec.rb
374
382
  - src/ruby/spec/google_rpc_status_utils_spec.rb
375
- - src/ruby/spec/channel_connection_spec.rb
383
+ - src/ruby/spec/channel_spec.rb
384
+ - src/ruby/spec/user_agent_spec.rb
385
+ - src/ruby/spec/channel_credentials_spec.rb
386
+ - src/ruby/spec/call_credentials_spec.rb
387
+ - src/ruby/spec/spec_helper.rb
376
388
  - src/ruby/spec/server_spec.rb
377
- - src/ruby/spec/support/services.rb
389
+ - src/ruby/spec/call_spec.rb
390
+ - src/ruby/spec/channel_connection_spec.rb
391
+ - src/ruby/spec/client_server_spec.rb
378
392
  - src/ruby/spec/support/helpers.rb
379
- - src/ruby/spec/time_consts_spec.rb
393
+ - src/ruby/spec/support/services.rb
394
+ - src/ruby/spec/client_auth_spec.rb
395
+ - src/ruby/spec/errors_spec.rb
380
396
  - src/ruby/spec/pb/health/checker_spec.rb
381
- - src/ruby/spec/pb/codegen/package_option_spec.rb
382
- - src/ruby/spec/pb/codegen/grpc/testing/package_options_import.proto
383
- - src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto
397
+ - src/ruby/spec/pb/duplicate/codegen_spec.rb
384
398
  - src/ruby/spec/pb/codegen/grpc/testing/package_options.proto
385
399
  - src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto
400
+ - src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto
386
401
  - src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto
387
402
  - src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto
388
- - src/ruby/spec/pb/duplicate/codegen_spec.rb
389
- - src/ruby/spec/channel_spec.rb
390
- - src/ruby/spec/channel_credentials_spec.rb
391
- - src/ruby/spec/client_server_spec.rb
392
- - src/ruby/spec/call_spec.rb
393
- - src/ruby/spec/errors_spec.rb
394
- - src/ruby/spec/spec_helper.rb
395
- - src/ruby/spec/generic/server_interceptors_spec.rb
396
- - src/ruby/spec/generic/client_interceptors_spec.rb
397
- - src/ruby/spec/generic/service_spec.rb
398
- - src/ruby/spec/generic/rpc_server_pool_spec.rb
399
- - src/ruby/spec/generic/client_stub_spec.rb
400
- - src/ruby/spec/generic/interceptor_registry_spec.rb
401
- - src/ruby/spec/generic/rpc_server_spec.rb
402
- - src/ruby/spec/generic/active_call_spec.rb
403
- - src/ruby/spec/generic/rpc_desc_spec.rb
404
- - src/ruby/spec/compression_options_spec.rb
403
+ - src/ruby/spec/pb/codegen/grpc/testing/package_options_import.proto
404
+ - src/ruby/spec/pb/codegen/package_option_spec.rb