diff options
Diffstat (limited to 'deps/v8/tools/testrunner/testproc/resultdb.py')
-rw-r--r-- | deps/v8/tools/testrunner/testproc/resultdb.py | 61 |
1 files changed, 48 insertions, 13 deletions
diff --git a/deps/v8/tools/testrunner/testproc/resultdb.py b/deps/v8/tools/testrunner/testproc/resultdb.py index 42b22671fb..0a0b4e3aca 100644 --- a/deps/v8/tools/testrunner/testproc/resultdb.py +++ b/deps/v8/tools/testrunner/testproc/resultdb.py @@ -4,20 +4,16 @@ import json import logging -import pprint import os +import re +import tempfile from . import base from .indicators import ( formatted_result_output, ProgressIndicator, ) -from .util import ( - base_test_record, - extract_tags, - strip_ascii_control_characters, -) - +from .util import base_test_record class ResultDBIndicator(ProgressIndicator): @@ -38,24 +34,63 @@ class ResultDBIndicator(ProgressIndicator): test_should_pass = not test.is_fail run_passed = (result_expected == test_should_pass) rdb_result = { - 'testId': strip_ascii_control_characters(test.full_name), + 'testId': strip_ascii_control_characters(test.rdb_test_id), 'status': 'PASS' if run_passed else 'FAIL', 'expected': result_expected, } if result.output and result.output.duration: rdb_result.update(duration=f'{result.output.duration}ms') + if result.has_unexpected_output: - formated_output = formatted_result_output(result) - sanitized = strip_ascii_control_characters(formated_output) - # TODO(liviurau): do we have a better presentation data for this? - # Protobuf strings can have len == 2**32. - rdb_result.update(summaryHtml=f'<pre>{sanitized}</pre>') + formated_output = formatted_result_output(result,relative=True) + relative_cmd = result.cmd.to_string(relative=True) + artifacts = { + 'output' : write_artifact(formated_output), + 'cmd' : write_artifact(relative_cmd) + } + rdb_result.update(artifacts=artifacts) + summary = '<p><text-artifact artifact-id="output"></p>' + summary += '<p><text-artifact artifact-id="cmd"></p>' + rdb_result.update(summary_html=summary) + record = base_test_record(test, result, run) + record.update( + processor=test.processor_name, + subtest_id=test.subtest_id, + path=test.path) + rdb_result.update(tags=extract_tags(record)) + self.rpc.send(rdb_result) +def write_artifact(value): + with tempfile.NamedTemporaryFile(mode='w', delete=False) as tmp: + tmp.write(value) + return { 'filePath': tmp.name } + + +def extract_tags(record): + tags = [] + for k, v in record.items(): + if not v: + continue + if type(v) == list: + tags += [sanitized_kv_dict(k, e) for e in v] + else: + tags.append(sanitized_kv_dict(k, v)) + return tags + + +def sanitized_kv_dict(k, v): + return dict(key=k, value=strip_ascii_control_characters(v)) + + +def strip_ascii_control_characters(unicode_string): + return re.sub(r'[^\x20-\x7E]', '?', str(unicode_string)) + + def rdb_sink(): try: import requests |