Skip to content

Commit 88c80ba

Browse files
Cleanup
1 parent f03c0f0 commit 88c80ba

File tree

9 files changed

+59
-36
lines changed

9 files changed

+59
-36
lines changed

redis/_entry_helpers.lua

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
local function test_id_from_entry(value, delimiter)
2+
if delimiter then
3+
local pos = string.find(value, delimiter, 1, true)
4+
if pos then
5+
return string.sub(value, 1, pos - 1)
6+
end
7+
end
8+
return value
9+
end

redis/heartbeat.lua

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
-- @include _entry_helpers
2+
13
local zset_key = KEYS[1]
24
local processed_key = KEYS[2]
35
local owners_key = KEYS[3]
@@ -7,17 +9,7 @@ local current_time = ARGV[1]
79
local entry = ARGV[2]
810
local entry_delimiter = ARGV[3]
911

10-
local function test_id_from_entry(value)
11-
if entry_delimiter then
12-
local pos = string.find(value, entry_delimiter, 1, true)
13-
if pos then
14-
return string.sub(value, 1, pos - 1)
15-
end
16-
end
17-
return value
18-
end
19-
20-
local test_id = test_id_from_entry(entry)
12+
local test_id = test_id_from_entry(entry, entry_delimiter)
2113

2214
-- already processed, we do not need to bump the timestamp
2315
if redis.call('sismember', processed_key, test_id) == 1 then

redis/reserve_lost.lua

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
-- @include _entry_helpers
2+
13
local zset_key = KEYS[1]
24
local processed_key = KEYS[2]
35
local worker_queue_key = KEYS[3]
@@ -7,19 +9,9 @@ local current_time = ARGV[1]
79
local timeout = ARGV[2]
810
local entry_delimiter = ARGV[3]
911

10-
local function test_id_from_entry(entry)
11-
if entry_delimiter then
12-
local pos = string.find(entry, entry_delimiter, 1, true)
13-
if pos then
14-
return string.sub(entry, 1, pos - 1)
15-
end
16-
end
17-
return entry
18-
end
19-
2012
local lost_tests = redis.call('zrangebyscore', zset_key, 0, current_time - timeout)
2113
for _, test in ipairs(lost_tests) do
22-
local test_id = test_id_from_entry(test)
14+
local test_id = test_id_from_entry(test, entry_delimiter)
2315
if redis.call('sismember', processed_key, test_id) == 0 then
2416
redis.call('zadd', zset_key, current_time, test)
2517
redis.call('lpush', worker_queue_key, test)

ruby/lib/ci/queue.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
require 'ci/queue/file'
1515
require 'ci/queue/grind'
1616
require 'ci/queue/bisect'
17+
require 'ci/queue/queue_entry'
18+
require 'ci/queue/class_resolver'
19+
require 'ci/queue/file_loader'
1720

1821
module CI
1922
module Queue
@@ -83,6 +86,3 @@ def from_uri(url, config)
8386
end
8487
end
8588

86-
require 'ci/queue/queue_entry'
87-
require 'ci/queue/class_resolver'
88-
require 'ci/queue/file_loader'

ruby/lib/ci/queue/configuration.rb

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ def initialize(
5555
max_test_duration_percentile: 0.5, track_test_duration: false, max_test_failed: nil,
5656
queue_init_timeout: nil, redis_ttl: 8 * 60 * 60, report_timeout: nil, inactive_workers_timeout: nil,
5757
export_flaky_tests_file: nil, warnings_file: nil, debug_log: nil, max_missed_heartbeat_seconds: nil,
58-
lazy_load: false, lazy_load_stream_batch_size: nil, lazy_load_streaming_timeout: nil, lazy_load_test_helpers: nil,
59-
stream_batch_size: nil, streaming_timeout: nil, test_helpers: nil)
58+
lazy_load: false, lazy_load_stream_batch_size: nil, lazy_load_streaming_timeout: nil, lazy_load_test_helpers: nil)
6059
@build_id = build_id
6160
@circuit_breakers = [CircuitBreaker::Disabled]
6261
@failure_file = failure_file
@@ -84,9 +83,9 @@ def initialize(
8483
@debug_log = debug_log
8584
@max_missed_heartbeat_seconds = max_missed_heartbeat_seconds
8685
@lazy_load = lazy_load
87-
@lazy_load_stream_batch_size = lazy_load_stream_batch_size || stream_batch_size || 10_000
88-
@lazy_load_streaming_timeout = lazy_load_streaming_timeout || streaming_timeout || 300
89-
@lazy_load_test_helpers = lazy_load_test_helpers || test_helpers
86+
@lazy_load_stream_batch_size = lazy_load_stream_batch_size || 10_000
87+
@lazy_load_streaming_timeout = lazy_load_streaming_timeout || 300
88+
@lazy_load_test_helpers = lazy_load_test_helpers
9089
end
9190

9291
def lazy_load_test_helper_paths

ruby/lib/ci/queue/redis/base.rb

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,9 +246,21 @@ def load_script(script)
246246
end
247247

248248
def read_script(name)
249-
::File.read(::File.join(CI::Queue::DEV_SCRIPTS_ROOT, "#{name}.lua"))
249+
resolve_lua_includes(
250+
::File.read(::File.join(CI::Queue::DEV_SCRIPTS_ROOT, "#{name}.lua")),
251+
CI::Queue::DEV_SCRIPTS_ROOT,
252+
)
250253
rescue SystemCallError
251-
::File.read(::File.join(CI::Queue::RELEASE_SCRIPTS_ROOT, "#{name}.lua"))
254+
resolve_lua_includes(
255+
::File.read(::File.join(CI::Queue::RELEASE_SCRIPTS_ROOT, "#{name}.lua")),
256+
CI::Queue::RELEASE_SCRIPTS_ROOT,
257+
)
258+
end
259+
260+
def resolve_lua_includes(script, root)
261+
script.gsub(/^-- @include (\S+)$/) do
262+
::File.read(::File.join(root, "#{$1}.lua"))
263+
end
252264
end
253265

254266
class HeartbeatProcess

ruby/lib/ci/queue/redis/monitor.rb

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,21 @@ def load_script(script)
5757
end
5858

5959
def read_script(name)
60-
::File.read(::File.join(DEV_SCRIPTS_ROOT, "#{name}.lua"))
60+
resolve_lua_includes(
61+
::File.read(::File.join(DEV_SCRIPTS_ROOT, "#{name}.lua")),
62+
DEV_SCRIPTS_ROOT,
63+
)
6164
rescue SystemCallError
62-
::File.read(::File.join(RELEASE_SCRIPTS_ROOT, "#{name}.lua"))
65+
resolve_lua_includes(
66+
::File.read(::File.join(RELEASE_SCRIPTS_ROOT, "#{name}.lua")),
67+
RELEASE_SCRIPTS_ROOT,
68+
)
69+
end
70+
71+
def resolve_lua_includes(script, root)
72+
script.gsub(/^-- @include (\S+)$/) do
73+
::File.read(::File.join(root, "#{$1}.lua"))
74+
end
6375
end
6476

6577
HEADER = 'L'

ruby/lib/ci/queue/redis/worker.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,12 @@ def file_loader
168168
@file_loader ||= CI::Queue::FileLoader.new
169169
end
170170

171+
def worker_queue_length
172+
redis.llen(key('worker', worker_id, 'queue'))
173+
rescue *CONNECTION_ERRORS
174+
nil
175+
end
176+
171177
def report_worker_error(error)
172178
build.report_worker_error(error)
173179
end

ruby/lib/minitest/queue.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
require 'shellwords'
33
require 'minitest'
44
require 'minitest/reporters'
5+
require 'concurrent/map'
56

67
require 'minitest/queue/failure_formatter'
78
require 'minitest/queue/error_report'
@@ -254,7 +255,7 @@ def store_worker_profile(queue)
254255
first_test = queue.respond_to?(:first_reserve_at) ? queue.first_reserve_at : nil
255256
profile['time_to_first_test'] = (first_test - run_start).round(2) if first_test
256257

257-
tests_run = queue.rescue_connection_errors { queue.send(:redis).llen(queue.send(:key, 'worker', config.worker_id, 'queue')) }
258+
tests_run = queue.rescue_connection_errors { queue.worker_queue_length } if queue.respond_to?(:worker_queue_length)
258259
profile['tests_run'] = tests_run.to_i if tests_run
259260

260261
load_tests_duration = Minitest::Queue::Runner.load_tests_duration
@@ -393,7 +394,7 @@ def <=>(other)
393394
id <=> other.id
394395
end
395396

396-
RUNNABLE_METHODS_TRIGGERED = {} # :nodoc:
397+
RUNNABLE_METHODS_TRIGGERED = Concurrent::Map.new # :nodoc:
397398

398399
def runnable
399400
@runnable ||= begin

0 commit comments

Comments
 (0)