ci-queue 0.40.0 → 0.41.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
  SHA256:
3
- metadata.gz: be4adb99c549118b56b3b989e226acd24276f2105cd407ebe7c60685b439712f
4
- data.tar.gz: 53ad2297734965e9eb942710e6c6e0dcff81b2597d864f1c0336cbf88c5b792d
3
+ metadata.gz: 23effff409f076f80b7af3728d46a4122a59ca1a5a4c3bd1de5162250d60e72f
4
+ data.tar.gz: ae3c402de5003a6acb3ad002305b85c092ae76d4850634892cab935e03d4479b
5
5
  SHA512:
6
- metadata.gz: c5748d3f7cb1b9a9dd9cd386394c6e812f900fe7883686e920b8d2375fbb4fbfaf6c1a1a78703866f1bc3a64bf704cb21188c9fe3b1ddf762490aa1a36344770
7
- data.tar.gz: d8d146b0427253a80d1ad3739d976bef95bf43fbee151b59fb3810d75450cfb3f3dbddd2a0825c9aea966b44d2c3226874fb182940a473e27873f526f2d7564b
6
+ metadata.gz: 0601ef053acbb457931feec6428c627cdc1ef3d8d3e76cdd54a98f02ef6f8f6f531a38be13dc3c40d2800ca0e9efe00c91c21a569470887978e8ba997880933a
7
+ data.tar.gz: c95d7058762b67a059c4868b1d69a8fd99d5f6098d70fa08d71ec7533f7674b8c0886d1090c41db0ba200273b0cbb1c5fbb0fc12ecadddab04f2fb6a9ec950f3
data/dev.yml CHANGED
@@ -3,7 +3,7 @@
3
3
  name: ci-queue
4
4
 
5
5
  up:
6
- - ruby: 3.2.0
6
+ - ruby: 3.3.0
7
7
  - bundler
8
8
  - redis
9
9
 
@@ -13,12 +13,16 @@ module CI
13
13
 
14
14
  def initialize(redis_url, config)
15
15
  @redis_url = redis_url
16
- @redis = ::Redis.new(
17
- url: redis_url,
18
- # Booting a CI worker is costly, so in case of a Redis blip,
19
- # it makes sense to retry for a while before giving up.
20
- reconnect_attempts: [0, 0, 0.1, 0.5, 1, 3, 5],
21
- )
16
+ if ::Redis::VERSION > "5.0.0"
17
+ @redis = ::Redis.new(
18
+ url: redis_url,
19
+ # Booting a CI worker is costly, so in case of a Redis blip,
20
+ # it makes sense to retry for a while before giving up.
21
+ reconnect_attempts: [0, 0, 0.1, 0.5, 1, 3, 5],
22
+ )
23
+ else
24
+ @redis = ::Redis.new(url: redis_url)
25
+ end
22
26
  @config = config
23
27
  end
24
28
 
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- gem 'redis', '>= 5'
4
3
  require 'redis'
5
4
  require 'ci/queue/redis/build_record'
6
5
  require 'ci/queue/redis/base'
@@ -2,7 +2,7 @@
2
2
 
3
3
  module CI
4
4
  module Queue
5
- VERSION = '0.40.0'
5
+ VERSION = '0.41.0'
6
6
  DEV_SCRIPTS_ROOT = ::File.expand_path('../../../../../redis', __FILE__)
7
7
  RELEASE_SCRIPTS_ROOT = ::File.expand_path('../redis', __FILE__)
8
8
  end
@@ -227,11 +227,11 @@ module Minitest
227
227
  end
228
228
 
229
229
  unless supervisor.exhausted?
230
+ reporter = BuildStatusReporter.new(build: supervisor.build)
231
+ reporter.report
230
232
  msg = "#{supervisor.size} tests weren't run."
231
233
  if supervisor.max_test_failed?
232
234
  puts('Encountered too many failed tests. Test run was ended early.')
233
- reporter = BuildStatusReporter.new(build: supervisor.build)
234
- reporter.report
235
235
  abort!(msg)
236
236
  else
237
237
  abort!(msg)
@@ -301,14 +301,9 @@ module Minitest
301
301
  return unless queue_config.warnings_file
302
302
 
303
303
  warnings = build.pop_warnings.map do |type, attributes|
304
- case type
305
- when CI::Queue::Warnings::RESERVED_LOST_TEST
306
- "[WARNING] #{attributes[:test]} was picked up by another worker because it didn't complete in the allocated #{attributes[:timeout]} seconds.\n" \
307
- "You may want to either optimize this test or bump ci-queue timeout.\n" \
308
- "It's also possible that the worker that was processing it was terminated without being able to report back.\n"
309
- end
304
+ attributes.merge(type: type)
310
305
  end.compact
311
- File.write(queue_config.warnings_file, warnings.join("\n"))
306
+ File.write(queue_config.warnings_file, warnings.to_json)
312
307
  end
313
308
 
314
309
  def run_tests_in_fork(queue)
@@ -244,20 +244,17 @@ module Minitest
244
244
  queue.report_success!
245
245
  end
246
246
 
247
- requeued = false
248
247
  if failed && CI::Queue.requeueable?(result) && queue.requeue(example)
249
- requeued = true
250
248
  result.requeue!
251
249
  reporter.record(result)
252
- elsif queue.acknowledge(example) || !failed
250
+ elsif queue.acknowledge(example)
251
+ reporter.record(result)
252
+ queue.increment_test_failed if failed
253
+ elsif !failed
253
254
  # If the test was already acknowledged by another worker (we timed out)
254
255
  # Then we only record it if it is successful.
255
256
  reporter.record(result)
256
257
  end
257
-
258
- if !requeued && failed
259
- queue.increment_test_failed
260
- end
261
258
  end
262
259
  end
263
260
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci-queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.40.0
4
+ version: 0.41.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-21 00:00:00.000000000 Z
11
+ date: 2024-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -239,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
239
  - !ruby/object:Gem::Version
240
240
  version: '0'
241
241
  requirements: []
242
- rubygems_version: 3.4.22
242
+ rubygems_version: 3.5.4
243
243
  signing_key:
244
244
  specification_version: 4
245
245
  summary: Distribute tests over many workers using a queue