[yocto] [[yocto-autobuilder][PATCHv2] 12/15] buildsteps/RunOeSelftest.py: Add support for create/save error reports

Aníbal Limón anibal.limon at linux.intel.com
Tue Jun 21 16:07:49 PDT 2016


Now when oe-selftest fails the error report for send to the Error report
web are created and saved in the controller.

Since oe-selftest is intended to do a build system testing the values
for MACHINE, TARGET_SYS and DISTRO are provided so use universal value
instead.

Signed-off-by: Aníbal Limón <anibal.limon at linux.intel.com>
---
 .../autobuilder/buildsteps/RunOeSelftest.py        | 46 ++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/RunOeSelftest.py b/lib/python2.7/site-packages/autobuilder/buildsteps/RunOeSelftest.py
index a1df5cb..5b9e408 100644
--- a/lib/python2.7/site-packages/autobuilder/buildsteps/RunOeSelftest.py
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/RunOeSelftest.py
@@ -8,9 +8,12 @@ __maintainer__ = "Stefan Stanacar"
 __email__ = "stefanx.stanacar at intel.com"
 '''
 
+import platform
 
 from buildbot.steps.shell import ShellCommand
 
+from lib.ABTools import save_error_report, get_lsb_distro
+
 class RunOeSelftest(ShellCommand):
     haltOnFailure = False
     flunkOnFailure = True
@@ -35,3 +38,46 @@ class RunOeSelftest(ShellCommand):
         else:
             self.command += "if [ -d ../meta-selftest ]; then export DISPLAY=:1; oe-selftest " + self.tests + "; else echo 'Skipping step - no meta-selftest layer here'; fi"
         ShellCommand.start(self)
+
+    def _createOESelftestErrorReport(self, log):
+        """
+            Create a oe-selftest error report since oe-selftest
+            is intended to test the build system no information
+            about machine, distro and target_sys are provided so
+            use universal value.
+        """
+
+        report = {}
+
+        report['machine'] = 'universal'
+        report['build_sys'] = "%s-%s" % (platform.machine(),
+                platform.system().lower())
+        report['nativelsb'] = get_lsb_distro() or 'universal'
+        report['distro'] = 'universal'
+        report['target_sys'] = 'universal'
+
+        report['component'] = 'oe-selftest'
+        report['branch_commit'] = self.getProperty('branch') + ': ' + \
+                self.getProperty('got_revision')
+
+        report['error_type'] = 'oe-selftest'
+
+        failure = {}
+        failure['package'] = 'oe-selftest'
+        failure['task'] = self.command[self.command.find('oe-selftest'):]
+        failure['log'] = log
+
+        report['failures'] = [failure]
+
+        return report
+
+    def commandComplete(self, cmd):
+        if cmd.didFail():
+            buildername = self.getProperty('buildername')
+            buildnumber = self.getProperty('buildnumber')
+
+            log = cmd.logs['stdio'].getText()
+
+            report = self._createOESelftestErrorReport(log)
+            save_error_report(buildername, buildnumber, report, 'oe_selftest')
+
-- 
2.1.4




More information about the yocto mailing list