mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 11:25:00 +00:00
Bug 469518 - Enable Reftest leak log in tinderbox (log); (Dv1) Early return in processLeakLog(); r=jwalden+bmo
This commit is contained in:
parent
588c8f8488
commit
9d44a930ba
@ -434,73 +434,74 @@ def processLeakLog(leakLogFile, leakThreshold):
|
||||
|
||||
if not os.path.exists(leakLogFile):
|
||||
log.info("WARNING refcount logging is off, so leaks can't be detected!")
|
||||
else:
|
||||
# Per-Inst Leaked Total Rem ...
|
||||
# 0 TOTAL 17 192 419115886 2 ...
|
||||
# 833 nsTimerImpl 60 120 24726 2 ...
|
||||
lineRe = re.compile(r"^\s*\d+\s+(?P<name>\S+)\s+"
|
||||
r"(?P<size>-?\d+)\s+(?P<bytesLeaked>-?\d+)\s+"
|
||||
r"\d+\s+(?P<numLeaked>-?\d+)")
|
||||
return
|
||||
|
||||
leaks = open(leakLogFile, "r")
|
||||
for line in leaks:
|
||||
matches = lineRe.match(line)
|
||||
if (matches and
|
||||
int(matches.group("numLeaked")) == 0 and
|
||||
matches.group("name") != "TOTAL"):
|
||||
continue
|
||||
log.info(line.rstrip())
|
||||
leaks.close()
|
||||
# Per-Inst Leaked Total Rem ...
|
||||
# 0 TOTAL 17 192 419115886 2 ...
|
||||
# 833 nsTimerImpl 60 120 24726 2 ...
|
||||
lineRe = re.compile(r"^\s*\d+\s+(?P<name>\S+)\s+"
|
||||
r"(?P<size>-?\d+)\s+(?P<bytesLeaked>-?\d+)\s+"
|
||||
r"\d+\s+(?P<numLeaked>-?\d+)")
|
||||
|
||||
leaks = open(leakLogFile, "r")
|
||||
seenTotal = False
|
||||
prefix = "TEST-PASS"
|
||||
for line in leaks:
|
||||
matches = lineRe.match(line)
|
||||
if not matches:
|
||||
continue
|
||||
name = matches.group("name")
|
||||
size = int(matches.group("size"))
|
||||
bytesLeaked = int(matches.group("bytesLeaked"))
|
||||
numLeaked = int(matches.group("numLeaked"))
|
||||
if size < 0 or bytesLeaked < 0 or numLeaked < 0:
|
||||
log.info("TEST-UNEXPECTED-FAIL | runtests-leaks | negative leaks caught!")
|
||||
if "TOTAL" == name:
|
||||
seenTotal = True
|
||||
# Check for leaks.
|
||||
if bytesLeaked < 0 or bytesLeaked > leakThreshold:
|
||||
prefix = "TEST-UNEXPECTED-FAIL"
|
||||
leakLog = "TEST-UNEXPECTED-FAIL | runtests-leaks | leaked" \
|
||||
" %d bytes during test execution" % bytesLeaked
|
||||
elif bytesLeaked > 0:
|
||||
leakLog = "TEST-PASS | runtests-leaks | WARNING leaked" \
|
||||
" %d bytes during test execution" % bytesLeaked
|
||||
else:
|
||||
leakLog = "TEST-PASS | runtests-leaks | no leaks detected!"
|
||||
# Remind the threshold if it is not 0, which is the default/goal.
|
||||
if leakThreshold != 0:
|
||||
leakLog += " (threshold set at %d bytes)" % leakThreshold
|
||||
# Log the information.
|
||||
log.info(leakLog)
|
||||
leaks = open(leakLogFile, "r")
|
||||
for line in leaks:
|
||||
matches = lineRe.match(line)
|
||||
if (matches and
|
||||
int(matches.group("numLeaked")) == 0 and
|
||||
matches.group("name") != "TOTAL"):
|
||||
continue
|
||||
log.info(line.rstrip())
|
||||
leaks.close()
|
||||
|
||||
leaks = open(leakLogFile, "r")
|
||||
seenTotal = False
|
||||
prefix = "TEST-PASS"
|
||||
for line in leaks:
|
||||
matches = lineRe.match(line)
|
||||
if not matches:
|
||||
continue
|
||||
name = matches.group("name")
|
||||
size = int(matches.group("size"))
|
||||
bytesLeaked = int(matches.group("bytesLeaked"))
|
||||
numLeaked = int(matches.group("numLeaked"))
|
||||
if size < 0 or bytesLeaked < 0 or numLeaked < 0:
|
||||
log.info("TEST-UNEXPECTED-FAIL | runtests-leaks | negative leaks caught!")
|
||||
if "TOTAL" == name:
|
||||
seenTotal = True
|
||||
# Check for leaks.
|
||||
if bytesLeaked < 0 or bytesLeaked > leakThreshold:
|
||||
prefix = "TEST-UNEXPECTED-FAIL"
|
||||
leakLog = "TEST-UNEXPECTED-FAIL | runtests-leaks | leaked" \
|
||||
" %d bytes during test execution" % bytesLeaked
|
||||
elif bytesLeaked > 0:
|
||||
leakLog = "TEST-PASS | runtests-leaks | WARNING leaked" \
|
||||
" %d bytes during test execution" % bytesLeaked
|
||||
else:
|
||||
if numLeaked != 0:
|
||||
if abs(numLeaked) > 1:
|
||||
instance = "instances"
|
||||
rest = " each (%s bytes total)" % matches.group("bytesLeaked")
|
||||
else:
|
||||
instance = "instance"
|
||||
rest = ""
|
||||
log.info("%(prefix)s | runtests-leaks | leaked %(numLeaked)d %(instance)s of %(name)s "
|
||||
"with size %(size)s bytes%(rest)s" %
|
||||
{ "prefix": prefix,
|
||||
"numLeaked": numLeaked,
|
||||
"instance": instance,
|
||||
"name": name,
|
||||
"size": matches.group("size"),
|
||||
"rest": rest })
|
||||
if not seenTotal:
|
||||
log.info("TEST-UNEXPECTED-FAIL | runtests-leaks | missing output line for total leaks!")
|
||||
leaks.close()
|
||||
leakLog = "TEST-PASS | runtests-leaks | no leaks detected!"
|
||||
# Remind the threshold if it is not 0, which is the default/goal.
|
||||
if leakThreshold != 0:
|
||||
leakLog += " (threshold set at %d bytes)" % leakThreshold
|
||||
# Log the information.
|
||||
log.info(leakLog)
|
||||
else:
|
||||
if numLeaked != 0:
|
||||
if abs(numLeaked) > 1:
|
||||
instance = "instances"
|
||||
rest = " each (%s bytes total)" % matches.group("bytesLeaked")
|
||||
else:
|
||||
instance = "instance"
|
||||
rest = ""
|
||||
log.info("%(prefix)s | runtests-leaks | leaked %(numLeaked)d %(instance)s of %(name)s "
|
||||
"with size %(size)s bytes%(rest)s" %
|
||||
{ "prefix": prefix,
|
||||
"numLeaked": numLeaked,
|
||||
"instance": instance,
|
||||
"name": name,
|
||||
"size": matches.group("size"),
|
||||
"rest": rest })
|
||||
if not seenTotal:
|
||||
log.info("TEST-UNEXPECTED-FAIL | runtests-leaks | missing output line for total leaks!")
|
||||
leaks.close()
|
||||
|
||||
def runApp(testURL, env, app, profileDir, extraArgs,
|
||||
runSSLTunnel = False, utilityPath = DIST_BIN,
|
||||
|
Loading…
Reference in New Issue
Block a user