Module: ParallelCalabash

Defined in:
lib/parallel_calabash.rb,
lib/parallel_calabash/runner.rb,
lib/parallel_calabash/version.rb,
lib/parallel_calabash/adb_helper.rb,
lib/parallel_calabash/feature_grouper.rb,
lib/parallel_calabash/result_formatter.rb

Defined Under Namespace

Modules: AdbHelper Classes: FeatureGrouper, ResultFormatter, Runner

Constant Summary collapse

WINDOWS =
(RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/)
VERSION =
"0.0.4"

Class Method Summary collapse

Class Method Details

.any_test_failed?(test_results) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/parallel_calabash.rb', line 40

def any_test_failed?(test_results)
  test_results.any? { |result| result[:exit_status] != 0 }
end

.number_of_processes_to_startObject



15
16
17
18
19
20
21
22
# File 'lib/parallel_calabash.rb', line 15

def number_of_processes_to_start
  number_of_processes = AdbHelper.number_of_connected_devices
  raise "\n**** NO DEVICE FOUND ****\n" if number_of_processes==0
  puts "*******************************"
  puts " #{number_of_processes} DEVICES FOUND"
  puts "*******************************"
  number_of_processes
end

.report_time_takenObject



44
45
46
47
48
49
50
# File 'lib/parallel_calabash.rb', line 44

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(options) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/parallel_calabash.rb', line 24

def run_tests_in_parallel(options)
  number_of_processes = number_of_processes_to_start

  test_results = nil
  report_time_taken do
    groups = FeatureGrouper.feature_groups(options[:feature_folder], number_of_processes,options[:distribution_tag])
    puts "#{number_of_processes} processes for #{groups.flatten.size} features"
    test_results = Parallel.map(groups, :in_threads => groups.size) do |group|
      Runner.run_tests(group, groups.index(group), options)
    end
    ResultFormatter.report_results(test_results)
  end

  Kernel.exit(1) if any_test_failed?(test_results)
end