Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(444)

Side by Side Diff: tools/testrunner/local/progress.py

Issue 1863793005: [test] Report more test duration data. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Float + total. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2012 the V8 project authors. All rights reserved. 1 # Copyright 2012 the V8 project authors. All rights reserved.
2 # Redistribution and use in source and binary forms, with or without 2 # Redistribution and use in source and binary forms, with or without
3 # modification, are permitted provided that the following conditions are 3 # modification, are permitted provided that the following conditions are
4 # met: 4 # met:
5 # 5 #
6 # * Redistributions of source code must retain the above copyright 6 # * Redistributions of source code must retain the above copyright
7 # notice, this list of conditions and the following disclaimer. 7 # notice, this list of conditions and the following disclaimer.
8 # * Redistributions in binary form must reproduce the above 8 # * Redistributions in binary form must reproduce the above
9 # copyright notice, this list of conditions and the following 9 # copyright notice, this list of conditions and the following
10 # disclaimer in the documentation and/or other materials provided 10 # disclaimer in the documentation and/or other materials provided
(...skipping 16 matching lines...) Expand all
27 27
28 28
29 from functools import wraps 29 from functools import wraps
30 import json 30 import json
31 import os 31 import os
32 import sys 32 import sys
33 import time 33 import time
34 34
35 from . import execution 35 from . import execution
36 from . import junit_output 36 from . import junit_output
37 from . import statusfile
37 38
38 39
39 ABS_PATH_PREFIX = os.getcwd() + os.sep 40 ABS_PATH_PREFIX = os.getcwd() + os.sep
40 41
41 42
42 class ProgressIndicator(object): 43 class ProgressIndicator(object):
43 44
44 def __init__(self): 45 def __init__(self):
45 self.runner = None 46 self.runner = None
46 47
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 self.results = [] 323 self.results = []
323 self.tests = [] 324 self.tests = []
324 325
325 def Done(self): 326 def Done(self):
326 complete_results = [] 327 complete_results = []
327 if os.path.exists(self.json_test_results): 328 if os.path.exists(self.json_test_results):
328 with open(self.json_test_results, "r") as f: 329 with open(self.json_test_results, "r") as f:
329 # Buildbot might start out with an empty file. 330 # Buildbot might start out with an empty file.
330 complete_results = json.loads(f.read() or "[]") 331 complete_results = json.loads(f.read() or "[]")
331 332
333 duration_mean = None
334 if self.tests:
335 # Get duration mean.
336 duration_mean = (
337 sum(t.duration for t in self.tests) / float(len(self.tests)))
338
332 # Sort tests by duration. 339 # Sort tests by duration.
333 timed_tests = [t for t in self.tests if t.duration is not None] 340 timed_tests = [t for t in self.tests if t.duration is not None]
334 timed_tests.sort(lambda a, b: cmp(b.duration, a.duration)) 341 timed_tests.sort(lambda a, b: cmp(b.duration, a.duration))
335 slowest_tests = [ 342 slowest_tests = [
336 { 343 {
337 "name": test.GetLabel(), 344 "name": test.GetLabel(),
338 "flags": test.flags, 345 "flags": test.flags,
339 "command": self._EscapeCommand(test).replace(ABS_PATH_PREFIX, ""), 346 "command": self._EscapeCommand(test).replace(ABS_PATH_PREFIX, ""),
340 "duration": test.duration, 347 "duration": test.duration,
348 "marked_slow": statusfile.IsSlow(test.outcomes),
341 } for test in timed_tests[:20] 349 } for test in timed_tests[:20]
342 ] 350 ]
343 351
344 complete_results.append({ 352 complete_results.append({
345 "arch": self.arch, 353 "arch": self.arch,
346 "mode": self.mode, 354 "mode": self.mode,
347 "results": self.results, 355 "results": self.results,
348 "slowest_tests": slowest_tests, 356 "slowest_tests": slowest_tests,
357 "duration_mean": duration_mean,
358 "test_total": len(self.tests),
349 }) 359 })
350 360
351 with open(self.json_test_results, "w") as f: 361 with open(self.json_test_results, "w") as f:
352 f.write(json.dumps(complete_results)) 362 f.write(json.dumps(complete_results))
353 363
354 def HasRun(self, test, has_unexpected_output): 364 def HasRun(self, test, has_unexpected_output):
355 # Buffer all tests for sorting the durations in the end. 365 # Buffer all tests for sorting the durations in the end.
356 self.tests.append(test) 366 self.tests.append(test)
357 if not has_unexpected_output: 367 if not has_unexpected_output:
358 # Omit tests that run as expected. Passing tests of reruns after failures 368 # Omit tests that run as expected. Passing tests of reruns after failures
(...skipping 19 matching lines...) Expand all
378 "variant": test.variant, 388 "variant": test.variant,
379 }) 389 })
380 390
381 391
382 PROGRESS_INDICATORS = { 392 PROGRESS_INDICATORS = {
383 'verbose': VerboseProgressIndicator, 393 'verbose': VerboseProgressIndicator,
384 'dots': DotsProgressIndicator, 394 'dots': DotsProgressIndicator,
385 'color': ColorProgressIndicator, 395 'color': ColorProgressIndicator,
386 'mono': MonochromeProgressIndicator 396 'mono': MonochromeProgressIndicator
387 } 397 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698