Skip to content
Snippets Groups Projects
  • Dilawar Singh's avatar
    Squashed 'moose-gui/' changes from e49ca7d..2ba6bd5 · f0fd0e53
    Dilawar Singh authored
    2ba6bd5 cleanup
    d0f5918 replace writeKkit to moosewriteKkit
    cb067ac correct from writeKkit to mooseWriteKkit
    6b1bff4 Ubuntu16.04 with networkx and pygraphviz has some bug, for now small fix, automatic layout will be done spring_layout format
    dbe6875 Update .travis.yml
    8a71426 Update README.md
    fcbacd5 Added travis file to moose-gui.
    ddcfbdc Removed shebangs from python scripts.
    d5cf170 Fixed the address of Free Software Foundation Inc.
    b88d5cc Merge commit 'aca40347'
    e0cea9f Squashed 'moose-gui/' changes from 1ef13c9-1ef13c9
    
    git-subtree-dir: moose-gui
    git-subtree-split: 2ba6bd5d8e6b022edf3f3aa1a567462ab7ddf6ed
    f0fd0e53
metrics.py 1.95 KiB
# This program is free software; you can redistribute it and/or modify
# it under the terms of the (LGPL) GNU Lesser General Public License as
# published by the Free Software Foundation; either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Library Lesser General Public License for more details at
# ( http://www.gnu.org/licenses/lgpl.html ).
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# written by: Jeff Ortel ( jortel@redhat.com )

"""
The I{metrics} module defines classes and other resources
designed for collecting and reporting performance metrics.
"""

import time
from suds import *
from math import modf

from logging import getLogger
log = getLogger(__name__)


class Timer:

    def __init__(self):
        self.started = 0
        self.stopped = 0

    def start(self):
        self.started = time.time()
        self.stopped = 0
        return self

    def stop(self):
        if self.started > 0:
            self.stopped = time.time()
        return self

    def duration(self):
        return ( self.stopped - self.started )

    def __str__(self):
        if self.started == 0:
            return 'not-running'
        if self.started > 0 and self.stopped == 0:
            return 'started: %d (running)' % self.started
        duration = self.duration()
        jmod = ( lambda m : (m[1], m[0]*1000) )
        if duration < 1:
            ms = (duration*1000)
            return '%d (ms)' % ms
        if duration < 60:
            m = modf(duration)
            return '%d.%.3d (seconds)' % jmod(m)
        m = modf(duration/60)
        return '%d.%.3d (minutes)' % jmod(m)