Commit d420c5bd authored by Mikhail Khokhlov's avatar Mikhail Khokhlov Committed by Commit Bot

[tools/perf] Mark stories as failed in the case of metrics failure

Telemetry marks stories as failed when there is a problem with metrics
computation. This CL reproduces the same behavior in Results Processor.

Bug: 1010041
Change-Id: Idb0b86fc30c2cc4a9e8fd18feb56737501f34487
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1840654Reviewed-by: default avatarJuan Antonio Navarro Pérez <perezju@chromium.org>
Commit-Queue: Mikhail Khokhlov <khokhlov@google.com>
Cr-Commit-Position: refs/heads/master@{#702867}
parent 9d2521d7
......@@ -48,6 +48,7 @@ def _PoolWorker(test_result):
test_result['testPath'], time.time() - start))
if mre_result.failures:
test_result['status'] = 'FAIL'
for f in mre_result.failures:
logging.error('Failure recorded for test %s: %s',
test_result['testPath'], f)
......@@ -92,6 +93,7 @@ def ComputeTBMv2Metrics(intermediate_results):
# details.
# TODO(crbug.com/1010041): Return a non-zero exit code in this case.
if trace_size_in_mib > 400:
test_result['status'] = 'FAIL'
logging.error('%s: Trace size is too big: %s MiB',
test_result['testPath'], trace_size_in_mib)
continue
......
......@@ -7,6 +7,8 @@ import unittest
from core.results_processor import compute_metrics
from core.results_processor import testing
from tracing.mre import failure
from tracing.mre import job
from tracing.mre import mre_result
from tracing.value import histogram
......@@ -47,6 +49,8 @@ class ComputeMetricsTest(unittest.TestCase):
histogram_dicts = compute_metrics.ComputeTBMv2Metrics(in_results)
self.assertEqual(histogram_dicts, [test_dict, test_dict])
self.assertEqual(in_results['testResults'][0]['status'], 'PASS')
self.assertEqual(in_results['testResults'][1]['status'], 'PASS')
def testComputeTBMv2MetricsTraceTooBig(self):
in_results = testing.IntermediateResults([
......@@ -66,3 +70,27 @@ class ComputeMetricsTest(unittest.TestCase):
run_metrics_mock.assert_not_called()
self.assertEqual(histogram_dicts, [])
self.assertEqual(in_results['testResults'][0]['status'], 'FAIL')
def testComputeTBMv2MetricsFailure(self):
in_results = testing.IntermediateResults([
testing.TestResult(
'benchmark/story1',
artifacts={
compute_metrics.HTML_TRACE_NAME:
testing.Artifact('/trace1.html', 'gs://trace1.html')},
tags=['tbmv2:metric1'],
),
])
metrics_result = mre_result.MreResult()
metrics_result.AddFailure(failure.Failure(job.Job(0), 0, 0, 0, 0, 0))
with mock.patch(GETSIZE_METHOD) as getsize_mock:
with mock.patch(RUN_METRICS_METHOD) as run_metrics_mock:
getsize_mock.return_value = 100
run_metrics_mock.return_value = metrics_result
histogram_dicts = compute_metrics.ComputeTBMv2Metrics(in_results)
self.assertEqual(histogram_dicts, [])
self.assertEqual(in_results['testResults'][0]['status'], 'FAIL')
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment