Changeset 244284 in webkit


Ignore:
Timestamp:
Apr 15, 2019 1:18:48 PM (5 years ago)
Author:
aakash_jain@apple.com
Message:

[ews-app] status-bubble should display position in queue
https://bugs.webkit.org/show_bug.cgi?id=196607

Reviewed by Lucas Forschler.

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

(StatusBubble._build_bubble):
(StatusBubble._queue_position): Method to calculate patch's position in queue.

Location:
trunk/Tools
Files:
2 edited

Legend:

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

    r243914 r244284  
    2828from django.http import HttpResponse
    2929from django.shortcuts import render
     30from django.utils import timezone
    3031from django.views import View
    3132from django.views.decorators.clickjacking import xframe_options_exempt
    3233from ews.common.buildbot import Buildbot
     34from ews.models.build import Build
    3335from ews.models.patch import Patch
    3436import ews.config as config
     
    5961        if not build:
    6062            bubble['state'] = 'none'
    61             bubble['details_message'] = 'Waiting in queue, processing has not started yet.'
     63            queue_position = self._queue_position(patch, queue, self._get_parent_queue(queue))
     64            bubble['queue_position'] = queue_position
     65            bubble['details_message'] = 'Waiting in queue, processing has not started yet.\n\nPosition in queue: {}'.format(queue_position)
    6266            return bubble
    6367
     
    168172        return queue in StatusBubble.ENABLED_QUEUES
    169173
     174    def _queue_position(self, patch, queue, parent_queue=None):
     175        # FIXME: Handle retried builds and cancelled build-requests as well.
     176        DAYS_TO_CHECK = 3
     177        from_timestamp = timezone.now() - datetime.timedelta(days=DAYS_TO_CHECK)
     178
     179        previously_sent_patches = set(Patch.objects
     180                                          .filter(modified__gte=from_timestamp)
     181                                          .filter(sent_to_buildbot=True)
     182                                          .filter(obsolete=False)
     183                                          .filter(modified__lt=patch.modified))
     184        if parent_queue:
     185            recent_builds_parent_queue = Build.objects \
     186                                             .filter(modified__gte=from_timestamp) \
     187                                             .filter(builder_display_name=parent_queue)
     188            processed_patches_parent_queue = set([build.patch for build in recent_builds_parent_queue])
     189            return len(previously_sent_patches - processed_patches_parent_queue) + 1
     190
     191        recent_builds = Build.objects \
     192                            .filter(modified__gte=from_timestamp) \
     193                            .filter(builder_display_name=queue)
     194        processed_patches = set([build.patch for build in recent_builds])
     195        return len(previously_sent_patches - processed_patches) + 1
     196
    170197    def _build_bubbles_for_patch(self, patch):
    171198        show_submit_to_ews = True
  • trunk/Tools/ChangeLog

    r244283 r244284  
     12019-04-15  Aakash Jain  <aakash_jain@apple.com>
     2
     3        [ews-app] status-bubble should display position in queue
     4        https://bugs.webkit.org/show_bug.cgi?id=196607
     5
     6        Reviewed by Lucas Forschler.
     7
     8        * BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
     9        (StatusBubble._build_bubble):
     10        (StatusBubble._queue_position): Method to calculate patch's position in queue.
     11
    1122019-04-15  Aakash Jain  <aakash_jain@apple.com>
    213
Note: See TracChangeset for help on using the changeset viewer.