validate:launcher: Use the new validatelog file

Making the output cleaner and clearer in junit XML file
This commit is contained in:
Thibault Saunier 2014-04-23 11:47:10 +02:00
parent 38eda37341
commit 7133e4b4e0
3 changed files with 43 additions and 6 deletions

View file

@ -82,6 +82,17 @@ class Test(Loggable):
return string
def get_extra_log_content(self, extralog):
if extralog not in self.extra_logfiles:
return ""
f = open(extralog, 'r+')
value = f.read()
f.close()
return value
def get_classname(self):
name = self.classname.split('.')[-1]
classname = self.classname.replace('.%s' % name, '')
@ -247,6 +258,7 @@ class GstValidateTest(Test):
# segment / seek
self._sent_eos_pos = None
self.validatelogs = None
if scenario is None or scenario.name.lower() == "none":
self.scenario = None
else:
@ -255,6 +267,11 @@ class GstValidateTest(Test):
def get_subproc_env(self):
subproc_env = os.environ.copy()
self.validatelogs = self.logfile + '.validate.logs'
utils.touch(self.validatelogs)
subproc_env["GST_VALIDATE_FILE"] = self.validatelogs
self.extra_logfiles.append(self.validatelogs)
if 'GST_DEBUG' in os.environ:
gstlogsfile = self.logfile + '.gstdebug'
self.extra_logfiles.append(gstlogsfile)
@ -270,10 +287,18 @@ class GstValidateTest(Test):
if self.scenario is not None:
self.add_arguments("--set-scenario", self.scenario.name)
def get_extra_log_content(self, extralog):
value = Test.get_extra_log_content(self, extralog)
if extralog == self.validatelogs:
value = re.sub("<position:.*/>\r", "", value)
return value
def get_validate_criticals_errors(self):
ret = "["
errors = []
for l in open(self.logfile, 'r').readlines():
for l in open(self.validatelogs, 'r').readlines():
if "critical : " in l:
if ret != "[":
ret += ", "
@ -330,7 +355,7 @@ class GstValidateTest(Test):
self.debug("Getting position")
m = None
for l in reversed(open(self.logfile, 'r').readlines()):
for l in reversed(open(self.validatelogs, 'r').readlines()):
l = l.lower()
if "<position:" in l or "buffering" in l:
m = l
@ -355,7 +380,7 @@ class GstValidateTest(Test):
m = None
rate = start = stop = None
for l in reversed(open(self.logfile, 'r').readlines()):
for l in reversed(open(self.validatelogs, 'r').readlines()):
l = l.lower()
if "seeking to: " in l:
m = l
@ -383,7 +408,7 @@ class GstValidateTest(Test):
m = None
rate = start = stop = None
for l in reversed(open(self.logfile, 'r').readlines()):
for l in reversed(open(self.validatelogs, 'r').readlines()):
l = l.lower()
if "sending eos" in l:
m = l

View file

@ -132,13 +132,22 @@ class XunitReporter(Reporter):
super(XunitReporter, self).final_report()
def _get_captured(self):
captured = ""
if self.out:
self.out.seek(0)
value = self.out.read()
if value:
return '<system-out><![CDATA[%s]]></system-out>' % \
captured += '<system-out><![CDATA[%s' % \
escape_cdata(value)
return ''
for extralog in self._current_test.extra_logfiles:
captured += "\n\n===== %s =====\n\n" % escape_cdata(os.path.basename(extralog))
value = self._current_test.get_extra_log_content(extralog)
captured += escape_cdata(value)
captured += "]]></system-out>"
return captured
def _quoteattr(self, attr):
"""Escape an XML attribute. Value can be unicode."""

View file

@ -147,6 +147,9 @@ def isuri(string):
return False
def touch(fname, times=None):
with open(fname, 'a'):
os.utime(fname, times)
##############################
# Encoding related utils #