lib/fasten/task_manager.rb in fasten-0.12.2 vs lib/fasten/task_manager.rb in fasten-0.12.4
- old
+ new
@@ -1,19 +1,20 @@
module Fasten
class TaskManager < Array # rubocop:disable Metrics/ClassLength
- attr_reader :done, :failed, :pending, :running, :targets
+ attr_reader :done, :failed, :pending, :running, :targets, :runner
- def initialize(targets: [])
+ def initialize(targets: [], runner:)
super()
@map = {}
@done = []
@failed = []
@pending = []
@running = []
@targets = targets
@waiting = nil
+ @runner = runner
end
def push(*items)
items.each do |item|
self << item
@@ -147,13 +148,23 @@
def move_pending_to_waiting
to_move = pending.select { |task| task.depends.count.zero? }
@pending -= to_move
@waiting += to_move
- @waiting.sort_by!.with_index do |task, index|
- task.state = :WAIT
- last_avg = task.last && task.last['avg'] || 0
- [-task.run_score, -last_avg.to_f, index]
+ case @runner.priority
+ when :dependants
+ @waiting.sort_by!.with_index do |task, index|
+ task.state = :WAIT
+ [-task.run_score, index]
+ end
+ when :dependants_avg
+ @waiting.sort_by!.with_index do |task, index|
+ task.state = :WAIT
+ last_avg = task.last && task.last['avg'] || 0
+ [-task.run_score, -last_avg.to_f, index]
+ end
+ else
+ raise "Unknown priority #{@runner.priority}"
end
end
end
end