Skip to content

Commit ffa7028

Browse files
committed
Fix worker's inline running mode
It's quite useful for tests.
1 parent 8cfce2d commit ffa7028

File tree

4 files changed

+18
-3
lines changed

4 files changed

+18
-3
lines changed

app/models/solid_queue/ready_execution.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ def claim(queue_list, limit, process_id)
1515
end
1616
end
1717

18+
def aggregated_count_across(queue_list)
19+
QueueSelector.new(queue_list, self).scoped_relations.map(&:count).sum
20+
end
21+
1822
private
1923
def select_and_lock(queue_relation, process_id, limit)
2024
return [] if limit <= 0

lib/solid_queue/processes/runnable.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ module SolidQueue::Processes
44
module Runnable
55
include Supervised
66

7+
attr_writer :mode
8+
79
def start
810
@stopping = false
911

@@ -19,8 +21,6 @@ def stop
1921
end
2022

2123
private
22-
attr_writer :mode
23-
2424
DEFAULT_MODE = :async
2525

2626
def mode

lib/solid_queue/worker.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def shutdown
4444
end
4545

4646
def all_work_completed?
47-
SolidQueue::ReadyExecution.queued_as(queues).empty?
47+
SolidQueue::ReadyExecution.aggregated_count_across(queues).zero?
4848
end
4949

5050
def metadata

test/unit/worker_test.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,15 @@ class WorkerTest < ActiveSupport::TestCase
8989
ActiveRecord::Base.logger = old_logger
9090
SolidQueue.silence_polling = old_silence_polling
9191
end
92+
93+
test "run inline" do
94+
worker = SolidQueue::Worker.new(queues: "*", threads: 3, polling_interval: 0.2)
95+
worker.mode = :inline
96+
97+
5.times { |i| StoreResultJob.perform_later(:immediate) }
98+
99+
worker.start
100+
101+
assert_equal 5, JobResult.where(queue_name: :background, status: "completed", value: :immediate).count
102+
end
92103
end

0 commit comments

Comments
 (0)