diff options
| author | Markus Lehtonen <markus.lehtonen@linux.intel.com> | 2016-10-28 10:19:45 +0300 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-01-23 12:05:21 +0000 |
| commit | 4a26ceaecfcb17cbabf4cf9e1c995f0eafc2e41c (patch) | |
| tree | 1156fcd37573892c79166df532a9687b8281dfe4 /meta/lib/oeqa/buildperf | |
| parent | 07c245792e4b3306c29a017dbbed63200190bea5 (diff) | |
| download | poky-4a26ceaecfcb17cbabf4cf9e1c995f0eafc2e41c.tar.gz | |
oeqa.buildperf: extend xml format to contain measurement data
Make the xml report format slightly non-standard by incorporating
measurement data into it.
[YOCTO #10590]
(From OE-Core rev: b7164d30fb125ff0c85a2ea508b0f1801aa57f66)
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa/buildperf')
| -rw-r--r-- | meta/lib/oeqa/buildperf/base.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/meta/lib/oeqa/buildperf/base.py b/meta/lib/oeqa/buildperf/base.py index de0ee40a23..efbe20c500 100644 --- a/meta/lib/oeqa/buildperf/base.py +++ b/meta/lib/oeqa/buildperf/base.py | |||
| @@ -269,6 +269,7 @@ class BuildPerfTestResult(unittest.TextTestResult): | |||
| 269 | 269 | ||
| 270 | test_cnt = 0 | 270 | test_cnt = 0 |
| 271 | for status, (test, reason) in self.all_results(): | 271 | for status, (test, reason) in self.all_results(): |
| 272 | test_cnt += 1 | ||
| 272 | testcase = ET.SubElement(suite, 'testcase') | 273 | testcase = ET.SubElement(suite, 'testcase') |
| 273 | testcase.set('classname', test.__module__ + '.' + test.__class__.__name__) | 274 | testcase.set('classname', test.__module__ + '.' + test.__class__.__name__) |
| 274 | testcase.set('name', test.name) | 275 | testcase.set('name', test.name) |
| @@ -287,7 +288,27 @@ class BuildPerfTestResult(unittest.TextTestResult): | |||
| 287 | result.text = reason | 288 | result.text = reason |
| 288 | elif status not in ('SUCCESS', 'UNEXPECTED_SUCCESS'): | 289 | elif status not in ('SUCCESS', 'UNEXPECTED_SUCCESS'): |
| 289 | raise TypeError("BUG: invalid test status '%s'" % status) | 290 | raise TypeError("BUG: invalid test status '%s'" % status) |
| 290 | test_cnt += 1 | 291 | |
| 292 | for data in test.measurements: | ||
| 293 | measurement = ET.SubElement(testcase, data['type']) | ||
| 294 | measurement.set('name', data['name']) | ||
| 295 | measurement.set('legend', data['legend']) | ||
| 296 | vals = data['values'] | ||
| 297 | if data['type'] == BuildPerfTestCase.SYSRES: | ||
| 298 | ET.SubElement(measurement, 'time', | ||
| 299 | timestamp=vals['start_time'].isoformat()).text = \ | ||
| 300 | str(vals['elapsed_time'].total_seconds()) | ||
| 301 | if 'buildstats_file' in vals: | ||
| 302 | ET.SubElement(measurement, 'buildstats_file').text = vals['buildstats_file'] | ||
| 303 | attrib = dict((k, str(v)) for k, v in vals['iostat'].items()) | ||
| 304 | ET.SubElement(measurement, 'iostat', attrib=attrib) | ||
| 305 | attrib = dict((k, str(v)) for k, v in vals['rusage'].items()) | ||
| 306 | ET.SubElement(measurement, 'rusage', attrib=attrib) | ||
| 307 | elif data['type'] == BuildPerfTestCase.DISKUSAGE: | ||
| 308 | ET.SubElement(measurement, 'size').text = str(vals['size']) | ||
| 309 | else: | ||
| 310 | raise TypeError('BUG: unsupported measurement type') | ||
| 311 | |||
| 291 | suite.set('tests', str(test_cnt)) | 312 | suite.set('tests', str(test_cnt)) |
| 292 | 313 | ||
| 293 | # Use minidom for pretty-printing | 314 | # Use minidom for pretty-printing |
