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

Side by Side Diff: scripts/tools/perf/chrome-perf-stats.py

Issue 1060663003: Add a perf subdirectory under tools and a simple script to collect chromium.perf success stats. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Fixed copyright header Created 5 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 | « scripts/tools/perf/OWNERS ('k') | 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
(Empty)
1 #!/usr/bin/env python2.7
2 # Copyright 2015 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """Script to pull chromium.perf stats from chrome-infra-stats API.
7
8 Currently this just pulls success rates from the API, averages daily per
9 builder, and outputs a CSV. It could be improved to provide more detailed
10 success rates or build times.
11
12 The API documentation for chrome-infra-stats is at:
13 https://apis-explorer.appspot.com/apis-explorer/?
14 base=https://chrome-infra-stats.appspot.com/_ah/api#p/
15 """
16 import calendar
17 import csv
18 import json
19 import sys
20 import urllib
21 import urllib2
22
23 BUILDER_LIST_URL = ('https://chrome-infra-stats.appspot.com/'
24 '_ah/api/stats/v1/masters/chromium.perf')
25
26 BUILDER_STATS_URL = ('https://chrome-infra-stats.appspot.com/_ah/api/stats/v1/'
27 'stats/chromium.perf/%s/overall__build__result__/%s')
28
29 USAGE = 'Usage: chrome-perf-stats.py <outfilename> <year> <month> [<day>]'
30
31 if len(sys.argv) != 4 and len(sys.argv) != 5:
32 print USAGE
33 sys.exit(0)
34 outfilename = sys.argv[1]
35 year = int(sys.argv[2])
36 if year > 2016 or year < 2014:
37 print USAGE
38 sys.exit(0)
39 month = int(sys.argv[3])
40 if month > 12 or month <= 0:
41 print USAGE
42 sys.exit(0)
43 days = range(1, calendar.monthrange(year, month)[1] + 1)
44 if len(sys.argv) == 5:
45 day = int(sys.argv[4])
46 if day > 31 or day <=0:
47 print USAGE
48 sys.exit(0)
49 days = [day]
50
51 response = urllib2.urlopen(BUILDER_LIST_URL)
52 builders = [builder['name'] for builder in json.load(response)['builders']]
53
54 success_rates = {}
55
56 for day in days:
57 for hour in range(24):
58 date_str = '%d-%02d-%02dT%02d:00Z' % (year, month, day, hour)
59 date_dict_str = '%d-%02d-%02d' % (year, month, day)
60 for builder in builders:
61 url = BUILDER_STATS_URL % (urllib.quote(builder), urllib.quote(date_str))
62 print url
63 response = urllib2.urlopen(url)
64 results = json.load(response)
65 count = int(results['count'])
66 if count == 0:
67 continue
68 success_count = count - int(results['failure_count'])
69 success_rates.setdefault(date_dict_str, {})
70 success_rates[date_dict_str].setdefault(builder, {
71 'count': 0,
72 'success_count': 0
73 })
74 success_rates[date_dict_str][builder]['count'] += count
75 success_rates[date_dict_str][builder]['success_count'] += success_count
76
77 overall_success_rates = []
78 for day, results in success_rates.iteritems():
79 success_rate_sum = 0
80 success_rate_count = 0
81 for builder, rates in results.iteritems():
82 if rates['count'] == 0:
83 continue
84 success_rate_sum += (float(rates['success_count']) / float(rates['count']))
85 success_rate_count += 1
86 overall_success_rates.append(
87 [day, float(success_rate_sum) / float(success_rate_count)])
88
89 with open(outfilename, 'wb') as f:
90 writer = csv.writer(f)
91 writer.writerows(overall_success_rates)
OLDNEW
« no previous file with comments | « scripts/tools/perf/OWNERS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698