Branch
Hash :
8b0aa7b3
Author :
Date :
2017-09-14T17:39:20
Port `event_rpcgen.py` and `test/check-dumpevents.py` to Python 3. These scripts remain compatible with Python 2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#!/usr/bin/env python
#
# Post-process the output of test-dumpevents and check it for correctness.
#
import math
import re
import sys
text = sys.stdin.readlines()
try:
expect_inserted_pos = text.index("Inserted:\n")
expect_active_pos = text.index("Active:\n")
got_inserted_pos = text.index("Inserted events:\n")
got_active_pos = text.index("Active events:\n")
except ValueError:
sys.stderr.write("Missing expected dividing line in dumpevents output")
sys.exit(1)
if not (expect_inserted_pos < expect_active_pos <
got_inserted_pos < got_active_pos):
sys.stderr.write("Sections out of order in dumpevents output")
sys.exit(1)
now,T= text[1].split()
T = float(T)
want_inserted = set(text[expect_inserted_pos+1:expect_active_pos])
want_active = set(text[expect_active_pos+1:got_inserted_pos-1])
got_inserted = set(text[got_inserted_pos+1:got_active_pos])
got_active = set(text[got_active_pos+1:])
pat = re.compile(r'Timeout=([0-9\.]+)')
def replace_time(m):
t = float(m.group(1))
if .9 < abs(t-T) < 1.1:
return "Timeout=T+1"
elif 2.4 < abs(t-T) < 2.6:
return "Timeout=T+2.5"
else:
return m.group(0)
cleaned_inserted = set( pat.sub(replace_time, s) for s in got_inserted
if "Internal" not in s)
if cleaned_inserted != want_inserted:
sys.stderr.write("Inserted event lists were not as expected!")
sys.exit(1)
if set(got_active) != set(want_active):
sys.stderr.write("Active event lists were not as expected!")
sys.exit(1)