class TestBoosters::Files::Distributor

Distributes test files based on split configuration, file pattern, and their file size

Public Class Methods

new(split_configuration_path, file_pattern, exclude_pattern, job_count) click to toggle source
# File lib/test_boosters/files/distributor.rb, line 9
def initialize(split_configuration_path, file_pattern, exclude_pattern, job_count)
  @split_configuration_path = split_configuration_path
  @file_pattern = file_pattern
  @exclude_pattern = exclude_pattern
  @job_count = job_count
end

Public Instance Methods

all_files() click to toggle source
# File lib/test_boosters/files/distributor.rb, line 29
def all_files
  @all_files ||= begin
    files = Dir[@file_pattern].sort
    files -= Dir[@exclude_pattern] if @exclude_pattern
    files
  end
end
display_info() click to toggle source
# File lib/test_boosters/files/distributor.rb, line 16
def display_info
  puts "Split configuration present: #{split_configuration.present? ? "yes" : "no"}"
  puts "Split configuration valid: #{split_configuration.valid? ? "yes" : "no"}"
  puts "Split configuration file count: #{split_configuration.all_files.size}"
end
files_for(job_index) click to toggle source
# File lib/test_boosters/files/distributor.rb, line 22
def files_for(job_index)
  known    = all_files & split_configuration.files_for_job(job_index)
  leftover = leftover_files.select(:index => job_index, :total => @job_count)

  [known, leftover]
end

Private Instance Methods

leftover_files() click to toggle source
# File lib/test_boosters/files/distributor.rb, line 39
def leftover_files
  @leftover_files ||= TestBoosters::Files::LeftoverFiles.new(all_files - split_configuration.all_files)
end
split_configuration() click to toggle source
# File lib/test_boosters/files/distributor.rb, line 43
def split_configuration
  @split_configuration ||= TestBoosters::Files::SplitConfiguration.new(@split_configuration_path)
end