You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
4 months ago
|
#!/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)
|
||
|
|