blob: 80437cbe2052282d00005c7216730f98f424ae9b [file] [log] [blame]
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
DEPS = [
'chromium_tests',
'recipe_engine/properties',
'recipe_engine/python',
]
from recipe_engine import post_process
def RunSteps(api):
inner_test = api.chromium_tests.steps.MockTest(
'inner_test',
abort_on_failure=api.properties.get('abort_on_failure', False),
has_valid_results=api.properties.get('has_valid_results', True),
failures=api.properties.get('failures'))
experimental_test = api.chromium_tests.steps.ExperimentalTest(
inner_test,
experiment_percentage=api.properties['experiment_percentage'])
api.python.succeeding_step(
'Configured experimental test %s' % experimental_test.name, '')
suffix = api.properties.get('suffix', '')
experimental_test.pre_run(api.chromium_tests.m, suffix)
experimental_test.run(api.chromium_tests.m, suffix)
assert experimental_test.has_valid_results(api.chromium_tests.m, '')
assert not experimental_test.failures(api.chromium_tests.m, '')
assert not experimental_test.deterministic_failures(api.chromium_tests.m, '')
assert not experimental_test.abort_on_failure
assert isinstance(experimental_test.pass_fail_counts(
api.chromium_tests.m, ''), dict)
def GenTests(api):
yield (
api.test('experiment_on') +
api.properties(
mastername='test_mastername',
buildername='test_buildername',
buildnumber='123',
patch_issue='456',
experiment_percentage='100') +
api.post_process(post_process.MustRun,
'pre_run inner_test (experimental)') +
api.post_process(post_process.MustRun, 'inner_test (experimental)') +
api.post_process(post_process.StatusSuccess) +
api.post_process(post_process.DropExpectation))
yield (
api.test('experiment_off') +
api.properties(
mastername='test_mastername',
buildername='test_buildername',
buildnumber='123',
patch_issue='456',
experiment_percentage='0') +
api.post_process(post_process.DoesNotRun,
'pre_run inner_test (experimental)') +
api.post_process(post_process.DoesNotRun, 'inner_test (experimental)') +
api.post_process(post_process.StatusSuccess) +
api.post_process(post_process.DropExpectation))
yield (
api.test('experiment_on_invalid_results') +
api.properties(
mastername='test_mastername',
buildername='test_buildername',
buildnumber='123',
patch_issue='456',
experiment_percentage='100',
has_valid_results=False) +
api.post_process(post_process.MustRun,
'has_valid_results inner_test (experimental)') +
api.post_process(post_process.DoesNotRun,
'failures inner_test (experimental)') +
api.post_process(post_process.DropExpectation))
yield (
api.test('experiment_off_invalid_results') +
api.properties(
mastername='test_mastername',
buildername='test_buildername',
buildnumber='123',
patch_issue='456',
experiment_percentage='0',
has_valid_results=False) +
api.post_process(post_process.DropExpectation))
yield (
api.test('experiment_on_valid_failures') +
api.properties(
mastername='test_mastername',
buildername='test_buildername',
buildnumber='123',
patch_issue='456',
experiment_percentage='100',
failures=['foo']) +
api.post_process(post_process.DropExpectation))
yield (
api.test('experiment_off_valid_failures') +
api.properties(
mastername='test_mastername',
buildername='test_buildername',
buildnumber='123',
patch_issue='456',
experiment_percentage='0',
failures=['foo']) +
api.post_process(post_process.DropExpectation))
yield (
api.test('failure_in_pre_run') +
api.properties(
mastername='test_mastername',
buildername='test_buildername',
buildnumber='123',
patch_issue='456',
experiment_percentage='100') +
api.override_step_data('pre_run inner_test (experimental)', retcode=1) +
api.post_process(post_process.MustRun,
'pre_run inner_test (experimental)') +
api.post_process(post_process.StatusSuccess) +
api.post_process(post_process.DropExpectation))
yield (
api.test('failure_in_run') +
api.properties(
mastername='test_mastername',
buildername='test_buildername',
buildnumber='123',
patch_issue='456',
experiment_percentage='100') +
api.override_step_data('inner_test (experimental)', retcode=1) +
api.post_process(post_process.MustRun, 'inner_test (experimental)') +
api.post_process(post_process.StatusSuccess) +
api.post_process(post_process.DropExpectation))
yield (
api.test('abort_on_failure') +
api.properties(
mastername='test_mastername',
buildername='test_buildername',
buildnumber='123',
patch_issue='456',
experiment_percentage='100',
failures=['foo'],
abort_on_failure=True) +
api.post_process(post_process.MustRun, 'inner_test (experimental)') +
api.post_process(post_process.StatusSuccess) +
api.post_process(post_process.DropExpectation))
yield (
api.test('with_patch') +
api.properties(
mastername='test_mastername',
buildername='test_buildername',
buildnumber='123',
patch_issue='456',
experiment_percentage='100',
suffix='with patch') +
api.post_process(post_process.MustRun,
'pre_run inner_test (with patch, experimental)') +
api.post_process(post_process.MustRun,
'inner_test (with patch, experimental)') +
api.post_process(post_process.StatusSuccess) +
api.post_process(post_process.DropExpectation))