ci-queue 0.85.0 → 0.86.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: d7f6896ca23e9f9cd64dae9300539d0d5d88ced4c9b59a193d67824d353726cd
4
- data.tar.gz: 969ba0b363dbe7e491561095587b802f24aa400685a96bcb5fda4b23e69dc02b
3
+ metadata.gz: 7708a4b0506c58da9ae1c6681dd335967c584869bf7b4a60546fc43f06a6cfe8
4
+ data.tar.gz: 22e9a6260641835f028c9952e10c3c0dfa4882156bf393b0b1a13befbee89432
5
5
  SHA512:
6
- metadata.gz: dd6d91458d235f13c60df0f27374d09d3050d54354a7d87f0d427c21c558bac9338054a901a350eda42c37118af7893cfb763db96ab7be43b1f0d6a275ac2e6d
7
- data.tar.gz: 833e87a9a0fd535589267462f98f81d134342f66432a43b246a0bc68632a64b85e9d80253a27d9ccf627898a5d846ea37d2c5bef7d2a602905d7c21195ddbff6
6
+ metadata.gz: 697d15d2ada5cae5ace00714a47b91fbb32ebf61a3abf7b181fb4293b560ba837e02c1f88aef40832a9534fcdc45a049c1ef8d19bf5b4b537f2b53d4ca1d6cf5
7
+ data.tar.gz: 225d1ec46ad29137111f16f18431212db237eeaa91871fb9ece7e0e35ba34270b4272b2ce26cff3b178214feb6643a75b5266ae86d41aef5ba47952064996a81
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ci-queue (0.85.0)
4
+ ci-queue (0.86.0)
5
5
  logger
6
6
 
7
7
  GEM
data/ci-queue.gemspec CHANGED
@@ -41,9 +41,9 @@ Gem::Specification.new do |spec|
41
41
  spec.add_development_dependency 'simplecov', '~> 0.12'
42
42
  spec.add_development_dependency 'minitest-reporters', '~> 1.1'
43
43
 
44
+ spec.add_development_dependency 'rexml'
44
45
  spec.add_development_dependency 'snappy'
45
46
  spec.add_development_dependency 'msgpack'
46
47
  spec.add_development_dependency 'benchmark'
47
- spec.add_development_dependency 'rexml'
48
48
  spec.add_development_dependency 'rubocop'
49
49
  end
@@ -10,6 +10,12 @@ module CI
10
10
  end
11
11
  end
12
12
 
13
+ # Grind always eagerly loads test files and populates @index via
14
+ # Static#populate, so poll uses the @index path. Bypass entry_resolver
15
+ # to avoid JSON-formatting overhead on potentially millions of entries.
16
+ def entry_resolver; nil; end
17
+ def entry_resolver=(_); end
18
+
13
19
  def initialize(path, config)
14
20
  io = path == '-' ? STDIN : ::File.open(path)
15
21
 
@@ -13,6 +13,11 @@ module CI
13
13
  self.requeue_offset = 42
14
14
  self.max_sleep_time = 2
15
15
 
16
+ # Minimal wrapper returned by resolve_entry when neither @index nor entry_resolver
17
+ # is available. Provides the interface callers expect (.id, .queue_entry) so that
18
+ # downstream code doesn't crash with NoMethodError on a raw String.
19
+ UnresolvedEntry = Struct.new(:id, :queue_entry)
20
+
16
21
  class Worker < Base
17
22
  attr_accessor :entry_resolver
18
23
  attr_reader :first_reserve_at
@@ -294,7 +299,7 @@ module CI
294
299
 
295
300
  return entry_resolver.call(entry) if entry_resolver
296
301
 
297
- entry
302
+ UnresolvedEntry.new(test_id, entry)
298
303
  end
299
304
 
300
305
  def still_streaming?
@@ -2,7 +2,7 @@
2
2
 
3
3
  module CI
4
4
  module Queue
5
- VERSION = '0.85.0'
5
+ VERSION = '0.86.0'
6
6
  DEV_SCRIPTS_ROOT = ::File.expand_path('../../../../../redis', __FILE__)
7
7
  RELEASE_SCRIPTS_ROOT = ::File.expand_path('../redis', __FILE__)
8
8
  end
@@ -35,6 +35,7 @@ module Minitest
35
35
  configure_lazy_queue
36
36
  queue.stream_populate(lazy_test_enumerator, random: ordering_seed, batch_size: queue_config.lazy_load_stream_batch_size)
37
37
  else
38
+ configure_lazy_queue
38
39
  queue.populate(Minitest.loaded_tests, random: ordering_seed)
39
40
  end
40
41
  end
@@ -118,6 +118,15 @@ module Minitest
118
118
  # minitest/autorun's at_exit hook, which may not be registered since
119
119
  # test files haven't been loaded yet. exit! prevents double-execution
120
120
  # if minitest/autorun was loaded by the leader during streaming.
121
+ #
122
+ # Re-check exhausted? after booting: slow workers may arrive after the queue
123
+ # has been fully drained by faster workers. In that case exit cleanly (0)
124
+ # rather than letting Minitest return false for a 0-test run.
125
+ if queue.rescue_connection_errors { queue.exhausted? }
126
+ puts green('All tests were ran already')
127
+ verify_reporters!(reporters)
128
+ exit!(0)
129
+ end
121
130
  passed = Minitest.run []
122
131
  verify_reporters!(reporters)
123
132
  exit!(passed ? 0 : 1)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ci-queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.85.0
4
+ version: 0.86.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
@@ -122,7 +122,7 @@ dependencies:
122
122
  - !ruby/object:Gem::Version
123
123
  version: '1.1'
124
124
  - !ruby/object:Gem::Dependency
125
- name: snappy
125
+ name: rexml
126
126
  requirement: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - ">="
@@ -136,7 +136,7 @@ dependencies:
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0'
138
138
  - !ruby/object:Gem::Dependency
139
- name: msgpack
139
+ name: snappy
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - ">="
@@ -150,7 +150,7 @@ dependencies:
150
150
  - !ruby/object:Gem::Version
151
151
  version: '0'
152
152
  - !ruby/object:Gem::Dependency
153
- name: benchmark
153
+ name: msgpack
154
154
  requirement: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - ">="
@@ -164,7 +164,7 @@ dependencies:
164
164
  - !ruby/object:Gem::Version
165
165
  version: '0'
166
166
  - !ruby/object:Gem::Dependency
167
- name: rexml
167
+ name: benchmark
168
168
  requirement: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - ">="
@@ -291,7 +291,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
291
  - !ruby/object:Gem::Version
292
292
  version: '0'
293
293
  requirements: []
294
- rubygems_version: 4.0.8
294
+ rubygems_version: 4.0.9
295
295
  specification_version: 4
296
296
  summary: Distribute tests over many workers using a queue
297
297
  test_files: []