| # Copyright (c) 2020, the Dart project 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 api import BisectApi |
| |
| from recipe_engine import recipe_test_api |
| |
| from google.protobuf import json_format |
| from google.protobuf.struct_pb2 import Struct |
| |
| from PB.go.chromium.org.luci.buildbucket.proto import build as build_pb2 |
| from PB.go.chromium.org.luci.buildbucket.proto import builder as builder_pb2 |
| from PB.go.chromium.org.luci.buildbucket.proto import builds_service as builds_service_pb2 |
| |
| |
| class BisectBuildTestApi(recipe_test_api.RecipeTestApi): |
| |
| def build(self, |
| api, |
| builder_name, |
| build_number, |
| revision, |
| is_bisection=False, |
| is_success=True): |
| builder = builder_pb2.BuilderID( |
| project='dart', bucket='ci', builder=builder_name) |
| properties = Struct() |
| properties.update({'got_revision': revision}) |
| if is_bisection: |
| properties.update({'bisect_reason': 'failure'}) |
| status = 'SUCCESS' if is_success else 'FAILURE' |
| return build_pb2.Build( |
| builder=builder, |
| status=status, |
| number=build_number, |
| output=build_pb2.Build.Output(properties=properties), |
| ) |
| |
| def fetch_previous_builds(self, api, builds, start_number=0): |
| name = '%s.%s' % (BisectApi.FIND_BASE_BUILD_STEP_NAME, |
| BisectApi.FETCH_BUILDS_STEP_NAME) |
| return api.buildbucket.simulated_search_results(builds, step_name=name) |