Skip to content

Commit f9a9894

Browse files
committed
Fix ack
1 parent 7b8923f commit f9a9894

2 files changed

Lines changed: 43 additions & 11 deletions

File tree

redis/acknowledge.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ local error = ARGV[2]
88
local ttl = ARGV[3]
99
redis.call('zrem', zset_key, test)
1010
redis.call('hdel', owners_key, test) -- Doesn't matter if it was reclaimed by another workers
11-
local acknowledged = redis.call('sadd', processed_key, test)
11+
local acknowledged = redis.call('sadd', processed_key, test) == 1
1212

1313
if acknowledged and error ~= "" then
1414
redis.call('hset', error_reports_key, test, error)

ruby/test/minitest/queue/build_status_recorder_test.rb

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,34 @@ def test_retrying_test
7676
assert_equal 0, summary.error_reports.size
7777
end
7878

79+
def test_retrying_test_reverse
80+
yielded = false
81+
82+
test = nil
83+
84+
@queue.poll do |_test|
85+
test = _test
86+
assert_equal "a", test.method_name
87+
@reporter.record(result(test.method_name))
88+
89+
assert_equal 0, summary.error_reports.size
90+
91+
yielded = true
92+
break
93+
end
94+
95+
assert yielded, "@queue.poll didn't yield"
96+
97+
second_queue = worker(2)
98+
second_reporter = BuildStatusRecorder.new(build: second_queue.build)
99+
second_reporter.start
100+
101+
# pretend we reserved the same test again
102+
reserve(second_queue, "a")
103+
second_reporter.record(result("a", failure: "Something went wrong"))
104+
assert_equal 0, summary.error_reports.size
105+
end
106+
79107
def test_static_queue_record_success
80108
static_queue = CI::Queue::Static.new(['test_example'], CI::Queue::Configuration.new(build_id: '42', worker_id: '1'))
81109
static_reporter = BuildStatusRecorder.new(build: static_queue.build)
@@ -97,16 +125,20 @@ def reserve(queue, method_name)
97125
end
98126

99127
def worker(id)
100-
CI::Queue::Redis.new(
101-
@redis_url,
102-
CI::Queue::Configuration.new(
103-
build_id: '42',
104-
worker_id: id.to_s,
105-
timeout: 0.2,
106-
),
107-
).populate([
108-
Minitest::Queue::SingleExample.new("Minitest::Test", "a")
109-
])
128+
result = nil
129+
capture_io do
130+
result = CI::Queue::Redis.new(
131+
@redis_url,
132+
CI::Queue::Configuration.new(
133+
build_id: '42',
134+
worker_id: id.to_s,
135+
timeout: 0.2,
136+
),
137+
).populate([
138+
Minitest::Queue::SingleExample.new("Minitest::Test", "a")
139+
])
140+
end
141+
result
110142
end
111143

112144
def summary

0 commit comments

Comments
 (0)