@@ -20,21 +20,12 @@ class UpdateStatus
2020 def initialize ( payload )
2121 @status = payload [ 'status' ]
2222
23- @output =
24- if payload . dig ( 'output' , 'title' ) . nil? and payload . dig ( 'output' , 'summary' ) . nil?
25- { }
26- else
27- { title : payload . dig ( 'output' , 'title' ) , summary : payload . dig ( 'output' , 'summary' ) }
28- end
29-
3023 @reference = payload [ 'bamboo_ref' ] || 'invalid_reference'
3124 @job = CiJob . find_by ( job_ref : payload [ 'bamboo_ref' ] )
3225 @check_suite = @job &.check_suite
3326 @failures = payload [ 'failures' ]
3427
3528 logger_initializer
36- logger ( Logger ::WARN , "UpdateStatus: #{ @reference } #{ @status } (Output in info log)" )
37- logger ( Logger ::INFO , "UpdateStatus: #{ @reference } #{ @status } #{ @output } " )
3829 end
3930
4031 def update
@@ -68,9 +59,9 @@ def failures_stats
6859 def update_status
6960 case @status
7061 when 'in_progress'
71- @job . in_progress ( @github_check , output : @output )
62+ @job . in_progress ( @github_check )
7263 when 'success'
73- @job . success ( @github_check , output : @output )
64+ @job . success ( @github_check )
7465 slack_notify_success
7566 else
7667 failure
@@ -128,46 +119,26 @@ def current_execution?
128119 # The unable2find string must match the phrase defined in the ci-files repository file
129120 # github_checks/hook_api.py method __topotest_title_summary
130121 def failure
131- unable2find = "There was some test that failed, but I couldn't find the log."
132- fetch_and_update_failures ( unable2find ) if !@output . empty? and @output [ :summary ] . match? ( unable2find )
122+ @job . failure ( @github_check )
133123
134- @job . failure ( @github_check , output : @output )
135- failures_stats if @job . name . downcase . match? 'topotest' and @failures . is_a? Array
124+ retrieve_stats
136125 end
137126
138- def fetch_and_update_failures ( to_be_replaced )
139- count = 0
140- begin
141- output = BambooCi ::Result . fetch ( @job . job_ref )
142- return if output . nil? or output . empty?
127+ def retrieve_stats
128+ return failures_stats if @failures . is_a? Array and !@failures . empty?
143129
144- @output [ :summary ] = @output [ :summary ] . sub ( to_be_replaced , fetch_failures ( output ) ) [ 0 ..65_535 ]
145- rescue NoMethodError => e
146- logger Logger ::ERROR , "#{ e . class } #{ e . message } "
147- count += 1
148- sleep 5
149- retry if count <= 10
150- end
130+ retrieve_errors
151131 end
152132
153- def fetch_failures ( output )
154- buffer = ''
155- output . dig ( 'testResults' , 'failedTests' , 'testResult' ) &.each do |test_result |
156- message = ''
157- test_result . dig ( 'errors' , 'error' ) . each do |error |
158- message += error [ 'message' ]
159- buffer += message
160- end
161-
162- @failures << {
163- 'suite' => test_result [ 'className' ] ,
164- 'case' => test_result [ 'methodName' ] ,
165- 'message' => message ,
166- 'execution_time' => test_result [ 'durationInSeconds' ]
167- }
168- end
133+ def retrieve_errors
134+ @retrieve_error = Github ::TopotestFailures ::RetrieveError . new ( @job )
135+ @retrieve_error . retrieve
136+
137+ return if @retrieve_error . failures . empty?
138+
139+ @failures = @retrieve_error . failures
169140
170- buffer
141+ failures_stats
171142 end
172143
173144 def slack_notify_success
0 commit comments