fluent-plugin-google-cloud 0.6.9.pre.1 → 0.6.10.pre.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -273,7 +273,8 @@ class GoogleCloudOutputTest < Test::Unit::TestCase
273
273
 
274
274
  private
275
275
 
276
- WRITE_LOG_ENTRIES_URI = 'https://logging.googleapis.com/v2/entries:write'
276
+ WRITE_LOG_ENTRIES_URI =
277
+ 'https://logging.googleapis.com/v2/entries:write'.freeze
277
278
 
278
279
  def rename_key(hash, old_key, new_key)
279
280
  hash.merge(new_key => hash[old_key]).reject { |k, _| k == old_key }
@@ -91,8 +91,8 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
91
91
  [true, 13, 1, 2, [0, 1, 0, 0, 2]]
92
92
  ].each do |should_fail, code, request_count, entry_count, metric_values|
93
93
  setup_prometheus
94
- setup_logging_stubs(should_fail, code, 'SomeMessage') do
95
- (1..request_count).each do
94
+ (1..request_count).each do
95
+ setup_logging_stubs(should_fail, code, 'SomeMessage') do
96
96
  d = create_driver(USE_GRPC_CONFIG + PROMETHEUS_ENABLE_CONFIG, 'test',
97
97
  GRPCLoggingMockFailingService.rpc_stub_class)
98
98
  (1..entry_count).each do |i|
@@ -205,14 +205,21 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
205
205
 
206
206
  private
207
207
 
208
- GRPC_MOCK_HOST = 'localhost:56789'
209
-
210
208
  WriteLogEntriesRequest = Google::Logging::V2::WriteLogEntriesRequest
211
209
  WriteLogEntriesResponse = Google::Logging::V2::WriteLogEntriesResponse
212
210
 
213
211
  USE_GRPC_CONFIG = %(
214
212
  use_grpc true
215
- )
213
+ ).freeze
214
+
215
+ @@mock_port = 0 # rubocop:disable Style/ClassVars
216
+
217
+ def generate_mock_host
218
+ # rubocop:disable Style/ClassVars
219
+ @@mock_port = (@@mock_port + 1) % 10_000 + 50_000
220
+ "localhost:#{@@mock_port}"
221
+ # rubocop:enable Style/ClassVars
222
+ end
216
223
 
217
224
  # Create a Fluentd output test driver with the Google Cloud Output plugin with
218
225
  # grpc enabled. The signature of this method is different between the grpc
@@ -222,14 +229,16 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
222
229
  grpc_stub = GRPCLoggingMockService.rpc_stub_class)
223
230
  conf += USE_GRPC_CONFIG
224
231
  Fluent::Test::BufferedOutputTestDriver.new(
225
- GoogleCloudOutputWithGRPCMock.new(grpc_stub), tag).configure(conf, true)
232
+ GoogleCloudOutputWithGRPCMock.new(grpc_stub, @mock_host),
233
+ tag).configure(conf, true)
226
234
  end
227
235
 
228
236
  # Google Cloud Fluent output stub with grpc mock.
229
237
  class GoogleCloudOutputWithGRPCMock < Fluent::GoogleCloudOutput
230
- def initialize(grpc_stub)
238
+ def initialize(grpc_stub, mock_host)
231
239
  super()
232
240
  @grpc_stub = grpc_stub
241
+ @mock_host = mock_host
233
242
  end
234
243
 
235
244
  def api_client
@@ -240,7 +249,7 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
240
249
 
241
250
  # Here we have obtained the creds, but for the mock, we will leave the
242
251
  # channel insecure.
243
- @grpc_stub.new(GRPC_MOCK_HOST, :this_channel_is_insecure)
252
+ @grpc_stub.new(@mock_host, :this_channel_is_insecure)
244
253
  end
245
254
  end
246
255
 
@@ -261,15 +270,15 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
261
270
  # These methods should never be called, so they will just fail the tests
262
271
  # with "unimplemented" errors..
263
272
  def _undefined
264
- fail "Method #{__callee__} is unimplemented and needs to be overridden."
273
+ raise "Method #{__callee__} is unimplemented and needs to be overridden."
265
274
  end
266
275
 
267
- alias_method :list_logs, :_undefined
268
- alias_method :list_log_entries, :_undefined
269
- alias_method :list_log_services, :_undefined
270
- alias_method :list_log_service_indexes, :_undefined
271
- alias_method :list_monitored_resource_descriptors, :_undefined
272
- alias_method :delete_log, :_undefined
276
+ alias list_logs _undefined
277
+ alias list_log_entries _undefined
278
+ alias list_log_services _undefined
279
+ alias list_log_service_indexes _undefined
280
+ alias list_monitored_resource_descriptors _undefined
281
+ alias delete_log _undefined
273
282
  undef_method :_undefined
274
283
  end
275
284
 
@@ -288,7 +297,7 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
288
297
 
289
298
  def write_log_entries(_request, _call)
290
299
  @failed_attempts << 1
291
- fail GRPC::BadStatus.new(@code, @message)
300
+ raise GRPC::BadStatus.new(@code, @message)
292
301
  end
293
302
 
294
303
  # TODO(lingshi) Remove these dummy methods when grpc/9033 is fixed.
@@ -296,20 +305,27 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
296
305
  # These methods should never be called, so they will just fail the tests
297
306
  # with "unimplemented" errors..
298
307
  def _undefined
299
- fail "Method #{__callee__} is unimplemented and needs to be overridden."
308
+ raise "Method #{__callee__} is unimplemented and needs to be overridden."
300
309
  end
301
310
 
302
- alias_method :list_logs, :_undefined
303
- alias_method :list_log_entries, :_undefined
304
- alias_method :list_log_services, :_undefined
305
- alias_method :list_log_service_indexes, :_undefined
306
- alias_method :list_monitored_resource_descriptors, :_undefined
307
- alias_method :delete_log, :_undefined
311
+ alias list_logs _undefined
312
+ alias list_log_entries _undefined
313
+ alias list_log_services _undefined
314
+ alias list_log_service_indexes _undefined
315
+ alias list_monitored_resource_descriptors _undefined
316
+ alias delete_log _undefined
308
317
  undef_method :_undefined
309
318
  end
310
319
 
311
320
  # Set up grpc stubs to mock the external calls.
321
+ # TODO(qingling128): Remove this comment after grpc/grpc#12506 is resolved.
322
+ # Due to a gRPC load balancing issue (grpc/grpc#12506), we have to use a
323
+ # different port each time we create a gRPC mock as a temporary workaround.
324
+ # Thus we can only create one driver in each setup_logging_stubs context.
312
325
  def setup_logging_stubs(should_fail = false, code = 0, message = 'Ok')
326
+ # Save the mock host in an instance variable, so later on when creating the
327
+ # logging driver, we can refer to this host with exactly the same port.
328
+ @mock_host = generate_mock_host
313
329
  srv = GRPC::RpcServer.new
314
330
  @failed_attempts = []
315
331
  @requests_sent = []
@@ -319,7 +335,7 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
319
335
  grpc = GRPCLoggingMockService.new(@requests_sent)
320
336
  end
321
337
  srv.handle(grpc)
322
- srv.add_http2_port(GRPC_MOCK_HOST, :this_port_is_insecure)
338
+ srv.add_http2_port(@mock_host, :this_port_is_insecure)
323
339
  t = Thread.new { srv.run }
324
340
  srv.wait_till_running
325
341
  begin
@@ -331,6 +347,7 @@ class GoogleCloudOutputGRPCTest < Test::Unit::TestCase
331
347
  end
332
348
  srv.stop
333
349
  t.join
350
+ @mock_host = nil
334
351
  end
335
352
 
336
353
  # Verify the number and the content of the log entries match the expectation.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-google-cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.9.pre.1
4
+ version: 0.6.10.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Todd Derr
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-10-18 00:00:00.000000000 Z
12
+ date: 2017-11-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -100,9 +100,6 @@ dependencies:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
102
  version: '1.0'
103
- - - "<"
104
- - !ruby/object:Gem::Version
105
- version: '1.3'
106
103
  type: :runtime
107
104
  prerelease: false
108
105
  version_requirements: !ruby/object:Gem::Requirement
@@ -110,9 +107,6 @@ dependencies:
110
107
  - - "~>"
111
108
  - !ruby/object:Gem::Version
112
109
  version: '1.0'
113
- - - "<"
114
- - !ruby/object:Gem::Version
115
- version: '1.3'
116
110
  - !ruby/object:Gem::Dependency
117
111
  name: json
118
112
  requirement: !ruby/object:Gem::Requirement
@@ -161,14 +155,14 @@ dependencies:
161
155
  requirements:
162
156
  - - "~>"
163
157
  - !ruby/object:Gem::Version
164
- version: 0.35.0
158
+ version: 0.39.0
165
159
  type: :development
166
160
  prerelease: false
167
161
  version_requirements: !ruby/object:Gem::Requirement
168
162
  requirements:
169
163
  - - "~>"
170
164
  - !ruby/object:Gem::Version
171
- version: 0.35.0
165
+ version: 0.39.0
172
166
  - !ruby/object:Gem::Dependency
173
167
  name: webmock
174
168
  requirement: !ruby/object:Gem::Requirement