class TestBoosters::Files::LeftoverFiles

Attributes

files[R]

Public Class Methods

new(files) click to toggle source
# File lib/test_boosters/files/leftover_files.rb, line 7
def initialize(files)
  @files = files
end

Public Instance Methods

select(options = {}) click to toggle source
# File lib/test_boosters/files/leftover_files.rb, line 11
def select(options = {})
  index = options.fetch(:index)
  total = options.fetch(:total)

  file_distribution(total)[index]
end

Private Instance Methods

existing_files() click to toggle source
# File lib/test_boosters/files/leftover_files.rb, line 36
def existing_files
  @existing_files ||= @files.select { |file| File.file?(file) }
end
file_distribution(job_count) click to toggle source
# File lib/test_boosters/files/leftover_files.rb, line 20
def file_distribution(job_count)
  # create N empty boxes
  jobs = Array.new(job_count) { [] }

  # distribute files in Round Robin fashion
  sorted_files_by_file_size.each.with_index do |file, index|
    jobs[index % job_count] << file
  end

  jobs
end
sorted_files_by_file_size() click to toggle source
# File lib/test_boosters/files/leftover_files.rb, line 32
def sorted_files_by_file_size
  @sorted_files_by_file_size ||= existing_files.sort_by { |file| -File.size(file) }
end