Class: Toaster::TestSuite

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/toaster/test/test_suite.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attr_hash) ⇒ TestSuite



26
27
28
29
30
31
32
33
34
# File 'lib/toaster/test/test_suite.rb', line 26

def initialize(attr_hash)
  if !attr_hash[:uuid]
    attr_hash[:uuid] = Util.generate_short_uid()
  end
  if !attr_hash[:test_coverage_goal]
    attr_hash[:test_coverage_goal] = TestCoverageGoal.new
  end
  super(attr_hash)
end

Class Method Details

.find(criteria = {}) ⇒ Object



138
139
140
# File 'lib/toaster/test/test_suite.rb', line 138

def self.find(criteria={})
  DB.find_activerecord(TestSuite, criteria)
end

.get_uuidsObject



79
80
81
# File 'lib/toaster/test/test_suite.rb', line 79

def self.get_uuids() 
  return find().collect { |suite| suite.uuid }
end

.load(id, load_associations = true) ⇒ Object



134
135
136
137
# File 'lib/toaster/test/test_suite.rb', line 134

def self.load(id, load_associations = true)
  return nil if !id
  find(id)
end

Instance Method Details

#add_test_results(res, prefix = "", preset_values = {}) ⇒ Object



113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/toaster/test/test_suite.rb', line 113

def add_test_results(res, prefix="", preset_values={})
  res.add_entry("#{prefix}numTests", test_cases.size)
  res.add_entry("#{prefix}numTestsFinished", test_cases_finished.size)
  res.add_entry("#{prefix}numTestsOpen", test_cases.size - test_cases_finished.size)
  res.add_entry("#{prefix}numTestsFailed", test_cases_failed.size)
  res.add_entry("#{prefix}numTestsSuccess", test_cases_succeeded.size)
  res.add_entry("#{prefix}percTestsFailed", test_cases_failed.size.to_f / test_cases.size.to_f)
  res.add_entry("#{prefix}percTestsSuccess", test_cases_succeeded.size.to_f / test_cases.size.to_f)
  #res.add_entry("#{prefix}numConvProps", preset_values["numConvProps"] ? preset_values["numConvProps"] :
  #    Convergence.convergence_for_automation(@automation).size)
  res.add_entry("#{prefix}numAutoTasks", @automation.tasks.size)
  res.add_entry("#{prefix}durationGross", get_gross_duration())
  res.add_entry("#{prefix}durationNet", get_net_duration())
  test_cases_sorted.each_with_index do |test,idx|
    res.add_entry("#{prefix}t#{idx}startTime", test.start_time)
    res.add_entry("#{prefix}t#{idx}durationGross", test.get_gross_duration)
    res.add_entry("#{prefix}t#{idx}durationNet", test.get_net_duration)
    res.add_entry("#{prefix}t#{idx}success", test.success ? 1 : 0)
  end
end

#automation_nameObject



58
59
60
# File 'lib/toaster/test/test_suite.rb', line 58

def automation_name()
  return automation ? automation.name : "n/a"
end

#automation_versionObject



61
62
63
# File 'lib/toaster/test/test_suite.rb', line 61

def automation_version()
  return automation ? automation.version : "n/a"
end

#contains_equal_test?(test_case) ⇒ Boolean



70
71
72
73
74
75
76
77
# File 'lib/toaster/test/test_suite.rb', line 70

def contains_equal_test?(test_case)
  test_cases.each do |test|
    if test.eql?(test_case)
      return true
    end
  end
  return false
end

#coverage_goalObject



54
55
56
# File 'lib/toaster/test/test_suite.rb', line 54

def coverage_goal
  test_coverage_goal
end

#executed_test_casesObject



99
100
101
102
103
# File 'lib/toaster/test/test_suite.rb', line 99

def executed_test_cases
  test_cases.select { 
          |c| c.start_time &&
          !("#{c.start_time}".empty?) }
end

#first_testObject



104
105
106
107
# File 'lib/toaster/test/test_suite.rb', line 104

def first_test
  cases_copy = test_cases_sorted(executed_test_cases)
  return cases_copy.empty? ? nil : cases_copy[0]
end

#get_gross_durationObject

Returns the total gross duration of all test cases in this suite. Gross duration includes times for initialization + actual test execution + cleanup.



39
40
41
42
# File 'lib/toaster/test/test_suite.rb', line 39

def get_gross_duration()
  durations = test_cases.collect{ |c| c.get_gross_duration() }
  return durations.reduce(:+)
end

#get_net_durationObject

Returns the total net duration of all test cases in this suite. Net duration includes times for the actual test execution (not including initialization or cleanup).



47
48
49
50
51
52
# File 'lib/toaster/test/test_suite.rb', line 47

def get_net_duration()
  durations = test_cases.collect{ |c| 
    c.get_net_duration()
  }
  return durations.reduce(:+)
end

#last_testObject



108
109
110
111
# File 'lib/toaster/test/test_suite.rb', line 108

def last_test
  cases_copy = test_cases_sorted(executed_test_cases)
  return cases_copy.empty? ? nil : cases_copy[-1]
end

#last_test_timeObject



65
66
67
68
# File 'lib/toaster/test/test_suite.rb', line 65

def last_test_time()
  l = last_test
  return l ? l.start_time : "n/a"
end

#query_unfinished_testsObject



142
143
144
145
146
147
# File 'lib/toaster/test/test_suite.rb', line 142

def query_unfinished_tests 
  return TestCase.find(
    :automation_run => nil,
    :test_suite_id => id
  )
end

#test_cases_failedObject



93
94
95
# File 'lib/toaster/test/test_suite.rb', line 93

def test_cases_failed
  return test_cases.select { |test| test.success == false }
end

#test_cases_finishedObject



83
84
85
# File 'lib/toaster/test/test_suite.rb', line 83

def test_cases_finished
  return test_cases.select { |test| test.executed? }
end

#test_cases_sorted(cases = test_cases) ⇒ Object



86
87
88
89
90
91
92
# File 'lib/toaster/test/test_suite.rb', line 86

def test_cases_sorted(cases=test_cases)
  return cases.sort { |x,y|
    !x.start_time ? 1 : 
    !y.start_time ? -1 :
    x.start_time <=> y.start_time 
  }
end

#test_cases_succeededObject



96
97
98
# File 'lib/toaster/test/test_suite.rb', line 96

def test_cases_succeeded
  return test_cases.select { |test| test.success == true }
end