test-queue 0.2.4 → 0.2.9
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 +8 -8
- data/Gemfile.lock +1 -1
- data/lib/test_queue/iterator.rb +1 -1
- data/lib/test_queue/runner.rb +30 -21
- data/test-multi.sh +1 -0
- data/test-queue.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
MjQ3ZGNkZDQ3OGNjMWU2YmIxZDU2NGZjOTZjYTk5ZTNhY2E4NzQxZQ==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
MjJiZjRjM2M4Y2E0ODA5ZjQyYTJkMDkzOTM0MjA0Nzc2NjM1NDg3ZA==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
MWYwODQ5NjBmMmEwMTNiYWFjZWQ1NGNmMTcyNjRiMWRhNDM4OWVkY2E3YTNi
|
|
10
|
+
NDViMTBjZDNjMGU1ZDc1MTNmYjIzYTMzNDViMzMyYmEyMjY1Mjk2MjFhYmIz
|
|
11
|
+
MTcxODg3NzA3MTI5MjkzMTc2MGRjMWNiNGIxOTNmYWFiMmI4MWE=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
YzhhNTMxM2U3ZDNlNzg1YTcwY2Q4OTNiY2M1YTkwMmZlZTFhNjUzNTk5NzEw
|
|
14
|
+
MTk1YTNlZjZjYTcwMzhkNTM4MTQ5Yjg1ZjFjZWU4Y2MyOGY4MWFjNGRhOGZl
|
|
15
|
+
YTI2NWE5N2I2N2Y4MWVhMTEwZjA4ZWU0NjU0YWIwMGEzZjY1Njg=
|
data/Gemfile.lock
CHANGED
data/lib/test_queue/iterator.rb
CHANGED
|
@@ -27,7 +27,7 @@ module TestQueue
|
|
|
27
27
|
if data = client.read(65536)
|
|
28
28
|
client.close
|
|
29
29
|
item = Marshal.load(data)
|
|
30
|
-
break if item.nil?
|
|
30
|
+
break if item.nil? || item.empty?
|
|
31
31
|
suite = @suites[item]
|
|
32
32
|
|
|
33
33
|
$0 = "#{@procline} - #{suite.respond_to?(:description) ? suite.description : suite}"
|
data/lib/test_queue/runner.rb
CHANGED
|
@@ -84,7 +84,7 @@ module TestQueue
|
|
|
84
84
|
execute_parallel :
|
|
85
85
|
execute_sequential
|
|
86
86
|
ensure
|
|
87
|
-
summarize_internal
|
|
87
|
+
summarize_internal unless $!
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
def summarize_internal
|
|
@@ -144,6 +144,9 @@ module TestQueue
|
|
|
144
144
|
|
|
145
145
|
def execute_parallel
|
|
146
146
|
start_master
|
|
147
|
+
prepare(@concurrency)
|
|
148
|
+
@prepared_time = Time.now
|
|
149
|
+
start_relay if relay?
|
|
147
150
|
spawn_workers
|
|
148
151
|
distribute_queue
|
|
149
152
|
ensure
|
|
@@ -154,21 +157,12 @@ module TestQueue
|
|
|
154
157
|
end
|
|
155
158
|
|
|
156
159
|
until @workers.empty?
|
|
157
|
-
|
|
160
|
+
reap_worker
|
|
158
161
|
end
|
|
159
162
|
end
|
|
160
163
|
|
|
161
164
|
def start_master
|
|
162
|
-
if relay?
|
|
163
|
-
begin
|
|
164
|
-
sock = connect_to_relay
|
|
165
|
-
sock.puts("SLAVE #{@concurrency}")
|
|
166
|
-
sock.close
|
|
167
|
-
rescue Errno::ECONNREFUSED
|
|
168
|
-
STDERR.puts "*** Unable to connect to relay #{@relay}. Aborting.."
|
|
169
|
-
exit! 1
|
|
170
|
-
end
|
|
171
|
-
else
|
|
165
|
+
if !relay?
|
|
172
166
|
if @socket =~ /^(?:(.+):)?(\d+)$/
|
|
173
167
|
address = $1 || '0.0.0.0'
|
|
174
168
|
port = $2.to_i
|
|
@@ -185,6 +179,17 @@ module TestQueue
|
|
|
185
179
|
$0 = "#{desc} - #{@procline}"
|
|
186
180
|
end
|
|
187
181
|
|
|
182
|
+
def start_relay
|
|
183
|
+
return unless relay?
|
|
184
|
+
|
|
185
|
+
sock = connect_to_relay
|
|
186
|
+
sock.puts("SLAVE #{@concurrency} #{Socket.gethostname}")
|
|
187
|
+
sock.close
|
|
188
|
+
rescue Errno::ECONNREFUSED
|
|
189
|
+
STDERR.puts "*** Unable to connect to relay #{@relay}. Aborting.."
|
|
190
|
+
exit! 1
|
|
191
|
+
end
|
|
192
|
+
|
|
188
193
|
def stop_master
|
|
189
194
|
return if relay?
|
|
190
195
|
|
|
@@ -194,8 +199,6 @@ module TestQueue
|
|
|
194
199
|
end
|
|
195
200
|
|
|
196
201
|
def spawn_workers
|
|
197
|
-
prepare(@concurrency)
|
|
198
|
-
|
|
199
202
|
@concurrency.times do |i|
|
|
200
203
|
num = i+1
|
|
201
204
|
|
|
@@ -204,7 +207,9 @@ module TestQueue
|
|
|
204
207
|
|
|
205
208
|
iterator = Iterator.new(relay?? @relay : @socket, @suites, method(:around_filter))
|
|
206
209
|
after_fork_internal(num, iterator)
|
|
207
|
-
|
|
210
|
+
ret = run_worker(iterator) || 0
|
|
211
|
+
cleanup_worker
|
|
212
|
+
exit! ret
|
|
208
213
|
end
|
|
209
214
|
|
|
210
215
|
@workers[pid] = Worker.new(pid, num)
|
|
@@ -222,7 +227,7 @@ module TestQueue
|
|
|
222
227
|
|
|
223
228
|
$0 = "test-queue worker [#{num}]"
|
|
224
229
|
puts
|
|
225
|
-
puts "==> Starting #$0 (#{Process.pid}) - iterating over #{iterator.sock}"
|
|
230
|
+
puts "==> Starting #$0 (#{Process.pid} on #{Socket.gethostname}) - iterating over #{iterator.sock}"
|
|
226
231
|
puts
|
|
227
232
|
|
|
228
233
|
after_fork(num)
|
|
@@ -246,6 +251,9 @@ module TestQueue
|
|
|
246
251
|
return 0 # exit status
|
|
247
252
|
end
|
|
248
253
|
|
|
254
|
+
def cleanup_worker
|
|
255
|
+
end
|
|
256
|
+
|
|
249
257
|
def summarize_worker(worker)
|
|
250
258
|
num_tests = ''
|
|
251
259
|
failures = ''
|
|
@@ -253,7 +261,7 @@ module TestQueue
|
|
|
253
261
|
[ num_tests, failures ]
|
|
254
262
|
end
|
|
255
263
|
|
|
256
|
-
def
|
|
264
|
+
def reap_worker(blocking=true)
|
|
257
265
|
if pid = Process.waitpid(-1, blocking ? 0 : Process::WNOHANG) and worker = @workers.delete(pid)
|
|
258
266
|
worker.status = $?
|
|
259
267
|
worker.end_time = Time.now
|
|
@@ -284,7 +292,7 @@ module TestQueue
|
|
|
284
292
|
|
|
285
293
|
until @queue.empty? && remote_workers == 0
|
|
286
294
|
if IO.select([@server], nil, nil, 0.1).nil?
|
|
287
|
-
|
|
295
|
+
reap_worker(false) if @workers.any? # check for worker deaths
|
|
288
296
|
else
|
|
289
297
|
sock = @server.accept
|
|
290
298
|
cmd = sock.gets.strip
|
|
@@ -294,10 +302,11 @@ module TestQueue
|
|
|
294
302
|
data = Marshal.dump(obj.to_s)
|
|
295
303
|
sock.write(data)
|
|
296
304
|
end
|
|
297
|
-
when /^SLAVE (\d+)/
|
|
305
|
+
when /^SLAVE (\d+) ([\w\.-]+)/
|
|
298
306
|
num = $1.to_i
|
|
307
|
+
slave = $2
|
|
299
308
|
remote_workers += num
|
|
300
|
-
STDERR.puts "***
|
|
309
|
+
STDERR.puts "*** #{num} workers connected from #{slave} after #{Time.now-@start_time}s"
|
|
301
310
|
when /^WORKER (\d+)/
|
|
302
311
|
data = sock.read($1.to_i)
|
|
303
312
|
worker = Marshal.load(data)
|
|
@@ -311,7 +320,7 @@ module TestQueue
|
|
|
311
320
|
stop_master
|
|
312
321
|
|
|
313
322
|
until @workers.empty?
|
|
314
|
-
|
|
323
|
+
reap_worker
|
|
315
324
|
end
|
|
316
325
|
end
|
|
317
326
|
|
data/test-multi.sh
CHANGED
data/test-queue.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: test-queue
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aman Gupta
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-02-
|
|
11
|
+
date: 2014-02-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|