From c69baeb91609654cafc75aa4a8ad21d4e3757d62 Mon Sep 17 00:00:00 2001 From: Maria Marcano Date: Fri, 31 Jul 2015 15:04:26 +0200 Subject: [PATCH] Fix elapsed time calculation --- master/buildbot/status/build.py | 22 +++++-------------- master/buildbot/status/web/build.py | 7 +++--- .../test/unit/test_status_web_status_json.py | 7 +++--- www/templates/build.html | 18 ++++++++------- 4 files changed, 22 insertions(+), 32 deletions(-) diff --git a/master/buildbot/status/build.py b/master/buildbot/status/build.py index 0415e53b56e..604c0324ee6 100644 --- a/master/buildbot/status/build.py +++ b/master/buildbot/status/build.py @@ -168,21 +168,8 @@ def getSteps(self): be complete (asking again later may give you more of them).""" return self.steps - def getTimes(self, include_raw_build_time=False): - if not include_raw_build_time: - return (self.started, self.finished) - else: - rawBuildTime = self.finished - if rawBuildTime is None: - rawBuildTime = 0 - - for s in self.steps: - step_type = s.getStepType() - if step_type == AcquireBuildLocksType or step_type == TriggerType: - times = s.getTimes() - if times[0] is not None and times[1] is not None: - rawBuildTime -= (times[1] - times[0]) - return self.started, self.finished, rawBuildTime + def getTimes(self): + return (self.started, self.finished) _sentinel = [] # used as a sentinel to indicate unspecified initial_value def getSummaryStatistic(self, name, summary_fn, initial_value=_sentinel): @@ -349,13 +336,14 @@ def buildFinished(self): self.finished = util.now() if self.results == RESUME: - build_data = {'start' : self.started, + build_data = {'start': self.started, 'finished': self.finished, 'startTime': time.ctime(self.started), 'finishedTime': time.ctime(self.finished), 'slavename': self.slavename, 'lastStepName': self.currentStep.name, 'lastStepNumber': self.currentStep.step_number+1, + 'elapsed': util.formatInterval(self.finished - self.started), 'resumeSlavepool': self.resumeSlavepool} self.resume.append(build_data) @@ -622,7 +610,7 @@ def asBaseDict(self, request=None, include_current_step=False, include_artifacts result['artifacts'] = self.get_artifacts() # Transient - result['times'] = self.getTimes(include_raw_build_time=True) + result['times'] = self.getTimes() result['text'] = self.getText() result['results'] = self.getResults() result['slave'] = self.getSlavename() diff --git a/master/buildbot/status/web/build.py b/master/buildbot/status/web/build.py index b082f4ceb9b..c5c7ab912fe 100644 --- a/master/buildbot/status/web/build.py +++ b/master/buildbot/status/web/build.py @@ -383,14 +383,13 @@ def content(self, req, cxt): ps.append(p) - (start, end, raw_end_time) = b.getTimes(include_raw_build_time=True) + (start, end) = b.getTimes() cxt['start'] = time.ctime(start) cxt['elapsed'] = None - if end and start: + if end: cxt['end'] = time.ctime(end) cxt['elapsed'] = util.formatInterval(end - start) - cxt['raw_elapsed'] = util.formatInterval(raw_end_time - start) - if start: + elif start: now = util.now() cxt['elapsed'] = util.formatInterval(now - start) diff --git a/master/buildbot/test/unit/test_status_web_status_json.py b/master/buildbot/test/unit/test_status_web_status_json.py index 6d4a95f1fa6..708a779487c 100644 --- a/master/buildbot/test/unit/test_status_web_status_json.py +++ b/master/buildbot/test/unit/test_status_web_status_json.py @@ -115,6 +115,7 @@ def setUpFakeMasterStatus(fakemaster): def fakeBuildStatus(master, builder, num): build_status = BuildStatus(builder.builder_status, master, num) + build_status.started = 1422441500 build_status.finished = 1422441501.21 build_status.reason = 'A build was forced by user@localhost' build_status.slavename = 'build-slave-01' @@ -163,7 +164,7 @@ def test_getBuildJsonResource(self): 'revision': 'abcdef123456789', 'url': u'https://github.com/test/repo/commit/abcdef123456789'}], 'results': 0, 'number': 1, 'currentStep': None, - 'times': (None, 1422441501.21, 1422441501.21), + 'times': (1422441500, 1422441501.21), 'buildChainID': None, 'owners': None, 'submittedTime': None, 'blame': [], 'builder_url': 'http://localhost:8080/projects/Katana/builders/builder-01' + @@ -266,7 +267,7 @@ def expectedDict(num): 'slave_friendly_name': 'build-slave-01', 'slave_url': None, 'sourceStamps': [], 'steps': [], 'buildChainID': None, 'owners': None, 'submittedTime': None, - 'text': [], 'times': (None, 1422441501.21, 1422441501.21), + 'text': [], 'times': (1422441500, 1422441501.21), 'url': { 'path': 'http://localhost:8080/builders/builder-01/builds/%d?katana-buildbot_branch=katana' % num, @@ -393,7 +394,7 @@ def mockFinishedBuildsAsync(branches=[], codebases={}, 'reason': 'A build was forced by user@localhost', 'eta': None, 'builderFriendlyName': 'builder-01', 'failure_url': None, 'slave_friendly_name': 'build-slave-01', - 'times': (None, 1422441501.21, 1422441501.21)}, + 'times': (1422441500, 1422441501.21)}, 'name': 'builder-01', 'tags': ['tag1', 'tag2'], 'url': 'http://localhost:8080/projects/Katana/builders/builder-01?katana-buildbot_branch=katana', 'description': 'Describing my builder', diff --git a/www/templates/build.html b/www/templates/build.html index c1646edceaf..a3b78b290f5 100644 --- a/www/templates/build.html +++ b/www/templates/build.html @@ -108,12 +108,6 @@

{{ elapsed }} - {% if raw_elapsed %} - - Timing - {{ raw_elapsed }} - - {% endif %}

@@ -231,10 +225,18 @@

Last Step - - {{rb.lastStepNumber }} {{ rb.lastStepName }} + {{ rb.lastStepName }} + {% if rb.elapsed %} + + + Elapsed + + {{ rb.elapsed}} + + + {% endif %} {% endfor %}