Skip to content

Commit 59464c3

Browse files
authored
Merge pull request #32604 from compnerd/statically-moving-forward
tests: make `jobstats` and `process-stats-dir` python3 compatible
2 parents d098595 + cfebd57 commit 59464c3

File tree

2 files changed

+41
-26
lines changed

2 files changed

+41
-26
lines changed

utils/jobstats/jobstats.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def merged_with(self, other, merge_by="sum"):
9090
else max(a, b)),
9191
"max": lambda a, b: max(a, b)}
9292
op = ops[merge_by]
93-
for k, v in self.stats.items() + other.stats.items():
93+
for k, v in list(self.stats.items()) + list(other.stats.items()):
9494
if k in merged_stats:
9595
merged_stats[k] = op(v, merged_stats[k])
9696
else:
@@ -317,8 +317,7 @@ def load_stats_dir(path, select_module=[], select_stat=[],
317317
jobargs = [mg["input"], mg["triple"], mg["out"], mg["opt"]]
318318

319319
if platform.system() == 'Windows':
320-
p = unicode(u"\\\\?\\%s" % os.path.abspath(os.path.join(root,
321-
f)))
320+
p = str(u"\\\\?\\%s" % os.path.abspath(os.path.join(root, f)))
322321
else:
323322
p = os.path.join(root, f)
324323

utils/process-stats-dir.py

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import argparse
1919
import csv
20+
import io
2021
import itertools
2122
import json
2223
import os
@@ -25,13 +26,22 @@
2526
import sys
2627
import time
2728
import urllib
28-
import urllib2
2929
from collections import namedtuple
3030
from operator import attrgetter
3131

3232
from jobstats import (list_stats_dir_profiles,
3333
load_stats_dir, merge_all_jobstats)
3434

35+
if sys.version_info[0] < 3:
36+
import urllib2
37+
Request = urllib2.Request
38+
URLOpen = urllib2.urlopen
39+
else:
40+
import urllib.request
41+
import urllib.parse
42+
import urllib.error
43+
Request = urllib.request.Request
44+
URLOpen = urllib.request.urlopen
3545

3646
MODULE_PAT = re.compile(r'^(\w+)\.')
3747

@@ -49,7 +59,8 @@ def stat_name_minus_module(name):
4959
def vars_of_args(args):
5060
vargs = vars(args)
5161
if args.select_stats_from_csv_baseline is not None:
52-
b = read_stats_dict_from_csv(args.select_stats_from_csv_baseline)
62+
with io.open(args.select_stats_from_csv_baseline, 'r', encoding='utf-8') as f:
63+
b = read_stats_dict_from_csv(f)
5364
# Sniff baseline stat-names to figure out if they're module-qualified
5465
# even when the user isn't asking us to _output_ module-grouped data.
5566
all_triples = all(len(k.split('.')) == 3 for k in b.keys())
@@ -105,18 +116,18 @@ def write_lnt_values(args):
105116
json.dump(j, args.output, indent=4)
106117
else:
107118
url = args.lnt_submit
108-
print "\nsubmitting to LNT server: " + url
119+
print("\nsubmitting to LNT server: " + url)
109120
json_report = {'input_data': json.dumps(j), 'commit': '1'}
110121
data = urllib.urlencode(json_report)
111-
response_str = urllib2.urlopen(urllib2.Request(url, data))
122+
response_str = URLOpen(Request(url, data))
112123
response = json.loads(response_str.read())
113-
print "### response:"
114-
print response
124+
print("### response:")
125+
print(response)
115126
if 'success' in response:
116-
print "server response:\tSuccess"
127+
print("server response:\tSuccess")
117128
else:
118-
print "server response:\tError"
119-
print "error:\t", response['error']
129+
print("server response:\tError")
130+
print("error:\t", response['error'])
120131
sys.exit(1)
121132

122133

@@ -187,8 +198,8 @@ def update_epoch_value(d, name, epoch, value):
187198
epoch = existing_epoch
188199
else:
189200
(_, delta_pct) = diff_and_pct(existing_value, value)
190-
print ("note: changing value %d -> %d (%.2f%%) for %s" %
191-
(existing_value, value, delta_pct, name))
201+
print("note: changing value %d -> %d (%.2f%%) for %s" %
202+
(existing_value, value, delta_pct, name))
192203
changed = 1
193204
d[name] = (epoch, value)
194205
return (epoch, value, changed)
@@ -233,22 +244,28 @@ def set_csv_baseline(args):
233244
existing = None
234245
vargs = vars_of_args(args)
235246
if os.path.exists(args.set_csv_baseline):
236-
with open(args.set_csv_baseline, "r") as f:
247+
with io.open(args.set_csv_baseline, "r", encoding='utf-8', newline='\n') as f:
237248
ss = vargs['select_stat']
238249
existing = read_stats_dict_from_csv(f, select_stat=ss)
239-
print ("updating %d baseline entries in %s" %
240-
(len(existing), args.set_csv_baseline))
250+
print("updating %d baseline entries in %s" %
251+
(len(existing), args.set_csv_baseline))
241252
else:
242-
print "making new baseline " + args.set_csv_baseline
253+
print("making new baseline " + args.set_csv_baseline)
243254
fieldnames = ["epoch", "name", "value"]
244-
with open(args.set_csv_baseline, "wb") as f:
255+
256+
def _open(path):
257+
if sys.version_info[0] < 3:
258+
return open(path, 'wb')
259+
return io.open(path, "w", encoding='utf-8', newline='\n')
260+
261+
with _open(args.set_csv_baseline) as f:
245262
out = csv.DictWriter(f, fieldnames, dialect='excel-tab',
246263
quoting=csv.QUOTE_NONNUMERIC)
247264
m = merge_all_jobstats((s for d in args.remainder
248265
for s in load_stats_dir(d, **vargs)),
249266
**vargs)
250267
if m is None:
251-
print "no stats found"
268+
print("no stats found")
252269
return 1
253270
changed = 0
254271
newepoch = int(time.time())
@@ -265,7 +282,7 @@ def set_csv_baseline(args):
265282
name=name,
266283
value=int(value)))
267284
if existing is not None:
268-
print "changed %d entries in baseline" % changed
285+
print("changed %d entries in baseline" % changed)
269286
return 0
270287

271288

@@ -402,8 +419,8 @@ def keyfunc(e):
402419

403420
def compare_to_csv_baseline(args):
404421
vargs = vars_of_args(args)
405-
old_stats = read_stats_dict_from_csv(args.compare_to_csv_baseline,
406-
select_stat=vargs['select_stat'])
422+
with io.open(args.compare_to_csv_baseline, 'r', encoding='utf-8') as f:
423+
old_stats = read_stats_dict_from_csv(f, select_stat=vargs['select_stat'])
407424
m = merge_all_jobstats((s for d in args.remainder
408425
for s in load_stats_dir(d, **vargs)),
409426
**vargs)
@@ -585,7 +602,7 @@ def main():
585602
action="append",
586603
help="Select specific statistics")
587604
parser.add_argument("--select-stats-from-csv-baseline",
588-
type=argparse.FileType('rb', 0), default=None,
605+
type=str, default=None,
589606
help="Select statistics present in a CSV baseline")
590607
parser.add_argument("--exclude-timers",
591608
default=False,
@@ -635,8 +652,7 @@ def main():
635652
help="summarize the 'incrementality' of a build")
636653
modes.add_argument("--set-csv-baseline", type=str, default=None,
637654
help="Merge stats from a stats-dir into a CSV baseline")
638-
modes.add_argument("--compare-to-csv-baseline",
639-
type=argparse.FileType('rb', 0), default=None,
655+
modes.add_argument("--compare-to-csv-baseline", type=str, default=None,
640656
metavar="BASELINE.csv",
641657
help="Compare stats dir to named CSV baseline")
642658
modes.add_argument("--compare-stats-dirs",

0 commit comments

Comments
 (0)