class Sauce::TestBroker
Constants
- AUTH_DETAILS
- CUCUMBER_CONFIG_FILES
- RSPEC_CONFIG_FILES
- SAUCE_ACCESS_KEY
- SAUCE_USERNAME
Public Class Methods
concurrency()
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 69 def self.concurrency response = RestClient.get "#{rest_jobs_url}/#{SAUCE_USERNAME}/limits" res = JSON.parse(response)["concurrency"] end
environment_mutex()
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 19 def self.environment_mutex @@m ||= Mutex.new end
find_config_file(primary_files, secondary_files)
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 98 def self.find_config_file(primary_files, secondary_files) find_in_file_list(primary_files) || find_in_file_list(secondary_files) end
find_in_file_list(list)
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 102 def self.find_in_file_list(list) list.find { |file_path| File.exists?(file_path) } end
group_index(group)
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 57 def self.group_index(group) @group_indexes[group].shift end
load_sauce_config(tool=:rspec)
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 78 def self.load_sauce_config(tool=:rspec) case tool when :rspec primary_files = RSPEC_CONFIG_FILES secondary_files = CUCUMBER_CONFIG_FILES when :cucumber primary_files = CUCUMBER_CONFIG_FILES secondary_files = RSPEC_CONFIG_FILES end configuration_file = self.find_config_file(primary_files, secondary_files) unless configuration_file possible_config_files = primary_files + secondary_files error_message = "Could not find Sauce configuration. Please make sure one of the following files exists:\n" error_message << possible_config_files.map { |file_path| " - #{file_path}" }.join("\n") raise error_message end require configuration_file end
next_environment(group)
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 23 def self.next_environment(group) environment_mutex.synchronize do browsers = {} group.each do |file| file = "./" + file test_groups[file] ||= TestGroup.new(self.test_platforms) browsers[file] ||= [] browsers[file] << test_groups[file].next_platform end on_windows = RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/ format_string = on_windows ? "%s" : "'%s'" perfile_browsers = format_string % [JSON.generate(browsers)] return {:SAUCE_PERFILE_BROWSERS => perfile_browsers} end end
reset()
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 12 def self.reset if defined? @@platforms remove_class_variable(:@@platforms) end @groups = {} end
rest_jobs_url()
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 74 def self.rest_jobs_url "https://#{AUTH_DETAILS}@saucelabs.com/rest/v1" end
test_groups()
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 41 def self.test_groups @groups ||= {} end
test_groups=(groups)
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 45 def self.test_groups=(groups) @groups = groups.reduce({}) do |hash, g| hash[g] = TestGroup.new(self.test_platforms) hash end @group_indexes = groups.uniq.reduce({}) do |rh, g| rh[g] =(groups.each_index.select {|i| groups[i] == g}) rh end end
test_platforms(tool=:rspec)
click to toggle source
# File lib/sauce/parallel/test_broker.rb, line 61 def self.test_platforms(tool=:rspec) unless defined? @@platforms load_sauce_config(tool) @@platforms ||= Sauce.get_config[:browsers] end @@platforms end