google-gax 1.3.0 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d54006c2b0494a7908f5510bc48ef77a98c2ff02
4
- data.tar.gz: d19197493f156c95c153f9c8a2cd3501ecdffc67
3
+ metadata.gz: f85f3914efd1320cd9f01cfe77ec1e7fff36e092
4
+ data.tar.gz: 7326644db9b2b1157eeab214f9f327b14961c6c1
5
5
  SHA512:
6
- metadata.gz: 806f18271c7a31698639466e5a6900598226eb53ed807cfc7ca84b17f898aa5c5b77cb68478dc0c329d5e299943143f6d4b974d3045a53b277d3bde272bf97e9
7
- data.tar.gz: 671837be39ed1a7fe642f9652ab766535b44e07dc46892cd56499990d57a26ba318846de9fed4918eca8db1ca06c94dd21c52c06769a0e275aef37b6b50d59f0
6
+ metadata.gz: b48de10a41fbe57711a32e0018a2004134871b115469eafed271dc6a301ff5a732b6866c55dba6b580b2e24d424cb329bce815b2f8ec64d522e2ea30cf950a5d
7
+ data.tar.gz: 127ad3139e211fd901e3a5943937d0da7f12ea7150a8385365f212a77a12c8a1fdd1e84592ea677190667cfaa8b2c260468eb4389ca5f2ffb5c486360d4023ce
@@ -77,8 +77,6 @@ module Google
77
77
  result
78
78
  end
79
79
 
80
- # rubocop:disable Metrics/ClassLength
81
-
82
80
  # Coordinates the execution of a single bundle.
83
81
  #
84
82
  # @!attribute [r] bundle_id
@@ -65,12 +65,13 @@ module Google
65
65
  error.to_status
66
66
  ).details
67
67
  details.map do |any|
68
- # If the type of the proto wrapped by the Any instance is not
69
- # available, do not deserialize.
70
- candidate_class_name = class_case(any.type_name.split('.')).join('::')
68
+ # deserialize the proto wrapped by the Any in the error details
71
69
  begin
72
- any.unpack(Object.const_get(candidate_class_name))
73
- rescue NameError
70
+ type = Google::Protobuf::DescriptorPool.generated_pool.lookup(
71
+ any.type_name
72
+ )
73
+ any.unpack(type.msgclass)
74
+ rescue
74
75
  any
75
76
  end
76
77
  end
@@ -155,8 +155,16 @@ module Google
155
155
  # @return [Object, nil]
156
156
  # The metadata of the operation. Can be nil.
157
157
  def metadata
158
- return nil if @grpc_op.metadata.nil?
159
- @grpc_op.metadata.unpack(@metadata_type)
158
+ return if @grpc_op.metadata.nil?
159
+
160
+ return @grpc_op.metadata.unpack(@metadata_type) if @metadata_type
161
+
162
+ descriptor = Google::Protobuf::DescriptorPool.generated_pool.lookup(
163
+ @grpc_op.metadata.type_name
164
+ )
165
+ return @grpc_op.metadata.unpack(descriptor.msgclass) if descriptor
166
+
167
+ @grpc_op.metadata
160
168
  end
161
169
 
162
170
  # Checks if the operation is done. This does not send a new api call,
@@ -180,7 +188,16 @@ module Google
180
188
  # @return [Object, nil]
181
189
  # The response of the operation.
182
190
  def response
183
- @grpc_op.response.unpack(@result_type) if response?
191
+ return unless response?
192
+
193
+ return @grpc_op.response.unpack(@result_type) if @result_type
194
+
195
+ descriptor = Google::Protobuf::DescriptorPool.generated_pool.lookup(
196
+ @grpc_op.response.type_name
197
+ )
198
+ return @grpc_op.response.unpack(descriptor.msgclass) if descriptor
199
+
200
+ @grpc_op.response
184
201
  end
185
202
 
186
203
  # Checks if the operation is done and the result is an error.
@@ -29,6 +29,6 @@
29
29
 
30
30
  module Google
31
31
  module Gax
32
- VERSION = '1.3.0'.freeze
32
+ VERSION = '1.4.0'.freeze
33
33
  end
34
34
  end
@@ -121,10 +121,10 @@ module Google
121
121
  require "google/gax/grpc"
122
122
  require "google/longrunning/operations_services_pb"
123
123
 
124
- credentials ||= Google::Auth::Credentials.default(scopes: scopes)
124
+ credentials ||= Google::Auth::Credentials.default(scope: scopes)
125
125
 
126
126
  if credentials.is_a?(String) || credentials.is_a?(Hash)
127
- updater_proc = Google::Auth::Credentials.new(credentials).updater_proc
127
+ updater_proc = Google::Auth::Credentials.new(credentials, scope: scopes).updater_proc
128
128
  end
129
129
  if credentials.is_a?(GRPC::Core::Channel)
130
130
  channel = credentials
@@ -161,6 +161,7 @@ describe Google::Gax::Grpc do
161
161
  end.to raise_error(ArgumentError)
162
162
  end
163
163
  end
164
+
164
165
  describe '#deserialize_error_status_details' do
165
166
  it 'deserializes a known error type' do
166
167
  expected_error = Google::Rpc::DebugInfo.new(detail: 'shoes are untied')
@@ -177,6 +178,7 @@ describe Google::Gax::Grpc do
177
178
  expect(Google::Gax::Grpc.deserialize_error_status_details(error))
178
179
  .to eq [expected_error]
179
180
  end
181
+
180
182
  it 'does not deserialize an unknown error type' do
181
183
  expected_error = Random.new.bytes(8)
182
184
 
@@ -70,17 +70,30 @@ METADATA_ANY = Google::Protobuf::Any.new
70
70
  METADATA = Google::Rpc::Status.new(code: 2, message: 'Metadata')
71
71
  METADATA_ANY.pack(METADATA)
72
72
 
73
+ TIMESTAMP_ANY = Google::Protobuf::Any.new
74
+ TIMESTAMP = Google::Protobuf::Timestamp.new(
75
+ seconds: 123_456_789,
76
+ nanos: 987_654_321
77
+ )
78
+ TIMESTAMP_ANY.pack(TIMESTAMP)
79
+
80
+ UNKNOWN_ANY = Google::Protobuf::Any.new(
81
+ type_url: 'type.unknown.tld/this.does.not.Exist',
82
+ value: ''
83
+ )
84
+
73
85
  DONE_GET_METHOD = proc do
74
86
  GrpcOp.new(done: true, response: RESULT_ANY, metadata: METADATA_ANY)
75
87
  end
76
88
  DONE_ON_GET_CLIENT = MockLroClient.new(get_method: DONE_GET_METHOD)
77
89
 
78
- def create_op(operation, client: nil, call_options: nil)
90
+ def create_op(operation, client: nil, result_type: Google::Rpc::Status,
91
+ metadata_type: Google::Rpc::Status, call_options: nil)
79
92
  GaxOp.new(
80
93
  operation,
81
94
  client || DONE_ON_GET_CLIENT,
82
- Google::Rpc::Status,
83
- Google::Rpc::Status,
95
+ result_type,
96
+ metadata_type,
84
97
  call_options: call_options
85
98
  )
86
99
  end
@@ -116,6 +129,25 @@ describe Google::Gax::Operation do
116
129
  op = create_op(GrpcOp.new(done: true, metadata: METADATA_ANY))
117
130
  expect(op.metadata).to eq(METADATA)
118
131
  end
132
+
133
+ it 'should unpack the metadata when metadata_type is set to type class.' do
134
+ op = create_op(GrpcOp.new(done: true, metadata: TIMESTAMP_ANY),
135
+ metadata_type: Google::Protobuf::Timestamp)
136
+ expect(op.metadata).to eq(TIMESTAMP)
137
+ end
138
+
139
+ it 'should unpack the metadata when metadata_type is looked up.' do
140
+ op = create_op(GrpcOp.new(done: true, metadata: TIMESTAMP_ANY),
141
+ metadata_type: nil)
142
+ expect(op.metadata).to eq(TIMESTAMP)
143
+ end
144
+
145
+ it 'should return original metadata when metadata_type is not found when ' \
146
+ 'looked up.' do
147
+ op = create_op(GrpcOp.new(done: true, metadata: UNKNOWN_ANY),
148
+ metadata_type: nil)
149
+ expect(op.metadata).to eq(UNKNOWN_ANY)
150
+ end
119
151
  end
120
152
 
121
153
  context 'method `done?`' do
@@ -193,6 +225,25 @@ describe Google::Gax::Operation do
193
225
  op = create_op(GrpcOp.new(done: true, response: RESULT_ANY))
194
226
  expect(op.response).to eq(RESULT)
195
227
  end
228
+
229
+ it 'should unpack the result when result_type is set to type class.' do
230
+ op = create_op(GrpcOp.new(done: true, response: TIMESTAMP_ANY),
231
+ result_type: Google::Protobuf::Timestamp)
232
+ expect(op.response).to eq(TIMESTAMP)
233
+ end
234
+
235
+ it 'should unpack the result when result_type is looked up.' do
236
+ op = create_op(GrpcOp.new(done: true, response: TIMESTAMP_ANY),
237
+ result_type: nil)
238
+ expect(op.response).to eq(TIMESTAMP)
239
+ end
240
+
241
+ it 'should return original response when result_type is not found when ' \
242
+ 'looked up.' do
243
+ op = create_op(GrpcOp.new(done: true, response: UNKNOWN_ANY),
244
+ result_type: nil)
245
+ expect(op.response).to eq(UNKNOWN_ANY)
246
+ end
196
247
  end
197
248
 
198
249
  context 'method `cancel`' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-gax
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Google API Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-07 00:00:00.000000000 Z
11
+ date: 2018-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: googleauth