| # Copyright 2020 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. |
| |
| from recipe_engine.recipe_api import Property |
| |
| PYTHON_VERSION_COMPATIBILITY = 'PY3' |
| |
| DEPS = [ |
| "flutter/job", |
| "recipe_engine/properties", |
| "recipe_engine/step", |
| "recipe_engine/swarming", |
| ] |
| |
| PROPERTIES = { |
| "test_name": Property(kind=str, help="Name of the test"), |
| } |
| |
| |
| def RunSteps(api, test_name): |
| job0 = api.job.new("fake_job0") |
| job0.properties.update({ |
| "recipe": "fake_recipe", |
| "foo": ["a", "b"], |
| }) |
| job0.dimensions.update({ |
| "id": "fake_bot_id", |
| "pool": "luci.flutter.staging", |
| }) |
| |
| job1 = api.job.new("fake_job1") |
| |
| if test_name == "launch": |
| with api.step.nest("launch job") as presentation: |
| job0 = api.job.launch(job0, presentation) |
| elif test_name == "collect": |
| job0.task_id = "task_id0" |
| job1.task_id = "task_id1" |
| with api.step.nest("collect builds") as presentation: |
| api.job.collect([job0, job1], presentation) |
| elif test_name == "current_recipe": |
| api.job.current_recipe() |
| |
| job1.task_url # For test coverage. |
| |
| def GenTests(api): |
| yield api.test( |
| "launch", |
| api.properties(test_name="launch"), |
| api.job.mock_launch(), |
| ) |
| yield api.test( |
| "collect", |
| api.properties(test_name="collect"), |
| api.job.mock_collect(["task_id0", "task_id1"], "collect builds"), |
| ) |
| yield api.test( |
| "collect_failed_states", |
| api.properties(test_name="collect"), |
| api.job.mock_collect( |
| ["task_id0", "task_id1"], |
| "collect builds", |
| swarming_results=[ |
| api.swarming.task_result( |
| id="task_id0", name="my_task_0", state=None), |
| api.swarming.task_result( |
| id="task_id1", |
| name="my_task_1", |
| state=api.swarming.TaskState.TIMED_OUT), |
| ], |
| ), |
| ) |
| yield api.test( |
| "current_recipe", |
| api.properties(test_name="current_recipe"), |
| ) |