⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 242967 in webkit


Ignore:
Timestamp:
Mar 14, 2019, 3:06:17 PM (7 years ago)
Author:
aakash_jain@apple.com
Message:

[ews-build] Generate status-bubble hover-over messages
https://bugs.webkit.org/show_bug.cgi?id=195680

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble):
(StatusBubble._build_bubble): Generate bubbledetails_message which would be displayed
on hover-over.
(StatusBubble._iso_time):
(StatusBubble._steps_messages): Returns status messages from steps to be displayed in
hover-over message.
(StatusBubble._most_recent_step_message): Returns status message from most recent step.

Location:
trunk/Tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/BuildSlaveSupport/ews-app/ews/views/statusbubble.py

    r242884 r242967  
    2323from __future__ import unicode_literals
    2424
     25import datetime
    2526import re
    2627
     
    4344    def _build_bubble(self, patch, queue):
    4445        bubble = {
    45             "name": queue,
     46            'name': queue,
    4647        }
    4748        build = self.get_latest_build_for_queue(patch, queue)
     
    5051
    5152        if not build:
    52             bubble["state"] = "none"
    53             bubble["details_message"] = 'Waiting in queue, processing has not started yet.'
     53            bubble['state'] = 'none'
     54            bubble['details_message'] = 'Waiting in queue, processing has not started yet.'
    5455            return bubble
    5556
    56         bubble["url"] = 'https://{}/#/builders/{}/builds/{}'.format(config.BUILDBOT_SERVER_HOST, build.builder_id, build.number)
    57         builder_full_name = build.builder_name
    58         bubble["details_message"] = '{}\n{}'.format(builder_full_name, build.state_string)
    59         if build.result is None:
    60             bubble["state"] = "started"
     57        bubble['url'] = 'https://{}/#/builders/{}/builds/{}'.format(config.BUILDBOT_SERVER_HOST, build.builder_id, build.number)
     58        builder_full_name = build.builder_name.replace('-', ' ')
     59
     60        if build.result is None:  # In-progress build
     61            bubble['state'] = 'started'
     62            bubble['details_message'] = 'Recent messages:\n\n' + self._steps_messages(build) + '\n\n' + self._iso_time(build.step_set.last().started_at)
    6163        elif build.result == Buildbot.SUCCESS:
    62             bubble["state"] = "pass"
     64            bubble['state'] = 'pass'
     65            bubble['details_message'] = 'Pass\n\n' + self._iso_time(build.complete_at)
    6366        elif build.result == Buildbot.WARNINGS:
    64             bubble["state"] = "pass"
     67            bubble['state'] = 'pass'
     68            bubble['details_message'] = 'Warning\n\n' + self._steps_messages(build) + '\n\n' + self._iso_time(build.complete_at)
    6569        elif build.result == Buildbot.FAILURE:
    66             bubble["state"] = "fail"
     70            bubble['state'] = 'fail'
     71            bubble['details_message'] = self._most_recent_step_message(build) + '\n\n' + self._iso_time(build.complete_at)
    6772        elif build.result == Buildbot.SKIPPED:
    68             bubble["state"] = "none"
     73            bubble['state'] = 'none'
     74            bubble['details_message'] = 'The patch is no longer eligible for processing.'
     75            if re.search(r'Bug .* is already closed', build.state_string):
     76                bubble['details_message'] += ' Bug was already closed when EWS attempted to process it.'
     77            elif re.search(r'Patch .* is marked r-', build.state_string):
     78                bubble['details_message'] += ' Patch was already marked r- when EWS attempted to process it.'
     79            elif re.search(r'Patch .* is obsolete', build.state_string):
     80                bubble['details_message'] += ' Patch was obsolete when EWS attempted to process it.'
     81            bubble['details_message'] += '\nSome messages were logged while the patch was still eligible:\n\n'
     82            bubble['details_message'] += self._steps_messages(build) + '\n\n' + self._iso_time(build.complete_at)
     83
    6984        elif build.result == Buildbot.EXCEPTION:
    70             bubble["state"] = "error"
     85            bubble['state'] = 'error'
     86            bubble['details_message'] += ('An unexpected error occured. Recent messages:\n\n'
     87                + self._steps_messages(build) + '\n\n' + self._iso_time(build.complete_at))
    7188        elif build.result == Buildbot.RETRY:
    72             bubble["state"] = "provisional-fail"
     89            bubble['state'] = 'provisional-fail'
     90            bubble['details_message'] += ('Build is being retried. Recent messages:\n\n'
     91                + self._steps_messages(build) + '\n\n' + self._iso_time(build.complete_at))
     92        elif build.result == Buildbot.CANCELLED:
     93            bubble['state'] = 'provisional-fail'
     94            bubble['details_message'] += ('Build was cancelled. Recent messages:\n\n'
     95                + self._steps_messages(build) + '\n\n' + self._iso_time(build.complete_at))
    7396        else:
    74             bubble["state"] = "fail"
     97            bubble['state'] = 'error'
     98            bubble['details_message'] += ('An unexpected error occured. Recent messages:\n\n'
     99                + self._steps_messages(build) + '\n\n' + self._iso_time(build.complete_at))
     100
     101        if 'details_message' in bubble:
     102            bubble['details_message'] = builder_full_name + '\n\n' + bubble['details_message']
    75103
    76104        return bubble
     105
     106    def _iso_time(self, time):
     107        return '[[' + datetime.datetime.fromtimestamp(time).isoformat() + 'Z]]'
     108
     109    def _steps_messages(self, build):
     110        return '\n'.join([step.state_string for step in build.step_set.all()])
     111
     112    def _most_recent_step_message(self, build):
     113        recent_step = build.step_set.last()
     114        if not recent_step:
     115            return ''
     116        return recent_step.state_string
    77117
    78118    def get_latest_build_for_queue(self, patch, queue):
     
    120160
    121161        template_values = {
    122             "bubbles": bubbles,
    123             "patch_id": patch_id,
    124             "show_submit_to_ews": show_submit_to_ews,
    125             "show_failure_to_apply": show_failure_to_apply,
     162            'bubbles': bubbles,
     163            'patch_id': patch_id,
     164            'show_submit_to_ews': show_submit_to_ews,
     165            'show_failure_to_apply': show_failure_to_apply,
    126166        }
    127167        return render(request, 'statusbubble.html', template_values)
  • trunk/Tools/ChangeLog

    r242966 r242967  
     12019-03-14  Aakash Jain  <aakash_jain@apple.com>
     2
     3        [ews-build] Generate status-bubble hover-over messages
     4        https://bugs.webkit.org/show_bug.cgi?id=195680
     5
     6        Reviewed by Lucas Forschler.
     7
     8        * BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
     9        (StatusBubble):
     10        (StatusBubble._build_bubble): Generate bubble['details_message'] which would be displayed
     11        on hover-over.
     12        (StatusBubble._iso_time):
     13        (StatusBubble._steps_messages): Returns status messages from steps to be displayed in
     14        hover-over message.
     15        (StatusBubble._most_recent_step_message): Returns status message from most recent step.
     16
    1172019-03-14  Aakash Jain  <aakash_jain@apple.com>
    218
Note: See TracChangeset for help on using the changeset viewer.