class ParallelCalabash::ParallelCalabashApp
Public Class Methods
new(options)
click to toggle source
# File lib/parallel_calabash.rb, line 15 def initialize(options) @options = options @helper = if options.has_key?(:apk_path) ParallelCalabash::AdbHelper.new(options[:filter]) else ParallelCalabash::IosHelper.new( options[:filter], { DEVICE_TARGET: options[:device_target], DEVICE_ENDPOINT: options[:device_endpoint], }, options[:ios_config] ) end @runner = if options.has_key?(:apk_path) ParallelCalabash::AndroidRunner.new(@helper, options[:mute_output]) else ParallelCalabash::IosRunner.new(@helper, options[:mute_output], options[:skip_ios_ping_check]) end end
Public Instance Methods
any_test_failed?(test_results)
click to toggle source
# File lib/parallel_calabash.rb, line 70 def any_test_failed?(test_results) test_results.any? { |result| result[:exit_status] != 0 } end
number_of_processes_to_start()
click to toggle source
# File lib/parallel_calabash.rb, line 37 def number_of_processes_to_start number_of_processes = @helper.number_of_connected_devices raise "\n**** NO DEVICE FOUND ****\n" if number_of_processes==0 puts '*******************************' puts " #{number_of_processes} DEVICES FOUND:" puts @helper.connected_devices_with_model_info puts '*******************************' number_of_processes end
report_time_taken() { || ... }
click to toggle source
# File lib/parallel_calabash.rb, line 74 def report_time_taken start = Time.now yield time_in_sec = Time.now - start mm, ss = time_in_sec.divmod(60) puts "\nTook #{mm} Minutes, #{ss.round(2)} Seconds" end
run_tests_in_parallel()
click to toggle source
# File lib/parallel_calabash.rb, line 47 def run_tests_in_parallel @runner.prepare_for_parallel_execution number_of_processes = number_of_processes_to_start test_results = nil report_time_taken do groups = FeatureGrouper.feature_groups(@options, number_of_processes) threads = groups.size puts "Running with #{threads} threads: #{groups}" complete = [] test_results = Parallel.map_with_index( groups, :in_threads => threads, :finish => lambda { |_, i, _| complete.push(i); print complete, "\n" }) do |group, index| @runner.run_tests(group, index, @options) end puts 'All threads complete' ResultFormatter.report_results(test_results) end @runner.prepare_for_parallel_execution puts 'Parallel run complete' Kernel.exit(1) if any_test_failed?(test_results) end