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 +4 -4
- data/Gemfile.lock +1 -1
- data/ci-queue.gemspec +1 -1
- data/lib/ci/queue/grind.rb +6 -0
- data/lib/ci/queue/redis/worker.rb +6 -1
- data/lib/ci/queue/version.rb +1 -1
- data/lib/minitest/queue/queue_population_strategy.rb +1 -0
- data/lib/minitest/queue/runner.rb +9 -0
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7708a4b0506c58da9ae1c6681dd335967c584869bf7b4a60546fc43f06a6cfe8
|
|
4
|
+
data.tar.gz: 22e9a6260641835f028c9952e10c3c0dfa4882156bf393b0b1a13befbee89432
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 697d15d2ada5cae5ace00714a47b91fbb32ebf61a3abf7b181fb4293b560ba837e02c1f88aef40832a9534fcdc45a049c1ef8d19bf5b4b537f2b53d4ca1d6cf5
|
|
7
|
+
data.tar.gz: 225d1ec46ad29137111f16f18431212db237eeaa91871fb9ece7e0e35ba34270b4272b2ce26cff3b178214feb6643a75b5266ae86d41aef5ba47952064996a81
|
data/Gemfile.lock
CHANGED
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
|
data/lib/ci/queue/grind.rb
CHANGED
|
@@ -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?
|
data/lib/ci/queue/version.rb
CHANGED
|
@@ -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.
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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.
|
|
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: []
|