From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id DADD413894B for ; Sat, 9 Feb 2013 20:45:33 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 8C77D21C033; Sat, 9 Feb 2013 20:45:32 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id E205621C033 for ; Sat, 9 Feb 2013 20:45:31 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id BE06A33E390 for ; Sat, 9 Feb 2013 20:45:30 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 55153E408E for ; Sat, 9 Feb 2013 20:45:29 +0000 (UTC) From: "André Erdmann" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "André Erdmann" Message-ID: <1360440494.0e093591866ba15abd66b692ec190602ee9d9673.dywi@gentoo> Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/overlay/ X-VCS-Repository: proj/R_overlay X-VCS-Files: roverlay/overlay/creator.py X-VCS-Directories: roverlay/overlay/ X-VCS-Committer: dywi X-VCS-Committer-Name: André Erdmann X-VCS-Revision: 0e093591866ba15abd66b692ec190602ee9d9673 X-VCS-Branch: master Date: Sat, 9 Feb 2013 20:45:29 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 6be1207c-da53-4b33-86c0-ee3ffa34b3b8 X-Archives-Hash: 34ee6b1bd54b96f5d63280c9ac87bd3a commit: 0e093591866ba15abd66b692ec190602ee9d9673 Author: André Erdmann mailerd de> AuthorDate: Sat Feb 9 19:16:45 2013 +0000 Commit: André Erdmann mailerd de> CommitDate: Sat Feb 9 20:08:14 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=0e093591 overlay/creator: timestats added (vague) time measurement for get_stats(). --- roverlay/overlay/creator.py | 102 ++++++++++++++++++++++++++++++++---------- 1 files changed, 77 insertions(+), 25 deletions(-) diff --git a/roverlay/overlay/creator.py b/roverlay/overlay/creator.py index 6674e24..6aa5af9 100644 --- a/roverlay/overlay/creator.py +++ b/roverlay/overlay/creator.py @@ -12,13 +12,12 @@ main script). """ __all__ = [ 'OverlayCreator', ] +import collections import time import logging import threading import sys -from collections import deque - try: import queue except ImportError: @@ -137,8 +136,22 @@ class OverlayCreator ( object ): # counts packages that passed adding to overlay self.overlay_added = PseudoAtomicCounter() + self._timestats = collections.OrderedDict() + + for k in ( + 'sync_packages', + 'add_packages', + 'ebuild_creation', + 'overlay_write', + ): + self._timestats [k] = -1 + # --- end of __init__ (...) --- + def set_timestats ( self, name, seconds ): + self._timestats [name] = seconds + # --- end of set_timestats (...) --- + def get_stats ( self ): pkg_added = self.package_added.get_nowait() pkg_created = self.create_success.get_nowait() @@ -164,33 +177,68 @@ class OverlayCreator ( object ): # the length of the highest number in stats (^=digit count) # max_number_len := { 1,...,5 } max_number_len = min ( 5, len ( str ( max ( stats ) ) ) ) - num_fmt = '%(num)-' + str ( max_number_len ) + 's ' - - for i, s in enumerate (( - 'packages added to the ebuild creation queue', - 'packages passed ebuild creation', - 'packages failed ebuild creation', - 'ebuilds could be added to the overlay', - 'ebuilds couldn\'t be added to the overlay', - 'packages processed in total', - 'packages failed in total', - )): - yield num_fmt % { 'num' : stats [i] } + s + + for stats_tuple in zip ( + stats, + ( + 'packages added to the ebuild creation queue', + 'packages passed ebuild creation', + 'packages failed ebuild creation', + 'ebuilds could be added to the overlay', + 'ebuilds couldn\'t be added to the overlay', + 'packages processed in total', + 'packages failed in total', + ), + ): + yield "{num:<{l}} {s}".format ( + num = stats_tuple [0], + s = stats_tuple [1], + l = max_number_len, + ) + + yield "" + + k_len = min ( + 39, + max ( len ( k ) for k in self._timestats.keys() ) + ) + + for k, v in self._timestats.items(): + if v < 0: + yield "time for {:<{l}} : ".format ( k, l=k_len, ) + + elif v < 1: + yield "time for {:<{l}} : {} ms".format ( + k, + round ( v * 1000, 2 ), + l = k_len, + ) + + elif v > 300: + yield "time for {:<{l}} : {} minutes".format ( + k, + round ( v / 60., 2 ), + l = k_len, + ) + + else: + yield "time for {}: {} seconds".format ( k, round ( v, 2 ) ) # --- end of stats_gen (...) --- if enclose: - stats_str = deque ( stats_gen() ) + stats = list ( stats_gen() ) + # maxlen := { 2,...,80 } maxlen = 2 + min ( 78, - len ( max ( stats_str, key=lambda s : len( s ) ) ) + len ( max ( stats, key=lambda s : len( s ) ) ) ) - stats_str.appendleft ( - " Overlay creation stats ".center ( maxlen, '-' ) + return ( + "{0:-^{1}}\n".format ( " Overlay creation stats ", maxlen ) + + '\n'.join ( stats ) + #+ '\n{0:-^{1}}'.format ( '', maxlen ) + + '\n' + ( maxlen * '-' ) ) - stats_str.append ( '-' * maxlen ) - - return '\n'.join ( stats_str ) else: return '\n'.join ( stats_gen() ) @@ -210,7 +258,7 @@ class OverlayCreator ( object ): self.logger.debug ( "timestamp: {} (after {} seconds)".format ( description, delta ) ) - return _stop + return delta # --- end of _timestamp (...) --- def add_package ( self, package_info ): @@ -232,7 +280,9 @@ class OverlayCreator ( object ): if self.overlay.writeable(): start = time.time() self.overlay.write() - self._timestamp ( "overlay written", start ) + self._timestats ['overlay_write'] = ( + self._timestamp ( "overlay written", start ) + ) else: self.logger.warning ( "Not allowed to write overlay!" ) # --- end of write_overlay (...) --- @@ -245,12 +295,14 @@ class OverlayCreator ( object ): def run ( self, close_when_done=False ): """Starts ebuild creation and waits until done.""" self._runlock.acquire() - #self._time_start_run.append ( time.time() ) + t_start = time.time() try: self.start() self.join() finally: - #self._time_stop_run.append ( time.time() ) + self._timestats ['ebuild_creation'] = ( + self._timestamp ( "run() done", t_start ) + ) self._runlock.release() if close_when_done: self.close()