grpc 1.40.0.pre1 → 1.40.0
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 +4 -4
- data/Makefile +2 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +16 -3
- data/src/core/ext/xds/xds_api.cc +67 -82
- data/src/core/lib/slice/slice.cc +12 -2
- data/src/core/lib/transport/metadata_batch.cc +13 -2
- data/src/core/lib/transport/metadata_batch.h +7 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- metadata +32 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18e1fa5db1d34b00db88443732e9ab881337cd91a8f57063562a41ee26e7e57b
|
4
|
+
data.tar.gz: ff23dac20d0aa6708db1b5d6cb7b8416b93e83d8e8a919154b885f4b7bebceb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8dc580b40de3574c01c9d1c3e5e863c75c2a4e58959ae069b586f013c2cdcc1021a087c54a9df01fc714c8c6091bd47972e0f446394ae1e7abd2a47b157b83d0
|
7
|
+
data.tar.gz: 9ce91a5beccbfeb22a89f5a9d4c22047f718e8a0b800de36121b459340f343b30a0799672ce8ac7c9c14d15d4403e2056c35edd1b46739b276155a4e7fc15f59
|
data/Makefile
CHANGED
@@ -455,8 +455,8 @@ Q = @
|
|
455
455
|
endif
|
456
456
|
|
457
457
|
CORE_VERSION = 18.0.0
|
458
|
-
CPP_VERSION = 1.40.0
|
459
|
-
CSHARP_VERSION = 2.40.0
|
458
|
+
CPP_VERSION = 1.40.0
|
459
|
+
CSHARP_VERSION = 2.40.0
|
460
460
|
|
461
461
|
CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
|
462
462
|
CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
|
@@ -88,9 +88,7 @@
|
|
88
88
|
|
89
89
|
// TODO(roth): In subsequent PRs:
|
90
90
|
// - add support for transparent retries (including initial metadata)
|
91
|
-
// -
|
92
|
-
// (census filter is on top of this one)
|
93
|
-
// - add census stats for retries
|
91
|
+
// - implement hedging
|
94
92
|
|
95
93
|
// By default, we buffer 256 KiB per RPC for retries.
|
96
94
|
// TODO(roth): Do we have any data to suggest a better value?
|
@@ -539,6 +537,8 @@ class RetryFilter::CallData {
|
|
539
537
|
CallCombiner* call_combiner_;
|
540
538
|
grpc_call_context_element* call_context_;
|
541
539
|
|
540
|
+
grpc_error_handle cancelled_from_surface_ = GRPC_ERROR_NONE;
|
541
|
+
|
542
542
|
RefCountedPtr<CallStackDestructionBarrier> call_stack_destruction_barrier_;
|
543
543
|
|
544
544
|
// TODO(roth): As part of implementing hedging, we will need to maintain a
|
@@ -2141,6 +2141,7 @@ RetryFilter::CallData::~CallData() {
|
|
2141
2141
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
2142
2142
|
GPR_ASSERT(pending_batches_[i].batch == nullptr);
|
2143
2143
|
}
|
2144
|
+
GRPC_ERROR_UNREF(cancelled_from_surface_);
|
2144
2145
|
}
|
2145
2146
|
|
2146
2147
|
void RetryFilter::CallData::StartTransportStreamOpBatch(
|
@@ -2173,6 +2174,9 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2173
2174
|
call_attempt_->CancelFromSurface(batch);
|
2174
2175
|
return;
|
2175
2176
|
}
|
2177
|
+
// Save cancel_error in case subsequent batches are started.
|
2178
|
+
GRPC_ERROR_UNREF(cancelled_from_surface_);
|
2179
|
+
cancelled_from_surface_ = GRPC_ERROR_REF(cancel_error);
|
2176
2180
|
// Cancel retry timer.
|
2177
2181
|
if (retry_timer_pending_) {
|
2178
2182
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
@@ -2201,6 +2205,15 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
|
|
2201
2205
|
}
|
2202
2206
|
// If we do not yet have a call attempt, create one.
|
2203
2207
|
if (call_attempt_ == nullptr) {
|
2208
|
+
// If we were previously cancelled from the surface, cancel this
|
2209
|
+
// batch instead of creating a call attempt.
|
2210
|
+
if (cancelled_from_surface_ != GRPC_ERROR_NONE) {
|
2211
|
+
PendingBatchClear(pending);
|
2212
|
+
// Note: This will release the call combiner.
|
2213
|
+
grpc_transport_stream_op_batch_finish_with_failure(
|
2214
|
+
batch, GRPC_ERROR_REF(cancelled_from_surface_), call_combiner_);
|
2215
|
+
return;
|
2216
|
+
}
|
2204
2217
|
// If there is no retry policy, then commit retries immediately.
|
2205
2218
|
// This ensures that the code below will always jump to the fast path.
|
2206
2219
|
// TODO(roth): Remove this special case when we implement
|
data/src/core/ext/xds/xds_api.cc
CHANGED
@@ -115,17 +115,6 @@ bool XdsAggregateAndLogicalDnsClusterEnabled() {
|
|
115
115
|
return parse_succeeded && parsed_value;
|
116
116
|
}
|
117
117
|
|
118
|
-
// TODO(donnadionne): Check to see if ring hash policy is enabled, this will be
|
119
|
-
// removed once ring hash policy is fully integration-tested and enabled by
|
120
|
-
// default.
|
121
|
-
bool XdsRingHashEnabled() {
|
122
|
-
char* value = gpr_getenv("GRPC_XDS_EXPERIMENTAL_ENABLE_RING_HASH");
|
123
|
-
bool parsed_value;
|
124
|
-
bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
|
125
|
-
gpr_free(value);
|
126
|
-
return parse_succeeded && parsed_value;
|
127
|
-
}
|
128
|
-
|
129
118
|
// TODO(yashykt): Check to see if xDS security is enabled. This will be
|
130
119
|
// removed once this feature is fully integration-tested and enabled by
|
131
120
|
// default.
|
@@ -1751,81 +1740,78 @@ grpc_error_handle RouteActionParse(const EncodingContext& context,
|
|
1751
1740
|
}
|
1752
1741
|
}
|
1753
1742
|
// Get HashPolicy from RouteAction
|
1754
|
-
|
1755
|
-
|
1756
|
-
|
1757
|
-
|
1758
|
-
|
1759
|
-
|
1760
|
-
|
1761
|
-
|
1762
|
-
|
1763
|
-
|
1764
|
-
|
1765
|
-
|
1766
|
-
|
1767
|
-
|
1768
|
-
|
1769
|
-
|
1770
|
-
|
1771
|
-
|
1772
|
-
|
1773
|
-
|
1774
|
-
|
1775
|
-
|
1776
|
-
|
1777
|
-
|
1778
|
-
|
1779
|
-
|
1780
|
-
|
1781
|
-
|
1782
|
-
|
1783
|
-
|
1784
|
-
|
1785
|
-
|
1786
|
-
|
1787
|
-
continue;
|
1788
|
-
}
|
1789
|
-
RE2::Options options;
|
1790
|
-
policy.regex = absl::make_unique<RE2>(
|
1791
|
-
UpbStringToStdString(
|
1792
|
-
envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher)),
|
1793
|
-
options);
|
1794
|
-
if (!policy.regex->ok()) {
|
1795
|
-
gpr_log(
|
1796
|
-
GPR_DEBUG,
|
1797
|
-
"RouteAction HashPolicy contains policy specifier Header with "
|
1798
|
-
"RegexMatchAndSubstitution but RegexMatcher pattern does not "
|
1799
|
-
"compile");
|
1800
|
-
continue;
|
1801
|
-
}
|
1802
|
-
policy.regex_substitution = UpbStringToStdString(
|
1803
|
-
envoy_type_matcher_v3_RegexMatchAndSubstitute_substitution(
|
1804
|
-
regex_rewrite));
|
1743
|
+
size_t size = 0;
|
1744
|
+
const envoy_config_route_v3_RouteAction_HashPolicy* const* hash_policies =
|
1745
|
+
envoy_config_route_v3_RouteAction_hash_policy(route_action, &size);
|
1746
|
+
for (size_t i = 0; i < size; ++i) {
|
1747
|
+
const envoy_config_route_v3_RouteAction_HashPolicy* hash_policy =
|
1748
|
+
hash_policies[i];
|
1749
|
+
XdsApi::Route::HashPolicy policy;
|
1750
|
+
policy.terminal =
|
1751
|
+
envoy_config_route_v3_RouteAction_HashPolicy_terminal(hash_policy);
|
1752
|
+
const envoy_config_route_v3_RouteAction_HashPolicy_Header* header;
|
1753
|
+
const envoy_config_route_v3_RouteAction_HashPolicy_FilterState*
|
1754
|
+
filter_state;
|
1755
|
+
if ((header = envoy_config_route_v3_RouteAction_HashPolicy_header(
|
1756
|
+
hash_policy)) != nullptr) {
|
1757
|
+
policy.type = XdsApi::Route::HashPolicy::Type::HEADER;
|
1758
|
+
policy.header_name = UpbStringToStdString(
|
1759
|
+
envoy_config_route_v3_RouteAction_HashPolicy_Header_header_name(
|
1760
|
+
header));
|
1761
|
+
const struct envoy_type_matcher_v3_RegexMatchAndSubstitute*
|
1762
|
+
regex_rewrite =
|
1763
|
+
envoy_config_route_v3_RouteAction_HashPolicy_Header_regex_rewrite(
|
1764
|
+
header);
|
1765
|
+
if (regex_rewrite != nullptr) {
|
1766
|
+
const envoy_type_matcher_v3_RegexMatcher* regex_matcher =
|
1767
|
+
envoy_type_matcher_v3_RegexMatchAndSubstitute_pattern(
|
1768
|
+
regex_rewrite);
|
1769
|
+
if (regex_matcher == nullptr) {
|
1770
|
+
gpr_log(
|
1771
|
+
GPR_DEBUG,
|
1772
|
+
"RouteAction HashPolicy contains policy specifier Header with "
|
1773
|
+
"RegexMatchAndSubstitution but RegexMatcher pattern is "
|
1774
|
+
"missing");
|
1775
|
+
continue;
|
1805
1776
|
}
|
1806
|
-
|
1807
|
-
|
1808
|
-
|
1809
|
-
|
1810
|
-
|
1811
|
-
|
1812
|
-
|
1813
|
-
|
1814
|
-
|
1815
|
-
|
1816
|
-
|
1817
|
-
"FilterState but "
|
1818
|
-
"key is not io.grpc.channel_id.");
|
1777
|
+
RE2::Options options;
|
1778
|
+
policy.regex = absl::make_unique<RE2>(
|
1779
|
+
UpbStringToStdString(
|
1780
|
+
envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher)),
|
1781
|
+
options);
|
1782
|
+
if (!policy.regex->ok()) {
|
1783
|
+
gpr_log(
|
1784
|
+
GPR_DEBUG,
|
1785
|
+
"RouteAction HashPolicy contains policy specifier Header with "
|
1786
|
+
"RegexMatchAndSubstitution but RegexMatcher pattern does not "
|
1787
|
+
"compile");
|
1819
1788
|
continue;
|
1820
1789
|
}
|
1790
|
+
policy.regex_substitution = UpbStringToStdString(
|
1791
|
+
envoy_type_matcher_v3_RegexMatchAndSubstitute_substitution(
|
1792
|
+
regex_rewrite));
|
1793
|
+
}
|
1794
|
+
} else if ((filter_state =
|
1795
|
+
envoy_config_route_v3_RouteAction_HashPolicy_filter_state(
|
1796
|
+
hash_policy)) != nullptr) {
|
1797
|
+
std::string key = UpbStringToStdString(
|
1798
|
+
envoy_config_route_v3_RouteAction_HashPolicy_FilterState_key(
|
1799
|
+
filter_state));
|
1800
|
+
if (key == "io.grpc.channel_id") {
|
1801
|
+
policy.type = XdsApi::Route::HashPolicy::Type::CHANNEL_ID;
|
1821
1802
|
} else {
|
1822
|
-
gpr_log(
|
1823
|
-
|
1824
|
-
|
1803
|
+
gpr_log(GPR_DEBUG,
|
1804
|
+
"RouteAction HashPolicy contains policy specifier "
|
1805
|
+
"FilterState but "
|
1806
|
+
"key is not io.grpc.channel_id.");
|
1825
1807
|
continue;
|
1826
1808
|
}
|
1827
|
-
|
1809
|
+
} else {
|
1810
|
+
gpr_log(GPR_DEBUG,
|
1811
|
+
"RouteAction HashPolicy contains unsupported policy specifier.");
|
1812
|
+
continue;
|
1828
1813
|
}
|
1814
|
+
route->hash_policies.emplace_back(std::move(policy));
|
1829
1815
|
}
|
1830
1816
|
// Get retry policy
|
1831
1817
|
const envoy_config_route_v3_RetryPolicy* retry_policy =
|
@@ -3174,9 +3160,8 @@ grpc_error_handle CdsResponseParse(
|
|
3174
3160
|
if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) ==
|
3175
3161
|
envoy_config_cluster_v3_Cluster_ROUND_ROBIN) {
|
3176
3162
|
cds_update.lb_policy = "ROUND_ROBIN";
|
3177
|
-
} else if (
|
3178
|
-
|
3179
|
-
envoy_config_cluster_v3_Cluster_RING_HASH) {
|
3163
|
+
} else if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) ==
|
3164
|
+
envoy_config_cluster_v3_Cluster_RING_HASH) {
|
3180
3165
|
cds_update.lb_policy = "RING_HASH";
|
3181
3166
|
// Record ring hash lb config
|
3182
3167
|
auto* ring_hash_config =
|
data/src/core/lib/slice/slice.cc
CHANGED
@@ -223,11 +223,21 @@ grpc_core::UnmanagedMemorySlice::UnmanagedMemorySlice(const char* source)
|
|
223
223
|
strlen(source)) {}
|
224
224
|
|
225
225
|
grpc_slice grpc_slice_from_copied_buffer(const char* source, size_t length) {
|
226
|
-
|
226
|
+
grpc_slice slice;
|
227
|
+
if (length <= sizeof(slice.data.inlined.bytes)) {
|
228
|
+
slice.refcount = nullptr;
|
229
|
+
slice.data.inlined.length = length;
|
230
|
+
} else {
|
231
|
+
// Create a ref-counted slice.
|
232
|
+
slice = grpc_core::UnmanagedMemorySlice(
|
233
|
+
length, grpc_core::UnmanagedMemorySlice::ForceHeapAllocation());
|
234
|
+
}
|
235
|
+
memcpy(GRPC_SLICE_START_PTR(slice), source, length);
|
236
|
+
return slice;
|
227
237
|
}
|
228
238
|
|
229
239
|
grpc_slice grpc_slice_from_copied_string(const char* source) {
|
230
|
-
return
|
240
|
+
return grpc_slice_from_copied_buffer(source, strlen(source));
|
231
241
|
}
|
232
242
|
|
233
243
|
grpc_slice grpc_slice_from_moved_buffer(grpc_core::UniquePtr<char> p,
|
@@ -401,9 +401,20 @@ void grpc_metadata_batch_copy(grpc_metadata_batch* src,
|
|
401
401
|
size_t i = 0;
|
402
402
|
for (grpc_linked_mdelem* elem = src->list.head; elem != nullptr;
|
403
403
|
elem = elem->next) {
|
404
|
+
// If the mdelem is not external, take a ref.
|
405
|
+
// Otherwise, create a new copy, holding its own refs to the
|
406
|
+
// underlying slices.
|
407
|
+
grpc_mdelem md;
|
408
|
+
if (GRPC_MDELEM_STORAGE(elem->md) != GRPC_MDELEM_STORAGE_EXTERNAL) {
|
409
|
+
md = GRPC_MDELEM_REF(elem->md);
|
410
|
+
} else {
|
411
|
+
md = grpc_mdelem_from_slices(
|
412
|
+
grpc_slice_ref_internal(GRPC_MDKEY(elem->md)),
|
413
|
+
grpc_slice_ref_internal(GRPC_MDVALUE(elem->md)));
|
414
|
+
}
|
404
415
|
// Error unused in non-debug builds.
|
405
|
-
grpc_error_handle GRPC_UNUSED error =
|
406
|
-
dst, &storage[i++],
|
416
|
+
grpc_error_handle GRPC_UNUSED error =
|
417
|
+
grpc_metadata_batch_add_tail(dst, &storage[i++], md);
|
407
418
|
// The only way that grpc_metadata_batch_add_tail() can fail is if
|
408
419
|
// there's a duplicate entry for a callout. However, that can't be
|
409
420
|
// the case here, because we would not have been allowed to create
|
@@ -196,6 +196,13 @@ void grpc_metadata_batch_assert_ok(grpc_metadata_batch* batch);
|
|
196
196
|
|
197
197
|
/// Copies \a src to \a dst. \a storage must point to an array of
|
198
198
|
/// \a grpc_linked_mdelem structs of at least the same size as \a src.
|
199
|
+
///
|
200
|
+
/// For each mdelem in \a src, if the mdelem is of storage types
|
201
|
+
/// GRPC_MDELEM_STORAGE_INTERNED or GRPC_MDELEM_STORAGE_ALLOCATED,
|
202
|
+
/// refs the original mdelem for the copy. Otherwise, makes a new
|
203
|
+
/// mdelem that will hold its own refs to the key and value slices.
|
204
|
+
///
|
205
|
+
/// Currently used only in the retry code.
|
199
206
|
void grpc_metadata_batch_copy(grpc_metadata_batch* src,
|
200
207
|
grpc_metadata_batch* dst,
|
201
208
|
grpc_linked_mdelem* storage);
|
@@ -57,7 +57,7 @@ end
|
|
57
57
|
|
58
58
|
ENV['CPPFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
|
59
59
|
ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_NAME_SUFFIX="\"RUBY\"" '
|
60
|
-
ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX="\"1.40.0
|
60
|
+
ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX="\"1.40.0\"" '
|
61
61
|
|
62
62
|
output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
|
63
63
|
grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
|
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.40.0
|
4
|
+
version: 1.40.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- gRPC Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: src/ruby/bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-protobuf
|
@@ -2490,55 +2490,55 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
2490
2490
|
version: 2.4.0
|
2491
2491
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2492
2492
|
requirements:
|
2493
|
-
- - "
|
2493
|
+
- - ">="
|
2494
2494
|
- !ruby/object:Gem::Version
|
2495
|
-
version:
|
2495
|
+
version: '0'
|
2496
2496
|
requirements: []
|
2497
|
-
rubygems_version: 3.2.
|
2497
|
+
rubygems_version: 3.2.27
|
2498
2498
|
signing_key:
|
2499
2499
|
specification_version: 4
|
2500
2500
|
summary: GRPC system in Ruby
|
2501
2501
|
test_files:
|
2502
|
-
- src/ruby/spec/
|
2503
|
-
- src/ruby/spec/debug_message_spec.rb
|
2504
|
-
- src/ruby/spec/channel_connection_spec.rb
|
2505
|
-
- src/ruby/spec/testdata/client.key
|
2506
|
-
- src/ruby/spec/testdata/server1.pem
|
2507
|
-
- src/ruby/spec/testdata/client.pem
|
2508
|
-
- src/ruby/spec/testdata/server1.key
|
2509
|
-
- src/ruby/spec/testdata/ca.pem
|
2510
|
-
- src/ruby/spec/testdata/README
|
2511
|
-
- src/ruby/spec/pb/codegen/package_option_spec.rb
|
2502
|
+
- src/ruby/spec/google_rpc_status_utils_spec.rb
|
2512
2503
|
- src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto
|
2513
|
-
- src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto
|
2514
2504
|
- src/ruby/spec/pb/codegen/grpc/testing/package_options_import.proto
|
2515
|
-
- src/ruby/spec/pb/codegen/grpc/testing/
|
2505
|
+
- src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto
|
2516
2506
|
- src/ruby/spec/pb/codegen/grpc/testing/package_options.proto
|
2517
2507
|
- src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto
|
2508
|
+
- src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto
|
2509
|
+
- src/ruby/spec/pb/codegen/package_option_spec.rb
|
2518
2510
|
- src/ruby/spec/pb/duplicate/codegen_spec.rb
|
2519
2511
|
- src/ruby/spec/pb/health/checker_spec.rb
|
2520
|
-
- src/ruby/spec/
|
2512
|
+
- src/ruby/spec/errors_spec.rb
|
2513
|
+
- src/ruby/spec/support/helpers.rb
|
2514
|
+
- src/ruby/spec/support/services.rb
|
2521
2515
|
- src/ruby/spec/client_server_spec.rb
|
2516
|
+
- src/ruby/spec/testdata/client.key
|
2517
|
+
- src/ruby/spec/testdata/README
|
2518
|
+
- src/ruby/spec/testdata/client.pem
|
2519
|
+
- src/ruby/spec/testdata/ca.pem
|
2520
|
+
- src/ruby/spec/testdata/server1.pem
|
2521
|
+
- src/ruby/spec/testdata/server1.key
|
2522
2522
|
- src/ruby/spec/server_spec.rb
|
2523
|
-
- src/ruby/spec/call_spec.rb
|
2524
2523
|
- src/ruby/spec/client_auth_spec.rb
|
2525
|
-
- src/ruby/spec/channel_credentials_spec.rb
|
2526
2524
|
- src/ruby/spec/user_agent_spec.rb
|
2527
|
-
- src/ruby/spec/errors_spec.rb
|
2528
|
-
- src/ruby/spec/google_rpc_status_utils_spec.rb
|
2529
|
-
- src/ruby/spec/spec_helper.rb
|
2530
|
-
- src/ruby/spec/support/helpers.rb
|
2531
|
-
- src/ruby/spec/support/services.rb
|
2532
2525
|
- src/ruby/spec/channel_spec.rb
|
2533
|
-
- src/ruby/spec/
|
2534
|
-
- src/ruby/spec/
|
2535
|
-
- src/ruby/spec/generic/active_call_spec.rb
|
2526
|
+
- src/ruby/spec/generic/service_spec.rb
|
2527
|
+
- src/ruby/spec/generic/rpc_server_spec.rb
|
2536
2528
|
- src/ruby/spec/generic/server_interceptors_spec.rb
|
2537
|
-
- src/ruby/spec/generic/client_stub_spec.rb
|
2538
2529
|
- src/ruby/spec/generic/interceptor_registry_spec.rb
|
2539
|
-
- src/ruby/spec/generic/
|
2530
|
+
- src/ruby/spec/generic/client_stub_spec.rb
|
2540
2531
|
- src/ruby/spec/generic/rpc_desc_spec.rb
|
2541
|
-
- src/ruby/spec/generic/client_interceptors_spec.rb
|
2542
|
-
- src/ruby/spec/generic/service_spec.rb
|
2543
2532
|
- src/ruby/spec/generic/rpc_server_pool_spec.rb
|
2533
|
+
- src/ruby/spec/generic/active_call_spec.rb
|
2534
|
+
- src/ruby/spec/generic/client_interceptors_spec.rb
|
2535
|
+
- src/ruby/spec/compression_options_spec.rb
|
2536
|
+
- src/ruby/spec/spec_helper.rb
|
2537
|
+
- src/ruby/spec/call_credentials_spec.rb
|
2544
2538
|
- src/ruby/spec/error_sanity_spec.rb
|
2539
|
+
- src/ruby/spec/time_consts_spec.rb
|
2540
|
+
- src/ruby/spec/call_spec.rb
|
2541
|
+
- src/ruby/spec/channel_connection_spec.rb
|
2542
|
+
- src/ruby/spec/channel_credentials_spec.rb
|
2543
|
+
- src/ruby/spec/server_credentials_spec.rb
|
2544
|
+
- src/ruby/spec/debug_message_spec.rb
|