Revert https://github.com/flutter/cocoon/pull/3665 and https://github… (#3686)
These are causing the dashboard service to fail updating. Reverting these for now.
diff --git a/app_dart/bin/gae_server.dart b/app_dart/bin/gae_server.dart
index 29ff48d..378f1f2 100644
--- a/app_dart/bin/gae_server.dart
+++ b/app_dart/bin/gae_server.dart
@@ -7,11 +7,7 @@
import 'package:appengine/appengine.dart';
import 'package:cocoon_service/cocoon_service.dart';
import 'package:cocoon_service/server.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
import 'package:cocoon_service/src/service/commit_service.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
import 'package:gcloud/db.dart';
Future<void> main() async {
@@ -22,28 +18,15 @@
final Config config = Config(dbService, cache);
final AuthenticationProvider authProvider = AuthenticationProvider(config: config);
final AuthenticationProvider swarmingAuthProvider = SwarmingAuthenticationProvider(config: config);
-
final BuildBucketClient buildBucketClient = BuildBucketClient(
accessTokenService: AccessTokenService.defaultProvider(config),
);
- final BuildBucketV2Client buildBucketV2Client = BuildBucketV2Client(
- accessTokenService: AccessTokenService.defaultProvider(config),
- );
-
/// LUCI service class to communicate with buildBucket service.
final LuciBuildService luciBuildService = LuciBuildService(
config: config,
cache: cache,
buildBucketClient: buildBucketClient,
- buildBucketV2Client: buildBucketV2Client,
- pubsub: const PubSub(),
- );
-
- final LuciBuildServiceV2 luciBuildServiceV2 = LuciBuildServiceV2(
- config: config,
- cache: cache,
- buildBucketV2Client: buildBucketV2Client,
pubsub: const PubSub(),
);
@@ -52,10 +35,6 @@
config,
);
- final GithubChecksServiceV2 githubChecksServiceV2 = GithubChecksServiceV2(
- config,
- );
-
// Gerrit service class to communicate with GoB.
final GerritService gerritService = GerritService(config: config);
@@ -67,13 +46,6 @@
luciBuildService: luciBuildService,
);
- final SchedulerV2 schedulerV2 = SchedulerV2(
- cache: cache,
- config: config,
- githubChecksService: githubChecksServiceV2,
- luciBuildService: luciBuildServiceV2,
- );
-
final BranchService branchService = BranchService(
config: config,
gerritService: gerritService,
@@ -87,14 +59,10 @@
authProvider: authProvider,
branchService: branchService,
buildBucketClient: buildBucketClient,
- buildBucketV2Client: buildBucketV2Client,
gerritService: gerritService,
scheduler: scheduler,
- schedulerV2: schedulerV2,
luciBuildService: luciBuildService,
- luciBuildServiceV2: luciBuildServiceV2,
githubChecksService: githubChecksService,
- githubChecksServiceV2: githubChecksServiceV2,
commitService: commitService,
swarmingAuthProvider: swarmingAuthProvider,
);
diff --git a/app_dart/bin/local_server.dart b/app_dart/bin/local_server.dart
index db9cff1..0bd8bc1 100644
--- a/app_dart/bin/local_server.dart
+++ b/app_dart/bin/local_server.dart
@@ -8,12 +8,8 @@
import 'package:cocoon_service/cocoon_service.dart';
import 'package:cocoon_service/server.dart';
import 'package:cocoon_service/src/model/appengine/cocoon_config.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
import 'package:cocoon_service/src/service/commit_service.dart';
import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
import 'package:gcloud/db.dart';
import '../test/src/datastore/fake_datastore.dart';
@@ -29,28 +25,15 @@
final Config config = Config(dbService, cache);
final AuthenticationProvider authProvider = AuthenticationProvider(config: config);
final AuthenticationProvider swarmingAuthProvider = SwarmingAuthenticationProvider(config: config);
-
final BuildBucketClient buildBucketClient = BuildBucketClient(
accessTokenService: AccessTokenService.defaultProvider(config),
);
- final BuildBucketV2Client buildBucketV2Client = BuildBucketV2Client(
- accessTokenService: AccessTokenService.defaultProvider(config),
- );
-
/// LUCI service class to communicate with buildBucket service.
final LuciBuildService luciBuildService = LuciBuildService(
config: config,
cache: cache,
buildBucketClient: buildBucketClient,
- buildBucketV2Client: buildBucketV2Client,
- pubsub: const PubSub(),
- );
-
- final LuciBuildServiceV2 luciBuildServiceV2 = LuciBuildServiceV2(
- config: config,
- cache: cache,
- buildBucketV2Client: buildBucketV2Client,
pubsub: const PubSub(),
);
@@ -59,10 +42,6 @@
config,
);
- final GithubChecksServiceV2 githubChecksServiceV2 = GithubChecksServiceV2(
- config,
- );
-
// Gerrit service class to communicate with GoB.
final GerritService gerritService = GerritService(config: config);
@@ -74,13 +53,6 @@
luciBuildService: luciBuildService,
);
- final SchedulerV2 schedulerV2 = SchedulerV2(
- cache: cache,
- config: config,
- githubChecksService: githubChecksServiceV2,
- luciBuildService: luciBuildServiceV2,
- );
-
final BranchService branchService = BranchService(
config: config,
gerritService: gerritService,
@@ -94,14 +66,10 @@
authProvider: authProvider,
branchService: branchService,
buildBucketClient: buildBucketClient,
- buildBucketV2Client: buildBucketV2Client,
gerritService: gerritService,
scheduler: scheduler,
- schedulerV2: schedulerV2,
luciBuildService: luciBuildService,
- luciBuildServiceV2: luciBuildServiceV2,
githubChecksService: githubChecksService,
- githubChecksServiceV2: githubChecksServiceV2,
commitService: commitService,
swarmingAuthProvider: swarmingAuthProvider,
);
diff --git a/app_dart/lib/server.dart b/app_dart/lib/server.dart
index fa5495f..540a3e4 100644
--- a/app_dart/lib/server.dart
+++ b/app_dart/lib/server.dart
@@ -6,18 +6,7 @@
import 'dart:math';
import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/request_handlers/postsubmit_luci_subscription_v2.dart';
-import 'package:cocoon_service/src/request_handlers/presubmit_luci_subscription_v2.dart';
-import 'package:cocoon_service/src/request_handlers/reset_prod_task_v2.dart';
-import 'package:cocoon_service/src/request_handlers/reset_try_task_v2.dart';
-import 'package:cocoon_service/src/request_handlers/scheduler/batch_backfiller_v2.dart';
-import 'package:cocoon_service/src/request_handlers/scheduler/scheduler_request_subscription.dart';
-import 'package:cocoon_service/src/request_handlers/vacuum_github_commits_v2.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
import 'package:cocoon_service/src/service/commit_service.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
typedef Server = Future<void> Function(HttpRequest);
@@ -29,15 +18,11 @@
required AuthenticationProvider swarmingAuthProvider,
required BranchService branchService,
required BuildBucketClient buildBucketClient,
- required BuildBucketV2Client buildBucketV2Client,
required LuciBuildService luciBuildService,
- required LuciBuildServiceV2 luciBuildServiceV2,
required GithubChecksService githubChecksService,
- required GithubChecksServiceV2 githubChecksServiceV2,
required CommitService commitService,
required GerritService gerritService,
required Scheduler scheduler,
- required SchedulerV2 schedulerV2,
}) {
final Map<String, RequestHandler<dynamic>> handlers = <String, RequestHandler<dynamic>>{
'/api/check_flaky_builders': CheckFlakyBuilders(
@@ -52,7 +37,7 @@
'/api/dart-internal-subscription': DartInternalSubscription(
cache: cache,
config: config,
- buildBucketV2Client: buildBucketV2Client,
+ buildBucketClient: buildBucketClient,
),
'/api/file_flaky_issue_and_pr': FileFlakyIssueAndPR(
config: config,
@@ -80,36 +65,24 @@
config: config,
cache: cache,
gerritService: gerritService,
+ githubChecksService: githubChecksService,
scheduler: scheduler,
- schedulerV2: schedulerV2,
commitService: commitService,
),
'/api/presubmit-luci-subscription': PresubmitLuciSubscription(
cache: cache,
config: config,
+ buildBucketClient: buildBucketClient,
luciBuildService: luciBuildService,
githubChecksService: githubChecksService,
scheduler: scheduler,
),
- '/api/v2/presubmit-luci-subscription': PresubmitLuciSubscriptionV2(
- cache: cache,
- config: config,
- luciBuildService: luciBuildServiceV2,
- githubChecksService: githubChecksServiceV2,
- scheduler: schedulerV2,
- ),
'/api/postsubmit-luci-subscription': PostsubmitLuciSubscription(
cache: cache,
config: config,
scheduler: scheduler,
githubChecksService: githubChecksService,
),
- '/api/v2/postsubmit-luci-subscription': PostsubmitLuciSubscriptionV2(
- cache: cache,
- config: config,
- scheduler: schedulerV2,
- githubChecksService: githubChecksServiceV2,
- ),
'/api/push-build-status-to-github': PushBuildStatusToGithub(
config: config,
authenticationProvider: authProvider,
@@ -118,47 +91,26 @@
config: config,
authenticationProvider: authProvider,
),
- // I do not believe these recieve a build message.
'/api/reset-prod-task': ResetProdTask(
config: config,
authenticationProvider: authProvider,
luciBuildService: luciBuildService,
scheduler: scheduler,
),
- '/api/v2/reset-prod-task': ResetProdTaskV2(
- config: config,
- authenticationProvider: authProvider,
- luciBuildService: luciBuildServiceV2,
- scheduler: schedulerV2,
- ),
'/api/reset-try-task': ResetTryTask(
config: config,
authenticationProvider: authProvider,
scheduler: scheduler,
),
- '/api/v2/reset-try-task': ResetTryTaskV2(
- config: config,
- authenticationProvider: authProvider,
- scheduler: schedulerV2,
- ),
'/api/scheduler/batch-backfiller': BatchBackfiller(
config: config,
scheduler: scheduler,
),
- '/api/v2/scheduler/batch-backfiller': BatchBackfillerV2(
- config: config,
- scheduler: schedulerV2,
- ),
'/api/scheduler/batch-request-subscription': SchedulerRequestSubscription(
cache: cache,
config: config,
buildBucketClient: buildBucketClient,
),
- '/api/v2/scheduler/batch-request-subscription': SchedulerRequestSubscriptionV2(
- cache: cache,
- config: config,
- buildBucketClient: buildBucketV2Client,
- ),
'/api/scheduler/vacuum-stale-tasks': VacuumStaleTasks(
config: config,
),
@@ -192,11 +144,6 @@
authenticationProvider: authProvider,
scheduler: scheduler,
),
- '/api/v2/vacuum-github-commits': VacuumGithubCommitsV2(
- config: config,
- authenticationProvider: authProvider,
- scheduler: schedulerV2,
- ),
/// Returns status of the framework tree.
///
diff --git a/app_dart/lib/src/request_handlers/dart_internal_subscription.dart b/app_dart/lib/src/request_handlers/dart_internal_subscription.dart
index 35a12e5..4c12be2 100644
--- a/app_dart/lib/src/request_handlers/dart_internal_subscription.dart
+++ b/app_dart/lib/src/request_handlers/dart_internal_subscription.dart
@@ -2,18 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// import 'package:cocoon_service/src/model/luci/buildbucket.dart';
import 'dart:convert';
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:fixnum/fixnum.dart';
+
+import 'package:cocoon_service/src/model/luci/buildbucket.dart';
import 'package:googleapis/firestore/v1.dart';
import 'package:meta/meta.dart';
import '../../cocoon_service.dart';
import '../model/appengine/task.dart';
import '../model/firestore/task.dart' as firestore;
-import '../request_handling/subscription_handler_v2.dart';
-import '../service/build_bucket_v2_client.dart';
+import '../request_handling/subscription_handler.dart';
import '../service/datastore.dart';
import '../service/logging.dart';
@@ -26,18 +24,18 @@
/// The PubSub subscription is set up here:
/// https://console.cloud.google.com/cloudpubsub/subscription/detail/dart-internal-build-results-sub?project=flutter-dashboard
@immutable
-class DartInternalSubscription extends SubscriptionHandlerV2 {
+class DartInternalSubscription extends SubscriptionHandler {
/// Creates an endpoint for listening for dart-internal build results.
/// The message should contain a single buildbucket id
const DartInternalSubscription({
required super.cache,
required super.config,
super.authProvider,
- required this.buildBucketV2Client,
+ required this.buildBucketClient,
@visibleForTesting this.datastoreProvider = DatastoreService.defaultProvider,
}) : super(subscriptionName: 'dart-internal-build-results-sub');
- final BuildBucketV2Client buildBucketV2Client;
+ final BuildBucketClient buildBucketClient;
final DatastoreServiceProvider datastoreProvider;
@override
@@ -49,19 +47,17 @@
return Body.empty;
}
- // This looks to be like we are simply getting the build and not the top level
- // buildsPubSub message.
- final Map<String, dynamic> jsonBuildMap = json.decode(message.data!);
+ final dynamic buildData = json.decode(message.data!);
+ log.info('Build data json: $buildData');
- if (jsonBuildMap['build'] == null) {
+ if (buildData['build'] == null) {
log.info('no build information in message');
return Body.empty;
}
- final String project = jsonBuildMap['build']['builder']['project'];
- final String bucket = jsonBuildMap['build']['builder']['bucket'];
- final String builder = jsonBuildMap['build']['builder']['builder'];
- final Int64 buildId = Int64.parseInt(jsonBuildMap['build']['id']);
+ final String project = buildData['build']['builder']['project'];
+ final String bucket = buildData['build']['builder']['bucket'];
+ final String builder = buildData['build']['builder']['builder'];
// This should already be covered by the pubsub filter, but adding an additional check
// to ensure we don't process builds that aren't from dart-internal/flutter.
@@ -80,31 +76,28 @@
return Body.empty;
}
- log.info('Creating build request object with build id $buildId');
-
- final bbv2.GetBuildRequest getBuildRequest = bbv2.GetBuildRequest(
- id: buildId,
+ final String buildbucketId = buildData['build']['id'];
+ log.info('Creating build request object with build id $buildbucketId');
+ final GetBuildRequest request = GetBuildRequest(
+ id: buildbucketId,
);
log.info(
- 'Calling buildbucket api to get build data for build $buildId',
+ 'Calling buildbucket api to get build data for build $buildbucketId',
);
-
- final bbv2.Build existingBuild = await buildBucketV2Client.getBuild(getBuildRequest);
-
- log.info('Got back existing builder with name: ${existingBuild.builder.builder}');
+ final Build build = await buildBucketClient.getBuild(request);
log.info('Checking for existing task in datastore');
- final Task? existingTask = await datastore.getTaskFromBuildbucketV2Build(existingBuild);
+ final Task? existingTask = await datastore.getTaskFromBuildbucketBuild(build);
late Task taskToInsert;
if (existingTask != null) {
- log.info('Updating Task from existing Build');
- existingTask.updateFromBuildbucketV2Build(existingBuild);
+ log.info('Updating Task from existing Task');
+ existingTask.updateFromBuildbucketBuild(build);
taskToInsert = existingTask;
} else {
log.info('Creating Task from Buildbucket result');
- taskToInsert = await Task.fromBuildbucketV2Build(existingBuild, datastore);
+ taskToInsert = await Task.fromBuildbucketBuild(build, datastore);
}
log.info('Inserting Task into the datastore: ${taskToInsert.toString()}');
diff --git a/app_dart/lib/src/request_handlers/github/webhook_subscription.dart b/app_dart/lib/src/request_handlers/github/webhook_subscription.dart
index 24704e7..1b94f14 100644
--- a/app_dart/lib/src/request_handlers/github/webhook_subscription.dart
+++ b/app_dart/lib/src/request_handlers/github/webhook_subscription.dart
@@ -5,8 +5,6 @@
import 'dart:convert';
import 'package:cocoon_service/src/service/commit_service.dart';
-import 'package:cocoon_service/src/service/scheduler.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
import 'package:github/github.dart';
import 'package:github/hooks.dart';
import 'package:meta/meta.dart';
@@ -20,7 +18,9 @@
import '../../service/config.dart';
import '../../service/datastore.dart';
import '../../service/gerrit_service.dart';
+import '../../service/github_checks_service.dart';
import '../../service/logging.dart';
+import '../../service/scheduler.dart';
// Filenames which are not actually tests.
const List<String> kNotActuallyATest = <String>[
@@ -68,17 +68,14 @@
required super.cache,
required super.config,
required this.scheduler,
- required this.schedulerV2,
required this.gerritService,
required this.commitService,
+ this.githubChecksService,
this.datastoreProvider = DatastoreService.defaultProvider,
super.authProvider,
- // Gets the initial github events from this sub after the webhook uploads them.
}) : super(subscriptionName: 'github-webhooks-sub');
/// Cocoon scheduler to trigger tasks against changes from GitHub.
- final SchedulerV2 schedulerV2;
-
final Scheduler scheduler;
/// To verify whether a commit was mirrored to GoB.
@@ -87,6 +84,9 @@
/// Used to handle push events and create commits based on those events.
final CommitService commitService;
+ /// To provide build status updates to GitHub pull requests.
+ final GithubChecksService? githubChecksService;
+
final DatastoreServiceProvider datastoreProvider;
@override
@@ -107,7 +107,7 @@
case 'check_run':
final Map<String, dynamic> event = jsonDecode(webhook.payload) as Map<String, dynamic>;
final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(event);
- if (await schedulerV2.processCheckRun(checkRunEvent) == false) {
+ if (await scheduler.processCheckRun(checkRunEvent) == false) {
throw InternalServerError('Failed to process check_run event. checkRunEvent: $checkRunEvent');
}
break;
@@ -164,7 +164,7 @@
// If it was closed without merging, cancel any outstanding tryjobs.
// We'll leave unfinished jobs if it was merged since we care about those
// results.
- await schedulerV2.cancelPreSubmitTargets(
+ await scheduler.cancelPreSubmitTargets(
pullRequest: pr,
reason: (!pr.merged!) ? 'Pull request closed' : 'Pull request merged',
);
@@ -173,7 +173,7 @@
log.fine('Pull request ${pr.number} was closed and merged.');
if (await _commitExistsInGob(pr)) {
log.fine('Merged commit was found on GoB mirror. Scheduling postsubmit tasks...');
- return schedulerV2.addPullRequest(pr);
+ return scheduler.addPullRequest(pr);
}
throw InternalServerError(
'${pr.mergeCommitSha!} was not found on GoB. Failing so this event can be retried...',
@@ -246,7 +246,7 @@
return;
}
- await schedulerV2.triggerPresubmitTargets(pullRequest: pr);
+ await scheduler.triggerPresubmitTargets(pullRequest: pr);
}
/// Release tooling generates cherrypick pull requests that should be granted an approval.
diff --git a/app_dart/lib/src/request_handlers/postsubmit_luci_subscription_v2.dart b/app_dart/lib/src/request_handlers/postsubmit_luci_subscription_v2.dart
deleted file mode 100644
index 866187d..0000000
--- a/app_dart/lib/src/request_handlers/postsubmit_luci_subscription_v2.dart
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/ci_yaml.dart';
-import 'package:cocoon_service/src/model/luci/user_data.dart';
-import 'package:gcloud/db.dart';
-import 'package:googleapis/firestore/v1.dart' hide Status;
-import 'package:meta/meta.dart';
-
-import '../model/appengine/commit.dart';
-import '../model/appengine/task.dart';
-import '../model/firestore/task.dart' as firestore;
-import '../request_handling/body.dart';
-import '../request_handling/exceptions.dart';
-import '../request_handling/subscription_handler_v2.dart';
-import '../service/datastore.dart';
-import '../service/firestore.dart';
-import '../service/logging.dart';
-import '../service/github_checks_service_v2.dart';
-import '../service/scheduler_v2.dart';
-
-/// An endpoint for listening to build updates for postsubmit builds.
-///
-/// The PubSub subscription is set up here:
-/// https://cloud.google.com/cloudpubsub/subscription/detail/build-bucket-postsubmit-sub?project=flutter-dashboard&tab=overview
-///
-/// This endpoint is responsible for updating Datastore with the result of builds from LUCI.
-@immutable
-class PostsubmitLuciSubscriptionV2 extends SubscriptionHandlerV2 {
- /// Creates an endpoint for listening to LUCI status updates.
- const PostsubmitLuciSubscriptionV2({
- required super.cache,
- required super.config,
- super.authProvider,
- @visibleForTesting this.datastoreProvider = DatastoreService.defaultProvider,
- required this.scheduler,
- required this.githubChecksService,
- }) : super(subscriptionName: 'build-bucket-postsubmit-sub');
-
- final DatastoreServiceProvider datastoreProvider;
- final SchedulerV2 scheduler;
- final GithubChecksServiceV2 githubChecksService;
-
- @override
- Future<Body> post() async {
- if (message.data == null) {
- log.info('no data in message');
- return Body.empty;
- }
-
- final DatastoreService datastore = datastoreProvider(config.db);
- final FirestoreService firestoreService = await config.createFirestoreService();
-
- final bbv2.PubSubCallBack pubSubCallBack = bbv2.PubSubCallBack();
- pubSubCallBack.mergeFromProto3Json(jsonDecode(message.data!) as Map<String, dynamic>);
- final bbv2.BuildsV2PubSub buildsV2PubSub = pubSubCallBack.buildPubsub;
-
- Map<String, dynamic> userDataMap = <String, dynamic>{};
- try {
- userDataMap = json.decode(String.fromCharCodes(pubSubCallBack.userData));
- log.info('User data was not base64 encoded.');
- } on FormatException {
- userDataMap = UserData.decodeUserDataBytes(pubSubCallBack.userData);
- log.info('Decoding base64 encoded user data.');
- }
-
- // collect userData
- if (userDataMap.isEmpty) {
- log.info('User data is empty');
- return Body.empty;
- }
-
- log.fine('userData=$userDataMap');
-
- if (!buildsV2PubSub.hasBuild()) {
- log.warning('No build was found in message.');
- return Body.empty;
- }
-
- final bbv2.Build build = buildsV2PubSub.build;
- // Note that result is no longer present in the output.
- log.fine('Updating buildId=${build.id} for result=${build.status}');
-
- log.info('build ${build.toProto3Json()}');
-
- final String? rawTaskKey = userDataMap['task_key'] as String?;
- final String? rawCommitKey = userDataMap['commit_key'] as String?;
- final String? taskDocumentName = userDataMap['firestore_task_document_name'] as String?;
- if (taskDocumentName == null) {
- throw const BadRequestException('userData does not contain firestore_task_document_name');
- }
-
- final Key<String> commitKey = Key<String>(Key<dynamic>.emptyKey(Partition(null)), Commit, rawCommitKey);
- Task? task;
- firestore.Task? firestoreTask;
- log.info('Looking up task document $kDatabase/documents/${firestore.kTaskCollectionId}/$taskDocumentName...');
- final int taskId = int.parse(rawTaskKey!);
- final Key<int> taskKey = Key<int>(commitKey, Task, taskId);
- task = await datastore.lookupByValue<Task>(taskKey);
- firestoreTask = await firestore.Task.fromFirestore(
- firestoreService: firestoreService,
- documentName: '$kDatabase/documents/${firestore.kTaskCollectionId}/$taskDocumentName',
- );
- log.info('Found $firestoreTask');
-
- if (_shouldUpdateTask(build, firestoreTask)) {
- final String oldTaskStatus = firestoreTask.status;
- firestoreTask.updateFromBuildV2(build);
-
- log.info('Updated firestore task $firestoreTask');
-
- task.updateFromBuildbucketV2Build(build);
- await datastore.insert(<Task>[task]);
- final List<Write> writes = documentsToWrites([firestoreTask], exists: true);
- await firestoreService.batchWriteDocuments(BatchWriteRequest(writes: writes), kDatabase);
- log.fine('Updated datastore from $oldTaskStatus to ${firestoreTask.status}');
- } else {
- log.fine('skip processing for build with status scheduled or task with status finished.');
- }
-
- final Commit commit = await datastore.lookupByValue<Commit>(commitKey);
- final CiYaml ciYaml = await scheduler.getCiYaml(commit);
- final List<Target> postsubmitTargets = ciYaml.postsubmitTargets;
- if (!postsubmitTargets.any((element) => element.value.name == firestoreTask!.taskName)) {
- log.warning('Target ${firestoreTask.taskName} has been deleted from TOT. Skip updating.');
- return Body.empty;
- }
- final Target target =
- postsubmitTargets.singleWhere((Target target) => target.value.name == firestoreTask!.taskName);
- if (firestoreTask.status == firestore.Task.statusFailed ||
- firestoreTask.status == firestore.Task.statusInfraFailure ||
- firestoreTask.status == firestore.Task.statusCancelled) {
- log.fine('Trying to auto-retry...');
- final bool retried = await scheduler.luciBuildService.checkRerunBuilder(
- commit: commit,
- target: target,
- task: task,
- datastore: datastore,
- taskDocument: firestoreTask,
- firestoreService: firestoreService,
- );
- log.info('Retried: $retried');
- }
-
- // Only update GitHub checks if target is not bringup
- if (target.value.bringup == false && config.postsubmitSupportedRepos.contains(target.slug)) {
- log.info('Updating check status for ${target.getTestName}');
- await githubChecksService.updateCheckStatus(
- build: build,
- userDataMap: userDataMap,
- luciBuildService: scheduler.luciBuildService,
- slug: commit.slug,
- );
- }
-
- return Body.empty;
- }
-
- // No need to update task in datastore if
- // 1) the build is `scheduled`. Task is marked as `In Progress`
- // whenever scheduled, either from scheduler/backfiller/rerun. We need to update
- // task in datastore only for
- // a) `started`: update info like builder number.
- // b) `completed`: update info like status.
- // 2) the task is already completed.
- // The task may have been marked as completed from test framework via update-task-status API.
- bool _shouldUpdateTask(bbv2.Build build, firestore.Task task) {
- return build.status != bbv2.Status.SCHEDULED && !firestore.Task.finishedStatusValues.contains(task.status);
- }
-}
diff --git a/app_dart/lib/src/request_handlers/presubmit_luci_subscription.dart b/app_dart/lib/src/request_handlers/presubmit_luci_subscription.dart
index ecdba75..8049eb2 100644
--- a/app_dart/lib/src/request_handlers/presubmit_luci_subscription.dart
+++ b/app_dart/lib/src/request_handlers/presubmit_luci_subscription.dart
@@ -12,6 +12,7 @@
import '../request_handling/authentication.dart';
import '../request_handling/body.dart';
import '../request_handling/subscription_handler.dart';
+import '../service/buildbucket.dart';
import '../service/config.dart';
import '../service/github_checks_service.dart';
import '../service/logging.dart';
@@ -36,12 +37,14 @@
const PresubmitLuciSubscription({
required super.cache,
required super.config,
+ required this.buildBucketClient,
required this.scheduler,
required this.luciBuildService,
required this.githubChecksService,
AuthenticationProvider? authProvider,
}) : super(subscriptionName: 'github-updater');
+ final BuildBucketClient buildBucketClient;
final LuciBuildService luciBuildService;
final GithubChecksService githubChecksService;
final Scheduler scheduler;
@@ -93,6 +96,13 @@
return Body.empty;
}
+ /// Gets target's allowed reschedule attempt.
+ ///
+ /// Each target can define their own allowed max number of reschedule attemp, and it
+ /// is defined as a property `presubmit_max_attempts`.
+ ///
+ /// If not property is defined, the target doesn't allow a reschedule after failures.
+ /// Typically the property will be used for targets that are likely flaky.
Future<int> _getMaxAttempt(
BuildPushMessage buildPushMessage,
RepositorySlug slug,
diff --git a/app_dart/lib/src/request_handlers/presubmit_luci_subscription_v2.dart b/app_dart/lib/src/request_handlers/presubmit_luci_subscription_v2.dart
deleted file mode 100644
index 5964a01..0000000
--- a/app_dart/lib/src/request_handlers/presubmit_luci_subscription_v2.dart
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/src/model/luci/user_data.dart';
-import 'package:cocoon_service/src/request_handling/subscription_handler_v2.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:github/github.dart';
-import 'package:meta/meta.dart';
-
-import '../model/appengine/commit.dart';
-import '../model/ci_yaml/ci_yaml.dart';
-import '../model/ci_yaml/target.dart';
-import '../request_handling/authentication.dart';
-import '../request_handling/body.dart';
-import '../service/config.dart';
-import '../service/logging.dart';
-
-/// An endpoint for listening to LUCI status updates for scheduled builds.
-///
-/// [ScheduleBuildRequest.notify] property is set to tell LUCI to use this
-/// PubSub topic. LUCI then publishes updates about build status to that topic,
-/// which we listen to on the github-updater subscription. When new messages
-/// arrive, they are posted to this web service.
-///
-/// The PubSub subscription is set up here:
-/// https://console.cloud.google.com/cloudpubsub/subscription/detail/build-bucket-presubmit-sub?project=flutter-dashboard
-///
-/// This endpoint is responsible for updating GitHub with the status of
-/// completed builds from LUCI.
-@immutable
-class PresubmitLuciSubscriptionV2 extends SubscriptionHandlerV2 {
- /// Creates an endpoint for listening to LUCI status updates.
- const PresubmitLuciSubscriptionV2({
- required super.cache,
- required super.config,
- required this.scheduler,
- required this.luciBuildService,
- required this.githubChecksService,
- AuthenticationProvider? authProvider,
- }) : super(subscriptionName: 'build-bucket-presubmit-sub');
-
- final LuciBuildServiceV2 luciBuildService;
- final GithubChecksServiceV2 githubChecksService;
- final SchedulerV2 scheduler;
-
- @override
- Future<Body> post() async {
- if (message.data == null) {
- log.info('no data in message');
- return Body.empty;
- }
-
- final bbv2.PubSubCallBack pubSubCallBack = bbv2.PubSubCallBack();
- pubSubCallBack.mergeFromProto3Json(jsonDecode(message.data!) as Map<String, dynamic>);
-
- final bbv2.BuildsV2PubSub buildsV2PubSub = pubSubCallBack.buildPubsub;
-
- if (!buildsV2PubSub.hasBuild()) {
- log.info('no build information in message');
- return Body.empty;
- }
-
- final bbv2.Build build = buildsV2PubSub.build;
-
- final String builderName = build.builder.builder;
-
- final List<bbv2.StringPair> tags = build.tags;
-
- log.fine('Available tags: ${tags.toString()}');
-
- // Skip status update if we can not get the sha tag.
- if (tags.where((element) => element.key == 'buildset').isEmpty) {
- log.warning('Buildset tag not included, skipping Status Updates');
- return Body.empty;
- }
-
- log.fine('Setting status (${build.status.toString()}) for $builderName');
-
- if (!pubSubCallBack.hasUserData()) {
- log.info('No user data was found in this request');
- return Body.empty;
- }
-
- Map<String, dynamic> userDataMap = <String, dynamic>{};
- try {
- userDataMap = json.decode(String.fromCharCodes(pubSubCallBack.userData));
- log.info('User data was not base64 encoded.');
- } on FormatException {
- userDataMap = UserData.decodeUserDataBytes(pubSubCallBack.userData);
- log.info('Decoding base64 encoded user data.');
- }
-
- if (userDataMap.containsKey('repo_owner') && userDataMap.containsKey('repo_name')) {
- final RepositorySlug slug =
- RepositorySlug(userDataMap['repo_owner'] as String, userDataMap['repo_name'] as String);
-
- bool rescheduled = false;
- if (githubChecksService.taskFailed(build.status)) {
- final int currentAttempt = githubChecksService.currentAttempt(tags);
- final int maxAttempt = await _getMaxAttemptV2(
- userDataMap,
- slug,
- builderName,
- );
- if (currentAttempt < maxAttempt) {
- rescheduled = true;
- log.fine('Rerunning failed task: $builderName');
- await luciBuildService.rescheduleBuild(
- builderName: builderName,
- build: build,
- rescheduleAttempt: currentAttempt + 1,
- userDataMap: userDataMap,
- );
- }
- }
- await githubChecksService.updateCheckStatus(
- build: build,
- userDataMap: userDataMap,
- luciBuildService: luciBuildService,
- slug: slug,
- rescheduled: rescheduled,
- );
- } else {
- log.info('This repo does not support checks API');
- }
- return Body.empty;
- }
-
- Future<int> _getMaxAttemptV2(
- Map<String, dynamic> userData,
- RepositorySlug slug,
- String builderName,
- ) async {
- final Commit commit = Commit(
- branch: userData['commit_branch'] as String,
- repository: slug.fullName,
- sha: userData['commit_sha'] as String,
- );
- late CiYaml ciYaml;
- if (commit.branch == Config.defaultBranch(commit.slug)) {
- ciYaml = await scheduler.getCiYaml(commit, validate: true);
- } else {
- ciYaml = await scheduler.getCiYaml(commit);
- }
-
- // Do not block on the target not found.
- if (!ciYaml.presubmitTargets.any((element) => element.value.name == builderName)) {
- // do not reschedule
- log.warning('Did not find builder with name: $builderName in ciYaml for ${commit.sha}');
- final List<String> availableBuilderList = ciYaml.presubmitTargets.map((Target e) => e.value.name).toList();
- log.warning('ciYaml presubmit targets found: $availableBuilderList');
- return 1;
- }
-
- final Target target = ciYaml.presubmitTargets.where((element) => element.value.name == builderName).single;
- final Map<String, Object> properties = target.getProperties();
- if (!properties.containsKey('presubmit_max_attempts')) {
- return 1;
- }
- return properties['presubmit_max_attempts'] as int;
- }
-}
diff --git a/app_dart/lib/src/request_handlers/reset_prod_task.dart b/app_dart/lib/src/request_handlers/reset_prod_task.dart
index f6bae84..402a372 100644
--- a/app_dart/lib/src/request_handlers/reset_prod_task.dart
+++ b/app_dart/lib/src/request_handlers/reset_prod_task.dart
@@ -4,7 +4,6 @@
import 'dart:async';
-import 'package:cocoon_service/cocoon_service.dart';
import 'package:gcloud/db.dart';
import 'package:github/github.dart';
import 'package:meta/meta.dart';
@@ -17,8 +16,13 @@
import '../model/ci_yaml/target.dart';
import '../model/google/token_info.dart';
import '../request_handling/api_request_handler.dart';
+import '../request_handling/body.dart';
import '../request_handling/exceptions.dart';
+import '../service/config.dart';
import '../service/datastore.dart';
+import '../service/firestore.dart';
+import '../service/luci_build_service.dart';
+import '../service/scheduler.dart';
import '../service/logging.dart';
/// Reruns a postsubmit LUCI build.
@@ -84,7 +88,7 @@
gitBranch: branch!,
sha: sha!,
);
- final List<Task> tasks = await datastore.db.query<Task>(ancestorKey: commitKey).run().toList();
+ final tasks = await datastore.db.query<Task>(ancestorKey: commitKey).run().toList();
final List<Future<void>> futures = <Future<void>>[];
for (final Task task in tasks) {
if (!Task.taskFailStatusSet.contains(task.status)) continue;
@@ -157,16 +161,12 @@
final int currentAttempt = task.attempts!;
taskDocumentName = '$kDatabase/documents/${firestore.kTaskCollectionId}/${sha}_${taskName}_$currentAttempt';
}
- taskDocument = await firestore.Task.fromFirestore(
- firestoreService: firestoreService,
- documentName: taskDocumentName,
- );
-
+ taskDocument =
+ await firestore.Task.fromFirestore(firestoreService: firestoreService, documentName: taskDocumentName);
final Map<String, List<String>> tags = <String, List<String>>{
'triggered_by': <String>[email],
'trigger_type': <String>['manual_retry'],
};
-
final bool isRerunning = await luciBuildService.checkRerunBuilder(
commit: commit,
task: task,
diff --git a/app_dart/lib/src/request_handlers/reset_prod_task_v2.dart b/app_dart/lib/src/request_handlers/reset_prod_task_v2.dart
deleted file mode 100644
index ce25a1a..0000000
--- a/app_dart/lib/src/request_handlers/reset_prod_task_v2.dart
+++ /dev/null
@@ -1,226 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart';
-import 'package:meta/meta.dart';
-
-import '../model/appengine/commit.dart';
-import '../model/appengine/key_helper.dart';
-import '../model/appengine/task.dart';
-import '../model/firestore/task.dart' as firestore;
-import '../model/ci_yaml/ci_yaml.dart';
-import '../model/ci_yaml/target.dart';
-import '../model/google/token_info.dart';
-import '../request_handling/api_request_handler.dart';
-import '../request_handling/body.dart';
-import '../request_handling/exceptions.dart';
-import '../service/config.dart';
-import '../service/datastore.dart';
-import '../service/firestore.dart';
-
-/// Reruns a postsubmit LUCI build.
-///
-/// Expects either [taskKeyParam] or a set of params that give enough detail to lookup a task in datastore.
-@immutable
-class ResetProdTaskV2 extends ApiRequestHandler<Body> {
- const ResetProdTaskV2({
- required super.config,
- required super.authenticationProvider,
- required this.luciBuildService,
- required this.scheduler,
- @visibleForTesting DatastoreServiceProvider? datastoreProvider,
- }) : datastoreProvider = datastoreProvider ?? DatastoreService.defaultProvider;
-
- final DatastoreServiceProvider datastoreProvider;
- final LuciBuildServiceV2 luciBuildService;
- final SchedulerV2 scheduler;
-
- static const String branchParam = 'Branch';
- static const String taskKeyParam = 'Key';
- static const String ownerParam = 'Owner';
- static const String repoParam = 'Repo';
- static const String commitShaParam = 'Commit';
- static const String taskDocumentNameParam = 'taskDocumentName';
-
- /// Name of the task to be retried.
- ///
- /// If "all" is given, all failed tasks will be retried. This enables
- /// oncalls to quickly recover a commit without the tedium of the UI.
- static const String taskParam = 'Task';
-
- @override
- Future<Body> post() async {
- final DatastoreService datastore = datastoreProvider(config.db);
- final FirestoreService firestoreService = await config.createFirestoreService();
- final String? encodedKey = requestData![taskKeyParam] as String?;
- String? branch = requestData![branchParam] as String?;
- final String owner = requestData![ownerParam] as String? ?? 'flutter';
- final String? repo = requestData![repoParam] as String?;
- final String? sha = requestData![commitShaParam] as String?;
- final TokenInfo token = await tokenInfo(request!);
- final String? taskName = requestData![taskParam] as String?;
- // When Frontend is switched to Firstore, the task document name will be passed over.
- final String? taskDocumentName = requestData![taskDocumentNameParam] as String?;
-
- RepositorySlug? slug;
- if (encodedKey != null && encodedKey.isNotEmpty) {
- // Check params required for dashboard.
- checkRequiredParameters(<String>[taskKeyParam]);
- } else {
- // Checks params required when this API is called with curl.
- checkRequiredParameters(<String>[commitShaParam, taskParam, repoParam]);
- slug = RepositorySlug(owner, repo!);
- branch ??= Config.defaultBranch(slug);
- }
-
- if (taskName == 'all') {
- final Key<String> commitKey = Commit.createKey(
- db: datastore.db,
- slug: slug!,
- gitBranch: branch!,
- sha: sha!,
- );
- final List<Task> tasks = await datastore.db.query<Task>(ancestorKey: commitKey).run().toList();
- final List<Future<void>> futures = <Future<void>>[];
- for (final Task task in tasks) {
- if (!Task.taskFailStatusSet.contains(task.status)) continue;
- futures.add(
- rerun(
- datastore: datastore,
- firestoreService: firestoreService,
- branch: branch,
- sha: sha,
- taskName: task.name,
- slug: slug,
- email: token.email!,
- ),
- );
- }
- await Future.wait(futures);
- } else {
- await rerun(
- datastore: datastore,
- firestoreService: firestoreService,
- encodedKey: encodedKey,
- branch: branch,
- sha: sha,
- taskName: taskName,
- taskDocumentName: taskDocumentName,
- slug: slug,
- email: token.email!,
- ignoreChecks: true,
- );
- }
-
- return Body.empty;
- }
-
- Future<void> rerun({
- required DatastoreService datastore,
- required FirestoreService firestoreService,
- String? encodedKey,
- String? branch,
- String? sha,
- String? taskName,
- RepositorySlug? slug,
- String? taskDocumentName,
- required String email,
- bool ignoreChecks = false,
- }) async {
- // Prepares Datastore task.
- final Task task = await _getTaskFromNamedParams(
- datastore: datastore,
- encodedKey: encodedKey,
- branch: branch,
- name: taskName,
- sha: sha,
- slug: slug,
- );
- final Commit commit = await _getCommitFromTask(datastore, task);
- sha ??= commit.id!.split('/').last;
- taskName ??= task.name;
-
- final CiYaml ciYaml = await scheduler.getCiYaml(commit);
- final Target target = ciYaml.postsubmitTargets.singleWhere((Target target) => target.value.name == task.name);
-
- // Prepares Firestore task.
- firestore.Task? taskDocument;
- if (taskDocumentName == null) {
- final int currentAttempt = task.attempts!;
- taskDocumentName = '$kDatabase/documents/${firestore.kTaskCollectionId}/${sha}_${taskName}_$currentAttempt';
- }
- taskDocument = await firestore.Task.fromFirestore(
- firestoreService: firestoreService,
- documentName: taskDocumentName,
- );
-
- final List<bbv2.StringPair> tags = <bbv2.StringPair>[
- bbv2.StringPair(
- key: 'triggered_by',
- value: email,
- ),
- bbv2.StringPair(
- key: 'trigger_type',
- value: 'manual_retry',
- ),
- ];
-
- final bool isRerunning = await luciBuildService.checkRerunBuilder(
- commit: commit,
- task: task,
- target: target,
- datastore: datastore,
- tags: tags,
- ignoreChecks: ignoreChecks,
- firestoreService: firestoreService,
- taskDocument: taskDocument,
- );
-
- // For human retries from the dashboard, notify if a task failed to rerun.
- if (ignoreChecks && isRerunning == false) {
- throw InternalServerError('Failed to rerun $taskName');
- }
- }
-
- /// Retrieve [Task] from [DatastoreService] from either an encoded key or commit + task name info.
- ///
- /// If [encodedKey] is passed, [KeyHelper] will decode it directly and return the associated entity.
- ///
- /// Otherwise, [name], [branch], [sha], and [slug] must be passed to find the [Task].
- Future<Task> _getTaskFromNamedParams({
- required DatastoreService datastore,
- String? encodedKey,
- String? branch,
- String? name,
- String? sha,
- RepositorySlug? slug,
- }) async {
- if (encodedKey != null && encodedKey.isNotEmpty) {
- final Key<int> key = config.keyHelper.decode(encodedKey) as Key<int>;
- return datastore.lookupByValue<Task>(key);
- }
- final Key<String> commitKey = Commit.createKey(
- db: datastore.db,
- slug: slug!,
- gitBranch: branch!,
- sha: sha!,
- );
- return Task.fromDatastore(
- datastore: datastore,
- commitKey: commitKey,
- name: name!,
- );
- }
-
- /// Returns the [Commit] associated with [Task].
- Future<Commit> _getCommitFromTask(DatastoreService datastore, Task task) async {
- return (await datastore.lookupByKey<Commit>(<Key<dynamic>>[task.parentKey!])).single!;
- }
-}
diff --git a/app_dart/lib/src/request_handlers/reset_try_task_v2.dart b/app_dart/lib/src/request_handlers/reset_try_task_v2.dart
deleted file mode 100644
index 3278b18..0000000
--- a/app_dart/lib/src/request_handlers/reset_try_task_v2.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:github/github.dart';
-import 'package:meta/meta.dart';
-
-import '../../cocoon_service.dart';
-import '../request_handling/api_request_handler.dart';
-import '../request_handling/exceptions.dart';
-
-/// Runs all the applicable tasks for a given PR and commit hash. This will be
-/// used to unblock rollers when creating a new commit is not possible.
-@immutable
-class ResetTryTaskV2 extends ApiRequestHandler<Body> {
- const ResetTryTaskV2({
- required super.config,
- required super.authenticationProvider,
- required this.scheduler,
- });
-
- final SchedulerV2 scheduler;
-
- static const String kOwnerParam = 'owner';
- static const String kRepoParam = 'repo';
- static const String kPullRequestNumberParam = 'pr';
- static const String kBuilderParam = 'builders';
-
- @override
- Future<Body> get() async {
- checkRequiredQueryParameters(<String>[kRepoParam, kPullRequestNumberParam]);
- final String owner = request!.uri.queryParameters[kOwnerParam] ?? 'flutter';
- final String repo = request!.uri.queryParameters[kRepoParam]!;
- final String pr = request!.uri.queryParameters[kPullRequestNumberParam]!;
- final String builders = request!.uri.queryParameters[kBuilderParam] ?? '';
- final List<String> builderList = getBuilderList(builders);
-
- final int? prNumber = int.tryParse(pr);
- if (prNumber == null) {
- throw const BadRequestException('$kPullRequestNumberParam must be a number');
- }
- final RepositorySlug slug = RepositorySlug(owner, repo);
- final GitHub github = await config.createGitHubClient(slug: slug);
- final PullRequest pullRequest = await github.pullRequests.get(slug, prNumber);
- await scheduler.triggerPresubmitTargets(pullRequest: pullRequest, builderTriggerList: builderList);
- return Body.empty;
- }
-
- /// Parses [builders] to a String list.
- ///
- /// The [builders] parameter is expecting comma joined string, e.g. 'builder1, builder2'.
- /// Returns an empty list if no [builders] is specified.
- List<String> getBuilderList(String builders) {
- if (builders.isEmpty) {
- return <String>[];
- }
- return builders.split(',').map((String builder) => builder.trim()).toList();
- }
-}
diff --git a/app_dart/lib/src/request_handlers/scheduler/batch_backfiller_v2.dart b/app_dart/lib/src/request_handlers/scheduler/batch_backfiller_v2.dart
deleted file mode 100644
index 8a9710c..0000000
--- a/app_dart/lib/src/request_handlers/scheduler/batch_backfiller_v2.dart
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:cocoon_service/src/service/scheduler/policy.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart';
-import 'package:googleapis/firestore/v1.dart';
-import 'package:meta/meta.dart';
-import 'package:retry/retry.dart';
-
-import '../../model/ci_yaml/ci_yaml.dart';
-import '../../model/ci_yaml/target.dart';
-import '../../request_handling/exceptions.dart';
-import '../../service/logging.dart';
-
-/// Cron request handler for scheduling targets when capacity becomes available.
-///
-/// Targets that have a [BatchPolicy] need to have backfilling enabled to ensure that ToT is always being tested.
-@immutable
-class BatchBackfillerV2 extends RequestHandler {
- /// Creates a subscription for sending BuildBucket requests.
- const BatchBackfillerV2({
- required super.config,
- required this.scheduler,
- @visibleForTesting this.datastoreProvider = DatastoreService.defaultProvider,
- });
-
- final DatastoreServiceProvider datastoreProvider;
- final SchedulerV2 scheduler;
-
- @override
- Future<Body> get() async {
- final List<Future<void>> futures = <Future<void>>[];
-
- for (RepositorySlug slug in config.supportedRepos) {
- futures.add(backfillRepository(slug));
- }
-
- // Process all repos asynchronously
- await Future.wait<void>(futures);
-
- return Body.empty;
- }
-
- Future<void> backfillRepository(RepositorySlug slug) async {
- final DatastoreService datastore = datastoreProvider(config.db);
- final List<FullTask> tasks =
- await (datastore.queryRecentTasks(slug: slug, commitLimit: config.backfillerCommitLimit)).toList();
-
- // Construct Task columns to scan for backfilling
- final Map<String, List<FullTask>> taskMap = <String, List<FullTask>>{};
- for (FullTask fullTask in tasks) {
- if (taskMap.containsKey(fullTask.task.name)) {
- taskMap[fullTask.task.name]!.add(fullTask);
- } else {
- taskMap[fullTask.task.name!] = <FullTask>[fullTask];
- }
- }
-
- // Check if should be scheduled (there is no yellow runs). Run the most recent gray.
- List<Tuple<Target, FullTask, int>> backfill = <Tuple<Target, FullTask, int>>[];
- for (List<FullTask> taskColumn in taskMap.values) {
- final FullTask task = taskColumn.first;
- final CiYaml ciYaml = await scheduler.getCiYaml(task.commit);
- final List<Target> ciYamlTargets = ciYaml.backfillTargets;
- // Skips scheduling if the task is not in TOT commit anymore.
- final bool taskInToT = ciYamlTargets.map((Target target) => target.value.name).toList().contains(task.task.name);
- if (!taskInToT) {
- continue;
- }
- final Target target = ciYamlTargets.singleWhere((target) => target.value.name == task.task.name);
- if (target.schedulerPolicy is! BatchPolicy) {
- continue;
- }
- final FullTask? backfillTask = _backfillTask(target, taskColumn);
- final int? priority = backfillPriority(taskColumn.map((e) => e.task).toList());
- if (priority != null && backfillTask != null) {
- backfill.add(Tuple<Target, FullTask, int>(target, backfillTask, priority));
- }
- }
-
- // Get the number of targets to be backfilled in each cycle.
- backfill = getFilteredBackfill(backfill);
-
- log.fine('Backfilling ${backfill.length} builds');
- log.fine(backfill.map<String>((Tuple<Target, FullTask, int> tuple) => tuple.first.value.name));
-
- // Update tasks status as in progress to avoid duplicate scheduling.
- final List<Task> backfillTasks = backfill.map((Tuple<Target, FullTask, int> tuple) => tuple.second.task).toList();
- try {
- await datastore.withTransaction<void>((Transaction transaction) async {
- transaction.queueMutations(inserts: backfillTasks);
- await transaction.commit();
- log.fine(
- 'Updated ${backfillTasks.length} tasks: ${backfillTasks.map((e) => e.name).toList()} when backfilling.',
- );
- });
- // TODO(keyonghan): remove try catch logic after validated to work.
- try {
- await updateTaskDocuments(backfillTasks);
- } catch (error) {
- log.warning('Failed to update batch backfilled task documents in Firestore: $error');
- }
-
- // Schedule all builds asynchronously.
- // Schedule after db updates to avoid duplicate scheduling when db update fails.
- await _scheduleWithRetries(backfill);
- } catch (error) {
- log.severe('Failed to update tasks when backfilling: $error');
- }
- }
-
- /// Updates task documents in Firestore.
- Future<void> updateTaskDocuments(List<Task> tasks) async {
- if (tasks.isEmpty) {
- return;
- }
- final List<firestore.Task> taskDocuments = tasks.map((e) => firestore.taskToDocument(e)).toList();
- final List<Write> writes = documentsToWrites(taskDocuments, exists: true);
- final FirestoreService firestoreService = await config.createFirestoreService();
- await firestoreService.writeViaTransaction(writes);
- }
-
- /// Filters [config.backfillerTargetLimit] targets to backfill.
- ///
- /// High priority targets will be guranteed to get back filled first. If more targets
- /// than [config.backfillerTargetLimit], pick the limited number of targets after a
- /// shuffle. This is to make sure all targets are picked with the same chance.
- List<Tuple<Target, FullTask, int>> getFilteredBackfill(List<Tuple<Target, FullTask, int>> backfill) {
- if (backfill.length <= config.backfillerTargetLimit) {
- return backfill;
- }
- final List<Tuple<Target, FullTask, int>> filteredBackfill = <Tuple<Target, FullTask, int>>[];
- final List<Tuple<Target, FullTask, int>> highPriorityBackfill =
- backfill.where((element) => element.third == LuciBuildService.kRerunPriority).toList();
- final List<Tuple<Target, FullTask, int>> normalPriorityBackfill =
- backfill.where((element) => element.third != LuciBuildService.kRerunPriority).toList();
- if (highPriorityBackfill.length >= config.backfillerTargetLimit) {
- highPriorityBackfill.shuffle();
- filteredBackfill.addAll(highPriorityBackfill.sublist(0, config.backfillerTargetLimit));
- } else {
- filteredBackfill.addAll(highPriorityBackfill);
- normalPriorityBackfill.shuffle();
- filteredBackfill
- .addAll(normalPriorityBackfill.sublist(0, config.backfillerTargetLimit - highPriorityBackfill.length));
- }
- return filteredBackfill;
- }
-
- /// Schedules tasks with retry when hitting pub/sub server errors.
- Future<void> _scheduleWithRetries(List<Tuple<Target, FullTask, int>> backfill) async {
- const RetryOptions retryOptions = Config.schedulerRetry;
- try {
- await retryOptions.retry(
- () async {
- final List<List<Tuple<Target, Task, int>>> tupleLists =
- await Future.wait<List<Tuple<Target, Task, int>>>(backfillRequestList(backfill));
- if (tupleLists.any((List<Tuple<Target, Task, int>> tupleList) => tupleList.isNotEmpty)) {
- final int nonEmptyListLenght = tupleLists.where((element) => element.isNotEmpty).toList().length;
- log.info('Backfill fails and retry backfilling $nonEmptyListLenght targets.');
- backfill = _updateBackfill(backfill, tupleLists);
- throw InternalServerError('Failed to backfill ${backfill.length} targets.');
- }
- },
- retryIf: (Exception e) => e is InternalServerError,
- );
- } catch (error) {
- log.severe('Failed to backfill ${backfill.length} targets due to error: $error');
- }
- }
-
- /// Updates the [backfill] list with those that fail to get scheduled.
- ///
- /// [tupleLists] maintains the same tuple order as those in [backfill].
- /// Each element from [backfill] is encapsulated as a list in [tupleLists] to prepare for
- /// [scheduler.luciBuildService.schedulePostsubmitBuilds].
- List<Tuple<Target, FullTask, int>> _updateBackfill(
- List<Tuple<Target, FullTask, int>> backfill,
- List<List<Tuple<Target, Task, int>>> tupleLists,
- ) {
- final List<Tuple<Target, FullTask, int>> updatedBackfill = <Tuple<Target, FullTask, int>>[];
- for (int i = 0; i < tupleLists.length; i++) {
- if (tupleLists[i].isNotEmpty) {
- updatedBackfill.add(backfill[i]);
- }
- }
- return updatedBackfill;
- }
-
- /// Creates a list of backfill requests.
- List<Future<List<Tuple<Target, Task, int>>>> backfillRequestList(List<Tuple<Target, FullTask, int>> backfill) {
- final List<Future<List<Tuple<Target, Task, int>>>> futures = <Future<List<Tuple<Target, Task, int>>>>[];
- for (Tuple<Target, FullTask, int> tuple in backfill) {
- // TODO(chillers): The backfill priority is always going to be low. If this is a ToT task, we should run it at the default priority.
- final Tuple<Target, Task, int> toBeScheduled = Tuple(
- tuple.first,
- tuple.second.task,
- tuple.third,
- );
- futures.add(
- scheduler.luciBuildService.schedulePostsubmitBuilds(
- commit: tuple.second.commit,
- toBeScheduled: [toBeScheduled],
- ),
- );
- }
-
- return futures;
- }
-
- /// Returns priority for back filled targets.
- ///
- /// Skips scheduling newly created targets whose available entries are
- /// less than `BatchPolicy.kBatchSize`.
- ///
- /// Uses a higher priority if there is an earlier failed build. Otherwise,
- /// uses default `LuciBuildService.kBackfillPriority`
- int? backfillPriority(List<Task> tasks) {
- if (tasks.length < BatchPolicy.kBatchSize) {
- return null;
- }
- if (shouldRerunPriority(tasks, BatchPolicy.kBatchSize)) {
- return LuciBuildService.kRerunPriority;
- }
- return LuciBuildService.kBackfillPriority;
- }
-
- /// Returns the most recent [FullTask] to backfill.
- ///
- /// A [FullTask] is only returned iff:
- /// 1. There are no running builds (yellow)
- /// 2. There are tasks that haven't been run (gray)
- ///
- /// This is naive, and doesn't rely on knowing the actual Flutter infra capacity.
- ///
- /// Otherwise, returns null indicating nothing should be backfilled.
- FullTask? _backfillTask(Target target, List<FullTask> tasks) {
- final List<FullTask> relevantTasks = tasks.where((FullTask task) => task.task.name == target.value.name).toList();
- if (relevantTasks.any((FullTask task) => task.task.status == Task.statusInProgress)) {
- // Don't schedule more builds where there is already a running task
- return null;
- }
-
- final List<FullTask> backfillTask =
- relevantTasks.where((FullTask task) => task.task.status == Task.statusNew).toList();
- if (backfillTask.isEmpty) {
- return null;
- }
-
- // First item in the list is guranteed to be most recent.
- // Mark task as in progress to ensure it isn't scheduled over
- backfillTask.first.task.status = Task.statusInProgress;
- return backfillTask.first;
- }
-}
diff --git a/app_dart/lib/src/request_handlers/scheduler/scheduler_request_subscription.dart b/app_dart/lib/src/request_handlers/scheduler/scheduler_request_subscription.dart
deleted file mode 100644
index 44f505b..0000000
--- a/app_dart/lib/src/request_handlers/scheduler/scheduler_request_subscription.dart
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-
-import 'package:cocoon_service/src/request_handling/subscription_handler_v2.dart';
-import 'package:meta/meta.dart';
-import 'package:retry/retry.dart';
-
-import '../../../cocoon_service.dart';
-import '../../service/build_bucket_v2_client.dart';
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import '../../request_handling/exceptions.dart';
-import '../../service/logging.dart';
-
-/// Subscription for making requests to BuildBucket.
-///
-/// The PubSub subscription is set up here:
-/// https://console.cloud.google.com/cloudpubsub/subscription/detail/cocoon-scheduler-requests?project=flutter-dashboard
-///
-/// This endpoint allows Cocoon to defer BuildBucket requests off the main request loop. This is critical when new
-/// commits are pushed, and they can schedule 100+ builds at once.
-///
-/// This endpoint takes in a POST request with the JSON of a [bbv2.BatchRequest]. In practice, the
-/// [bbv2.BatchRequest] should contain a single request.
-@immutable
-class SchedulerRequestSubscriptionV2 extends SubscriptionHandlerV2 {
- /// Creates a subscription for sending BuildBucket requests.
- const SchedulerRequestSubscriptionV2({
- required super.cache,
- required super.config,
- required this.buildBucketClient,
- super.authProvider,
- this.retryOptions = Config.schedulerRetry,
- }) : super(subscriptionName: 'cocoon-scheduler-requests-sub');
-
- final BuildBucketV2Client buildBucketClient;
-
- final RetryOptions retryOptions;
-
- @override
- Future<Body> post() async {
- if (message.data == null) {
- log.info('no data in message');
- throw const BadRequestException('no data in message');
- }
-
- // final String data = message.data!;
- log.fine('attempting to read message ${message.data}');
-
- final bbv2.BatchRequest batchRequest = bbv2.BatchRequest.create();
-
- // Merge from json only works with the integer field names.
- batchRequest.mergeFromProto3Json(jsonDecode(message.data!) as Map<String, dynamic>);
-
- log.info('Read the following data: ${batchRequest.toProto3Json().toString()}');
-
- /// Retry scheduling builds upto 3 times.
- ///
- /// Log error message when still failing after retry. Avoid endless rescheduling
- /// by acking the pub/sub message without throwing an exception.
- String? unscheduledBuilds;
- try {
- await retryOptions.retry(
- () async {
- final List<bbv2.BatchRequest_Request> requestsToRetry = await _sendBatchRequest(batchRequest);
-
- // Make a copy of the requests that are passed in as if simply access the list
- // we make changes for all instances.
- final List<bbv2.BatchRequest_Request> requestListCopy = [];
- requestListCopy.addAll(requestsToRetry);
- batchRequest.requests.clear();
- batchRequest.requests.addAll(requestListCopy);
-
- unscheduledBuilds = requestsToRetry.map((e) => e.scheduleBuild.builder).toString();
- if (requestsToRetry.isNotEmpty) {
- throw InternalServerError('Failed to schedule builds: $unscheduledBuilds.');
- }
- },
- retryIf: (Exception e) => e is InternalServerError,
- );
- } catch (e) {
- log.warning('Failed to schedule builds on exception: $unscheduledBuilds.');
- return Body.forString('Failed to schedule builds: $unscheduledBuilds.');
- }
-
- return Body.empty;
- }
-
- /// Returns [List<bbv2.BatchRequest_Request>] of requests that need to be retried.
- Future<List<bbv2.BatchRequest_Request>> _sendBatchRequest(bbv2.BatchRequest request) async {
- log.info('Sending batch request for ${request.toProto3Json().toString()}');
-
- bbv2.BatchResponse response;
- try {
- response = await buildBucketClient.batch(request);
- } catch (e) {
- log.severe('Exception making batch Requests.');
- rethrow;
- }
-
- log.info('Made ${request.requests.length} and received ${response.responses.length}');
- log.info('Responses: ${response.responses}');
-
- // By default, retry everything. Then remove requests with a verified response.
- // THese are the requests in the batch request object. Just requests.
- final List<bbv2.BatchRequest_Request> retry = request.requests;
-
- for (bbv2.BatchResponse_Response batchResponseResponse in response.responses) {
- if (batchResponseResponse.hasScheduleBuild()) {
- retry.removeWhere((element) => batchResponseResponse.scheduleBuild.builder == element.scheduleBuild.builder);
- } else {
- log.warning('Response does not have schedule build: $batchResponseResponse');
- }
-
- if (batchResponseResponse.hasError() && batchResponseResponse.error.code != 0) {
- log.info('Non-zero grpc code: $batchResponseResponse');
- }
- }
-
- return retry;
- }
-}
diff --git a/app_dart/lib/src/request_handlers/vacuum_github_commits_v2.dart b/app_dart/lib/src/request_handlers/vacuum_github_commits_v2.dart
deleted file mode 100644
index b283e6e..0000000
--- a/app_dart/lib/src/request_handlers/vacuum_github_commits_v2.dart
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart' as gh;
-import 'package:meta/meta.dart';
-import 'package:truncate/truncate.dart';
-
-import '../model/appengine/commit.dart';
-import '../request_handling/api_request_handler.dart';
-import '../request_handling/body.dart';
-import '../service/config.dart';
-import '../service/datastore.dart';
-import '../service/github_service.dart';
-import '../service/logging.dart';
-
-/// Query GitHub for commits from the past day and ensure they exist in datastore.
-@immutable
-class VacuumGithubCommitsV2 extends ApiRequestHandler<Body> {
- const VacuumGithubCommitsV2({
- required super.config,
- required super.authenticationProvider,
- required this.scheduler,
- @visibleForTesting this.datastoreProvider = DatastoreService.defaultProvider,
- });
-
- final DatastoreServiceProvider datastoreProvider;
-
- final SchedulerV2 scheduler;
-
- static const String branchParam = 'branch';
-
- @override
- Future<Body> get() async {
- final DatastoreService datastore = datastoreProvider(config.db);
-
- for (gh.RepositorySlug slug in config.supportedRepos) {
- final String branch = request!.uri.queryParameters[branchParam] ?? Config.defaultBranch(slug);
- await _vacuumRepository(slug, datastore: datastore, branch: branch);
- }
-
- return Body.empty;
- }
-
- Future<void> _vacuumRepository(
- gh.RepositorySlug slug, {
- DatastoreService? datastore,
- required String branch,
- }) async {
- final GithubService githubService = await config.createGithubService(slug);
- final List<Commit> commits = await _vacuumBranch(
- slug,
- branch,
- datastore: datastore,
- githubService: githubService,
- );
- await scheduler.addCommits(commits);
- }
-
- Future<List<Commit>> _vacuumBranch(
- gh.RepositorySlug slug,
- String branch, {
- DatastoreService? datastore,
- required GithubService githubService,
- }) async {
- List<gh.RepositoryCommit> commits = <gh.RepositoryCommit>[];
- // Sliding window of times to add commits from.
- final DateTime queryAfter = DateTime.now().subtract(const Duration(days: 1));
- final DateTime queryBefore = DateTime.now().subtract(const Duration(minutes: 3));
- try {
- log.fine('Listing commit for slug: $slug branch: $branch and msSinceEpoch: ${queryAfter.millisecondsSinceEpoch}');
- commits = await githubService.listBranchedCommits(slug, branch, queryAfter.millisecondsSinceEpoch);
- log.fine('Retrieved ${commits.length} commits from GitHub');
- // Do not try to add recent commits as they may already be processed
- // by cocoon, which can cause race conditions.
- commits = commits
- .where(
- (gh.RepositoryCommit commit) =>
- commit.commit!.committer!.date!.millisecondsSinceEpoch < queryBefore.millisecondsSinceEpoch,
- )
- .toList();
- } on gh.GitHubError catch (error) {
- log.severe('$error');
- }
-
- return _toDatastoreCommit(slug, commits, datastore, branch);
- }
-
- /// Convert [gh.RepositoryCommit] to Cocoon's [Commit] format.
- Future<List<Commit>> _toDatastoreCommit(
- gh.RepositorySlug slug,
- List<gh.RepositoryCommit> commits,
- DatastoreService? datastore,
- String branch,
- ) async {
- final List<Commit> recentCommits = <Commit>[];
- for (gh.RepositoryCommit commit in commits) {
- final String id = '${slug.fullName}/$branch/${commit.sha}';
- final Key<String> key = datastore!.db.emptyKey.append<String>(Commit, id: id);
- recentCommits.add(
- Commit(
- key: key,
- timestamp: commit.commit!.committer!.date!.millisecondsSinceEpoch,
- repository: slug.fullName,
- sha: commit.sha!,
- author: commit.author!.login!,
- authorAvatarUrl: commit.author!.avatarUrl!,
- // The field has a size of 1500 we need to ensure the commit message
- // is at most 1500 chars long.
- message: truncate(commit.commit!.message!, 1490, omission: '...'),
- branch: branch,
- ),
- );
- }
- return recentCommits;
- }
-}
diff --git a/app_dart/lib/src/service/build_bucket_v2_client.dart b/app_dart/lib/src/service/build_bucket_v2_client.dart
index 71fe175..70527ee 100644
--- a/app_dart/lib/src/service/build_bucket_v2_client.dart
+++ b/app_dart/lib/src/service/build_bucket_v2_client.dart
@@ -70,6 +70,7 @@
log.info('Making bbv2 request with path: $url and body: $request');
+ //TODO most likely have issues here:
final http.Response response = await httpClient.post(
url,
body: request,
diff --git a/app_dart/lib/src/service/github_checks_service_v2.dart b/app_dart/lib/src/service/github_checks_service_v2.dart
deleted file mode 100644
index f0fffe7..0000000
--- a/app_dart/lib/src/service/github_checks_service_v2.dart
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:github/github.dart' as github;
-import 'package:github/hooks.dart';
-
-import '../foundation/github_checks_util.dart';
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'config.dart';
-import 'github_service.dart';
-import 'logging.dart';
-import 'luci_build_service_v2.dart';
-
-const String kGithubSummary = '''
-**[Understanding a LUCI build failure](https://github.com/flutter/flutter/wiki/Understanding-a-LUCI-build-failure)**
-
-''';
-
-final List<bbv2.Status> terminalStatuses = [
- bbv2.Status.CANCELED,
- bbv2.Status.FAILURE,
- bbv2.Status.INFRA_FAILURE,
- bbv2.Status.SUCCESS,
-];
-
-/// Controls triggering builds and updating their status in the Github UI.
-class GithubChecksServiceV2 {
- GithubChecksServiceV2(
- this.config, {
- GithubChecksUtil? githubChecksUtil,
- }) : githubChecksUtil = githubChecksUtil ?? const GithubChecksUtil();
-
- Config config;
- GithubChecksUtil githubChecksUtil;
-
- static Set<github.CheckRunConclusion> failedStatesSet = <github.CheckRunConclusion>{
- github.CheckRunConclusion.cancelled,
- github.CheckRunConclusion.failure,
- };
-
- /// Takes a [CheckSuiteEvent] and trigger all the relevant builds if this is a
- /// new commit or only failed builds if the event was generated by a click on
- /// the re-run all button in the Github UI.
- /// Relevant API docs:
- /// https://docs.github.com/en/rest/reference/checks#create-a-check-suite
- /// https://docs.github.com/en/rest/reference/checks#rerequest-a-check-suite
- Future<void> handleCheckSuite(
- github.PullRequest pullRequest,
- CheckSuiteEvent checkSuiteEvent,
- SchedulerV2 scheduler,
- ) async {
- switch (checkSuiteEvent.action) {
- case 'requested':
- // Trigger all try builders.
- log.info('Check suite request for pull request ${pullRequest.number}, ${pullRequest.title}');
- await scheduler.triggerPresubmitTargets(
- pullRequest: pullRequest,
- );
- break;
- case 'rerequested':
- log.info('Check suite re-request for pull request ${pullRequest.number}, ${pullRequest.title}');
- pullRequest.head = github.PullRequestHead(sha: checkSuiteEvent.checkSuite?.headSha);
- return scheduler.retryPresubmitTargets(
- pullRequest: pullRequest,
- checkSuiteEvent: checkSuiteEvent,
- );
- }
- }
-
- /// Updates the Github build status using a [BuildPushMessage] sent by LUCI in
- /// a pub/sub notification.
- /// Relevant APIs:
- /// https://docs.github.com/en/rest/reference/checks#update-a-check-run
- Future<bool> updateCheckStatus({
- required bbv2.Build build,
- required Map<String, dynamic> userDataMap,
- required LuciBuildServiceV2 luciBuildService,
- required github.RepositorySlug slug,
- bool rescheduled = false,
- }) async {
- if (userDataMap.isEmpty) {
- return false;
- }
-
- if (!userDataMap.containsKey('check_run_id') ||
- !userDataMap.containsKey('repo_owner') ||
- !userDataMap.containsKey('repo_name')) {
- log.severe(
- 'UserData did not contain check_run_id,'
- 'repo_owner, or repo_name: $userDataMap',
- );
- return false;
- }
-
- github.CheckRunStatus status = statusForResult(build.status);
- log.info('status for build ${build.id} is ${status.value}');
-
- // Only `id` and `name` in the CheckRun are needed.
- // Instead of making an API call to get the details of each check run, we
- // generate the check run with only necessary info.
- final github.CheckRun checkRun = github.CheckRun.fromJson({
- 'id': userDataMap['check_run_id'] as int?,
- 'status': status,
- 'check_suite': const {'id': null},
- 'started_at': build.startTime.toDateTime().toString(),
- 'conclusion': null,
- 'name': build.builder.builder,
- });
-
- github.CheckRunConclusion? conclusion =
- (terminalStatuses.contains(build.status)) ? conclusionForResult(build.status) : null;
- log.info('conclusion for build ${build.id} is ${(conclusion != null) ? conclusion.value : null}');
-
- final String url = 'https://cr-buildbucket.appspot.com/build/${build.id}';
- github.CheckRunOutput? output;
- // If status has completed with failure then provide more details.
- if (taskFailed(build.status)) {
- log.info('failed presubmit task, ${build.id} has failed, status = ${build.status.toString()}');
- if (rescheduled) {
- status = github.CheckRunStatus.queued;
- conclusion = null;
- output = github.CheckRunOutput(
- title: checkRun.name!,
- summary: 'Note: this is an auto rerun. The timestamp above is based on the first attempt of this check run.',
- );
- } else {
- // summaryMarkdown should be present
- final bbv2.Build buildbucketBuild = await luciBuildService.getBuildById(
- build.id,
- buildMask: bbv2.BuildMask(
- // Need to use allFields as there is a bug with fieldMask and summaryMarkdown.
- allFields: true,
- ),
- );
- output = github.CheckRunOutput(
- title: checkRun.name!,
- summary: getGithubSummary(buildbucketBuild.summaryMarkdown),
- );
- log.fine('Updating check run with output: [${output.toJson().toString()}]');
- }
- }
- await githubChecksUtil.updateCheckRun(
- config,
- slug,
- checkRun,
- status: status,
- conclusion: conclusion,
- detailsUrl: url,
- output: output,
- );
- return true;
- }
-
- /// Check if task has completed with failure.
- bool taskFailed(bbv2.Status status) {
- final github.CheckRunStatus checkRunStatus = statusForResult(status);
- final github.CheckRunConclusion conclusion = conclusionForResult(status);
- return (checkRunStatus == github.CheckRunStatus.completed) && failedStatesSet.contains(conclusion);
- }
-
- /// Returns current reschedule attempt.
- ///
- /// It returns 1 if this is the first run, and +1 with each reschedule.
- int currentAttempt(final List<bbv2.StringPair> tags) {
- final bbv2.StringPair attempt = tags.firstWhere(
- (element) => element.key == 'current_attempt',
- orElse: () => bbv2.StringPair().createEmptyInstance(),
- );
- if (!attempt.hasKey()) {
- return 1;
- } else {
- return int.parse(attempt.value);
- }
- }
-
- /// Appends triage wiki page to `summaryMarkdown` from LUCI build so that people can easily
- /// reference from github check run page.
- String getGithubSummary(String? summary) {
- if (summary == null) {
- return '${kGithubSummary}Empty summaryMarkdown';
- }
- // This is an imposed GitHub limit
- const int checkSummaryLimit = 65535;
- // This is to give buffer room incase GitHub lowers the amount.
- const int checkSummaryBufferLimit = checkSummaryLimit - 10000 - kGithubSummary.length;
- // Return the last [checkSummaryBufferLimit] characters as they are likely the most relevant.
- if (summary.length > checkSummaryBufferLimit) {
- final String truncatedSummary = summary.substring(summary.length - checkSummaryBufferLimit);
- summary = '[TRUNCATED...] $truncatedSummary';
- }
- return '$kGithubSummary$summary';
- }
-
- /// Relevant APIs:
- /// https://developer.github.com/v3/checks/runs/#check-runs
- github.CheckRunConclusion conclusionForResult(bbv2.Status status) {
- if (status == bbv2.Status.CANCELED || status == bbv2.Status.FAILURE || status == bbv2.Status.INFRA_FAILURE) {
- return github.CheckRunConclusion.failure;
- } else if (status == bbv2.Status.SUCCESS) {
- return github.CheckRunConclusion.success;
- } else {
- // Now that result is gone this is a non terminal step.
- return github.CheckRunConclusion.empty;
- }
- }
-
- /// Transforms a [push_message.Status] to a [github.CheckRunStatus].
- /// Relevant APIs:
- /// https://developer.github.com/v3/checks/runs/#check-runs
- // TODO temporary as this needs to be adjusted as a COMPLETED state is no longer
- // a valid state from buildbucket v2.
- github.CheckRunStatus statusForResult(bbv2.Status status) {
- // ignore: exhaustive_cases
- switch (status) {
- case bbv2.Status.SUCCESS:
- case bbv2.Status.FAILURE:
- case bbv2.Status.CANCELED:
- case bbv2.Status.INFRA_FAILURE:
- return github.CheckRunStatus.completed;
- case bbv2.Status.SCHEDULED:
- return github.CheckRunStatus.queued;
- case bbv2.Status.STARTED:
- return github.CheckRunStatus.inProgress;
- default:
- throw StateError('unreachable');
- }
- }
-
- /// Given a [headSha] and [checkSuiteId], finds the [PullRequest] that matches.
- Future<github.PullRequest?> findMatchingPullRequest(
- github.RepositorySlug slug,
- String headSha,
- int checkSuiteId,
- ) async {
- final GithubService githubService = await config.createDefaultGitHubService();
-
- // There could be multiple PRs that have the same [headSha] commit.
- final List<github.Issue> prIssues = await githubService.searchIssuesAndPRs(slug, '$headSha type:pr');
-
- for (final prIssue in prIssues) {
- final int prNumber = prIssue.number;
-
- // Each PR can have multiple check suites.
- final List<github.CheckSuite> checkSuites = await githubChecksUtil.listCheckSuitesForRef(
- githubService.github,
- slug,
- ref: 'refs/pull/$prNumber/head',
- );
-
- // Use check suite ID equality to verify that we have iterated to the correct PR.
- final bool doesPrIncludeMatchingCheckSuite = checkSuites.any((checkSuite) => checkSuite.id! == checkSuiteId);
- if (doesPrIncludeMatchingCheckSuite) {
- return githubService.getPullRequest(slug, prNumber);
- }
- }
-
- return null;
- }
-}
diff --git a/app_dart/lib/src/service/luci_build_service.dart b/app_dart/lib/src/service/luci_build_service.dart
index a96fe71..25f42e6 100644
--- a/app_dart/lib/src/service/luci_build_service.dart
+++ b/app_dart/lib/src/service/luci_build_service.dart
@@ -8,11 +8,10 @@
import 'dart:typed_data';
import 'package:cocoon_service/cocoon_service.dart';
-import 'package:fixnum/fixnum.dart';
import 'package:github/github.dart' as github;
import 'package:github/hooks.dart';
import 'package:googleapis/firestore/v1.dart' hide Status;
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
+import 'package:googleapis/pubsub/v1.dart';
import '../foundation/github_checks_util.dart';
import '../model/appengine/commit.dart';
@@ -21,11 +20,10 @@
import '../model/firestore/task.dart' as firestore;
import '../model/ci_yaml/target.dart';
import '../model/github/checks.dart' as cocoon_checks;
-import '../model/luci/push_message.dart' as push_message;
import '../model/luci/buildbucket.dart';
+import '../model/luci/push_message.dart' as push_message;
import '../service/datastore.dart';
import '../service/logging.dart';
-import 'build_bucket_v2_client.dart';
import 'exceptions.dart';
import 'github_service.dart';
@@ -37,7 +35,6 @@
required this.config,
required this.cache,
required this.buildBucketClient,
- required this.buildBucketV2Client,
GithubChecksUtil? githubChecksUtil,
GerritService? gerritService,
this.pubsub = const PubSub(),
@@ -45,7 +42,6 @@
gerritService = gerritService ?? GerritService(config: config);
BuildBucketClient buildBucketClient;
- BuildBucketV2Client buildBucketV2Client;
final CacheService cache;
Config config;
GithubChecksUtil githubChecksUtil;
@@ -53,11 +49,7 @@
final PubSub pubsub;
- static const Set<Status> failStatusSet = <Status>{
- Status.canceled,
- Status.failure,
- Status.infraFailure,
- };
+ static const Set<Status> failStatusSet = <Status>{Status.canceled, Status.failure, Status.infraFailure};
static const int kBackfillPriority = 35;
static const int kDefaultPriority = 30;
@@ -72,7 +64,6 @@
/// Name of the subcache to store luci build related values in redis.
static const String subCacheName = 'luci';
- // the Request objects here are the BatchRequest object in bbv2.
/// Shards [rows] into several sublists of size [maxEntityGroups].
Future<List<List<Request>>> shard(List<Request> requests, int max) async {
final List<List<Request>> shards = <List<Request>>[];
@@ -82,10 +73,7 @@
return shards;
}
- /// Fetches an Iterable of try BuildBucket [Build]s.
- ///
- /// Returns a list of BuildBucket [Build]s for a given Github [slug], [sha],
- /// and [builderName].
+ /// Returns an Iterable of try BuildBucket build for a given Github [slug], [sha], [builderName].
Future<Iterable<Build>> getTryBuilds(
github.RepositorySlug slug,
String sha,
@@ -98,31 +86,7 @@
return getBuilds(slug, sha, builderName, 'try', tags);
}
- /// Fetches an Iterable of try BuildBucket V2 [Build]s.
- ///
- /// Returns a list of BuildBucket [Build]s for a given Github [slug], [sha],
- /// and [builderName].
- Future<Iterable<bbv2.Build>> getTryBuildsV2(
- github.RepositorySlug slug,
- String sha,
- String? builderName,
- ) async {
- final List<bbv2.StringPair> tags = [
- bbv2.StringPair(key: 'buildset', value: 'sha/git/$sha'),
- bbv2.StringPair(key: 'user_agent', value: 'flutter-cocoon'),
- ];
- return getBuildsV2(
- slug,
- sha,
- builderName,
- 'try',
- tags,
- );
- }
-
- /// Fetches an Iterable of try BuildBucket [Build]s.
- ///
- /// Returns a list of BuildBucket [Build]s for a given Github [PullRequest].
+ /// Returns an Iterable of try Buildbucket [Build]s for a given [PullRequest].
Future<Iterable<Build>> getTryBuildsByPullRequest(
github.PullRequest pullRequest,
) async {
@@ -135,32 +99,8 @@
return getBuilds(slug, null, null, 'try', tags);
}
- /// Fetches an Iterable of try BuildBucket V2 [Build]s.
- ///
- /// Returns a list of BuildBucket V2 [Build]s for a given Github
- /// [PullRequest].
- Future<Iterable<bbv2.Build>> getTryBuildsByPullRequestV2(
- github.PullRequest pullRequest,
- ) async {
- final github.RepositorySlug slug = pullRequest.base!.repo!.slug();
- final List<bbv2.StringPair> tags = [
- bbv2.StringPair(key: 'buildset', value: 'pr/git/${pullRequest.number}'),
- bbv2.StringPair(key: 'github_link', value: 'https://github.com/${slug.fullName}/pull/${pullRequest.number}'),
- bbv2.StringPair(key: 'user_agent', value: 'flutter-cocoon'),
- ];
- return getBuildsV2(
- slug,
- null,
- null,
- 'try',
- tags,
- );
- }
-
- /// Fetches an Iterable of prod BuildBucket [Build]s.
- ///
- /// Returns an Iterable of prod BuildBucket [Build]s for a given Github
- /// [slug], [sha], and [builderName].
+ /// Returns an Iterable of prod BuildBucket build for a given Github [slug], [commitSha],
+ /// [builderName] and [repo].
Future<Iterable<Build>> getProdBuilds(
github.RepositorySlug slug,
String commitSha,
@@ -170,10 +110,8 @@
return getBuilds(slug, commitSha, builderName, 'prod', tags);
}
- /// Fetches an Iterable of try BuildBucket [Build]s.
- ///
- /// Returns an iterable of try BuildBucket [Build]s for a given Github [slug],
- /// [sha], [builderName], [bucket], and [tags].
+ /// Returns an iterable of BuildBucket builds for a given Github [slug], [commitSha],
+ /// [builderName], [bucket] and [tags].
Future<Iterable<Build>> getBuilds(
github.RepositorySlug? slug,
String? commitSha,
@@ -212,62 +150,6 @@
return builds;
}
- Future<Iterable<bbv2.Build>> getBuildsV2(
- github.RepositorySlug? slug,
- String? commitSha,
- String? builderName,
- String bucket,
- List<bbv2.StringPair> tags,
- ) async {
- // These paths are fields in the Build message.
- final bbv2.FieldMask fieldMask = bbv2.FieldMask(
- paths: {
- 'id',
- 'builder',
- 'tags',
- 'status',
- 'input.properties',
- },
- );
-
- final bbv2.BuildMask buildMask = bbv2.BuildMask(fields: fieldMask);
-
- final bbv2.BuildPredicate buildPredicate = bbv2.BuildPredicate(
- builder: bbv2.BuilderID(
- project: 'flutter',
- bucket: bucket,
- builder: builderName,
- ),
- tags: tags,
- );
-
- final bbv2.SearchBuildsRequest searchBuildsRequest = bbv2.SearchBuildsRequest(
- predicate: buildPredicate,
- mask: buildMask,
- );
-
- // Need to create one of these for each request in the batch.
- final bbv2.BatchRequest_Request batchRequestRequest = bbv2.BatchRequest_Request(
- searchBuilds: searchBuildsRequest,
- );
-
- final bbv2.BatchResponse batchResponse = await buildBucketV2Client.batch(
- bbv2.BatchRequest(
- requests: {batchRequestRequest},
- ),
- );
-
- log.info('Reponses from get builds batch request = ${batchResponse.responses.length}');
- for (bbv2.BatchResponse_Response response in batchResponse.responses) {
- log.info('Found a response: ${response.toString()}');
- }
-
- final Iterable<bbv2.Build> builds = batchResponse.responses
- .map((bbv2.BatchResponse_Response response) => response.searchBuilds)
- .expand((bbv2.SearchBuildsResponse? response) => response!.builds);
- return builds;
- }
-
/// Schedules presubmit [targets] on BuildBucket for [pullRequest].
Future<List<Target>> scheduleTryBuilds({
required List<Target> targets,
@@ -350,7 +232,6 @@
/// Cancels all the current builds on [pullRequest] with [reason].
///
/// Builds are queried based on the [RepositorySlug] and pull request number.
- //
Future<void> cancelBuilds(github.PullRequest pullRequest, String reason) async {
log.info(
'Attempting to cancel builds for pullrequest ${pullRequest.base!.repo!.fullName}/${pullRequest.number}',
@@ -385,40 +266,6 @@
}
}
- Future<void> cancelBuildsV2(github.PullRequest pullRequest, String reason) async {
- log.info(
- 'Attempting to cancel builds (v2) for pullrequest ${pullRequest.base!.repo!.fullName}/${pullRequest.number}',
- );
-
- final Iterable<bbv2.Build> builds = await getTryBuildsByPullRequestV2(pullRequest);
- log.info('Found ${builds.length} builds.');
-
- if (builds.isEmpty) {
- log.warning('No builds were found for pull request ${pullRequest.base!.repo!.fullName}.');
- return;
- }
-
- final List<bbv2.BatchRequest_Request> requests = <bbv2.BatchRequest_Request>[];
- for (bbv2.Build build in builds) {
- if (build.status == bbv2.Status.SCHEDULED || build.status == bbv2.Status.STARTED) {
- // Scheduled status includes scheduled and pending tasks.
- log.info('Cancelling build with build id ${build.id}.');
- requests.add(
- bbv2.BatchRequest_Request(
- cancelBuild: bbv2.CancelBuildRequest(
- id: build.id,
- summaryMarkdown: reason,
- ),
- ),
- );
- }
- }
-
- if (requests.isNotEmpty) {
- await buildBucketV2Client.batch(bbv2.BatchRequest(requests: requests));
- }
- }
-
/// Filters [builders] to only those that failed on [pullRequest].
Future<List<Build?>> failedBuilds(
github.PullRequest pullRequest,
@@ -575,12 +422,6 @@
return buildBucketClient.getBuild(request);
}
- // TODO
- Future<bbv2.Build> getBuildByIdV2(Int64 id, {bbv2.BuildMask? buildMask}) async {
- final bbv2.GetBuildRequest request = bbv2.GetBuildRequest(id: id, mask: buildMask);
- return buildBucketV2Client.getBuild(request);
- }
-
/// Gets builder list whose config is pre-defined in LUCI.
///
/// Returns cache if existing. Otherwise make the RPC call to fetch list.
diff --git a/app_dart/lib/src/service/luci_build_service_v2.dart b/app_dart/lib/src/service/luci_build_service_v2.dart
deleted file mode 100644
index af7a1fb..0000000
--- a/app_dart/lib/src/service/luci_build_service_v2.dart
+++ /dev/null
@@ -1,1023 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-import 'dart:math';
-import 'dart:typed_data';
-
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:collection/collection.dart';
-import 'package:fixnum/fixnum.dart';
-import 'package:github/github.dart' as github;
-import 'package:github/hooks.dart';
-import 'package:googleapis/firestore/v1.dart' hide Status;
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-
-import '../foundation/github_checks_util.dart';
-import '../model/appengine/commit.dart';
-import '../model/appengine/task.dart';
-import '../model/firestore/commit.dart' as firestore_commit;
-import '../model/firestore/task.dart' as firestore;
-import '../model/ci_yaml/target.dart';
-import '../model/github/checks.dart' as cocoon_checks;
-import '../model/luci/buildbucket.dart'; // targets use their own RequestedDimension which is defined here for some reason.
-import '../model/luci/user_data.dart';
-import '../service/datastore.dart';
-import '../service/logging.dart';
-import 'build_bucket_v2_client.dart';
-import 'exceptions.dart';
-import 'github_service.dart';
-
-/// Class to interact with LUCI buildbucket to get, trigger
-/// and cancel builds for github repos. It uses [config.luciTryBuilders] to
-/// get the list of available builders.
-class LuciBuildServiceV2 {
- LuciBuildServiceV2({
- required this.config,
- required this.cache,
- required this.buildBucketV2Client,
- GithubChecksUtil? githubChecksUtil,
- GerritService? gerritService,
- this.pubsub = const PubSub(),
- }) : githubChecksUtil = githubChecksUtil ?? const GithubChecksUtil(),
- gerritService = gerritService ?? GerritService(config: config);
-
- BuildBucketV2Client buildBucketV2Client;
- final CacheService cache;
- Config config;
- GithubChecksUtil githubChecksUtil;
- GerritService gerritService;
-
- final PubSub pubsub;
-
- static const Set<bbv2.Status> failStatusSet = <bbv2.Status>{
- bbv2.Status.CANCELED,
- bbv2.Status.FAILURE,
- bbv2.Status.INFRA_FAILURE,
- };
-
- static const int kBackfillPriority = 35;
- static const int kDefaultPriority = 30;
- static const int kRerunPriority = 29;
-
- /// Github labels have a max length of 100, so conserve chars here.
- /// This is currently used by packages repo only.
- /// See: https://github.com/flutter/flutter/issues/130076
- static const String githubBuildLabelPrefix = 'override:';
- static const String propertiesGithubBuildLabelName = 'overrides';
-
- /// Name of the subcache to store luci build related values in redis.
- static const String subCacheName = 'luci';
-
- // the Request objects here are the BatchRequest object in bbv2.
- /// Shards [rows] into several sublists of size [maxEntityGroups].
- Future<List<List<bbv2.BatchRequest_Request>>> shard({
- required List<bbv2.BatchRequest_Request> requests,
- required int maxShardSize,
- }) async {
- final List<List<bbv2.BatchRequest_Request>> shards = [];
- for (int i = 0; i < requests.length; i += maxShardSize) {
- shards.add(requests.sublist(i, i + min<int>(requests.length - i, maxShardSize)));
- }
- return shards;
- }
-
- /// Fetches an Iterable of try BuildBucket [Build]s.
- ///
- /// Returns a list of BuildBucket [Build]s for a given Github [slug], [sha],
- /// and [builderName].
- Future<Iterable<bbv2.Build>> getTryBuilds({
- required github.RepositorySlug slug,
- required String sha,
- String? builderName,
- }) async {
- final List<bbv2.StringPair> tags = [
- bbv2.StringPair(
- key: 'buildset',
- value: 'sha/git/$sha',
- ),
- bbv2.StringPair(
- key: 'user_agent',
- value: 'flutter-cocoon',
- ),
- ];
- return getBuilds(
- slug: slug,
- commitSha: sha,
- builderName: builderName,
- bucket: 'try',
- tags: tags,
- );
- }
-
- /// Fetches an Iterable of try BuildBucket [Build]s.
- ///
- /// Returns a list of BuildBucket [Build]s for a given Github [PullRequest].
- Future<Iterable<bbv2.Build>> getTryBuildsByPullRequest({
- required github.PullRequest pullRequest,
- }) async {
- final github.RepositorySlug slug = pullRequest.base!.repo!.slug();
- final List<bbv2.StringPair> tags = [
- bbv2.StringPair(
- key: 'buildset',
- value: 'pr/git/${pullRequest.number}',
- ),
- bbv2.StringPair(
- key: 'github_link',
- value: 'https://github.com/${slug.fullName}/pull/${pullRequest.number}',
- ),
- bbv2.StringPair(
- key: 'user_agent',
- value: 'flutter-cocoon',
- ),
- ];
- return getBuilds(
- slug: slug,
- commitSha: null,
- builderName: null,
- bucket: 'try',
- tags: tags,
- );
- }
-
- /// Fetches an Iterable of prod BuildBucket [Build]s.
- ///
- /// Returns an Iterable of prod BuildBucket [Build]s for a given Github
- /// [slug], [sha], and [builderName].
- Future<Iterable<bbv2.Build>> getProdBuilds({
- required github.RepositorySlug slug,
- required String commitSha,
- String? builderName,
- }) async {
- final List<bbv2.StringPair> tags = [];
- return getBuilds(
- slug: slug,
- commitSha: commitSha,
- builderName: builderName,
- bucket: 'prod',
- tags: tags,
- );
- }
-
- /// Fetches an Iterable of try BuildBucket [Build]s.
- ///
- /// Returns an iterable of try BuildBucket [Build]s for a given Github [slug],
- /// [sha], [builderName], [bucket], and [tags].
- Future<Iterable<bbv2.Build>> getBuilds({
- required github.RepositorySlug? slug,
- required String? commitSha,
- required String? builderName,
- required String bucket,
- required List<bbv2.StringPair> tags,
- }) async {
- final bbv2.FieldMask fieldMask = bbv2.FieldMask(
- paths: {
- 'id',
- 'builder',
- 'tags',
- 'status',
- 'input.properties',
- },
- );
-
- final bbv2.BuildMask buildMask = bbv2.BuildMask(fields: fieldMask);
-
- final bbv2.BuildPredicate buildPredicate = bbv2.BuildPredicate(
- builder: bbv2.BuilderID(
- project: 'flutter',
- bucket: bucket,
- builder: builderName,
- ),
- tags: tags,
- );
-
- final bbv2.SearchBuildsRequest searchBuildsRequest = bbv2.SearchBuildsRequest(
- predicate: buildPredicate,
- mask: buildMask,
- );
-
- // Need to create one of these for each request in the batch.
- final bbv2.BatchRequest_Request batchRequestRequest = bbv2.BatchRequest_Request(
- searchBuilds: searchBuildsRequest,
- );
-
- final bbv2.BatchResponse batchResponse = await buildBucketV2Client.batch(
- bbv2.BatchRequest(
- requests: {batchRequestRequest},
- ),
- );
-
- log.info('Reponses from get builds batch request = ${batchResponse.responses.length}');
- for (bbv2.BatchResponse_Response response in batchResponse.responses) {
- log.info('Found a response: ${response.toString()}');
- }
-
- final Iterable<bbv2.Build> builds = batchResponse.responses
- .map((bbv2.BatchResponse_Response response) => response.searchBuilds)
- .expand((bbv2.SearchBuildsResponse? response) => response!.builds);
- return builds;
- }
-
- /// Schedules presubmit [targets] on BuildBucket for [pullRequest].
- Future<List<Target>> scheduleTryBuilds({
- required List<Target> targets,
- required github.PullRequest pullRequest,
- CheckSuiteEvent? checkSuiteEvent,
- }) async {
- if (targets.isEmpty) {
- return targets;
- }
-
- // final bbv2.BatchRequest batchRequest = bbv2.BatchRequest().createEmptyInstance();
- final List<bbv2.BatchRequest_Request> batchRequestList = [];
- final List<String> branches = await gerritService.branches(
- 'flutter-review.googlesource.com',
- 'recipes',
- filterRegex: 'flutter-.*|fuchsia.*',
- );
- log.info('Available release branches: $branches');
-
- final String sha = pullRequest.head!.sha!;
- String cipdVersion = 'refs/heads/${pullRequest.base!.ref!}';
- cipdVersion = branches.contains(cipdVersion) ? cipdVersion : config.defaultRecipeBundleRef;
-
- for (Target target in targets) {
- final github.CheckRun checkRun = await githubChecksUtil.createCheckRun(
- config,
- target.slug,
- sha,
- target.value.name,
- );
-
- final github.RepositorySlug slug = pullRequest.base!.repo!.slug();
-
- final Map<String, dynamic> userData = <String, dynamic>{
- 'builder_name': target.value.name,
- 'check_run_id': checkRun.id,
- 'commit_sha': sha,
- 'commit_branch': pullRequest.base!.ref!.replaceAll('refs/heads/', ''),
- };
-
- final List<bbv2.StringPair> tags = [
- bbv2.StringPair(
- key: 'github_checkrun',
- value: checkRun.id.toString(),
- ),
- ];
-
- final Map<String, Object> properties = target.getProperties();
- properties.putIfAbsent(
- 'git_branch',
- () => pullRequest.base!.ref!.replaceAll('refs/heads/', ''),
- );
-
- // final String json = jsonEncode(properties);
- final bbv2.Struct struct = bbv2.Struct.create();
- struct.mergeFromProto3Json(properties);
-
- final List<String>? labels = extractPrefixedLabels(
- issueLabels: pullRequest.labels,
- prefix: githubBuildLabelPrefix,
- );
-
- if (labels != null && labels.isNotEmpty) {
- properties[propertiesGithubBuildLabelName] = labels;
- }
-
- // Convert from target RequestedDimensions to bbv2.RequestedDimensions.
- final List<RequestedDimension> targetDimensions = target.getDimensions();
- final List<bbv2.RequestedDimension> requestedDimensions = <bbv2.RequestedDimension>[];
- for (RequestedDimension requestedDimension in targetDimensions) {
- requestedDimensions.add(bbv2.RequestedDimension(key: requestedDimension.key, value: requestedDimension.value));
- }
-
- batchRequestList.add(
- bbv2.BatchRequest_Request(
- scheduleBuild: await _createPresubmitScheduleBuild(
- slug: slug,
- sha: pullRequest.head!.sha!,
- //Use target.value.name here otherwise tests will die due to null checkRun.name.
- checkName: target.value.name,
- pullRequestNumber: pullRequest.number!,
- cipdVersion: cipdVersion,
- userData: userData,
- properties: properties,
- tags: tags,
- dimensions: requestedDimensions,
- ),
- ),
- );
- }
-
- final Iterable<List<bbv2.BatchRequest_Request>> requestPartitions = await shard(
- requests: batchRequestList,
- maxShardSize: config.schedulingShardSize,
- );
- for (List<bbv2.BatchRequest_Request> requestPartition in requestPartitions) {
- final bbv2.BatchRequest batchRequest = bbv2.BatchRequest(requests: requestPartition);
- await pubsub.publish('cocoon-scheduler-requests', batchRequest.toProto3Json());
- }
-
- return targets;
- }
-
- /// Cancels all the current builds on [pullRequest] with [reason].
- ///
- /// Builds are queried based on the [RepositorySlug] and pull request number.
- //
- Future<void> cancelBuilds({
- required github.PullRequest pullRequest,
- required String reason,
- }) async {
- log.info(
- 'Attempting to cancel builds (v2) for pullrequest ${pullRequest.base!.repo!.fullName}/${pullRequest.number}',
- );
-
- final Iterable<bbv2.Build> builds = await getTryBuildsByPullRequest(pullRequest: pullRequest);
- log.info('Found ${builds.length} builds.');
-
- if (builds.isEmpty) {
- log.warning('No builds were found for pull request ${pullRequest.base!.repo!.fullName}.');
- return;
- }
-
- final List<bbv2.BatchRequest_Request> requests = <bbv2.BatchRequest_Request>[];
- for (bbv2.Build build in builds) {
- if (build.status == bbv2.Status.SCHEDULED || build.status == bbv2.Status.STARTED) {
- // Scheduled status includes scheduled and pending tasks.
- log.info('Cancelling build with build id ${build.id}.');
- requests.add(
- bbv2.BatchRequest_Request(
- cancelBuild: bbv2.CancelBuildRequest(
- id: build.id,
- summaryMarkdown: reason,
- ),
- ),
- );
- }
- }
-
- if (requests.isNotEmpty) {
- await buildBucketV2Client.batch(bbv2.BatchRequest(requests: requests));
- }
- }
-
- /// Filters [builders] to only those that failed on [pullRequest].
- Future<List<bbv2.Build?>> failedBuilds({
- required github.PullRequest pullRequest,
- required List<Target> targets,
- }) async {
- final Iterable<bbv2.Build> builds = await getTryBuilds(
- slug: pullRequest.base!.repo!.slug(),
- sha: pullRequest.head!.sha!,
- builderName: null,
- );
- final Iterable<String> builderNames = targets.map((Target target) => target.value.name);
- // Return only builds that exist in the configuration file.
- final Iterable<bbv2.Build?> failedBuilds =
- builds.where((bbv2.Build? build) => failStatusSet.contains(build!.status));
- final Iterable<bbv2.Build?> expectedFailedBuilds =
- failedBuilds.where((bbv2.Build? build) => builderNames.contains(build!.builder.builder));
- return expectedFailedBuilds.toList();
- }
-
- /// Sends [ScheduleBuildRequest] using information from a given build's
- /// [BuildPushMessage].
- ///
- /// The buildset, user_agent, and github_link tags are applied to match the
- /// original build. The build properties and user data from the original build
- /// are also preserved.
- ///
- /// The [currentAttempt] is used to track the number of current build attempt.
- Future<bbv2.Build> rescheduleBuild({
- required String builderName,
- required bbv2.Build build,
- required int rescheduleAttempt,
- required Map<String, dynamic> userDataMap,
- }) async {
- final List<bbv2.StringPair> tags = build.tags;
- // need to replace the current_attempt
- bbv2.StringPair attempt;
- final (int, bbv2.StringPair)? record =
- tags.indexed.firstWhereOrNull((element) => element.$2.key == 'current_attempt');
- if (record == null) {
- attempt = bbv2.StringPair(
- key: 'current_attempt',
- value: rescheduleAttempt.toString(),
- );
- } else {
- attempt = tags.removeAt(record.$1);
- attempt.value = rescheduleAttempt.toString();
- }
- tags.add(attempt);
-
- return buildBucketV2Client.scheduleBuild(
- bbv2.ScheduleBuildRequest(
- builder: build.builder,
- tags: tags,
- properties: build.input.properties,
- notify: bbv2.NotificationConfig(
- pubsubTopic: 'projects/flutter-dashboard/topics/build-bucket-presubmit',
- userData: UserData.encodeUserDataToBytes(userDataMap),
- ),
- ),
- );
- }
-
- /// Sends presubmit [ScheduleBuildRequest] for a pull request using [checkRunEvent].
- ///
- /// Returns the [bbv2.Build] returned by scheduleBuildRequest.
- Future<bbv2.Build> reschedulePresubmitBuildUsingCheckRunEvent({
- required cocoon_checks.CheckRunEvent checkRunEvent,
- }) async {
- final github.RepositorySlug slug = checkRunEvent.repository!.slug();
-
- final String sha = checkRunEvent.checkRun!.headSha!;
- final String checkName = checkRunEvent.checkRun!.name!;
-
- final github.CheckRun githubCheckRun = await githubChecksUtil.createCheckRun(
- config,
- slug,
- sha,
- checkName,
- );
-
- final Iterable<bbv2.Build> builds = await getTryBuilds(
- slug: slug,
- sha: sha,
- builderName: checkName,
- );
- if (builds.isEmpty) {
- throw NoBuildFoundException('Unable to find try build.');
- }
-
- final bbv2.Build build = builds.first;
-
- // Assumes that the tags are already defined.
- final List<bbv2.StringPair> tags = build.tags;
- final String prString =
- tags.firstWhere((element) => element.key == 'buildset' && element.value.startsWith('pr/git')).value;
- final String cipdVersion = tags.firstWhere((element) => element.key == 'cipd_version').value;
- final String githubLink = tags.firstWhere((element) => element.key == 'github_link').value;
-
- final String repoName = githubLink.split('/')[4];
- final String branch = Config.defaultBranch(github.RepositorySlug('flutter', repoName));
- final int prNumber = int.parse(prString.split('/')[2]);
-
- final Map<String, dynamic> userData = <String, dynamic>{
- 'check_run_id': githubCheckRun.id,
- 'commit_branch': branch,
- 'commit_sha': sha,
- };
-
- final bbv2.Struct propertiesStruct =
- (build.input.hasProperties()) ? build.input.properties : bbv2.Struct().createEmptyInstance();
- final Map<String, Object?> properties = propertiesStruct.toProto3Json() as Map<String, Object?>;
- final GithubService githubService = await config.createGithubService(slug);
-
- final List<github.IssueLabel> issueLabels = await githubService.getIssueLabels(
- slug,
- prNumber,
- );
- final List<String>? labels = extractPrefixedLabels(
- issueLabels: issueLabels,
- prefix: githubBuildLabelPrefix,
- );
-
- if (labels != null && labels.isNotEmpty) {
- properties[propertiesGithubBuildLabelName] = labels;
- }
-
- final bbv2.ScheduleBuildRequest scheduleBuildRequest = await _createPresubmitScheduleBuild(
- slug: slug,
- sha: sha,
- checkName: checkName,
- pullRequestNumber: prNumber,
- cipdVersion: cipdVersion,
- properties: properties,
- userData: userData,
- );
-
- final bbv2.Build scheduleBuild = await buildBucketV2Client.scheduleBuild(scheduleBuildRequest);
- final String buildUrl = 'https://ci.chromium.org/ui/b/${scheduleBuild.id}';
- await githubChecksUtil.updateCheckRun(config, slug, githubCheckRun, detailsUrl: buildUrl);
- return scheduleBuild;
- }
-
- /// Collect any label whose name is prefixed by the prefix [String].
- ///
- /// Returns a [List] of prefixed label names as [String]s.
- List<String>? extractPrefixedLabels({
- List<github.IssueLabel>? issueLabels,
- required String prefix,
- }) {
- return issueLabels?.where((label) => label.name.startsWith(prefix)).map((obj) => obj.name).toList();
- }
-
- /// Sends postsubmit [ScheduleBuildRequest] for a commit using [checkRunEvent], [Commit], [Task], and [Target].
- ///
- /// Returns the [bbv2.Build] returned by scheduleBuildRequest.
- Future<bbv2.Build> reschedulePostsubmitBuildUsingCheckRunEvent(
- cocoon_checks.CheckRunEvent checkRunEvent, {
- required Commit commit,
- required Task task,
- required Target target,
- }) async {
- final github.RepositorySlug slug = checkRunEvent.repository!.slug();
- final String sha = checkRunEvent.checkRun!.headSha!;
- final String checkName = checkRunEvent.checkRun!.name!;
-
- final Iterable<bbv2.Build> builds = await getProdBuilds(
- slug: slug,
- commitSha: sha,
- builderName: checkName,
- );
- if (builds.isEmpty) {
- throw NoBuildFoundException('Unable to find prod build.');
- }
-
- final bbv2.Build build = builds.first;
-
- // get it as a struct first and convert it.
- final bbv2.Struct propertiesStruct = build.input.properties;
- final Map<String, Object> properties = propertiesStruct.toProto3Json() as Map<String, Object>;
-
- // final Map<String, Object>? properties = build.input.properties;
- log.info('input ${build.input} properties $properties');
-
- final bbv2.ScheduleBuildRequest scheduleBuildRequest = await _createPostsubmitScheduleBuild(
- commit: commit,
- target: target,
- task: task,
- properties: properties,
- );
- final bbv2.Build scheduleBuild = await buildBucketV2Client.scheduleBuild(scheduleBuildRequest);
- return scheduleBuild;
- }
-
- /// Gets [bbv2.Build] using its [id] and passing the additional
- /// fields to be populated in the response.
- Future<bbv2.Build> getBuildById(
- Int64 id, {
- bbv2.BuildMask? buildMask,
- }) async {
- final bbv2.GetBuildRequest request = bbv2.GetBuildRequest(
- id: id,
- mask: buildMask,
- );
- return buildBucketV2Client.getBuild(request);
- }
-
- /// Gets builder list whose config is pre-defined in LUCI.
- ///
- /// Returns cache if existing. Otherwise make the RPC call to fetch list.
- Future<Set<String>> getAvailableBuilderSet({
- String project = 'flutter',
- String bucket = 'prod',
- }) async {
- final Uint8List? cacheValue = await cache.getOrCreate(
- subCacheName,
- 'builderlist',
- createFn: () => _getAvailableBuilderSet(
- project: project,
- bucket: bucket,
- ),
- // New commit triggering tasks should be finished within 5 mins.
- // The batch backfiller's execution frequency is also 5 mins.
- ttl: const Duration(minutes: 5),
- );
-
- return Set.from(String.fromCharCodes(cacheValue!).split(','));
- }
-
- /// Returns cache if existing, otherwise makes the RPC call to fetch list.
- ///
- /// Use [token] to make sure obtain all the list by calling RPC multiple times.
- Future<Uint8List> _getAvailableBuilderSet({
- String project = 'flutter',
- String bucket = 'prod',
- }) async {
- log.info('No cached value for builderList, start fetching via the rpc call.');
- final Set<String> availableBuilderSet = <String>{};
- bool hasToken = true;
- String? token;
- do {
- final bbv2.ListBuildersResponse listBuildersResponse = await buildBucketV2Client.listBuilders(
- bbv2.ListBuildersRequest(
- project: project,
- bucket: bucket,
- pageToken: token,
- ),
- );
- final List<String> availableBuilderList = listBuildersResponse.builders.map((e) => e.id.builder).toList();
- availableBuilderSet.addAll(<String>{...availableBuilderList});
- hasToken = listBuildersResponse.hasNextPageToken();
- if (hasToken) {
- token = listBuildersResponse.nextPageToken;
- }
- } while (hasToken && token != null);
- final String joinedBuilderSet = availableBuilderSet.toList().join(',');
- log.info('successfully fetched the builderSet: $joinedBuilderSet');
- return Uint8List.fromList(joinedBuilderSet.codeUnits);
- }
-
- /// Schedules list of post-submit builds deferring work to [schedulePostsubmitBuild].
- ///
- /// Returns empty list if all targets are successfully published to pub/sub. Otherwise,
- /// returns the original list.
- Future<List<Tuple<Target, Task, int>>> schedulePostsubmitBuilds({
- required Commit commit,
- required List<Tuple<Target, Task, int>> toBeScheduled,
- }) async {
- if (toBeScheduled.isEmpty) {
- log.fine('Skipping schedulePostsubmitBuilds as there are no targets to be scheduled by Cocoon');
- return toBeScheduled;
- }
- final List<bbv2.BatchRequest_Request> buildRequests = [];
- // bbv2.BatchRequest_Request batchRequest_Request = bbv2.BatchRequest_Request();
-
- Set<String> availableBuilderSet;
- try {
- availableBuilderSet = await getAvailableBuilderSet(
- project: 'flutter',
- bucket: 'prod',
- );
- } catch (error) {
- log.severe('Failed to get buildbucket builder list due to $error');
- return toBeScheduled;
- }
- log.info('Available builder list: $availableBuilderSet');
- for (Tuple<Target, Task, int> tuple in toBeScheduled) {
- // Non-existing builder target will be skipped from scheduling.
- if (!availableBuilderSet.contains(tuple.first.value.name)) {
- log.warning('Found no available builder for ${tuple.first.value.name}, commit ${commit.sha}');
- continue;
- }
- log.info('create postsubmit schedule request for target: ${tuple.first.value} in commit ${commit.sha}');
- final bbv2.ScheduleBuildRequest scheduleBuildRequest = await _createPostsubmitScheduleBuild(
- commit: commit,
- target: tuple.first,
- task: tuple.second,
- priority: tuple.third,
- );
- buildRequests.add(bbv2.BatchRequest_Request(scheduleBuild: scheduleBuildRequest));
- log.info('created postsubmit schedule request for target: ${tuple.first.value} in commit ${commit.sha}');
- }
-
- final bbv2.BatchRequest batchRequest = bbv2.BatchRequest(requests: buildRequests);
- log.fine(batchRequest);
- List<String> messageIds;
-
- try {
- messageIds = await pubsub.publish('cocoon-scheduler-requests', batchRequest.toProto3Json());
- log.info('Published $messageIds for commit ${commit.sha}');
- } catch (error) {
- log.severe('Failed to publish message to pub/sub due to $error');
- return toBeScheduled;
- }
- log.info('Published a request with ${buildRequests.length} builds');
- return <Tuple<Target, Task, int>>[];
- }
-
- /// Create a Presubmit ScheduleBuildRequest using the [slug], [sha], and
- /// [checkName] for the provided [build] with the provided [checkRunId].
- Future<bbv2.ScheduleBuildRequest> _createPresubmitScheduleBuild({
- required github.RepositorySlug slug,
- required String sha,
- required String checkName,
- required int pullRequestNumber,
- required String cipdVersion,
- Map<String, Object?>? properties,
- List<bbv2.StringPair>? tags,
- Map<String, dynamic>? userData,
- List<bbv2.RequestedDimension>? dimensions,
- }) async {
- final Map<String, dynamic> processedUserData = userData ?? <String, dynamic>{};
- processedUserData['repo_owner'] = slug.owner;
- processedUserData['repo_name'] = slug.name;
- processedUserData['user_agent'] = 'flutter-cocoon';
-
- final bbv2.BuilderID builderId = bbv2.BuilderID.create();
- builderId.bucket = 'try';
- builderId.project = 'flutter';
- builderId.builder = checkName;
-
- // Add the builderId.
- final bbv2.ScheduleBuildRequest scheduleBuildRequest = bbv2.ScheduleBuildRequest.create();
- scheduleBuildRequest.builder = builderId;
-
- final List<String> fields = [
- 'id',
- 'builder',
- 'number',
- 'status',
- 'tags',
- ];
- final bbv2.FieldMask fieldMask = bbv2.FieldMask(paths: fields);
- final bbv2.BuildMask buildMask = bbv2.BuildMask(fields: fieldMask);
- scheduleBuildRequest.mask = buildMask;
-
- // Set the executable.
- final bbv2.Executable executable = bbv2.Executable(cipdVersion: cipdVersion);
- scheduleBuildRequest.exe = executable;
-
- // Add the dimensions to the instance.
- final List<bbv2.RequestedDimension> instanceDimensions = scheduleBuildRequest.dimensions;
- instanceDimensions.addAll(dimensions ?? []);
-
- // Create the notification configuration for pubsub processing.
- final bbv2.NotificationConfig notificationConfig = bbv2.NotificationConfig().createEmptyInstance();
- notificationConfig.pubsubTopic = 'projects/flutter-dashboard/topics/build-bucket-presubmit';
- notificationConfig.userData = UserData.encodeUserDataToBytes(processedUserData)!;
- scheduleBuildRequest.notify = notificationConfig;
-
- // Add tags to the instance.
- final List<bbv2.StringPair> processTags = tags ?? <bbv2.StringPair>[];
- processTags.add(
- bbv2.StringPair(
- key: 'buildset',
- value: 'pr/git/$pullRequestNumber',
- ),
- );
- processTags.add(
- bbv2.StringPair(
- key: 'buildset',
- value: 'sha/git/$sha',
- ),
- );
- processTags.add(
- bbv2.StringPair(
- key: 'user_agent',
- value: 'flutter-cocoon',
- ),
- );
- processTags.add(
- bbv2.StringPair(
- key: 'github_link',
- value: 'https://github.com/${slug.owner}/${slug.name}/pull/$pullRequestNumber',
- ),
- );
- processTags.add(
- bbv2.StringPair(
- key: 'cipd_version',
- value: cipdVersion,
- ),
- );
- final List<bbv2.StringPair> instanceTags = scheduleBuildRequest.tags;
- instanceTags.addAll(processTags);
-
- properties ??= {};
- properties['git_url'] = 'https://github.com/${slug.owner}/${slug.name}';
- properties['git_ref'] = 'refs/pull/$pullRequestNumber/head';
- properties['exe_cipd_version'] = cipdVersion;
-
- final bbv2.Struct propertiesStruct = bbv2.Struct.create();
- propertiesStruct.mergeFromProto3Json(properties);
-
- scheduleBuildRequest.properties = propertiesStruct;
-
- return scheduleBuildRequest;
- }
-
- /// Creates a [ScheduleBuildRequest] for [target] and [task] against [commit].
- ///
- /// By default, build [priority] is increased for release branches.
- Future<bbv2.ScheduleBuildRequest> _createPostsubmitScheduleBuild({
- required Commit commit,
- required Target target,
- required Task task,
- Map<String, Object>? properties,
- List<bbv2.StringPair>? tags,
- int priority = kDefaultPriority,
- }) async {
- log.info('Creating postsubmit schedule builder for ${target.value.name} on commit ${commit.sha}');
- tags ??= [];
- tags.addAll([
- bbv2.StringPair(
- key: 'buildset',
- value: 'commit/git/${commit.sha}',
- ),
- bbv2.StringPair(
- key: 'buildset',
- value: 'commit/gitiles/flutter.googlesource.com/mirrors/${commit.slug.name}/+/${commit.sha}',
- ),
- ]);
-
- final String commitKey = task.parentKey!.id.toString();
- final String taskKey = task.key.id.toString();
- log.info('Scheduling builder: ${target.value.name} for commit ${commit.sha}');
- log.info('Task commit_key: $commitKey for task name: ${task.name}');
- log.info('Task task_key: $taskKey for task name: ${task.name}');
-
- final Map<String, dynamic> rawUserData = <String, dynamic>{
- 'commit_key': commitKey,
- 'task_key': taskKey,
- 'firestore_commit_document_name': commit.sha,
- };
-
- // Creates post submit checkrun only for unflaky targets from [config.postsubmitSupportedRepos].
- if (!target.value.bringup && config.postsubmitSupportedRepos.contains(target.slug)) {
- await createPostsubmitCheckRun(
- commit,
- target,
- rawUserData,
- );
- }
-
- tags.add(
- bbv2.StringPair(
- key: 'user_agent',
- value: 'flutter-cocoon',
- ),
- );
- // Tag `scheduler_job_id` is needed when calling buildbucket search build API.
- tags.add(
- bbv2.StringPair(
- key: 'scheduler_job_id',
- value: 'flutter/${target.value.name}',
- ),
- );
- // Default attempt is the initial attempt, which is 1.
- final bbv2.StringPair? attemptTag = tags.singleWhereOrNull((tag) => tag.key == 'current_attempt');
- if (attemptTag == null) {
- tags.add(
- bbv2.StringPair(
- key: 'current_attempt',
- value: '1',
- ),
- );
- }
-
- final String currentAttemptStr = tags.firstWhere((tag) => tag.key == 'current_attempt').value;
- rawUserData['firestore_task_document_name'] = '${commit.sha}_${task.name}_$currentAttemptStr';
-
- final Map<String, Object> processedProperties = target.getProperties();
- processedProperties.addAll(properties ?? <String, Object>{});
- processedProperties['git_branch'] = commit.branch!;
- final String cipdExe = 'refs/heads/${commit.branch}';
- processedProperties['exe_cipd_version'] = cipdExe;
-
- final bbv2.Struct propertiesStruct = bbv2.Struct.create();
- propertiesStruct.mergeFromProto3Json(processedProperties);
-
- // Convert from target RequestedDimensions to bbv2.RequestedDimensions.
- final List<RequestedDimension> targetDimensions = target.getDimensions();
- final List<bbv2.RequestedDimension> requestedDimensions = <bbv2.RequestedDimension>[];
- for (RequestedDimension requestedDimension in targetDimensions) {
- requestedDimensions.add(bbv2.RequestedDimension(key: requestedDimension.key, value: requestedDimension.value));
- }
-
- final bbv2.Executable executable = bbv2.Executable(cipdVersion: cipdExe);
-
- log.info('Constructing the postsubmit schedule build request for ${target.value.name} on commit ${commit.sha}.');
-
- return bbv2.ScheduleBuildRequest(
- builder: bbv2.BuilderID(
- project: 'flutter',
- bucket: target.getBucket(),
- builder: target.value.name,
- ),
- dimensions: requestedDimensions,
- exe: executable,
- gitilesCommit: bbv2.GitilesCommit(
- project: 'mirrors/${commit.slug.name}',
- host: 'flutter.googlesource.com',
- ref: 'refs/heads/${commit.branch}',
- id: commit.sha,
- ),
- notify: bbv2.NotificationConfig(
- pubsubTopic: 'projects/flutter-dashboard/topics/build-bucket-postsubmit',
- userData: UserData.encodeUserDataToBytes(rawUserData),
- ),
- tags: tags,
- properties: propertiesStruct,
- priority: priority,
- );
- }
-
- /// Creates postsubmit check runs for prod targets in supported repositories.
- Future<void> createPostsubmitCheckRun(
- Commit commit,
- Target target,
- Map<String, dynamic> rawUserData,
- ) async {
- final github.CheckRun checkRun = await githubChecksUtil.createCheckRun(
- config,
- target.slug,
- commit.sha!,
- target.value.name,
- );
- rawUserData['check_run_id'] = checkRun.id;
- rawUserData['commit_sha'] = commit.sha;
- rawUserData['commit_branch'] = commit.branch;
- rawUserData['builder_name'] = target.value.name;
- rawUserData['repo_owner'] = target.slug.owner;
- rawUserData['repo_name'] = target.slug.name;
- }
-
- /// Check to auto-rerun TOT test failures.
- ///
- /// A builder will be retried if:
- /// 1. It has been tried below the max retry limit
- /// 2. It is for the tip of tree
- /// 3. The last known status is not green
- /// 4. [ignoreChecks] is false. This allows manual reruns to bypass the Cocoon state.
- Future<bool> checkRerunBuilder({
- required Commit commit,
- required Target target,
- required Task task,
- required DatastoreService datastore,
- required firestore.Task taskDocument,
- required FirestoreService firestoreService,
- List<bbv2.StringPair>? tags,
- bool ignoreChecks = false,
- }) async {
- if (ignoreChecks == false && await _shouldRerunBuilderFirestore(taskDocument, firestoreService) == false) {
- return false;
- }
-
- log.info('Rerun builder: ${target.value.name} for commit ${commit.sha}');
- tags ??= <bbv2.StringPair>[];
- final bbv2.StringPair? triggerTag =
- tags.singleWhereOrNull((element) => element.key == 'trigger_type' && element.value == 'auto_retry');
- if (triggerTag == null) {
- tags.add(
- bbv2.StringPair(
- key: 'trigger_type',
- value: 'auto_retry',
- ),
- );
- }
-
- try {
- // Updates task status in Datastore.
- task.attempts = (task.attempts ?? 0) + 1;
- // Mark task as in progress to ensure it isn't scheduled over
- task.status = Task.statusInProgress;
- await datastore.insert(<Task>[task]);
-
- // Updates task status in Firestore.
- final int newAttempt = int.parse(taskDocument.name!.split('_').last) + 1;
- tags.add(bbv2.StringPair(key: 'current_attempt', value: newAttempt.toString()));
- taskDocument.resetAsRetry(attempt: newAttempt);
- taskDocument.setStatus(firestore.Task.statusInProgress);
- final List<Write> writes = documentsToWrites([taskDocument], exists: false);
- await firestoreService.batchWriteDocuments(BatchWriteRequest(writes: writes), kDatabase);
- } catch (error) {
- log.severe(
- 'updating task ${taskDocument.taskName} of commit ${taskDocument.commitSha} failure: $error. Skipping rescheduling.',
- );
- return false;
- }
-
- final bbv2.BatchRequest request = bbv2.BatchRequest(
- requests: <bbv2.BatchRequest_Request>[
- bbv2.BatchRequest_Request(
- scheduleBuild: await _createPostsubmitScheduleBuild(
- commit: commit,
- target: target,
- task: task,
- priority: kRerunPriority,
- properties: Config.defaultProperties,
- tags: tags,
- ),
- ),
- ],
- );
-
- await pubsub.publish(
- 'cocoon-scheduler-requests',
- request.toProto3Json(),
- );
-
- return true;
- }
-
- /// Check if a builder should be rerun.
- ///
- /// A rerun happens when a build fails, the retry number hasn't reached the limit, and the build is on TOT.
- Future<bool> _shouldRerunBuilderFirestore(firestore.Task task, FirestoreService firestoreService) async {
- if (!firestore.Task.taskFailStatusSet.contains(task.status)) {
- return false;
- }
- final int retries = task.attempts ?? 1;
- if (retries > config.maxLuciTaskRetries) {
- log.warning('Max retries reached');
- return false;
- }
-
- final String commitDocumentName = '$kDatabase/documents/${firestore_commit.kCommitCollectionId}/${task.commitSha}';
- final firestore_commit.Commit currentCommit = await firestore_commit.Commit.fromFirestore(
- firestoreService: firestoreService,
- documentName: commitDocumentName,
- );
- final List<firestore_commit.Commit> commitList = await firestoreService.queryRecentCommits(
- limit: 1,
- slug: currentCommit.slug,
- branch: currentCommit.branch,
- );
- final firestore_commit.Commit latestCommit = commitList.single;
- return latestCommit.sha == currentCommit.sha;
- }
-}
diff --git a/app_dart/lib/src/service/scheduler.dart b/app_dart/lib/src/service/scheduler.dart
index 27a7925..2e88d1e 100644
--- a/app_dart/lib/src/service/scheduler.dart
+++ b/app_dart/lib/src/service/scheduler.dart
@@ -5,7 +5,6 @@
import 'dart:math';
import 'dart:typed_data';
-import 'package:cocoon_service/src/model/luci/buildbucket.dart';
import 'package:cocoon_service/src/service/exceptions.dart';
import 'package:cocoon_service/src/service/build_status_provider.dart';
import 'package:cocoon_service/src/service/scheduler/policy.dart';
@@ -28,6 +27,7 @@
import '../model/ci_yaml/ci_yaml.dart';
import '../model/ci_yaml/target.dart';
import '../model/github/checks.dart' as cocoon_checks;
+import '../model/luci/buildbucket.dart';
import '../model/proto/internal/scheduler.pb.dart' as pb;
import '../service/logging.dart';
import 'cache_service.dart';
@@ -297,14 +297,6 @@
await luciBuildService.cancelBuilds(pullRequest, reason);
}
- Future<void> cancelPreSubmitTargetsV2({
- required PullRequest pullRequest,
- String reason = 'Newer commit available',
- }) async {
- log.info('Cancelling presubmit targets with buildbucket v2.');
- await luciBuildService.cancelBuildsV2(pullRequest, reason);
- }
-
/// Schedule presubmit targets against a pull request.
///
/// Cancels all existing targets then schedules the targets.
@@ -318,7 +310,7 @@
}) async {
// Always cancel running builds so we don't ever schedule duplicates.
log.info('Attempting to cancel existing presubmit targets for ${pullRequest.number}');
- await cancelPreSubmitTargetsV2(
+ await cancelPreSubmitTargets(
pullRequest: pullRequest,
reason: reason,
);
@@ -568,7 +560,6 @@
if (commit == null) {
log.fine('Rescheduling presubmit build.');
- // Does not do anything with the returned build oddly.
await luciBuildService.reschedulePresubmitBuildUsingCheckRunEvent(checkRunEvent);
} else {
log.fine('Rescheduling postsubmit build.');
diff --git a/app_dart/lib/src/service/scheduler_v2.dart b/app_dart/lib/src/service/scheduler_v2.dart
deleted file mode 100644
index ab11d24..0000000
--- a/app_dart/lib/src/service/scheduler_v2.dart
+++ /dev/null
@@ -1,666 +0,0 @@
-// Copyright 2021 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:math';
-import 'dart:typed_data';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/src/service/exceptions.dart';
-import 'package:cocoon_service/src/service/build_status_provider.dart';
-import 'package:cocoon_service/src/service/scheduler/policy.dart';
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart';
-import 'package:github/hooks.dart';
-import 'package:googleapis/bigquery/v2.dart';
-import 'package:googleapis/firestore/v1.dart';
-import 'package:retry/retry.dart';
-import 'package:truncate/truncate.dart';
-import 'package:yaml/yaml.dart';
-
-import '../foundation/providers.dart';
-import '../foundation/typedefs.dart';
-import '../foundation/utils.dart';
-import '../model/appengine/commit.dart';
-import '../model/appengine/task.dart';
-import '../model/firestore/commit.dart' as firestore_commmit;
-import '../model/firestore/task.dart' as firestore;
-import '../model/ci_yaml/ci_yaml.dart';
-import '../model/ci_yaml/target.dart';
-import '../model/github/checks.dart' as cocoon_checks;
-import '../model/proto/internal/scheduler.pb.dart' as pb;
-import '../service/logging.dart';
-import 'cache_service.dart';
-import 'config.dart';
-import 'datastore.dart';
-import 'firestore.dart';
-import 'github_checks_service_v2.dart';
-import 'github_service.dart';
-import 'luci_build_service_v2.dart';
-
-/// Scheduler service to validate all commits to supported Flutter repositories.
-///
-/// Scheduler responsibilties include:
-/// 1. Tracking commits in Cocoon
-/// 2. Ensuring commits are validated (via scheduling tasks against commits)
-/// 3. Retry mechanisms for tasks
-class SchedulerV2 {
- SchedulerV2({
- required this.cache,
- required this.config,
- required this.githubChecksService,
- required this.luciBuildService,
- this.datastoreProvider = DatastoreService.defaultProvider,
- this.httpClientProvider = Providers.freshHttpClient,
- this.buildStatusProvider = BuildStatusService.defaultProvider,
- });
-
- final BuildStatusServiceProvider buildStatusProvider;
- final CacheService cache;
- final Config config;
- final DatastoreServiceProvider datastoreProvider;
- final GithubChecksServiceV2 githubChecksService;
- final HttpClientProvider httpClientProvider;
-
- late DatastoreService datastore;
- late FirestoreService firestoreService;
- LuciBuildServiceV2 luciBuildService;
-
- /// Name of the subcache to store scheduler related values in redis.
- static const String subcacheName = 'scheduler';
-
- static const String kCiYamlCheckName = 'ci.yaml validation';
-
- /// Ensure [commits] exist in Cocoon.
- ///
- /// If [Commit] does not exist in Datastore:
- /// * Write it to datastore
- /// * Schedule tasks listed in its scheduler config
- /// Otherwise, ignore it.
- Future<void> addCommits(List<Commit> commits) async {
- datastore = datastoreProvider(config.db);
- final List<Commit> newCommits = await _getMissingCommits(commits);
- log.fine('Found ${newCommits.length} new commits on GitHub');
- for (Commit commit in newCommits) {
- await _addCommit(commit);
- }
- }
-
- /// Schedule tasks against [PullRequest].
- ///
- /// If [PullRequest] was merged, schedule prod tasks against it.
- /// Otherwise if it is presubmit, schedule try tasks against it.
- Future<void> addPullRequest(PullRequest pr) async {
- datastore = datastoreProvider(config.db);
- // TODO(chillers): Support triggering on presubmit. https://github.com/flutter/flutter/issues/77858
- if (!pr.merged!) {
- log.warning('Only pull requests that were closed and merged should have tasks scheduled');
- return;
- }
-
- final String fullRepo = pr.base!.repo!.fullName;
- final String? branch = pr.base!.ref;
- final String sha = pr.mergeCommitSha!;
-
- final String id = '$fullRepo/$branch/$sha';
- final Key<String> key = datastore.db.emptyKey.append<String>(Commit, id: id);
- final Commit mergedCommit = Commit(
- author: pr.user!.login!,
- authorAvatarUrl: pr.user!.avatarUrl!,
- branch: branch,
- key: key,
- // The field has a max length of 1500 so ensure the commit message is not longer.
- message: truncate(pr.title!, 1490, omission: '...'),
- repository: fullRepo,
- sha: sha,
- timestamp: pr.mergedAt!.millisecondsSinceEpoch,
- );
-
- if (await _commitExistsInDatastore(mergedCommit)) {
- log.fine('$sha already exists in datastore. Scheduling skipped.');
- return;
- }
-
- log.fine('Scheduling $sha via GitHub webhook');
- await _addCommit(mergedCommit);
- }
-
- /// Processes postsubmit tasks.
- Future<void> _addCommit(Commit commit) async {
- if (!config.supportedRepos.contains(commit.slug)) {
- log.fine('Skipping ${commit.id} as repo is not supported');
- return;
- }
-
- final CiYaml ciYaml = await getCiYaml(commit);
-
- final List<Target> initialTargets = ciYaml.getInitialTargets(ciYaml.postsubmitTargets);
- final List<Task> tasks = targetsToTask(commit, initialTargets).toList();
-
- final List<Tuple<Target, Task, int>> toBeScheduled = <Tuple<Target, Task, int>>[];
- for (Target target in initialTargets) {
- final Task task = tasks.singleWhere((Task task) => task.name == target.value.name);
- SchedulerPolicy policy = target.schedulerPolicy;
- // Release branches should run every task
- if (Config.defaultBranch(commit.slug) != commit.branch) {
- policy = GuaranteedPolicy();
- }
- final int? priority = await policy.triggerPriority(task: task, datastore: datastore);
- if (priority != null) {
- // Mark task as in progress to ensure it isn't scheduled over
- task.status = Task.statusInProgress;
- toBeScheduled.add(Tuple<Target, Task, int>(target, task, priority));
- }
- }
-
- // Datastore must be written to generate task keys
- try {
- await datastore.withTransaction<void>((Transaction transaction) async {
- transaction.queueMutations(inserts: <Commit>[commit]);
- transaction.queueMutations(inserts: tasks);
- await transaction.commit();
- log.fine('Committed ${tasks.length} new tasks for commit ${commit.sha!}');
- });
- } catch (error) {
- log.severe('Failed to add commit ${commit.sha!}: $error');
- }
-
- final firestore_commmit.Commit commitDocument = firestore_commmit.commitToCommitDocument(commit);
- final List<firestore.Task> taskDocuments = firestore.targetsToTaskDocuments(commit, initialTargets);
- final List<Write> writes = documentsToWrites([...taskDocuments, commitDocument], exists: false);
- final FirestoreService firestoreService = await config.createFirestoreService();
- // TODO(keyonghan): remove try catch logic after validated to work.
- try {
- await firestoreService.writeViaTransaction(writes);
- } catch (error) {
- log.warning('Failed to add to Firestore: $error');
- }
-
- await _batchScheduleBuilds(commit, toBeScheduled);
- await _uploadToBigQuery(commit);
- }
-
- /// Schedule all builds in batch requests instead of a single request.
- ///
- /// Each batch request contains [Config.batchSize] builds to be scheduled.
- Future<void> _batchScheduleBuilds(Commit commit, List<Tuple<Target, Task, int>> toBeScheduled) async {
- log.info('Batching ${toBeScheduled.length} for ${commit.sha}');
- final List<Future<void>> futures = <Future<void>>[];
- for (int i = 0; i < toBeScheduled.length; i += config.batchSize) {
- futures.add(
- luciBuildService.schedulePostsubmitBuilds(
- commit: commit,
- toBeScheduled: toBeScheduled.sublist(i, min(i + config.batchSize, toBeScheduled.length)),
- ),
- );
- }
- await Future.wait<void>(futures);
- }
-
- /// Return subset of [commits] not stored in Datastore.
- Future<List<Commit>> _getMissingCommits(List<Commit> commits) async {
- final List<Commit> newCommits = <Commit>[];
- // Ensure commits are sorted from newest to oldest (descending order)
- commits.sort((Commit a, Commit b) => b.timestamp!.compareTo(a.timestamp!));
- for (Commit commit in commits) {
- // Cocoon may randomly drop commits, so check the entire list.
- if (!await _commitExistsInDatastore(commit)) {
- newCommits.add(commit);
- }
- }
-
- // Reverses commits to be in order of oldest to newest.
- return newCommits;
- }
-
- /// Whether [Commit] already exists in [datastore].
- ///
- /// Datastore is Cocoon's source of truth for what commits have been scheduled.
- /// Since webhooks or cron jobs can schedule commits, we must verify a commit
- /// has not already been scheduled.
- Future<bool> _commitExistsInDatastore(Commit commit) async {
- try {
- await datastore.db.lookupValue<Commit>(commit.key);
- } on KeyNotFoundException {
- return false;
- }
- return true;
- }
-
- /// Process and filters ciyaml.
- Future<CiYaml> getCiYaml(
- Commit commit, {
- bool validate = false,
- }) async {
- final Commit totCommit = await generateTotCommit(slug: commit.slug, branch: Config.defaultBranch(commit.slug));
- final CiYaml totYaml = await _getCiYaml(totCommit);
- return _getCiYaml(commit, totCiYaml: totYaml, validate: validate);
- }
-
- /// Load in memory the `.ci.yaml`.
- Future<CiYaml> _getCiYaml(
- Commit commit, {
- CiYaml? totCiYaml,
- bool validate = false,
- RetryOptions retryOptions = const RetryOptions(delayFactor: Duration(seconds: 2), maxAttempts: 4),
- }) async {
- String ciPath;
- ciPath = '${commit.repository}/${commit.sha!}/$kCiYamlPath';
- final Uint8List ciYamlBytes = (await cache.getOrCreate(
- subcacheName,
- ciPath,
- createFn: () => _downloadCiYaml(
- commit,
- ciPath,
- retryOptions: retryOptions,
- ),
- ttl: const Duration(hours: 1),
- ))!;
- final pb.SchedulerConfig schedulerConfig = pb.SchedulerConfig.fromBuffer(ciYamlBytes);
- log.fine('Retrieved .ci.yaml for $ciPath');
- // If totCiYaml is not null, we assume upper level function has verified that current branch is not a release branch.
- return CiYaml(
- config: schedulerConfig,
- slug: commit.slug,
- branch: commit.branch!,
- totConfig: totCiYaml,
- validate: validate,
- );
- }
-
- /// Get `.ci.yaml` from GitHub, and store the bytes in redis for future retrieval.
- ///
- /// If GitHub returns [HttpStatus.notFound], an empty config will be inserted assuming
- /// that commit does not support the scheduler config file.
- Future<Uint8List> _downloadCiYaml(
- Commit commit,
- String ciPath, {
- RetryOptions retryOptions = const RetryOptions(maxAttempts: 3),
- }) async {
- final String configContent = await githubFileContent(
- commit.slug,
- '.ci.yaml',
- httpClientProvider: httpClientProvider,
- ref: commit.sha!,
- retryOptions: retryOptions,
- );
- final YamlMap configYaml = loadYaml(configContent) as YamlMap;
- final pb.SchedulerConfig schedulerConfig = pb.SchedulerConfig()..mergeFromProto3Json(configYaml);
- return schedulerConfig.writeToBuffer();
- }
-
- /// Cancel all incomplete targets against a pull request.
- Future<void> cancelPreSubmitTargets({
- required PullRequest pullRequest,
- String reason = 'Newer commit available',
- }) async {
- log.info('Cancelling presubmit targets with buildbucket v2.');
- await luciBuildService.cancelBuilds(
- pullRequest: pullRequest,
- reason: reason,
- );
- }
-
- /// Schedule presubmit targets against a pull request.
- ///
- /// Cancels all existing targets then schedules the targets.
- ///
- /// Schedules a [kCiYamlCheckName] to validate [CiYaml] is valid and all builds were able to be triggered.
- /// If [builderTriggerList] is specified, then trigger only those targets.
- Future<void> triggerPresubmitTargets({
- required PullRequest pullRequest,
- String reason = 'Newer commit available',
- List<String>? builderTriggerList,
- }) async {
- // Always cancel running builds so we don't ever schedule duplicates.
- log.info('Attempting to cancel existing presubmit targets for ${pullRequest.number}');
- await cancelPreSubmitTargets(
- pullRequest: pullRequest,
- reason: reason,
- );
-
- log.info('Creating ciYaml validation check run for ${pullRequest.number}');
- final CheckRun ciValidationCheckRun = await githubChecksService.githubChecksUtil.createCheckRun(
- config,
- pullRequest.base!.repo!.slug(),
- pullRequest.head!.sha!,
- kCiYamlCheckName,
- output: const CheckRunOutput(
- title: kCiYamlCheckName,
- summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
- ),
- );
-
- log.info('Creating presubmit targets for ${pullRequest.number}');
- final RepositorySlug slug = pullRequest.base!.repo!.slug();
- dynamic exception;
- try {
- // Both the author and label should be checked to make sure that no one is
- // attempting to get a pull request without check through.
- if (pullRequest.user!.login == config.autosubmitBot &&
- pullRequest.labels!.any((element) => element.name == Config.revertOfLabel)) {
- log.info('Skipping generating the full set of checks for revert request.');
- } else {
- final List<Target> presubmitTargets = await getPresubmitTargets(pullRequest);
- final List<Target> presubmitTriggerTargets = getTriggerList(presubmitTargets, builderTriggerList);
- await luciBuildService.scheduleTryBuilds(
- targets: presubmitTriggerTargets,
- pullRequest: pullRequest,
- );
- }
- } on FormatException catch (error, backtrace) {
- log.warning('FormatException encountered when scheduling presubmit targets for ${pullRequest.number}');
- log.warning(backtrace.toString());
- exception = error;
- } catch (error, backtrace) {
- log.warning('Exception encountered when scheduling presubmit targets for ${pullRequest.number}');
- log.warning(backtrace.toString());
- exception = error;
- }
-
- // Update validate ci.yaml check
- log.info('Updating ci.yaml validation check for ${pullRequest.number}');
- if (exception == null) {
- // Success in validating ci.yaml
- log.info('ci.yaml validation check was successful for ${pullRequest.number}');
- await githubChecksService.githubChecksUtil.updateCheckRun(
- config,
- slug,
- ciValidationCheckRun,
- status: CheckRunStatus.completed,
- conclusion: CheckRunConclusion.success,
- );
- } else {
- log.warning('Marking PR #${pullRequest.number} $kCiYamlCheckName as failed');
- log.warning(exception.toString());
- // Failure when validating ci.yaml
- await githubChecksService.githubChecksUtil.updateCheckRun(
- config,
- slug,
- ciValidationCheckRun,
- status: CheckRunStatus.completed,
- conclusion: CheckRunConclusion.failure,
- output: CheckRunOutput(
- title: kCiYamlCheckName,
- summary: '.ci.yaml has failures',
- text: exception.toString(),
- ),
- );
- }
- log.info(
- 'Finished triggering builds for: pr ${pullRequest.number}, commit ${pullRequest.base!.sha}, branch ${pullRequest.head!.ref} and slug ${pullRequest.base!.repo!.slug()}}',
- );
- }
-
- /// If [builderTriggerList] is specificed, return only builders that are contained in [presubmitTarget].
- /// Otherwise, return [presubmitTarget].
- List<Target> getTriggerList(
- List<Target> presubmitTarget,
- List<String>? builderTriggerList,
- ) {
- if (builderTriggerList != null && builderTriggerList.isNotEmpty) {
- return presubmitTarget.where((Target target) => builderTriggerList.contains(target.value.name)).toList();
- }
- return presubmitTarget;
- }
-
- /// Given a pull request event, retry all failed LUCI checks.
- ///
- /// 1. Aggregate .ci.yaml and try_builders.json presubmit builds.
- /// 2. Get failed LUCI builds for this pull request at [commitSha].
- /// 3. Rerun the failed builds that also have a failed check status.
- Future<void> retryPresubmitTargets({
- required PullRequest pullRequest,
- required CheckSuiteEvent checkSuiteEvent,
- }) async {
- final GitHub githubClient = await config.createGitHubClient(pullRequest: pullRequest);
- final Map<String, CheckRun> checkRuns = await githubChecksService.githubChecksUtil.allCheckRuns(
- githubClient,
- checkSuiteEvent,
- );
- final List<Target> presubmitTargets = await getPresubmitTargets(pullRequest);
- final List<bbv2.Build?> failedBuilds =
- await luciBuildService.failedBuilds(pullRequest: pullRequest, targets: presubmitTargets);
- for (bbv2.Build? build in failedBuilds) {
- final CheckRun checkRun = checkRuns[build!.builder.builder]!;
-
- if (checkRun.status != CheckRunStatus.completed) {
- // Check run is still in progress, do not retry.
- continue;
- }
-
- await luciBuildService.scheduleTryBuilds(
- targets: presubmitTargets.where((Target target) => build.builder.builder == target.value.name).toList(),
- pullRequest: pullRequest,
- checkSuiteEvent: checkSuiteEvent,
- );
- }
- }
-
- /// Get LUCI presubmit builders from .ci.yaml.
- ///
- /// Filters targets with runIf, matching them to the diff of [pullRequest].
- ///
- /// In the case there is an issue getting the diff from GitHub, all targets are returned.
- Future<List<Target>> getPresubmitTargets(PullRequest pullRequest) async {
- final Commit commit = Commit(
- branch: pullRequest.base!.ref,
- repository: pullRequest.base!.repo!.fullName,
- sha: pullRequest.head!.sha,
- );
- late CiYaml ciYaml;
- log.info('Attempting to read presubmit targets from ci.yaml for ${pullRequest.number}');
- if (commit.branch == Config.defaultBranch(commit.slug)) {
- ciYaml = await getCiYaml(commit, validate: true);
- } else {
- ciYaml = await getCiYaml(commit);
- }
- log.info('ci.yaml loaded successfully.');
- log.info('Collecting presubmit targets for ${pullRequest.number}');
-
- // Filter out schedulers targets with schedulers different than luci or cocoon.
- final List<Target> presubmitTargets = ciYaml.presubmitTargets
- .where(
- (Target target) =>
- target.value.scheduler == pb.SchedulerSystem.luci || target.value.scheduler == pb.SchedulerSystem.cocoon,
- )
- .toList();
-
- // See https://github.com/flutter/flutter/issues/138430.
- final includePostsubmitAsPresubmit = _includePostsubmitAsPresubmit(ciYaml, pullRequest);
- if (includePostsubmitAsPresubmit) {
- log.info('Including postsubmit targets as presubmit for ${pullRequest.number}');
-
- for (Target target in ciYaml.postsubmitTargets) {
- // We don't want to include a presubmit twice
- // We don't want to run the builder_cache target as a presubmit
- if (!target.value.presubmit && !target.value.properties.containsKey('cache_name')) {
- presubmitTargets.add(target);
- }
- }
- }
-
- log.info('Collected ${presubmitTargets.length} presubmit targets.');
- // Release branches should run every test.
- if (pullRequest.base!.ref != Config.defaultBranch(pullRequest.base!.repo!.slug())) {
- log.info('Release branch found, scheduling all targets for ${pullRequest.number}');
- return presubmitTargets;
- }
- if (includePostsubmitAsPresubmit) {
- log.info('Postsubmit targets included as presubmit, scheduling all targets for ${pullRequest.number}');
- return presubmitTargets;
- }
-
- // Filter builders based on the PR diff
- final GithubService githubService = await config.createGithubService(commit.slug);
- List<String> files = <String>[];
- try {
- files = await githubService.listFiles(pullRequest);
- } on GitHubError catch (error) {
- log.warning(error);
- log.warning('Unable to get diff for pullRequest=$pullRequest');
- log.warning('Running all targets');
- return presubmitTargets.toList();
- }
- return getTargetsToRun(presubmitTargets, files);
- }
-
- /// Returns `true` if [ciYaml.postsubmitTargets] should be ran during presubmit.
- static bool _includePostsubmitAsPresubmit(CiYaml ciYaml, PullRequest pullRequest) {
- // Only allow this for flutter/engine.
- // See https://github.com/flutter/cocoon/pull/3256#issuecomment-1811624351.
- if (ciYaml.slug != Config.engineSlug) {
- return false;
- }
- if (pullRequest.labels?.any((label) => label.name.contains('test: all')) ?? false) {
- return true;
- }
- return false;
- }
-
- /// Reschedules a failed build using a [CheckRunEvent]. The CheckRunEvent is
- /// generated when someone clicks the re-run button from a failed build from
- /// the Github UI.
- ///
- /// If the rerequested check is for [kCiYamlCheckName], all presubmit jobs are retried.
- /// Otherwise, the specific check will be retried.
- ///
- /// Relevant APIs:
- /// https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions
- Future<bool> processCheckRun(cocoon_checks.CheckRunEvent checkRunEvent) async {
- switch (checkRunEvent.action) {
- case 'rerequested':
- log.fine('Rerun requested by GitHub user: ${checkRunEvent.sender?.login}');
- final String? name = checkRunEvent.checkRun!.name;
- bool success = false;
- if (name == kCiYamlCheckName) {
- // The CheckRunEvent.checkRun.pullRequests array is empty for this
- // event, so we need to find the matching pull request.
- final RepositorySlug slug = checkRunEvent.repository!.slug();
- final String headSha = checkRunEvent.checkRun!.headSha!;
- final int checkSuiteId = checkRunEvent.checkRun!.checkSuite!.id!;
- final PullRequest? pullRequest =
- await githubChecksService.findMatchingPullRequest(slug, headSha, checkSuiteId);
- if (pullRequest != null) {
- log.fine('Matched PR: ${pullRequest.number} Repo: ${slug.fullName}');
- await triggerPresubmitTargets(pullRequest: pullRequest);
- success = true;
- } else {
- log.warning('No matching PR found for head_sha in check run event.');
- }
- } else {
- try {
- final RepositorySlug slug = checkRunEvent.repository!.slug();
- final String gitBranch = checkRunEvent.checkRun!.checkSuite!.headBranch ?? Config.defaultBranch(slug);
- final String sha = checkRunEvent.checkRun!.headSha!;
-
- // Only merged commits are added to the datastore. If a matching commit is found, this must be a postsubmit checkrun.
- datastore = datastoreProvider(config.db);
- final Key<String> commitKey =
- Commit.createKey(db: datastore.db, slug: slug, gitBranch: gitBranch, sha: sha);
- Commit? commit;
- try {
- commit = await Commit.fromDatastore(datastore: datastore, key: commitKey);
- log.fine('Commit found in datastore.');
- } on KeyNotFoundException {
- log.fine('Commit not found in datastore.');
- }
-
- if (commit == null) {
- log.fine('Rescheduling presubmit build.');
- // Does not do anything with the returned build oddly.
- await luciBuildService.reschedulePresubmitBuildUsingCheckRunEvent(checkRunEvent: checkRunEvent);
- } else {
- log.fine('Rescheduling postsubmit build.');
- final String checkName = checkRunEvent.checkRun!.name!;
- final Task task = await Task.fromDatastore(datastore: datastore, commitKey: commitKey, name: checkName);
- final CiYaml ciYaml = await getCiYaml(commit);
- final Target target =
- ciYaml.postsubmitTargets.singleWhere((Target target) => target.value.name == task.name);
- await luciBuildService.reschedulePostsubmitBuildUsingCheckRunEvent(
- checkRunEvent,
- commit: commit,
- task: task,
- target: target,
- );
- }
-
- success = true;
- } on NoBuildFoundException {
- log.warning('No build found to reschedule.');
- }
- }
-
- log.fine('CheckName: $name State: $success');
- return success;
- }
-
- return true;
- }
-
- /// Push [Commit] to BigQuery as part of the infra metrics dashboards.
- Future<void> _uploadToBigQuery(Commit commit) async {
- const String projectId = 'flutter-dashboard';
- const String dataset = 'cocoon';
- const String table = 'Checklist';
-
- log.info('Uploading commit ${commit.sha} info to bigquery.');
-
- final TabledataResource tabledataResource = await config.createTabledataResourceApi();
- final List<Map<String, Object>> tableDataInsertAllRequestRows = <Map<String, Object>>[];
-
- /// Consolidate [commits] together
- ///
- /// Prepare for bigquery [insertAll]
- tableDataInsertAllRequestRows.add(<String, Object>{
- 'json': <String, Object?>{
- 'ID': commit.id,
- 'CreateTimestamp': commit.timestamp,
- 'FlutterRepositoryPath': commit.repository,
- 'CommitSha': commit.sha!,
- 'CommitAuthorLogin': commit.author,
- 'CommitAuthorAvatarURL': commit.authorAvatarUrl,
- 'CommitMessage': commit.message,
- 'Branch': commit.branch,
- },
- });
-
- /// Final [rows] to be inserted to [BigQuery]
- final TableDataInsertAllRequest rows =
- TableDataInsertAllRequest.fromJson(<String, Object>{'rows': tableDataInsertAllRequestRows});
-
- /// Insert [commits] to [BigQuery]
- try {
- if (rows.rows == null) {
- log.warning('Rows to be inserted is null');
- } else {
- log.info('Inserting ${rows.rows!.length} into big query for ${commit.sha}');
- }
- await tabledataResource.insertAll(rows, projectId, dataset, table);
- } on ApiRequestError {
- log.warning('Failed to add commits to BigQuery: $ApiRequestError');
- }
- }
-
- /// Returns the tip of tree [Commit] using specified [branch] and [RepositorySlug].
- ///
- /// A tip of tree [Commit] is used to help generate the tip of tree [CiYaml].
- /// The generated tip of tree [CiYaml] will be compared against Presubmit Targets in current [CiYaml],
- /// to ensure new targets without `bringup: true` label are not added into the build.
- Future<Commit> generateTotCommit({required String branch, required RepositorySlug slug}) async {
- datastore = datastoreProvider(config.db);
- firestoreService = await config.createFirestoreService();
- final BuildStatusService buildStatusService = buildStatusProvider(datastore, firestoreService);
- final Commit totCommit = (await buildStatusService
- .retrieveCommitStatus(
- limit: 1,
- branch: branch,
- slug: slug,
- )
- .map<Commit>((CommitStatus status) => status.commit)
- .toList())
- .single;
-
- return totCommit;
- }
-}
diff --git a/app_dart/test/request_handlers/dart_internal_subscription_test.dart b/app_dart/test/request_handlers/dart_internal_subscription_test.dart
index 8863695..ebbcdfb 100644
--- a/app_dart/test/request_handlers/dart_internal_subscription_test.dart
+++ b/app_dart/test/request_handlers/dart_internal_subscription_test.dart
@@ -2,16 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'dart:convert';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
import 'package:cocoon_service/cocoon_service.dart';
import 'package:cocoon_service/src/model/appengine/commit.dart';
import 'package:cocoon_service/src/model/appengine/task.dart';
import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/model/luci/pubsub_message_v2.dart';
+import 'package:cocoon_service/src/model/luci/buildbucket.dart';
+import 'package:cocoon_service/src/model/luci/push_message.dart' as push;
import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:fixnum/fixnum.dart';
import 'package:gcloud/db.dart';
import 'package:googleapis/firestore/v1.dart' hide Status;
import 'package:mockito/mockito.dart';
@@ -20,86 +17,53 @@
import '../src/datastore/fake_config.dart';
import '../src/request_handling/fake_authentication.dart';
import '../src/request_handling/fake_http.dart';
-import '../src/request_handling/subscription_v2_tester.dart';
+import '../src/request_handling/subscription_tester.dart';
import '../src/utilities/entity_generators.dart';
import '../src/utilities/mocks.dart';
void main() {
- // Omit the timestamps for expect purposes.
- const String buildJson = '''
-{
- "id": "8766855135863637953",
- "builder": {
- "project": "dart-internal",
- "bucket": "flutter",
- "builder": "Linux packaging_release_builder"
- },
- "number": 123456,
- "status": "SUCCESS",
- "input": {
- "gitilesCommit": {
- "project": "flutter/flutter",
- "id": "HASH12345",
- "ref": "refs/heads/test-branch"
- }
- }
-}
-''';
-
- const String buildMessageJson = '''
-{
- "build": {
- "id": "8766855135863637953",
- "builder": {
- "project": "dart-internal",
- "bucket": "flutter",
- "builder": "Linux packaging_release_builder"
- },
- "number": 123456,
- "status": "SUCCESS",
- "input": {
- "gitilesCommit": {
- "project": "flutter/flutter",
- "id": "HASH12345",
- "ref": "refs/heads/test-branch"
- }
- }
- }
-}
-''';
-
late DartInternalSubscription handler;
late FakeConfig config;
late FakeHttpRequest request;
- late MockBuildBucketV2Client buildBucketV2Client;
- late SubscriptionV2Tester tester;
+ late MockBuildBucketClient buildBucketClient;
+ late SubscriptionTester tester;
late MockFirestoreService mockFirestoreService;
late Commit commit;
-
- // ignore: unused_local_variable
+ final DateTime startTime = DateTime(2023, 1, 1, 0, 0, 0);
+ final DateTime endTime = DateTime(2023, 1, 1, 0, 14, 23);
const String project = 'dart-internal';
const String bucket = 'flutter';
const String builder = 'Linux packaging_release_builder';
- const int buildNumber = 123456;
- // ignore: unused_local_variable
- final Int64 buildId = Int64(8766855135863637953);
+ const int buildId = 123456;
const String fakeHash = 'HASH12345';
const String fakeBranch = 'test-branch';
+ const String fakePubsubMessage = '''
+ {
+ "build": {
+ "id": "$buildId",
+ "builder": {
+ "project": "$project",
+ "bucket": "$bucket",
+ "builder": "$builder"
+ }
+ }
+ }
+ ''';
setUp(() async {
mockFirestoreService = MockFirestoreService();
config = FakeConfig(firestoreService: mockFirestoreService);
- buildBucketV2Client = MockBuildBucketV2Client();
+ buildBucketClient = MockBuildBucketClient();
handler = DartInternalSubscription(
cache: CacheService(inMemory: true),
config: config,
authProvider: FakeAuthenticationProvider(),
- buildBucketV2Client: buildBucketV2Client,
+ buildBucketClient: buildBucketClient,
datastoreProvider: (DatastoreDB db) => DatastoreService(config.db, 5),
);
request = FakeHttpRequest();
- tester = SubscriptionV2Tester(
+ tester = SubscriptionTester(
request: request,
);
@@ -112,20 +76,27 @@
timestamp: 0,
);
- // final bbv2.PubSubCallBack pubSubCallBackTest = bbv2.PubSubCallBack();
- // pubSubCallBackTest.mergeFromProto3Json(jsonDecode(message));
- final bbv2.Build build = bbv2.Build().createEmptyInstance();
- build.mergeFromProto3Json(jsonDecode(buildJson) as Map<String, dynamic>);
-
- const PushMessageV2 pushMessageV2 = PushMessageV2(data: buildJson, messageId: '798274983');
- tester.message = pushMessageV2;
-
+ final Build fakeBuild = Build(
+ builderId: const BuilderId(project: project, bucket: bucket, builder: builder),
+ number: buildId,
+ id: 'fake-build-id',
+ status: Status.success,
+ startTime: startTime,
+ endTime: endTime,
+ input: const Input(
+ gitilesCommit: GitilesCommit(
+ project: 'flutter/flutter',
+ hash: fakeHash,
+ ref: 'refs/heads/$fakeBranch',
+ ),
+ ),
+ );
when(
- buildBucketV2Client.getBuild(
+ buildBucketClient.getBuild(
any,
buildBucketUri: 'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
),
- ).thenAnswer((_) => Future<bbv2.Build>.value(build));
+ ).thenAnswer((_) => Future<Build>.value(fakeBuild));
final List<Commit> datastoreCommit = <Commit>[commit];
await config.db.commit(inserts: datastoreCommit);
@@ -140,12 +111,12 @@
).thenAnswer((Invocation invocation) {
return Future<BatchWriteResponse>.value(BatchWriteResponse());
});
- tester.message = const PushMessageV2(data: buildMessageJson);
+ tester.message = const push.PushMessage(data: fakePubsubMessage);
await tester.post(handler);
verify(
- buildBucketV2Client.getBuild(any),
+ buildBucketClient.getBuild(any),
).called(1);
// This is used for testing to pull the data out of the "datastore" so that
@@ -153,7 +124,7 @@
late Task taskInDb;
late Commit commitInDb;
config.db.values.forEach((k, v) {
- if (v is Task && v.buildNumberList == buildNumber.toString()) {
+ if (v is Task && v.buildNumberList == buildId.toString()) {
taskInDb = v;
}
if (v is Commit) {
@@ -175,13 +146,16 @@
// Ensure the task in the db is exactly what we expect
final Task expectedTask = Task(
attempts: 1,
- buildNumber: buildNumber,
- buildNumberList: buildNumber.toString(),
+ buildNumber: buildId,
+ buildNumberList: buildId.toString(),
builderName: builder,
commitKey: commitInDb.key,
+ createTimestamp: startTime.millisecondsSinceEpoch,
+ endTimestamp: endTime.millisecondsSinceEpoch,
luciBucket: bucket,
name: builder,
stageName: 'dart-internal',
+ startTimestamp: startTime.millisecondsSinceEpoch,
status: 'Succeeded',
key: commit.key.append(Task),
timeoutInMinutes: 0,
@@ -220,9 +194,12 @@
buildNumberList: existingTaskId.toString(),
builderName: builder,
commitKey: commit.key,
+ createTimestamp: startTime.millisecondsSinceEpoch,
+ endTimestamp: endTime.millisecondsSinceEpoch,
luciBucket: bucket,
name: builder,
stageName: 'dart-internal',
+ startTimestamp: startTime.millisecondsSinceEpoch,
status: 'Succeeded',
key: commit.key.append(Task),
timeoutInMinutes: 0,
@@ -233,18 +210,17 @@
final List<Task> datastoreCommit = <Task>[fakeTask];
await config.db.commit(inserts: datastoreCommit);
- const PushMessageV2 pushMessageV2 = PushMessageV2(data: buildMessageJson, messageId: '798274983');
- tester.message = pushMessageV2;
+ tester.message = const push.PushMessage(data: fakePubsubMessage);
await tester.post(handler);
verify(
- buildBucketV2Client.getBuild(any),
+ buildBucketClient.getBuild(any),
).called(1);
// This is used for testing to pull the data out of the "datastore" so that
// we can verify what was saved.
- final String expectedBuilderList = '${existingTaskId.toString()},${buildNumber.toString()}';
+ final String expectedBuilderList = '${existingTaskId.toString()},${buildId.toString()}';
late Task taskInDb;
late Commit commitInDb;
config.db.values.forEach((k, v) {
@@ -270,13 +246,16 @@
// Ensure the task in the db is exactly what we expect
final Task expectedTask = Task(
attempts: 2,
- buildNumber: buildNumber,
+ buildNumber: buildId,
buildNumberList: expectedBuilderList,
builderName: builder,
commitKey: commitInDb.key,
+ createTimestamp: startTime.millisecondsSinceEpoch,
+ endTimestamp: endTime.millisecondsSinceEpoch,
luciBucket: bucket,
name: builder,
stageName: 'dart-internal',
+ startTimestamp: startTime.millisecondsSinceEpoch,
status: 'Succeeded',
key: commit.key.append(Task),
timeoutInMinutes: 0,
@@ -299,93 +278,67 @@
expect(insertedTaskDocument.status, expectedTask.status);
});
- test('ignores message with empty build data', () async {
- tester.message = const PushMessageV2();
+ test('ignores null message', () async {
+ tester.message = const push.PushMessage(data: null);
expect(await tester.post(handler), equals(Body.empty));
});
- // // TODO create a construction method for this to simplify testing.
+ test('ignores message with empty build data', () async {
+ tester.message = const push.PushMessage(data: '{}');
+ expect(await tester.post(handler), equals(Body.empty));
+ });
+
test('ignores message not from flutter bucket', () async {
- const String dartMessage = '''
-{
- "build": {
- "id": "8766855135863637953",
- "builder": {
- "project": "dart-internal",
- "bucket": "dart",
- "builder": "Linux packaging_release_builder"
- },
- "number": 123456,
- "status": "SUCCESS",
- "input": {
- "gitilesCommit": {
- "project":"flutter/flutter",
- "id":"HASH12345",
- "ref":"refs/heads/test-branch"
+ tester.message = const push.PushMessage(
+ data: '''
+ {
+ "build": {
+ "id": "$buildId",
+ "builder": {
+ "project": "$project",
+ "bucket": "dart",
+ "builder": "$builder"
+ }
}
}
- }
-}
-''';
-
- const PushMessageV2 pushMessageV2 = PushMessageV2(data: dartMessage, messageId: '798274983');
- tester.message = pushMessageV2;
+ ''',
+ );
expect(await tester.post(handler), equals(Body.empty));
});
test('ignores message not from dart-internal project', () async {
- const String unsupportedProjectMessage = '''
-{
- "build": {
- "id": "8766855135863637953",
- "builder": {
- "project": "unsupported-project",
- "bucket": "dart",
- "builder": "Linux packaging_release_builder"
- },
- "number": 123456,
- "status": "SUCCESS",
- "input": {
- "gitilesCommit": {
- "project": "flutter/flutter",
- "id": "HASH12345",
- "ref": "refs/heads/test-branch"
+ tester.message = const push.PushMessage(
+ data: '''
+ {
+ "build": {
+ "id": "$buildId",
+ "builder": {
+ "project": "different-project",
+ "bucket": "$bucket",
+ "builder": "$builder"
+ }
}
}
- }
-}
-''';
-
- const PushMessageV2 pushMessageV2 = PushMessageV2(data: unsupportedProjectMessage, messageId: '798274983');
- tester.message = pushMessageV2;
+ ''',
+ );
expect(await tester.post(handler), equals(Body.empty));
});
test('ignores message not from an accepted builder', () async {
- const String unknownBuilderMessage = '''
-{
- "build": {
- "id": "8766855135863637953",
- "builder": {
- "project": "dart-internal",
- "bucket": "dart",
- "builder": "different builder"
- },
- "number": 123456,
- "status": "SUCCESS",
- "input": {
- "gitilesCommit": {
- "project": "flutter/flutter",
- "id": "HASH12345",
- "ref": "refs/heads/test-branch"
+ tester.message = const push.PushMessage(
+ data: '''
+ {
+ "build": {
+ "id": "$buildId",
+ "builder": {
+ "project": "different-project",
+ "bucket": "$bucket",
+ "builder": "different-builder"
+ }
}
}
- }
-}
-''';
-
- const PushMessageV2 pushMessageV2 = PushMessageV2(data: unknownBuilderMessage, messageId: '798274983');
- tester.message = pushMessageV2;
+ ''',
+ );
expect(await tester.post(handler), equals(Body.empty));
});
}
diff --git a/app_dart/test/request_handlers/github/webhook_subscription_test.dart b/app_dart/test/request_handlers/github/webhook_subscription_test.dart
index 48506c9..50c7336 100644
--- a/app_dart/test/request_handlers/github/webhook_subscription_test.dart
+++ b/app_dart/test/request_handlers/github/webhook_subscription_test.dart
@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-
import 'package:cocoon_service/src/model/appengine/commit.dart';
import 'package:cocoon_service/src/model/luci/buildbucket.dart';
import 'package:cocoon_service/src/model/luci/push_message.dart' as pm;
@@ -21,12 +19,10 @@
import '../../src/datastore/fake_datastore.dart';
import '../../src/request_handling/fake_http.dart';
import '../../src/request_handling/subscription_tester.dart';
-import '../../src/service/fake_build_bucket_v2_client.dart';
import '../../src/service/fake_buildbucket.dart';
import '../../src/service/fake_github_service.dart';
import '../../src/service/fake_gerrit_service.dart';
import '../../src/service/fake_scheduler.dart';
-import '../../src/service/fake_scheduler_v2.dart';
import '../../src/utilities/entity_generators.dart';
import '../../src/utilities/mocks.dart';
import '../../src/utilities/webhook_generators.dart';
@@ -34,18 +30,17 @@
void main() {
late GithubWebhookSubscription webhook;
late FakeBuildBucketClient fakeBuildBucketClient;
- late FakeBuildBucketV2Client fakeBuildBucketV2Client;
late FakeConfig config;
late FakeDatastoreDB db;
late FakeGithubService githubService;
late FakeHttpRequest request;
late FakeScheduler scheduler;
- late FakeSchedulerV2 schedulerV2;
late FakeGerritService gerritService;
late MockCommitService commitService;
late MockGitHub gitHubClient;
late MockFirestoreService mockFirestoreService;
late MockGithubChecksUtil mockGithubChecksUtil;
+ late MockGithubChecksService mockGithubChecksService;
late MockIssuesService issuesService;
late MockPullRequestsService pullRequestsService;
late SubscriptionTester tester;
@@ -94,17 +89,15 @@
when(pullRequestsService.edit(any, any, title: anyNamed('title'), state: anyNamed('state'), base: anyNamed('base')))
.thenAnswer((_) async => PullRequest());
fakeBuildBucketClient = FakeBuildBucketClient();
- fakeBuildBucketV2Client = FakeBuildBucketV2Client();
mockGithubChecksUtil = MockGithubChecksUtil();
scheduler = FakeScheduler(
config: config,
buildbucket: fakeBuildBucketClient,
githubChecksUtil: mockGithubChecksUtil,
);
- schedulerV2 =
- FakeSchedulerV2(config: config, buildbucket: fakeBuildBucketV2Client, githubChecksUtil: mockGithubChecksUtil);
tester = SubscriptionTester(request: request);
+ mockGithubChecksService = MockGithubChecksService();
when(gitHubClient.issues).thenReturn(issuesService);
when(gitHubClient.pullRequests).thenReturn(pullRequestsService);
when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output'))).thenAnswer((_) async {
@@ -121,8 +114,8 @@
cache: CacheService(inMemory: true),
datastoreProvider: (_) => DatastoreService(config.db, 5),
gerritService: gerritService,
+ githubChecksService: mockGithubChecksService,
scheduler: scheduler,
- schedulerV2: schedulerV2,
commitService: commitService,
);
});
@@ -257,9 +250,9 @@
);
await tester.post(webhook);
- // TODO this is v2 to route event temporarily from v1 to v2.
- expect(schedulerV2.cancelPreSubmitTargetsCallCnt, 1);
- expect(schedulerV2.addPullRequestCallCnt, 0);
+
+ expect(scheduler.cancelPreSubmitTargetsCallCnt, 1);
+ expect(scheduler.addPullRequestCallCnt, 0);
});
test('Acts on closed, cancels presubmit targets, add pr for postsubmit target create', () async {
@@ -276,8 +269,8 @@
await tester.post(webhook);
- expect(schedulerV2.cancelPreSubmitTargetsCallCnt, 1);
- expect(schedulerV2.addPullRequestCallCnt, 1);
+ expect(scheduler.cancelPreSubmitTargetsCallCnt, 1);
+ expect(scheduler.addPullRequestCallCnt, 1);
});
test('Acts on opened against master when default is main', () async {
@@ -322,8 +315,8 @@
),
).called(1);
- expect(schedulerV2.triggerPresubmitTargetsCallCount, 1);
- schedulerV2.resetTriggerPresubmitTargetsCallCount();
+ expect(scheduler.triggerPresubmitTargetsCallCount, 1);
+ scheduler.resetTriggerPresubmitTargetsCallCount();
});
test('Acts on edited against master when default is main', () async {
@@ -369,8 +362,8 @@
),
).called(1);
- expect(schedulerV2.triggerPresubmitTargetsCallCount, 1);
- schedulerV2.resetTriggerPresubmitTargetsCallCount();
+ expect(scheduler.triggerPresubmitTargetsCallCount, 1);
+ scheduler.resetTriggerPresubmitTargetsCallCount();
});
// We already schedule checks when a draft is opened, don't need to re-test
@@ -404,24 +397,23 @@
number: issueNumber,
isDraft: true,
);
-
bool batchRequestCalled = false;
- Future<bbv2.BatchResponse> getBatchResponse() async {
+ Future<BatchResponse> getBatchResponse() async {
batchRequestCalled = true;
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[
- bbv2.Build(number: 999, builder: bbv2.BuilderID(builder: 'Linux'), status: bbv2.Status.SUCCESS),
+ return BatchResponse(
+ responses: <Response>[
+ Response(
+ searchBuilds: SearchBuildsResponse(
+ builds: <Build>[
+ generateBuild(999, name: 'Linux', status: Status.ended),
],
),
),
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[
- bbv2.Build(number: 998, builder: bbv2.BuilderID(builder: 'Linux'), status: bbv2.Status.SUCCESS),
+ Response(
+ searchBuilds: SearchBuildsResponse(
+ builds: <Build>[
+ generateBuild(998, name: 'Linux', status: Status.ended),
],
),
),
@@ -429,12 +421,12 @@
);
}
- fakeBuildBucketV2Client.batchResponse = getBatchResponse;
+ fakeBuildBucketClient.batchResponse = getBatchResponse;
await tester.post(webhook);
expect(batchRequestCalled, isTrue);
- expect(schedulerV2.cancelPreSubmitTargetsCallCnt, 1);
+ expect(scheduler.cancelPreSubmitTargetsCallCnt, 1);
});
test('Does nothing against cherry pick PR', () async {
@@ -2196,22 +2188,21 @@
test('When synchronized, cancels existing builds and schedules new ones', () async {
const int issueNumber = 12345;
bool batchRequestCalled = false;
-
- Future<bbv2.BatchResponse> getBatchResponse() async {
+ Future<BatchResponse> getBatchResponse() async {
batchRequestCalled = true;
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[
- bbv2.Build(number: 999, builder: bbv2.BuilderID(builder: 'Linux'), status: bbv2.Status.SUCCESS),
+ return BatchResponse(
+ responses: <Response>[
+ Response(
+ searchBuilds: SearchBuildsResponse(
+ builds: <Build>[
+ generateBuild(999, name: 'Linux', status: Status.ended),
],
),
),
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[
- bbv2.Build(number: 998, builder: bbv2.BuilderID(builder: 'Linux'), status: bbv2.Status.SUCCESS),
+ Response(
+ searchBuilds: SearchBuildsResponse(
+ builds: <Build>[
+ generateBuild(998, name: 'Linux', status: Status.ended),
],
),
),
@@ -2219,7 +2210,7 @@
);
}
- fakeBuildBucketV2Client.batchResponse = getBatchResponse;
+ fakeBuildBucketClient.batchResponse = getBatchResponse;
tester.message = generateGithubWebhookMessage(
action: 'synchronize',
diff --git a/app_dart/test/request_handlers/postsubmit_luci_subscription_v2_test.dart b/app_dart/test/request_handlers/postsubmit_luci_subscription_v2_test.dart
deleted file mode 100644
index e4e3cda..0000000
--- a/app_dart/test/request_handlers/postsubmit_luci_subscription_v2_test.dart
+++ /dev/null
@@ -1,582 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/firestore/commit.dart' as firestore_commit;
-import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/request_handlers/postsubmit_luci_subscription_v2.dart';
-import 'package:cocoon_service/src/request_handling/exceptions.dart';
-import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:googleapis/firestore/v1.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/request_handling/fake_authentication.dart';
-import '../src/request_handling/fake_http.dart';
-import '../src/request_handling/subscription_v2_tester.dart';
-import '../src/service/fake_luci_build_service_v2.dart';
-import '../src/service/fake_scheduler_v2.dart';
-import '../src/utilities/build_bucket_v2_messages.dart';
-import '../src/utilities/entity_generators.dart';
-import '../src/utilities/mocks.dart';
-import 'package:fixnum/fixnum.dart';
-
-void main() {
- late PostsubmitLuciSubscriptionV2 handler;
- late FakeConfig config;
- late FakeHttpRequest request;
- late MockFirestoreService mockFirestoreService;
- late SubscriptionV2Tester tester;
- late MockGithubChecksServiceV2 mockGithubChecksService;
- late MockGithubChecksUtil mockGithubChecksUtil;
- late FakeSchedulerV2 scheduler;
- firestore.Task? firestoreTask;
- firestore_commit.Commit? firestoreCommit;
- late int attempt;
-
- setUp(() async {
- firestoreTask = null;
- attempt = 0;
- mockGithubChecksUtil = MockGithubChecksUtil();
- mockFirestoreService = MockFirestoreService();
- config = FakeConfig(
- maxLuciTaskRetriesValue: 3,
- firestoreService: mockFirestoreService,
- );
- mockGithubChecksService = MockGithubChecksServiceV2();
- when(mockGithubChecksService.githubChecksUtil).thenReturn(mockGithubChecksUtil);
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output')))
- .thenAnswer((_) async => generateCheckRun(1, name: 'Linux A'));
- when(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- ).thenAnswer((_) async => true);
- when(
- mockFirestoreService.getDocument(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- attempt++;
- if (attempt == 1) {
- return Future<Document>.value(
- firestoreTask,
- );
- } else {
- return Future<Document>.value(
- firestoreCommit,
- );
- }
- });
- when(
- mockFirestoreService.queryRecentCommits(
- limit: captureAnyNamed('limit'),
- slug: captureAnyNamed('slug'),
- branch: captureAnyNamed('branch'),
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<List<firestore_commit.Commit>>.value(
- <firestore_commit.Commit>[firestoreCommit!],
- );
- });
- // when(
- // mockFirestoreService.getDocument(
- // 'projects/flutter-dashboard/databases/cocoon/documents/tasks/87f88734747805589f2131753620d61b22922822_Linux A_1',
- // ),
- // ).thenAnswer((Invocation invocation) {
- // return Future<Document>.value(
- // firestoreCommit,
- // );
- // });
- when(
- mockFirestoreService.batchWriteDocuments(
- captureAny,
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<BatchWriteResponse>.value(BatchWriteResponse());
- });
- final FakeLuciBuildServiceV2 luciBuildService = FakeLuciBuildServiceV2(
- config: config,
- githubChecksUtil: mockGithubChecksUtil,
- );
- scheduler = FakeSchedulerV2(
- ciYaml: exampleConfig,
- config: config,
- luciBuildService: luciBuildService,
- );
- handler = PostsubmitLuciSubscriptionV2(
- cache: CacheService(inMemory: true),
- config: config,
- authProvider: FakeAuthenticationProvider(),
- githubChecksService: mockGithubChecksService,
- datastoreProvider: (_) => DatastoreService(config.db, 5),
- scheduler: scheduler,
- );
- request = FakeHttpRequest();
-
- tester = SubscriptionV2Tester(
- request: request,
- );
- });
-
- test('throws exception when task document name is not in message', () async {
- const Map<String, dynamic> userDataMap = {
- 'commit_key': 'flutter/main/abc123',
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: '',
- userData: userDataMap,
- );
-
- expect(() => tester.post(handler), throwsA(isA<BadRequestException>()));
- });
-
- test('updates task based on message', () async {
- firestoreTask = generateFirestoreTask(1, attempts: 2, name: 'Linux A');
- when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 2);
- final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Task task = generateTask(
- 4507531199512576,
- name: 'Linux A',
- parent: commit,
- );
- final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
- final Map<String, dynamic> userDataMap = {
- 'task_key': '${task.key.id}',
- 'commit_key': '${task.key.parent?.id}',
- 'firestore_commit_document_name': commit.sha,
- 'firestore_task_document_name': taskDocumentName,
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- userData: userDataMap,
- );
-
- config.db.values[commit.key] = commit;
- config.db.values[task.key] = task;
-
- expect(task.status, Task.statusNew);
- expect(task.endTimestamp, 0);
-
- // Firestore checks before API call.
- expect(firestoreTask!.status, Task.statusNew);
- expect(firestoreTask!.buildNumber, null);
-
- await tester.post(handler);
-
- expect(task.status, Task.statusSucceeded);
- expect(task.endTimestamp, 1697672824674);
-
- // Firestore checks after API call.
- final List<dynamic> captured = verify(mockFirestoreService.batchWriteDocuments(captureAny, captureAny)).captured;
- expect(captured.length, 2);
- final BatchWriteRequest batchWriteRequest = captured[0] as BatchWriteRequest;
- expect(batchWriteRequest.writes!.length, 1);
- final Document updatedDocument = batchWriteRequest.writes![0].update!;
- expect(updatedDocument.name, firestoreTask!.name);
- expect(firestoreTask!.status, Task.statusSucceeded);
- expect(firestoreTask!.buildNumber, 259942);
- });
-
- test('skips task processing when build is with scheduled status', () async {
- firestoreTask = generateFirestoreTask(1, name: 'Linux A', status: firestore.Task.statusInProgress);
- final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Task task = generateTask(
- 4507531199512576,
- name: 'Linux A',
- parent: commit,
- status: Task.statusInProgress,
- );
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
- final Map<String, dynamic> userDataMap = {
- 'task_key': '${task.key.id}',
- 'commit_key': '${task.key.parent?.id}',
- 'firestore_commit_document_name': commit.sha,
- 'firestore_task_document_name': taskDocumentName,
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SCHEDULED,
- builder: 'Linux A',
- userData: userDataMap,
- );
-
- expect(firestoreTask!.status, firestore.Task.statusInProgress);
- expect(firestoreTask!.attempts, 1);
- expect(await tester.post(handler), Body.empty);
- expect(firestoreTask!.status, firestore.Task.statusInProgress);
- });
-
- test('skips task processing when task has already finished', () async {
- firestoreTask = generateFirestoreTask(1, name: 'Linux A', status: firestore.Task.statusSucceeded);
- final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Task task = generateTask(
- 4507531199512576,
- name: 'Linux A',
- parent: commit,
- status: Task.statusSucceeded,
- );
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
- final Map<String, dynamic> userDataMap = {
- 'task_key': '${task.key.id}',
- 'commit_key': '${task.key.parent?.id}',
- 'firestore_commit_document_name': commit.sha,
- 'firestore_task_document_name': taskDocumentName,
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.STARTED,
- builder: 'Linux A',
- userData: userDataMap,
- );
-
- expect(task.status, Task.statusSucceeded);
- expect(task.attempts, 1);
- expect(await tester.post(handler), Body.empty);
- expect(task.status, Task.statusSucceeded);
- });
-
- test('skips task processing when target has been deleted', () async {
- firestoreTask = generateFirestoreTask(1, name: 'Linux B', status: firestore.Task.statusSucceeded);
- final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Task task = generateTask(
- 4507531199512576,
- name: 'Linux B',
- parent: commit,
- status: Task.statusSucceeded,
- );
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
- final Map<String, dynamic> userDataMap = {
- 'task_key': '${task.key.id}',
- 'commit_key': '${task.key.parent?.id}',
- 'firestore_commit_document_name': commit.sha,
- 'firestore_task_document_name': taskDocumentName,
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.STARTED,
- builder: 'Linux B',
- userData: userDataMap,
- );
-
- expect(task.status, Task.statusSucceeded);
- expect(task.attempts, 1);
- expect(await tester.post(handler), Body.empty);
- });
-
- test('does not fail on empty user data', () async {
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux A',
- );
- expect(await tester.post(handler), Body.empty);
- });
-
- test('on failed builds auto-rerun the build', () async {
- firestoreTask = generateFirestoreTask(
- 1,
- name: 'Linux A',
- status: firestore.Task.statusFailed,
- commitSha: '87f88734747805589f2131753620d61b22922822',
- );
- firestoreCommit = generateFirestoreCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Task task = generateTask(
- 4507531199512576,
- name: 'Linux A',
- parent: commit,
- status: Task.statusFailed,
- );
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
- final Map<String, dynamic> userDataMap = {
- 'task_key': '${task.key.id}',
- 'commit_key': '${task.key.parent?.id}',
- 'firestore_commit_document_name': commit.sha,
- 'firestore_task_document_name': taskDocumentName,
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.FAILURE,
- builder: 'Linux A',
- userData: userDataMap,
- );
-
- expect(firestoreTask!.status, firestore.Task.statusFailed);
- expect(firestoreTask!.attempts, 1);
- expect(await tester.post(handler), Body.empty);
- final List<dynamic> captured = verify(mockFirestoreService.batchWriteDocuments(captureAny, captureAny)).captured;
- expect(captured.length, 2);
- final BatchWriteRequest batchWriteRequest = captured[0] as BatchWriteRequest;
- expect(batchWriteRequest.writes!.length, 1);
- final Document insertedTaskDocument = batchWriteRequest.writes![0].update!;
- final firestore.Task resultTask = firestore.Task.fromDocument(taskDocument: insertedTaskDocument);
- expect(resultTask.status, firestore.Task.statusInProgress);
- expect(resultTask.attempts, 2);
- });
-
- test('on canceled builds auto-rerun the build if they timed out', () async {
- firestoreTask = generateFirestoreTask(
- 1,
- name: 'Linux A',
- status: firestore.Task.statusInfraFailure,
- commitSha: '87f88734747805589f2131753620d61b22922822',
- );
- firestoreCommit = generateFirestoreCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Task task = generateTask(
- 4507531199512576,
- name: 'Linux A',
- parent: commit,
- status: Task.statusInfraFailure,
- );
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
- final Map<String, dynamic> userDataMap = {
- 'task_key': '${task.key.id}',
- 'commit_key': '${task.key.parent?.id}',
- 'firestore_commit_document_name': commit.sha,
- 'firestore_task_document_name': taskDocumentName,
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.CANCELED,
- builder: 'Linux A',
- userData: userDataMap,
- );
-
- expect(firestoreTask!.status, firestore.Task.statusInfraFailure);
- expect(firestoreTask!.attempts, 1);
- expect(await tester.post(handler), Body.empty);
- final List<dynamic> captured = verify(mockFirestoreService.batchWriteDocuments(captureAny, captureAny)).captured;
- expect(captured.length, 2);
- final BatchWriteRequest batchWriteRequest = captured[0] as BatchWriteRequest;
- expect(batchWriteRequest.writes!.length, 1);
- final Document insertedTaskDocument = batchWriteRequest.writes![0].update!;
- final firestore.Task resultTask = firestore.Task.fromDocument(taskDocument: insertedTaskDocument);
- expect(resultTask.status, firestore.Task.statusInProgress);
- expect(resultTask.attempts, 2);
- });
-
- test('on builds resulting in an infra failure auto-rerun the build if they timed out', () async {
- firestoreTask = generateFirestoreTask(
- 1,
- name: 'Linux A',
- status: firestore.Task.statusInfraFailure,
- commitSha: '87f88734747805589f2131753620d61b22922822',
- );
- firestoreCommit = generateFirestoreCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Task task = generateTask(
- 4507531199512576,
- name: 'Linux A',
- parent: commit,
- status: Task.statusInfraFailure,
- );
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
- final Map<String, dynamic> userDataMap = {
- 'task_key': '${task.key.id}',
- 'commit_key': '${task.key.parent?.id}',
- 'firestore_commit_document_name': commit.sha,
- 'firestore_task_document_name': taskDocumentName,
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.INFRA_FAILURE,
- builder: 'Linux A',
- userData: userDataMap,
- );
-
- expect(task.status, Task.statusInfraFailure);
- expect(task.attempts, 1);
- expect(await tester.post(handler), Body.empty);
- final List<dynamic> captured = verify(mockFirestoreService.batchWriteDocuments(captureAny, captureAny)).captured;
- expect(captured.length, 2);
- final BatchWriteRequest batchWriteRequest = captured[0] as BatchWriteRequest;
- expect(batchWriteRequest.writes!.length, 1);
- final Document insertedTaskDocument = batchWriteRequest.writes![0].update!;
- final firestore.Task resultTask = firestore.Task.fromDocument(taskDocument: insertedTaskDocument);
- expect(resultTask.status, firestore.Task.statusInProgress);
- expect(resultTask.attempts, 2);
- });
-
- test('non-bringup target updates check run', () async {
- firestoreTask = generateFirestoreTask(1, name: 'Linux nonbringup');
- scheduler.ciYaml = nonBringupPackagesConfig;
- when(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- ).thenAnswer((_) async => true);
- when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 2);
- final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822', repo: 'packages');
- final Task task = generateTask(
- 4507531199512576,
- name: 'Linux nonbringup',
- parent: commit,
- );
- config.db.values[commit.key] = commit;
- config.db.values[task.key] = task;
- final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
- final Map<String, dynamic> userDataMap = {
- 'task_key': '${task.key.id}',
- 'commit_key': '${task.key.parent?.id}',
- 'firestore_commit_document_name': commit.sha,
- 'firestore_task_document_name': taskDocumentName,
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux A',
- userData: userDataMap,
- );
-
- await tester.post(handler);
- verify(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- ).called(1);
- });
-
- test('bringup target does not update check run', () async {
- firestoreTask = generateFirestoreTask(1, name: 'Linux bringup');
- scheduler.ciYaml = bringupPackagesConfig;
- when(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- ).thenAnswer((_) async => true);
- when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 2);
- final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Task task = generateTask(
- 4507531199512576,
- name: 'Linux bringup',
- parent: commit,
- );
- config.db.values[commit.key] = commit;
- config.db.values[task.key] = task;
- final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
- final Map<String, dynamic> userDataMap = {
- 'task_key': '${task.key.id}',
- 'commit_key': '${task.key.parent?.id}',
- 'firestore_commit_document_name': commit.sha,
- 'firestore_task_document_name': taskDocumentName,
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux bringup',
- userData: userDataMap,
- );
-
- await tester.post(handler);
- verifyNever(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- );
- });
-
- test('unsupported repo target does not update check run', () async {
- scheduler.ciYaml = unsupportedPostsubmitCheckrunConfig;
- when(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- ).thenAnswer((_) async => true);
- when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 2);
- firestoreTask = generateFirestoreTask(1, attempts: 2, name: 'Linux flutter');
-
- final Commit commit = generateCommit(1, sha: '87f88734747805589f2131753620d61b22922822');
- final Task task = generateTask(
- 4507531199512576,
- name: 'Linux flutter',
- parent: commit,
- );
- config.db.values[commit.key] = commit;
- config.db.values[task.key] = task;
- final String taskDocumentName = '${commit.sha}_${task.name}_${task.attempts}';
-
- final Map<String, dynamic> userDataMap = {
- 'task_key': '${task.key.id}',
- 'commit_key': '${task.key.parent?.id}',
- 'firestore_commit_document_name': commit.sha,
- 'firestore_task_document_name': taskDocumentName,
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux bringup',
- userData: userDataMap,
- );
-
- await tester.post(handler);
- verifyNever(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- );
- });
-}
diff --git a/app_dart/test/request_handlers/presubmit_luci_subscription_test.dart b/app_dart/test/request_handlers/presubmit_luci_subscription_test.dart
index 013d88b..87e7cb7 100644
--- a/app_dart/test/request_handlers/presubmit_luci_subscription_test.dart
+++ b/app_dart/test/request_handlers/presubmit_luci_subscription_test.dart
@@ -12,6 +12,7 @@
import '../src/request_handling/fake_authentication.dart';
import '../src/request_handling/fake_http.dart';
import '../src/request_handling/subscription_tester.dart';
+import '../src/service/fake_buildbucket.dart';
import '../src/service/fake_luci_build_service.dart';
import '../src/service/fake_scheduler.dart';
import '../src/utilities/mocks.dart';
@@ -21,6 +22,7 @@
void main() {
late PresubmitLuciSubscription handler;
+ late FakeBuildBucketClient buildbucket;
late FakeConfig config;
late MockGitHub mockGitHubClient;
late FakeHttpRequest request;
@@ -32,6 +34,7 @@
setUp(() async {
config = FakeConfig();
+ buildbucket = FakeBuildBucketClient();
mockLuciBuildService = MockLuciBuildService();
mockGithubChecksService = MockGithubChecksService();
@@ -43,6 +46,7 @@
handler = PresubmitLuciSubscription(
cache: CacheService(inMemory: true),
config: config,
+ buildBucketClient: buildbucket,
luciBuildService: FakeLuciBuildService(config: config),
githubChecksService: mockGithubChecksService,
authProvider: FakeAuthenticationProvider(),
diff --git a/app_dart/test/request_handlers/presubmit_luci_subscription_v2_test.dart b/app_dart/test/request_handlers/presubmit_luci_subscription_v2_test.dart
deleted file mode 100644
index 4c21446..0000000
--- a/app_dart/test/request_handlers/presubmit_luci_subscription_v2_test.dart
+++ /dev/null
@@ -1,303 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/request_handlers/presubmit_luci_subscription_v2.dart';
-import 'package:fixnum/fixnum.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/request_handling/fake_authentication.dart';
-import '../src/request_handling/fake_http.dart';
-import '../src/request_handling/subscription_v2_tester.dart';
-import '../src/service/fake_luci_build_service_v2.dart';
-import '../src/service/fake_scheduler_v2.dart';
-import '../src/utilities/build_bucket_v2_messages.dart';
-import '../src/utilities/mocks.dart';
-
-const String ref = 'deadbeef';
-
-void main() {
- late PresubmitLuciSubscriptionV2 handler;
- late FakeConfig config;
- late MockGitHub mockGitHubClient;
- late FakeHttpRequest request;
- late SubscriptionV2Tester tester;
- late MockRepositoriesService mockRepositoriesService;
- late MockGithubChecksServiceV2 mockGithubChecksService;
- late MockLuciBuildServiceV2 mockLuciBuildService;
- late FakeSchedulerV2 scheduler;
-
- setUp(() async {
- config = FakeConfig();
- mockLuciBuildService = MockLuciBuildServiceV2();
-
- mockGithubChecksService = MockGithubChecksServiceV2();
- scheduler = FakeSchedulerV2(
- ciYaml: examplePresubmitRescheduleConfig,
- config: config,
- luciBuildService: mockLuciBuildService,
- );
-
- handler = PresubmitLuciSubscriptionV2(
- cache: CacheService(inMemory: true),
- config: config,
- luciBuildService: FakeLuciBuildServiceV2(config: config),
- githubChecksService: mockGithubChecksService,
- authProvider: FakeAuthenticationProvider(),
- scheduler: scheduler,
- );
- request = FakeHttpRequest();
-
- tester = SubscriptionV2Tester(
- request: request,
- );
-
- mockGitHubClient = MockGitHub();
- mockRepositoriesService = MockRepositoriesService();
- when(mockGitHubClient.repositories).thenReturn(mockRepositoriesService);
- config.githubClient = mockGitHubClient;
- });
-
- test('Requests without repo_owner and repo_name do not update checks', () async {
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux Host Engine',
- addBuildSet: false,
- );
-
- await tester.post(handler);
-
- verifyNever(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- );
- });
-
- test('Requests with repo_owner and repo_name update checks', () async {
- when(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- ).thenAnswer((_) async => true);
-
- when(mockGithubChecksService.taskFailed(any)).thenAnswer((_) => false);
-
- const Map<String, dynamic> userDataMap = {
- 'repo_owner': 'flutter',
- 'repo_name': 'cocoon',
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux Host Engine',
- userData: userDataMap,
- );
-
- await tester.post(handler);
- verify(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- ).called(1);
- });
-
- test('Requests when task failed but no need to reschedule', () async {
- when(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- ).thenAnswer((_) async => true);
- when(mockGithubChecksService.taskFailed(any)).thenAnswer((_) => true);
- when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 1);
-
- const Map<String, dynamic> userDataMap = {
- 'repo_owner': 'flutter',
- 'commit_branch': 'main',
- 'commit_sha': 'abc',
- 'repo_name': 'flutter',
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux A',
- userData: userDataMap,
- );
-
- final bbv2.BuildsV2PubSub buildsV2PubSub = createBuild(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux A',
- );
-
- when(
- mockLuciBuildService.rescheduleBuild(
- build: buildsV2PubSub.build,
- builderName: 'Linux Coverage',
- rescheduleAttempt: 0,
- userDataMap: userDataMap,
- ),
- ).thenAnswer(
- (_) async => bbv2.Build(
- id: Int64(8905920700440101120),
- builder: bbv2.BuilderID(bucket: 'luci.flutter.prod', project: 'flutter', builder: 'Linux Coverage'),
- ),
- );
-
- await tester.post(handler);
- verifyNever(
- mockLuciBuildService.rescheduleBuild(
- build: buildsV2PubSub.build,
- builderName: 'Linux Coverage',
- rescheduleAttempt: 0,
- userDataMap: userDataMap,
- ),
- );
- verify(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- ),
- ).called(1);
- });
-
- test('Requests when task failed but need to reschedule', () async {
- when(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- rescheduled: true,
- ),
- ).thenAnswer((_) async => true);
- when(mockGithubChecksService.taskFailed(any)).thenAnswer((_) => true);
- when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 0);
-
- const Map<String, dynamic> userDataMap = {
- 'repo_owner': 'flutter',
- 'commit_branch': 'main',
- 'commit_sha': 'abc',
- 'repo_name': 'flutter',
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux B',
- userData: userDataMap,
- );
-
- final bbv2.BuildsV2PubSub buildsV2PubSub = createBuild(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux A',
- );
-
- when(
- mockLuciBuildService.rescheduleBuild(
- build: buildsV2PubSub.build,
- builderName: 'Linux Coverage',
- rescheduleAttempt: 1,
- userDataMap: userDataMap,
- ),
- ).thenAnswer(
- (_) async => bbv2.Build(
- id: Int64(8905920700440101120),
- builder: bbv2.BuilderID(bucket: 'luci.flutter.prod', project: 'flutter', builder: 'Linux B'),
- ),
- );
- await tester.post(handler);
- verifyNever(
- mockLuciBuildService.rescheduleBuild(
- build: buildsV2PubSub.build,
- builderName: 'Linux Coverage',
- rescheduleAttempt: 1,
- userDataMap: userDataMap,
- ),
- );
- verify(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- rescheduled: true,
- ),
- ).called(1);
- });
-
- test('Build not rescheduled if not found in ciYaml list.', () async {
- when(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- rescheduled: false,
- ),
- ).thenAnswer((_) async => true);
- when(mockGithubChecksService.taskFailed(any)).thenAnswer((_) => true);
- when(mockGithubChecksService.currentAttempt(any)).thenAnswer((_) => 1);
-
- const Map<String, dynamic> userDataMap = {
- 'repo_owner': 'flutter',
- 'commit_branch': 'main',
- 'commit_sha': 'abc',
- 'repo_name': 'flutter',
- };
-
- tester.message = createPushMessageV2(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux C',
- userData: userDataMap,
- );
-
- final bbv2.BuildsV2PubSub buildsV2PubSub = createBuild(
- Int64(1),
- status: bbv2.Status.SUCCESS,
- builder: 'Linux C',
- );
-
- await tester.post(handler);
- verifyNever(
- mockLuciBuildService.rescheduleBuild(
- build: buildsV2PubSub.build,
- builderName: 'Linux C',
- userDataMap: userDataMap,
- rescheduleAttempt: 1,
- ),
- );
- verify(
- mockGithubChecksService.updateCheckStatus(
- build: anyNamed('build'),
- userDataMap: anyNamed('userDataMap'),
- luciBuildService: anyNamed('luciBuildService'),
- slug: anyNamed('slug'),
- rescheduled: false,
- ),
- ).called(1);
- });
-}
diff --git a/app_dart/test/request_handlers/reset_prod_task_v2_test.dart b/app_dart/test/request_handlers/reset_prod_task_v2_test.dart
deleted file mode 100644
index 9d34494..0000000
--- a/app_dart/test/request_handlers/reset_prod_task_v2_test.dart
+++ /dev/null
@@ -1,230 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/request_handlers/reset_prod_task_v2.dart';
-import 'package:cocoon_service/src/request_handling/exceptions.dart';
-import 'package:googleapis/firestore/v1.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/datastore/fake_datastore.dart';
-import '../src/request_handling/api_request_handler_tester.dart';
-import '../src/request_handling/fake_authentication.dart';
-import '../src/service/fake_scheduler_v2.dart';
-import '../src/utilities/entity_generators.dart';
-import '../src/utilities/mocks.dart';
-
-void main() {
- group('ResetProdTask', () {
- FakeClientContext clientContext;
- late ResetProdTaskV2 handler;
- late FakeConfig config;
- FakeKeyHelper keyHelper;
- late MockLuciBuildServiceV2 mockLuciBuildService;
- late MockFirestoreService mockFirestoreService;
- late ApiRequestHandlerTester tester;
- late Commit commit;
- late Task task;
- final firestore.Task firestoreTask = generateFirestoreTask(1, attempts: 1);
-
- setUp(() {
- final FakeDatastoreDB datastoreDB = FakeDatastoreDB();
- clientContext = FakeClientContext();
- mockFirestoreService = MockFirestoreService();
- clientContext.isDevelopmentEnvironment = false;
- keyHelper = FakeKeyHelper(applicationContext: clientContext.applicationContext);
- config = FakeConfig(
- dbValue: datastoreDB,
- keyHelperValue: keyHelper,
- supportedBranchesValue: <String>[
- Config.defaultBranch(Config.flutterSlug),
- ],
- firestoreService: mockFirestoreService,
- );
- final FakeAuthenticatedContext authContext = FakeAuthenticatedContext(clientContext: clientContext);
- tester = ApiRequestHandlerTester(context: authContext);
- mockLuciBuildService = MockLuciBuildServiceV2();
- handler = ResetProdTaskV2(
- config: config,
- authenticationProvider: FakeAuthenticationProvider(clientContext: clientContext),
- luciBuildService: mockLuciBuildService,
- scheduler: FakeSchedulerV2(
- config: config,
- ciYaml: exampleConfig,
- ),
- );
- commit = generateCommit(1);
- task = generateTask(
- 1,
- name: 'Linux A',
- parent: commit,
- status: Task.statusFailed,
- );
- tester.requestData = <String, dynamic>{
- 'Key': config.keyHelper.encode(task.key),
- };
-
- when(
- mockFirestoreService.getDocument(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<Document>.value(
- firestoreTask,
- );
- });
-
- when(
- mockLuciBuildService.checkRerunBuilder(
- commit: anyNamed('commit'),
- datastore: anyNamed('datastore'),
- task: anyNamed('task'),
- target: anyNamed('target'),
- tags: anyNamed('tags'),
- ignoreChecks: anyNamed('ignoreChecks'),
- firestoreService: mockFirestoreService,
- taskDocument: anyNamed('taskDocument'),
- ),
- ).thenAnswer((_) async => true);
- });
- test('Schedule new task', () async {
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- expect(await tester.post(handler), Body.empty);
-
- final List<dynamic> captured = verify(mockFirestoreService.getDocument(captureAny)).captured;
- expect(captured.length, 1);
- final String documentName = captured[0] as String;
- expect(
- documentName,
- '$kDatabase/documents/${firestore.kTaskCollectionId}/${commit.sha}_${task.name}_${task.attempts}',
- );
- });
-
- test('schedule new task when task document is aviable', () async {
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- tester.requestData = <String, dynamic>{
- 'taskDocumentName':
- '$kDatabase/documents/${firestore.kTaskCollectionId}/${commit.sha}_${task.name}_${task.attempts}}',
- 'Commit': commit.sha,
- 'Task': task.name,
- 'Repo': commit.slug.name,
- };
- expect(await tester.post(handler), Body.empty);
- });
-
- test('Re-schedule passing all the parameters', () async {
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- tester.requestData = <String, dynamic>{
- 'Commit': commit.sha,
- 'Task': task.name,
- 'Repo': commit.slug.name,
- };
- expect(await tester.post(handler), Body.empty);
- verify(
- mockLuciBuildService.checkRerunBuilder(
- commit: anyNamed('commit'),
- datastore: anyNamed('datastore'),
- task: anyNamed('task'),
- target: anyNamed('target'),
- tags: anyNamed('tags'),
- ignoreChecks: true,
- firestoreService: mockFirestoreService,
- taskDocument: anyNamed('taskDocument'),
- ),
- ).called(1);
- });
-
- test('Rerun all failed tasks when task name is all', () async {
- final Task taskA = generateTask(2, name: 'Linux A', parent: commit, status: Task.statusFailed);
- final Task taskB = generateTask(3, name: 'Mac A', parent: commit, status: Task.statusFailed);
- config.db.values[taskA.key] = taskA;
- config.db.values[taskB.key] = taskB;
- config.db.values[commit.key] = commit;
- tester.requestData = <String, dynamic>{
- 'Commit': commit.sha,
- 'Task': 'all',
- 'Repo': commit.slug.name,
- };
- expect(await tester.post(handler), Body.empty);
- verify(
- mockLuciBuildService.checkRerunBuilder(
- commit: anyNamed('commit'),
- datastore: anyNamed('datastore'),
- task: anyNamed('task'),
- target: anyNamed('target'),
- tags: anyNamed('tags'),
- ignoreChecks: false,
- firestoreService: mockFirestoreService,
- taskDocument: anyNamed('taskDocument'),
- ),
- ).called(2);
- });
-
- test('Rerun all runs nothing when everything is passed', () async {
- final Task task = generateTask(2, name: 'Windows A', parent: commit, status: Task.statusSucceeded);
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- tester.requestData = <String, dynamic>{
- 'Commit': commit.sha,
- 'Task': 'all',
- 'Repo': commit.slug.name,
- };
- expect(await tester.post(handler), Body.empty);
- verifyNever(
- mockLuciBuildService.checkRerunBuilder(
- commit: anyNamed('commit'),
- datastore: anyNamed('datastore'),
- task: anyNamed('task'),
- target: anyNamed('target'),
- tags: anyNamed('tags'),
- firestoreService: anyNamed('firestoreService'),
- taskDocument: anyNamed('taskDocument'),
- ignoreChecks: false,
- ),
- );
- });
-
- test('Re-schedule without any parameters raises exception', () async {
- tester.requestData = <String, dynamic>{};
- expect(() => tester.post(handler), throwsA(isA<BadRequestException>()));
- });
-
- test('Re-schedule existing task even though taskName is missing in the task', () async {
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- expect(await tester.post(handler), Body.empty);
- });
-
- test('Fails if task is not rerun', () async {
- when(
- mockLuciBuildService.checkRerunBuilder(
- commit: anyNamed('commit'),
- datastore: anyNamed('datastore'),
- task: anyNamed('task'),
- target: anyNamed('target'),
- tags: anyNamed('tags'),
- ignoreChecks: true,
- firestoreService: mockFirestoreService,
- taskDocument: anyNamed('taskDocument'),
- ),
- ).thenAnswer((_) async => false);
- config.db.values[task.key] = task;
- config.db.values[commit.key] = commit;
- expect(() => tester.post(handler), throwsA(isA<InternalServerError>()));
- });
-
- test('Fails if commit does not exist', () async {
- config.db.values[task.key] = task;
- expect(() => tester.post(handler), throwsA(isA<StateError>()));
- });
- });
-}
diff --git a/app_dart/test/request_handlers/reset_try_task_v2_test.dart b/app_dart/test/request_handlers/reset_try_task_v2_test.dart
deleted file mode 100644
index f383f9d..0000000
--- a/app_dart/test/request_handlers/reset_try_task_v2_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/src/request_handlers/reset_try_task_v2.dart';
-import 'package:cocoon_service/src/request_handling/body.dart';
-import 'package:cocoon_service/src/request_handling/exceptions.dart';
-import 'package:github/github.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/request_handling/api_request_handler_tester.dart';
-import '../src/request_handling/fake_authentication.dart';
-import '../src/request_handling/fake_http.dart';
-import '../src/service/fake_github_service.dart';
-import '../src/service/fake_scheduler_v2.dart';
-import '../src/utilities/entity_generators.dart';
-import '../src/utilities/mocks.dart';
-
-void main() {
- group('ResetTryTask', () {
- late ApiRequestHandlerTester tester;
- FakeClientContext clientContext;
- late ResetTryTaskV2 handler;
- late FakeConfig config;
- FakeSchedulerV2 fakeScheduler;
- FakeAuthenticatedContext authContext;
- MockGitHub mockGithub;
- MockPullRequestsService mockPullRequestsService;
- late MockGithubChecksUtil mockGithubChecksUtil;
-
- setUp(() {
- clientContext = FakeClientContext();
- clientContext.isDevelopmentEnvironment = false;
- authContext = FakeAuthenticatedContext(clientContext: clientContext);
- mockGithub = MockGitHub();
- mockPullRequestsService = MockPullRequestsService();
- config = FakeConfig(githubClient: mockGithub, githubService: FakeGithubService());
- mockGithubChecksUtil = MockGithubChecksUtil();
- tester = ApiRequestHandlerTester(context: authContext);
- fakeScheduler = FakeSchedulerV2(
- config: config,
- githubChecksUtil: mockGithubChecksUtil,
- );
- handler = ResetTryTaskV2(
- config: config,
- authenticationProvider: FakeAuthenticationProvider(clientContext: clientContext),
- scheduler: fakeScheduler,
- );
- when(mockGithub.pullRequests).thenReturn(mockPullRequestsService);
- when(mockPullRequestsService.get(any, 123)).thenAnswer((_) async => generatePullRequest(id: 123));
- });
-
- test('Empty repo', () async {
- tester.request = FakeHttpRequest(
- queryParametersValue: <String, String>{
- 'pr': '123',
- },
- );
- expect(() => tester.get(handler), throwsA(isA<BadRequestException>()));
- });
-
- test('Empty pr', () async {
- tester.request = FakeHttpRequest(
- queryParametersValue: <String, String>{
- 'repo': 'flutter',
- },
- );
- expect(() => tester.get(handler), throwsA(isA<BadRequestException>()));
- });
-
- test('Trigger builds if all parameters are correct', () async {
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output'))).thenAnswer((_) async {
- return CheckRun.fromJson(const <String, dynamic>{
- 'id': 1,
- 'started_at': '2020-05-10T02:49:31Z',
- 'check_suite': <String, dynamic>{'id': 2},
- });
- });
- tester.request = FakeHttpRequest(
- queryParametersValue: <String, String>{
- ResetTryTaskV2.kRepoParam: 'flutter',
- ResetTryTaskV2.kPullRequestNumberParam: '123',
- },
- );
- expect(await tester.get(handler), Body.empty);
- });
-
- test('Parses empty builder correctly', () {
- final List<String> builders = handler.getBuilderList('');
- expect(builders.isEmpty, true);
- });
-
- test('Parses non-empty builder correctly', () {
- expect(handler.getBuilderList('a, b, c'), <String>['a', 'b', 'c']);
- });
- });
-}
diff --git a/app_dart/test/request_handlers/scheduler/batch_backfiller_v2_test.dart b/app_dart/test/request_handlers/scheduler/batch_backfiller_v2_test.dart
deleted file mode 100644
index f7d75f9..0000000
--- a/app_dart/test/request_handlers/scheduler/batch_backfiller_v2_test.dart
+++ /dev/null
@@ -1,327 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/model/ci_yaml/target.dart';
-import 'package:cocoon_service/src/request_handlers/scheduler/batch_backfiller_v2.dart';
-import 'package:googleapis/firestore/v1.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../../src/datastore/fake_config.dart';
-import '../../src/datastore/fake_datastore.dart';
-import '../../src/request_handling/fake_pubsub.dart';
-import '../../src/request_handling/request_handler_tester.dart';
-import '../../src/service/fake_luci_build_service_v2.dart';
-import '../../src/service/fake_scheduler_v2.dart';
-import '../../src/utilities/entity_generators.dart';
-import '../../src/utilities/mocks.dart';
-
-final List<Commit> commits = <Commit>[
- generateCommit(3),
- generateCommit(2),
- generateCommit(1),
-];
-
-void main() {
- late BatchBackfillerV2 handler;
- late RequestHandlerTester tester;
- late FakeDatastoreDB db;
- late FakePubSub pubsub;
- late FakeSchedulerV2 scheduler;
- late MockGithubChecksUtil mockGithubChecksUtil;
- late Config config;
- late MockFirestoreService mockFirestoreService;
-
- group('BatchBackfiller', () {
- setUp(() async {
- mockFirestoreService = MockFirestoreService();
-
- db = FakeDatastoreDB()..addOnQuery<Commit>((Iterable<Commit> results) => commits);
-
- config = FakeConfig(
- dbValue: db,
- backfillerTargetLimitValue: 2,
- firestoreService: mockFirestoreService,
- );
-
- pubsub = FakePubSub();
-
- mockGithubChecksUtil = MockGithubChecksUtil();
-
- when(
- mockGithubChecksUtil.createCheckRun(
- any,
- any,
- any,
- any,
- output: anyNamed('output'),
- ),
- ).thenAnswer((_) async => generateCheckRun(1));
-
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
-
- scheduler = FakeSchedulerV2(
- config: config,
- ciYaml: batchPolicyConfig,
- githubChecksUtil: mockGithubChecksUtil,
- luciBuildService: FakeLuciBuildServiceV2(
- config: config,
- pubsub: pubsub,
- githubChecksUtil: mockGithubChecksUtil,
- ),
- );
-
- handler = BatchBackfillerV2(
- config: config,
- scheduler: scheduler,
- );
-
- tester = RequestHandlerTester();
- });
-
- test('does not backfill on completed task column', () async {
- final List<Task> allGreen = <Task>[
- generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(3, name: 'Linux_android A', status: Task.statusSucceeded),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => allGreen);
- await tester.get(handler);
- expect(pubsub.messages, isEmpty);
- });
-
- test('does not backfill when there is a running task', () async {
- final List<Task> middleTaskInProgress = <Task>[
- generateTask(1, name: 'Linux_android A', status: Task.statusNew),
- generateTask(2, name: 'Linux_android A', status: Task.statusInProgress),
- generateTask(3, name: 'Linux_android A', status: Task.statusNew),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => middleTaskInProgress);
- await tester.get(handler);
- expect(pubsub.messages, isEmpty);
- });
-
- test('does not backfill when task does not exist in TOT', () async {
- scheduler = FakeSchedulerV2(
- config: config,
- ciYaml: notInToTConfig,
- githubChecksUtil: mockGithubChecksUtil,
- luciBuildService: FakeLuciBuildServiceV2(
- config: config,
- pubsub: pubsub,
- githubChecksUtil: mockGithubChecksUtil,
- ),
- );
- handler = BatchBackfillerV2(
- config: config,
- scheduler: scheduler,
- );
- final List<Task> allGray = <Task>[
- generateTask(1, name: 'Linux_android B', status: Task.statusNew),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => allGray);
- await tester.get(handler);
- expect(pubsub.messages.length, 0);
- });
-
- test('backfills latest task', () async {
- final List<Task> allGray = <Task>[
- generateTask(1, name: 'Linux_android A', status: Task.statusNew),
- generateTask(2, name: 'Linux_android A', status: Task.statusNew),
- generateTask(3, name: 'Linux_android A', status: Task.statusNew),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => allGray);
- await tester.get(handler);
- expect(pubsub.messages.length, 1);
-
- final bbv2.BatchRequest batchRequest = bbv2.BatchRequest.create();
- batchRequest.mergeFromProto3Json(pubsub.messages.first);
-
- final bbv2.ScheduleBuildRequest scheduleBuildRequest = batchRequest.requests.first.scheduleBuild;
-
- expect(scheduleBuildRequest.priority, LuciBuildService.kBackfillPriority);
- });
-
- test('does not backfill targets when number of available tasks is less than BatchPolicy.kBatchSize', () async {
- final List<Task> scheduleA = <Task>[
- generateTask(1, name: 'Linux_android A', status: Task.statusNew),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => scheduleA);
- await tester.get(handler);
- expect(pubsub.messages.length, 0);
- });
-
- test('backfills earlier failed task with higher priority', () async {
- final List<Task> allGray = <Task>[
- generateTask(1, name: 'Linux_android A', status: Task.statusNew),
- generateTask(2, name: 'Linux_android A', status: Task.statusNew),
- generateTask(3, name: 'Linux_android A', status: Task.statusFailed),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => allGray);
- await tester.get(handler);
- expect(pubsub.messages.length, 1);
-
- final bbv2.BatchRequest batchRequest = bbv2.BatchRequest.create();
- batchRequest.mergeFromProto3Json(pubsub.messages.first);
-
- final bbv2.ScheduleBuildRequest scheduleBuildRequest = batchRequest.requests.first.scheduleBuild;
-
- expect(scheduleBuildRequest.priority, LuciBuildService.kRerunPriority);
- });
-
- test('backfills task successfully with retry', () async {
- pubsub.exceptionFlag = true;
- pubsub.exceptionRepetition = 1;
- final List<Task> allGray = <Task>[
- generateTask(1, name: 'Linux_android A', status: Task.statusNew),
- generateTask(2, name: 'Linux_android A', status: Task.statusNew),
- generateTask(3, name: 'Linux_android A', status: Task.statusFailed),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => allGray);
- await tester.get(handler);
- expect(pubsub.messages.length, 1);
-
- final bbv2.BatchRequest batchRequest = bbv2.BatchRequest.create();
- batchRequest.mergeFromProto3Json(pubsub.messages.first);
-
- final bbv2.ScheduleBuildRequest scheduleBuildRequest = batchRequest.requests.first.scheduleBuild;
-
- expect(scheduleBuildRequest.priority, LuciBuildService.kRerunPriority);
- });
-
- test('fails to backfill tasks when retry limit is hit', () async {
- pubsub.exceptionFlag = true;
- pubsub.exceptionRepetition = 3;
- final List<Task> allGray = <Task>[
- generateTask(1, name: 'Linux_android A', status: Task.statusNew),
- generateTask(2, name: 'Linux_android A', status: Task.statusNew),
- generateTask(3, name: 'Linux_android A', status: Task.statusFailed),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => allGray);
- await tester.get(handler);
- expect(pubsub.messages.length, 0);
- });
-
- test('backfills older task', () async {
- final List<Task> oldestGray = <Task>[
- generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(3, name: 'Linux_android A', status: Task.statusNew),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => oldestGray);
- await tester.get(handler);
- expect(pubsub.messages.length, 1);
- });
-
- test('updates task as in-progress after backfilling', () async {
- final List<Task> oldestGray = <Task>[
- generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(3, name: 'Linux_android A', status: Task.statusNew),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => oldestGray);
- final Task task = oldestGray[2];
- expect(db.values.length, 0);
- expect(task.status, Task.statusNew);
- await tester.get(handler);
- expect(db.values.length, 1);
- expect(task.status, Task.statusInProgress);
-
- final List<dynamic> captured = verify(mockFirestoreService.writeViaTransaction(captureAny)).captured;
- expect(captured.length, 1);
- final List<Write> commitResponse = captured[0] as List<Write>;
- expect(commitResponse.length, 1);
- final firestore.Task taskDocuemnt = firestore.Task.fromDocument(taskDocument: commitResponse[0].update!);
- expect(taskDocuemnt.status, firestore.Task.statusInProgress);
- });
-
- test('skip scheduling builds if datastore commit fails', () async {
- db.commitException = true;
- final List<Task> oldestGray = <Task>[
- generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(3, name: 'Linux_android A', status: Task.statusNew),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => oldestGray);
- expect(db.values.length, 0);
- await tester.get(handler);
- expect(db.values.length, 0);
- expect(pubsub.messages.length, 0);
- });
-
- test('backfills only column A when B does not need backfill', () async {
- final List<Task> scheduleA = <Task>[
- // Linux_android A
- generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(3, name: 'Linux_android A', status: Task.statusNew),
- // Linux_android B
- generateTask(1, name: 'Linux_android B', status: Task.statusSucceeded),
- generateTask(2, name: 'Linux_android B', status: Task.statusSucceeded),
- generateTask(3, name: 'Linux_android B', status: Task.statusSucceeded),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => scheduleA);
- await tester.get(handler);
- expect(pubsub.messages.length, 1);
- });
-
- test('backfills both column A and B', () async {
- final List<Task> scheduleA = <Task>[
- // Linux_android A
- generateTask(1, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(2, name: 'Linux_android A', status: Task.statusSucceeded),
- generateTask(3, name: 'Linux_android A', status: Task.statusNew),
- // Linux_android B
- generateTask(1, name: 'Linux_android B', status: Task.statusSucceeded),
- generateTask(2, name: 'Linux_android B', status: Task.statusSucceeded),
- generateTask(3, name: 'Linux_android B', status: Task.statusNew),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => scheduleA);
- await tester.get(handler);
- expect(pubsub.messages.length, 2);
- });
-
- test('backfills limited targets when number of available targets exceeds backfillerTargetLimit ', () async {
- final List<Task> scheduleA = <Task>[
- // Linux_android A
- generateTask(1, name: 'Linux_android A', status: Task.statusNew),
- generateTask(2, name: 'Linux_android A', status: Task.statusNew),
- // Linux_android B
- generateTask(1, name: 'Linux_android B', status: Task.statusNew),
- generateTask(2, name: 'Linux_android B', status: Task.statusNew),
- // Linux_android C
- generateTask(1, name: 'Linux_android C', status: Task.statusNew),
- generateTask(2, name: 'Linux_android C', status: Task.statusNew),
- ];
- db.addOnQuery<Task>((Iterable<Task> results) => scheduleA);
- await tester.get(handler);
- expect(pubsub.messages.length, 2);
- });
-
- group('getFilteredBackfill', () {
- test('backfills high priorty targets first', () async {
- final List<Tuple<Target, FullTask, int>> backfill = <Tuple<Target, FullTask, int>>[
- Tuple(generateTarget(1), FullTask(generateTask(1), generateCommit(1)), LuciBuildService.kRerunPriority),
- Tuple(generateTarget(2), FullTask(generateTask(2), generateCommit(2)), LuciBuildService.kBackfillPriority),
- Tuple(generateTarget(3), FullTask(generateTask(3), generateCommit(3)), LuciBuildService.kRerunPriority),
- ];
- final List<Tuple<Target, FullTask, int>> filteredBackfill = handler.getFilteredBackfill(backfill);
- expect(filteredBackfill.length, 2);
- expect(filteredBackfill[0].third, LuciBuildService.kRerunPriority);
- expect(filteredBackfill[1].third, LuciBuildService.kRerunPriority);
- });
- });
- });
-}
diff --git a/app_dart/test/request_handlers/scheduler/scheduler_request_subscription_test.dart b/app_dart/test/request_handlers/scheduler/scheduler_request_subscription_test.dart
deleted file mode 100644
index eeadaf6..0000000
--- a/app_dart/test/request_handlers/scheduler/scheduler_request_subscription_test.dart
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/luci/pubsub_message_v2.dart';
-import 'package:cocoon_service/src/request_handlers/scheduler/scheduler_request_subscription.dart';
-import 'package:cocoon_service/src/request_handling/exceptions.dart';
-import 'package:fixnum/fixnum.dart';
-import 'package:mockito/mockito.dart';
-import 'package:retry/retry.dart';
-import 'package:test/test.dart';
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-
-import '../../src/datastore/fake_config.dart';
-import '../../src/request_handling/fake_authentication.dart';
-import '../../src/request_handling/fake_http.dart';
-import '../../src/request_handling/subscription_v2_tester.dart';
-import '../../src/utilities/mocks.dart';
-
-void main() {
- late SchedulerRequestSubscriptionV2 handler;
- late SubscriptionV2Tester tester;
-
- late MockBuildBucketV2Client buildBucketV2Client;
-
- setUp(() async {
- buildBucketV2Client = MockBuildBucketV2Client();
- handler = SchedulerRequestSubscriptionV2(
- cache: CacheService(inMemory: true),
- config: FakeConfig(),
- authProvider: FakeAuthenticationProvider(),
- buildBucketClient: buildBucketV2Client,
- retryOptions: const RetryOptions(
- maxAttempts: 3,
- maxDelay: Duration.zero,
- ),
- );
-
- tester = SubscriptionV2Tester(
- request: FakeHttpRequest(),
- );
- });
-
- test('throws exception when BatchRequest cannot be decoded', () async {
- tester.message = const PushMessageV2();
- expect(() => tester.post(handler), throwsA(isA<BadRequestException>()));
- });
-
- test('schedules request to buildbucket using v2', () async {
- final bbv2.BuilderID responseBuilderID = bbv2.BuilderID();
- responseBuilderID.builder = 'Linux A';
-
- final bbv2.Build responseBuild = bbv2.Build();
- responseBuild.id = Int64(12345);
- responseBuild.builder = responseBuilderID;
-
- // has a list of BatchResponse_Response
- final bbv2.BatchResponse batchResponse = bbv2.BatchResponse();
- final bbv2.BatchResponse_Response batchResponseResponse = bbv2.BatchResponse_Response();
- batchResponseResponse.scheduleBuild = responseBuild;
- batchResponse.responses.add(batchResponseResponse);
-
- when(buildBucketV2Client.batch(any)).thenAnswer((_) async => batchResponse);
-
- // We cannot construct the object manually with the protos as we cannot write out
- // the json with all the required double quotes and testing fails.
- const String messageData = '''
-{
- "requests": [
- {
- "scheduleBuild": {
- "builder": {
- "builder": "Linux A"
- }
- }
- }
- ]
-}
-''';
-
- const PushMessageV2 pushMessageV2 = PushMessageV2(data: messageData, messageId: '798274983');
- tester.message = pushMessageV2;
- final Body body = await tester.post(handler);
- expect(body, Body.empty);
- });
-
- test('retries schedule build if no response comes back', () async {
- final bbv2.BuilderID responseBuilderID = bbv2.BuilderID();
- responseBuilderID.builder = 'Linux A';
-
- final bbv2.Build responseBuild = bbv2.Build();
- responseBuild.id = Int64(12345);
- responseBuild.builder = responseBuilderID;
-
- // has a list of BatchResponse_Response
- final bbv2.BatchResponse batchResponse = bbv2.BatchResponse();
-
- final bbv2.BatchResponse_Response batchResponseResponse = bbv2.BatchResponse_Response();
- batchResponseResponse.scheduleBuild = responseBuild;
-
- batchResponse.responses.add(batchResponseResponse);
-
- int attempt = 0;
-
- when(buildBucketV2Client.batch(any)).thenAnswer((_) async {
- attempt += 1;
- if (attempt == 2) {
- return batchResponse;
- }
-
- return bbv2.BatchResponse().createEmptyInstance();
- });
-
- const String messageData = '''
-{
- "requests": [
- {
- "scheduleBuild": {
- "builder": {
- "builder": "Linux A"
- }
- }
- }
- ]
-}
-''';
-
- const PushMessageV2 pushMessageV2 = PushMessageV2(data: messageData, messageId: '798274983');
- tester.message = pushMessageV2;
- final Body body = await tester.post(handler);
-
- expect(body, Body.empty);
- expect(verify(buildBucketV2Client.batch(any)).callCount, 2);
- });
-
- test('acking message and logging error when no response comes back after retry limit', () async {
- when(buildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse().createEmptyInstance();
- });
-
- const String messageData = '''
-{
- "requests": [
- {
- "scheduleBuild": {
- "builder": {
- "builder": "Linux A"
- }
- }
- }
- ]
-}
-''';
-
- const PushMessageV2 pushMessageV2 = PushMessageV2(data: messageData, messageId: '798274983');
- tester.message = pushMessageV2;
- final Body body = await tester.post(handler);
-
- expect(body, isNotNull);
- expect(verify(buildBucketV2Client.batch(any)).callCount, 3);
- });
-}
diff --git a/app_dart/test/request_handlers/vacuum_github_commits_v2_test.dart b/app_dart/test/request_handlers/vacuum_github_commits_v2_test.dart
deleted file mode 100644
index 8041d61..0000000
--- a/app_dart/test/request_handlers/vacuum_github_commits_v2_test.dart
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2019 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/request_handlers/vacuum_github_commits_v2.dart';
-import 'package:cocoon_service/src/request_handling/body.dart';
-import 'package:cocoon_service/src/service/config.dart';
-import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:gcloud/db.dart' as gcloud_db;
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart';
-import 'package:googleapis/bigquery/v2.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/datastore/fake_datastore.dart';
-import '../src/request_handling/api_request_handler_tester.dart';
-import '../src/request_handling/fake_authentication.dart';
-import '../src/service/fake_github_service.dart';
-import '../src/service/fake_scheduler_v2.dart';
-import '../src/utilities/mocks.dart';
-
-void main() {
- group('VacuumGithubCommits', () {
- late FakeConfig config;
- FakeAuthenticationProvider auth;
- late FakeDatastoreDB db;
- FakeSchedulerV2 scheduler;
- late ApiRequestHandlerTester tester;
- late MockFirestoreService mockFirestoreService;
- late VacuumGithubCommitsV2 handler;
-
- late List<String> githubCommits;
- late int yieldedCommitCount;
-
- List<RepositoryCommit> commitList() {
- final List<RepositoryCommit> commits = <RepositoryCommit>[];
- for (String sha in githubCommits) {
- final User author = User()
- ..login = 'Username'
- ..avatarUrl = 'http://example.org/avatar.jpg';
- final GitCommitUser committer =
- GitCommitUser('Username', 'Username@abc.com', DateTime.fromMillisecondsSinceEpoch(int.parse(sha)));
- final GitCommit gitCommit = GitCommit()
- ..message = 'commit message'
- ..committer = committer;
- commits.add(
- RepositoryCommit()
- ..sha = sha
- ..author = author
- ..commit = gitCommit,
- );
- }
- return commits;
- }
-
- Commit shaToCommit(String sha, String branch, RepositorySlug slug) {
- return Commit(
- key: db.emptyKey.append(Commit, id: '${slug.fullName}/$branch/$sha'),
- repository: slug.fullName,
- sha: sha,
- branch: branch,
- timestamp: int.parse(sha),
- );
- }
-
- setUp(() {
- final MockRepositoriesService repositories = MockRepositoriesService();
- final FakeGithubService githubService = FakeGithubService();
- final MockTabledataResource tabledataResourceApi = MockTabledataResource();
- mockFirestoreService = MockFirestoreService();
- when(tabledataResourceApi.insertAll(any, any, any, any)).thenAnswer((_) async {
- return TableDataInsertAllResponse();
- });
-
- yieldedCommitCount = 0;
- db = FakeDatastoreDB();
- config = FakeConfig(
- tabledataResource: tabledataResourceApi,
- githubService: githubService,
- firestoreService: mockFirestoreService,
- dbValue: db,
- supportedBranchesValue: <String>[
- 'master',
- 'main',
- ],
- supportedReposValue: <RepositorySlug>{
- Config.cocoonSlug,
- Config.engineSlug,
- Config.flutterSlug,
- Config.packagesSlug,
- },
- );
-
- auth = FakeAuthenticationProvider();
- scheduler = FakeSchedulerV2(
- config: config,
- ciYaml: exampleConfig,
- );
- tester = ApiRequestHandlerTester();
- handler = VacuumGithubCommitsV2(
- config: config,
- authenticationProvider: auth,
- datastoreProvider: (DatastoreDB db) => DatastoreService(config.db, 5),
- scheduler: scheduler,
- );
-
- githubService.listCommitsBranch = (String branch, int hours) {
- return commitList();
- };
-
- when(githubService.github.repositories).thenReturn(repositories);
- });
-
- test('succeeds when GitHub returns no commits', () async {
- githubCommits = <String>[];
- config.supportedBranchesValue = <String>['master'];
- final Body body = await tester.get<Body>(handler);
- expect(yieldedCommitCount, 0);
- expect(db.values, isEmpty);
- expect(await body.serialize().toList(), isEmpty);
- });
-
- test('does not fail on empty commit list', () async {
- githubCommits = <String>[];
- expect(db.values.values.whereType<Commit>().length, 0);
- await tester.get<Body>(handler);
- expect(db.values.values.whereType<Commit>().length, 0);
- });
-
- test('does not add recent commits', () async {
- githubCommits = <String>['${DateTime.now().millisecondsSinceEpoch}'];
-
- expect(db.values.values.whereType<Commit>().length, 0);
- await tester.get<Body>(handler);
- expect(db.values.values.whereType<Commit>().length, 0);
- });
-
- test('inserts all relevant fields of the commit', () async {
- githubCommits = <String>['1'];
- expect(db.values.values.whereType<Commit>().length, 0);
- await tester.get<Body>(handler);
- expect(db.values.values.whereType<Commit>().length, config.supportedRepos.length);
- final List<Commit> commits = db.values.values.whereType<Commit>().toList();
- final Commit commit = commits.first;
- expect(commit.repository, 'flutter/cocoon');
- expect(commit.branch, 'main');
- expect(commit.sha, '1');
- expect(commit.timestamp, 1);
- expect(commit.author, 'Username');
- expect(commit.authorAvatarUrl, 'http://example.org/avatar.jpg');
- expect(commit.message, 'commit message');
- expect(commits[1].repository, Config.engineSlug.fullName);
- expect(commits[2].repository, Config.flutterSlug.fullName);
- });
-
- test('skips commits for which transaction commit fails', () async {
- githubCommits = <String>['2', '3', '4'];
-
- /// This test is simulating an existing branch, which must already
- /// have at least one commit in the datastore.
- final Commit commit = shaToCommit('1', 'main', Config.engineSlug);
- db.values[commit.key] = commit;
-
- db.onCommit = (List<gcloud_db.Model<dynamic>> inserts, List<gcloud_db.Key<dynamic>> deletes) {
- if (inserts.whereType<Commit>().where((Commit commit) => commit.sha == '3').isNotEmpty) {
- throw StateError('Commit failed');
- }
- };
- final Body body = await tester.get<Body>(handler);
-
- /// The +1 is coming from the engine repository and manually added commit on the top of this test.
- expect(db.values.values.whereType<Commit>().length, 8 + 1); // 2 commits for 4 repos
- expect(db.values.values.whereType<Commit>().map<String>(toSha), containsAll(<String>['1', '2', '4']));
- expect(db.values.values.whereType<Commit>().map<int>(toTimestamp), containsAll(<int>[1, 2, 4]));
- expect(await body.serialize().toList(), isEmpty);
- });
- });
-}
-
-String toSha(Commit commit) => commit.sha!;
-
-int toTimestamp(Commit commit) => commit.timestamp!;
diff --git a/app_dart/test/server_test.dart b/app_dart/test/server_test.dart
index 80c9746..addb63d 100644
--- a/app_dart/test/server_test.dart
+++ b/app_dart/test/server_test.dart
@@ -5,18 +5,14 @@
import 'package:cocoon_service/cocoon_service.dart';
import 'package:cocoon_service/server.dart';
import 'package:cocoon_service/src/service/commit_service.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
import 'package:test/test.dart';
import 'src/datastore/fake_config.dart';
import 'src/request_handling/fake_authentication.dart';
-import 'src/service/fake_build_bucket_v2_client.dart';
import 'src/service/fake_buildbucket.dart';
import 'src/service/fake_gerrit_service.dart';
import 'src/service/fake_luci_build_service.dart';
-import 'src/service/fake_luci_build_service_v2.dart';
import 'src/service/fake_scheduler.dart';
-import 'src/service/fake_scheduler_v2.dart';
void main() {
test('verify server can be created', () {
@@ -29,15 +25,11 @@
swarmingAuthProvider: FakeAuthenticationProvider(),
branchService: BranchService(config: FakeConfig(), gerritService: FakeGerritService()),
buildBucketClient: FakeBuildBucketClient(),
- buildBucketV2Client: FakeBuildBucketV2Client(),
luciBuildService: FakeLuciBuildService(config: FakeConfig()),
- luciBuildServiceV2: FakeLuciBuildServiceV2(config: FakeConfig()),
githubChecksService: GithubChecksService(FakeConfig()),
- githubChecksServiceV2: GithubChecksServiceV2(FakeConfig()),
commitService: CommitService(config: FakeConfig()),
gerritService: FakeGerritService(),
scheduler: FakeScheduler(config: FakeConfig()),
- schedulerV2: FakeSchedulerV2(config: FakeConfig()),
);
});
}
diff --git a/app_dart/test/service/luci_build_service_test.dart b/app_dart/test/service/luci_build_service_test.dart
index a31b2f0..ac7d5b8 100644
--- a/app_dart/test/service/luci_build_service_test.dart
+++ b/app_dart/test/service/luci_build_service_test.dart
@@ -36,7 +36,6 @@
late FakeConfig config;
FakeGithubService githubService;
late MockBuildBucketClient mockBuildBucketClient;
- late MockBuildBucketV2Client mockBuildBucketV2Client;
late LuciBuildService service;
late RepositorySlug slug;
late MockGithubChecksUtil mockGithubChecksUtil = MockGithubChecksUtil();
@@ -56,13 +55,11 @@
githubService = FakeGithubService();
config = FakeConfig(githubService: githubService);
mockBuildBucketClient = MockBuildBucketClient();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
pubsub = FakePubSub();
service = LuciBuildService(
config: config,
cache: cache,
buildBucketClient: mockBuildBucketClient,
- buildBucketV2Client: mockBuildBucketV2Client,
gerritService: FakeGerritService(),
pubsub: pubsub,
);
@@ -154,13 +151,11 @@
githubService = FakeGithubService();
config = FakeConfig(githubService: githubService);
mockBuildBucketClient = MockBuildBucketClient();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
pubsub = FakePubSub();
service = LuciBuildService(
config: config,
cache: cache,
buildBucketClient: mockBuildBucketClient,
- buildBucketV2Client: mockBuildBucketV2Client,
gerritService: FakeGerritService(),
pubsub: pubsub,
);
@@ -219,13 +214,11 @@
githubService = FakeGithubService();
config = FakeConfig(githubService: githubService);
mockBuildBucketClient = MockBuildBucketClient();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
pubsub = FakePubSub();
service = LuciBuildService(
config: config,
cache: cache,
buildBucketClient: mockBuildBucketClient,
- buildBucketV2Client: mockBuildBucketV2Client,
pubsub: pubsub,
);
slug = RepositorySlug('flutter', 'cocoon');
@@ -283,14 +276,12 @@
githubService = FakeGithubService();
config = FakeConfig(githubService: githubService);
mockBuildBucketClient = MockBuildBucketClient();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
mockGithubChecksUtil = MockGithubChecksUtil();
pubsub = FakePubSub();
service = LuciBuildService(
config: config,
cache: cache,
buildBucketClient: mockBuildBucketClient,
- buildBucketV2Client: mockBuildBucketV2Client,
githubChecksUtil: mockGithubChecksUtil,
gerritService: FakeGerritService(branchesValue: <String>['master']),
pubsub: pubsub,
@@ -421,13 +412,11 @@
setUp(() {
cache = CacheService(inMemory: true);
mockBuildBucketClient = MockBuildBucketClient();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
pubsub = FakePubSub();
service = LuciBuildService(
config: FakeConfig(),
cache: cache,
buildBucketClient: mockBuildBucketClient,
- buildBucketV2Client: mockBuildBucketV2Client,
githubChecksUtil: mockGithubChecksUtil,
pubsub: pubsub,
);
@@ -717,13 +706,11 @@
setUp(() {
cache = CacheService(inMemory: true);
mockBuildBucketClient = MockBuildBucketClient();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
pubsub = FakePubSub();
service = LuciBuildService(
config: FakeConfig(),
cache: cache,
buildBucketClient: mockBuildBucketClient,
- buildBucketV2Client: mockBuildBucketV2Client,
githubChecksUtil: mockGithubChecksUtil,
pubsub: pubsub,
);
@@ -793,13 +780,11 @@
cache = CacheService(inMemory: true);
config = FakeConfig();
mockBuildBucketClient = MockBuildBucketClient();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
pubsub = FakePubSub();
service = LuciBuildService(
config: config,
cache: cache,
buildBucketClient: mockBuildBucketClient,
- buildBucketV2Client: mockBuildBucketV2Client,
pubsub: pubsub,
);
slug = RepositorySlug('flutter', 'cocoon');
@@ -847,13 +832,11 @@
githubService = FakeGithubService();
config = FakeConfig(githubService: githubService);
mockBuildBucketClient = MockBuildBucketClient();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
pubsub = FakePubSub();
service = LuciBuildService(
config: config,
cache: cache,
buildBucketClient: mockBuildBucketClient,
- buildBucketV2Client: mockBuildBucketV2Client,
pubsub: pubsub,
);
slug = RepositorySlug('flutter', 'flutter');
@@ -895,13 +878,11 @@
cache = CacheService(inMemory: true);
config = FakeConfig();
mockBuildBucketClient = MockBuildBucketClient();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
pubsub = FakePubSub();
service = LuciBuildService(
config: config,
cache: cache,
buildBucketClient: mockBuildBucketClient,
- buildBucketV2Client: mockBuildBucketV2Client,
pubsub: pubsub,
);
final Map<String, dynamic> json = jsonDecode(
@@ -949,7 +930,6 @@
firestoreTask = null;
firestoreCommit = null;
mockBuildBucketClient = MockBuildBucketClient();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
mockGithubChecksUtil = MockGithubChecksUtil();
mockFirestoreService = MockFirestoreService();
when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output')))
@@ -987,7 +967,6 @@
config: config,
cache: cache,
buildBucketClient: mockBuildBucketClient,
- buildBucketV2Client: mockBuildBucketV2Client,
githubChecksUtil: mockGithubChecksUtil,
pubsub: pubsub,
);
diff --git a/app_dart/test/service/luci_build_service_v2_test.dart b/app_dart/test/service/luci_build_service_v2_test.dart
deleted file mode 100644
index 766405c..0000000
--- a/app_dart/test/service/luci_build_service_v2_test.dart
+++ /dev/null
@@ -1,1249 +0,0 @@
-// Copyright 2020 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-import 'dart:core';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/cocoon_service.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/firestore/commit.dart' as firestore_commit;
-import 'package:cocoon_service/src/model/firestore/task.dart' as firestore;
-import 'package:cocoon_service/src/model/ci_yaml/target.dart';
-import 'package:cocoon_service/src/model/github/checks.dart' as cocoon_checks;
-import 'package:cocoon_service/src/model/luci/user_data.dart';
-import 'package:cocoon_service/src/service/exceptions.dart';
-import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:fixnum/fixnum.dart';
-import 'package:gcloud/datastore.dart';
-import 'package:github/github.dart';
-import 'package:googleapis/firestore/v1.dart' hide Status;
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../src/datastore/fake_config.dart';
-import '../src/request_handling/fake_pubsub.dart';
-import '../src/service/fake_gerrit_service.dart';
-import '../src/service/fake_github_service.dart';
-import '../src/utilities/build_bucket_v2_messages.dart';
-import '../src/utilities/entity_generators.dart';
-import '../src/utilities/mocks.dart';
-import '../src/utilities/webhook_generators.dart';
-
-void main() {
- late CacheService cache;
- late FakeConfig config;
- FakeGithubService githubService;
- late MockBuildBucketV2Client mockBuildBucketV2Client;
- late LuciBuildServiceV2 service;
- late RepositorySlug slug;
- late MockGithubChecksUtil mockGithubChecksUtil = MockGithubChecksUtil();
- late FakePubSub pubsub;
-
- final List<Target> targets = <Target>[
- generateTarget(1, properties: <String, String>{'os': 'abc'}),
- ];
- final PullRequest pullRequest = generatePullRequest(id: 1, repo: 'cocoon');
-
- group('getBuilds', () {
- final bbv2.Build macBuild = generateBbv2Build(Int64(998), name: 'Mac', status: bbv2.Status.STARTED);
- final bbv2.Build linuxBuild =
- generateBbv2Build(Int64(998), name: 'Linux', bucket: 'try', status: bbv2.Status.STARTED);
-
- setUp(() {
- cache = CacheService(inMemory: true);
- githubService = FakeGithubService();
- config = FakeConfig(githubService: githubService);
- mockBuildBucketV2Client = MockBuildBucketV2Client();
- pubsub = FakePubSub();
- service = LuciBuildServiceV2(
- config: config,
- cache: cache,
- buildBucketV2Client: mockBuildBucketV2Client,
- gerritService: FakeGerritService(),
- pubsub: pubsub,
- );
- slug = RepositorySlug('flutter', 'cocoon');
- });
-
- test('Null build', () async {
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[macBuild],
- ),
- ),
- ],
- );
- });
- final Iterable<bbv2.Build> builds = await service.getTryBuilds(
- slug: Config.flutterSlug,
- sha: 'shasha',
- builderName: 'abcd',
- );
- expect(builds.first, macBuild);
- });
-
- test('Existing prod build', () async {
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[],
- ),
- ),
- ],
- );
- });
- final Iterable<bbv2.Build> builds = await service.getProdBuilds(
- slug: slug,
- commitSha: 'commit123',
- builderName: 'abcd',
- );
- expect(builds, isEmpty);
- });
-
- test('Existing try build', () async {
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[linuxBuild],
- ),
- ),
- ],
- );
- });
- final Iterable<bbv2.Build> builds = await service.getTryBuilds(
- slug: Config.flutterSlug,
- sha: 'shasha',
- builderName: 'abcd',
- );
- expect(builds.first, linuxBuild);
- });
-
- test('Existing try build by pull request', () async {
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[linuxBuild],
- ),
- ),
- ],
- );
- });
- final Iterable<bbv2.Build> builds = await service.getTryBuildsByPullRequest(
- pullRequest: PullRequest(
- id: 998,
- base: PullRequestHead(repo: Repository(fullName: 'flutter/cocoon')),
- ),
- );
- expect(builds.first, linuxBuild);
- });
- });
-
- group('getBuilders', () {
- setUp(() {
- cache = CacheService(inMemory: true);
- githubService = FakeGithubService();
- config = FakeConfig(githubService: githubService);
- mockBuildBucketV2Client = MockBuildBucketV2Client();
- pubsub = FakePubSub();
- service = LuciBuildServiceV2(
- config: config,
- cache: cache,
- buildBucketV2Client: mockBuildBucketV2Client,
- gerritService: FakeGerritService(),
- pubsub: pubsub,
- );
- slug = RepositorySlug('flutter', 'flutter');
- });
-
- test('with one rpc call', () async {
- when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
- return bbv2.ListBuildersResponse(
- builders: [
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test1')),
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test2')),
- ],
- );
- });
- final Set<String> builders = await service.getAvailableBuilderSet();
- expect(builders.length, 2);
- expect(builders.contains('test1'), isTrue);
- });
-
- test('with more than one rpc calls', () async {
- int retries = -1;
- when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
- retries++;
- if (retries == 0) {
- return bbv2.ListBuildersResponse(
- builders: [
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test1')),
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test2')),
- ],
- nextPageToken: 'token',
- );
- } else if (retries == 1) {
- return bbv2.ListBuildersResponse(
- builders: [
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test3')),
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'test4')),
- ],
- );
- } else {
- return bbv2.ListBuildersResponse(builders: []);
- }
- });
- final Set<String> builders = await service.getAvailableBuilderSet();
- expect(builders.length, 4);
- expect(builders, <String>{'test1', 'test2', 'test3', 'test4'});
- });
- });
-
- group('buildsForRepositoryAndPr', () {
- final bbv2.Build macBuild = generateBbv2Build(Int64(999), name: 'Mac', status: bbv2.Status.STARTED);
- final bbv2.Build linuxBuild = generateBbv2Build(Int64(998), name: 'Linux', status: bbv2.Status.STARTED);
-
- setUp(() {
- cache = CacheService(inMemory: true);
- githubService = FakeGithubService();
- config = FakeConfig(githubService: githubService);
- mockBuildBucketV2Client = MockBuildBucketV2Client();
- pubsub = FakePubSub();
- service = LuciBuildServiceV2(
- config: config,
- cache: cache,
- buildBucketV2Client: mockBuildBucketV2Client,
- pubsub: pubsub,
- );
- slug = RepositorySlug('flutter', 'cocoon');
- });
-
- test('Empty responses are handled correctly', () async {
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[],
- ),
- ),
- ],
- );
- });
- final Iterable<bbv2.Build> builds = await service.getTryBuilds(
- slug: RepositorySlug.full(pullRequest.base!.repo!.fullName),
- sha: pullRequest.head!.sha!,
- builderName: null,
- );
- expect(builds, isEmpty);
- });
-
- test('Response returning a couple of builds', () async {
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[macBuild],
- ),
- ),
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[linuxBuild],
- ),
- ),
- ],
- );
- });
- final Iterable<bbv2.Build> builds = await service.getTryBuilds(
- slug: RepositorySlug.full(pullRequest.base!.repo!.fullName),
- sha: pullRequest.head!.sha!,
- builderName: null,
- );
- expect(builds, equals(<bbv2.Build>{macBuild, linuxBuild}));
- });
- });
-
- group('scheduleBuilds', () {
- setUp(() {
- cache = CacheService(inMemory: true);
- githubService = FakeGithubService();
- config = FakeConfig(githubService: githubService);
- mockBuildBucketV2Client = MockBuildBucketV2Client();
- mockGithubChecksUtil = MockGithubChecksUtil();
- pubsub = FakePubSub();
- service = LuciBuildServiceV2(
- config: config,
- cache: cache,
- buildBucketV2Client: mockBuildBucketV2Client,
- githubChecksUtil: mockGithubChecksUtil,
- gerritService: FakeGerritService(branchesValue: <String>['master']),
- pubsub: pubsub,
- );
- slug = RepositorySlug('flutter', 'cocoon');
- });
-
- test('schedule try builds successfully', () async {
- final PullRequest pullRequest = generatePullRequest();
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- scheduleBuild: generateBbv2Build(Int64(1)),
- ),
- ],
- );
- });
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
- .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
- final List<Target> scheduledTargets = await service.scheduleTryBuilds(
- pullRequest: pullRequest,
- targets: targets,
- );
-
- final Iterable<String> scheduledTargetNames = scheduledTargets.map((Target target) => target.value.name);
- expect(scheduledTargetNames, <String>['Linux 1']);
-
- final bbv2.BatchRequest batchRequest = bbv2.BatchRequest().createEmptyInstance();
- batchRequest.mergeFromProto3Json(pubsub.messages.single);
- expect(batchRequest.requests.single.scheduleBuild, isNotNull);
-
- final bbv2.ScheduleBuildRequest scheduleBuild = batchRequest.requests.single.scheduleBuild;
- expect(scheduleBuild.builder.bucket, 'try');
- expect(scheduleBuild.builder.builder, 'Linux 1');
- expect(scheduleBuild.notify.pubsubTopic, 'projects/flutter-dashboard/topics/build-bucket-presubmit');
-
- final Map<String, dynamic> userDataMap = UserData.decodeUserDataBytes(scheduleBuild.notify.userData);
-
- expect(userDataMap, <String, dynamic>{
- 'repo_owner': 'flutter',
- 'repo_name': 'flutter',
- 'user_agent': 'flutter-cocoon',
- 'check_run_id': 1,
- 'commit_sha': 'abc',
- 'commit_branch': 'master',
- 'builder_name': 'Linux 1',
- });
-
- final Map<String, bbv2.Value> properties = scheduleBuild.properties.fields;
- final List<bbv2.RequestedDimension> dimensions = scheduleBuild.dimensions;
- expect(properties, <String, bbv2.Value>{
- 'os': bbv2.Value(stringValue: 'abc'),
- 'dependencies': bbv2.Value(listValue: bbv2.ListValue()),
- 'bringup': bbv2.Value(boolValue: false),
- 'git_branch': bbv2.Value(stringValue: 'master'),
- 'git_url': bbv2.Value(stringValue: 'https://github.com/flutter/flutter'),
- 'git_ref': bbv2.Value(stringValue: 'refs/pull/123/head'),
- 'exe_cipd_version': bbv2.Value(stringValue: 'refs/heads/main'),
- 'recipe': bbv2.Value(stringValue: 'devicelab/devicelab'),
- });
- expect(dimensions.length, 1);
- expect(dimensions[0].key, 'os');
- expect(dimensions[0].value, 'abc');
- });
-
- test('schedule try builds with github build labels successfully', () async {
- final PullRequest pullRequest = generatePullRequest();
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- scheduleBuild: generateBbv2Build(Int64(1)),
- ),
- ],
- );
- });
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
- .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
- final List<Target> scheduledTargets = await service.scheduleTryBuilds(
- pullRequest: pullRequest,
- targets: targets,
- );
- final Iterable<String> scheduledTargetNames = scheduledTargets.map((Target target) => target.value.name);
- expect(scheduledTargetNames, <String>['Linux 1']);
-
- final bbv2.BatchRequest batchRequest = bbv2.BatchRequest().createEmptyInstance();
- batchRequest.mergeFromProto3Json(pubsub.messages.single);
- expect(batchRequest.requests.single.scheduleBuild, isNotNull);
-
- final bbv2.ScheduleBuildRequest scheduleBuild = batchRequest.requests.single.scheduleBuild;
- expect(scheduleBuild.builder.bucket, 'try');
- expect(scheduleBuild.builder.builder, 'Linux 1');
- expect(scheduleBuild.notify.pubsubTopic, 'projects/flutter-dashboard/topics/build-bucket-presubmit');
-
- final Map<String, dynamic> userDataMap = UserData.decodeUserDataBytes(scheduleBuild.notify.userData);
-
- expect(userDataMap, <String, dynamic>{
- 'repo_owner': 'flutter',
- 'repo_name': 'flutter',
- 'user_agent': 'flutter-cocoon',
- 'check_run_id': 1,
- 'commit_sha': 'abc',
- 'commit_branch': 'master',
- 'builder_name': 'Linux 1',
- });
-
- final Map<String, bbv2.Value> properties = scheduleBuild.properties.fields;
- final List<bbv2.RequestedDimension> dimensions = scheduleBuild.dimensions;
- expect(properties, <String, bbv2.Value>{
- 'os': bbv2.Value(stringValue: 'abc'),
- 'dependencies': bbv2.Value(listValue: bbv2.ListValue()),
- 'bringup': bbv2.Value(boolValue: false),
- 'git_branch': bbv2.Value(stringValue: 'master'),
- 'git_url': bbv2.Value(stringValue: 'https://github.com/flutter/flutter'),
- 'git_ref': bbv2.Value(stringValue: 'refs/pull/123/head'),
- 'exe_cipd_version': bbv2.Value(stringValue: 'refs/heads/main'),
- 'recipe': bbv2.Value(stringValue: 'devicelab/devicelab'),
- });
- expect(dimensions.length, 1);
- expect(dimensions[0].key, 'os');
- expect(dimensions[0].value, 'abc');
- });
-
- test('Schedule builds no-ops when targets list is empty', () async {
- await service.scheduleTryBuilds(
- pullRequest: pullRequest,
- targets: <Target>[],
- );
- verifyNever(mockGithubChecksUtil.createCheckRun(any, any, any, any));
- });
- });
-
- group('schedulePostsubmitBuilds', () {
- setUp(() {
- cache = CacheService(inMemory: true);
- mockBuildBucketV2Client = MockBuildBucketV2Client();
- pubsub = FakePubSub();
- service = LuciBuildServiceV2(
- config: FakeConfig(),
- cache: cache,
- buildBucketV2Client: mockBuildBucketV2Client,
- githubChecksUtil: mockGithubChecksUtil,
- pubsub: pubsub,
- );
- });
-
- test('schedule packages postsubmit builds successfully', () async {
- final Commit commit = generateCommit(0);
- when(mockGithubChecksUtil.createCheckRun(any, Config.packagesSlug, any, 'Linux 1'))
- .thenAnswer((_) async => generateCheckRun(1));
- when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
- return bbv2.ListBuildersResponse(
- builders: [
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux 1')),
- ],
- );
- });
- final Tuple<Target, Task, int> toBeScheduled = Tuple<Target, Task, int>(
- generateTarget(
- 1,
- properties: <String, String>{
- 'recipe': 'devicelab/devicelab',
- 'os': 'debian-10.12',
- },
- slug: Config.packagesSlug,
- ),
- generateTask(1),
- LuciBuildServiceV2.kDefaultPriority,
- );
- await service.schedulePostsubmitBuilds(
- commit: commit,
- toBeScheduled: <Tuple<Target, Task, int>>[
- toBeScheduled,
- ],
- );
- // Only one batch request should be published
- expect(pubsub.messages.length, 1);
-
- final bbv2.BatchRequest request = bbv2.BatchRequest().createEmptyInstance();
- request.mergeFromProto3Json(pubsub.messages.single);
- expect(request.requests.single.scheduleBuild, isNotNull);
-
- final bbv2.ScheduleBuildRequest scheduleBuild = request.requests.single.scheduleBuild;
- expect(scheduleBuild.builder.bucket, 'prod');
- expect(scheduleBuild.builder.builder, 'Linux 1');
- expect(scheduleBuild.notify.pubsubTopic, 'projects/flutter-dashboard/topics/build-bucket-postsubmit');
-
- final Map<String, dynamic> userDataMap = UserData.decodeUserDataBytes(scheduleBuild.notify.userData);
-
- expect(userDataMap, <String, dynamic>{
- 'commit_key': 'flutter/flutter/master/1',
- 'task_key': '1',
- 'check_run_id': 1,
- 'commit_sha': '0',
- 'commit_branch': 'master',
- 'builder_name': 'Linux 1',
- 'repo_owner': 'flutter',
- 'repo_name': 'packages',
- 'firestore_commit_document_name': '0',
- 'firestore_task_document_name': '0_task1_1',
- });
-
- final Map<String, bbv2.Value> properties = scheduleBuild.properties.fields;
- expect(properties, <String, bbv2.Value>{
- 'dependencies': bbv2.Value(listValue: bbv2.ListValue()),
- 'bringup': bbv2.Value(boolValue: false),
- 'git_branch': bbv2.Value(stringValue: 'master'),
- 'exe_cipd_version': bbv2.Value(stringValue: 'refs/heads/master'),
- 'os': bbv2.Value(stringValue: 'debian-10.12'),
- 'recipe': bbv2.Value(stringValue: 'devicelab/devicelab'),
- });
-
- expect(scheduleBuild.exe, bbv2.Executable(cipdVersion: 'refs/heads/master'));
- expect(scheduleBuild.dimensions, isNotEmpty);
- expect(
- scheduleBuild.dimensions.singleWhere((bbv2.RequestedDimension dimension) => dimension.key == 'os').value,
- 'debian-10.12',
- );
- });
-
- test('schedule postsubmit builds with correct userData for checkRuns', () async {
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
- .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
- final Commit commit = generateCommit(0, repo: 'packages');
- when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
- return bbv2.ListBuildersResponse(
- builders: [
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux 1')),
- ],
- );
- });
- final Tuple<Target, Task, int> toBeScheduled = Tuple<Target, Task, int>(
- generateTarget(
- 1,
- properties: <String, String>{
- 'os': 'debian-10.12',
- },
- slug: RepositorySlug('flutter', 'packages'),
- ),
- generateTask(1),
- LuciBuildServiceV2.kDefaultPriority,
- );
- await service.schedulePostsubmitBuilds(
- commit: commit,
- toBeScheduled: <Tuple<Target, Task, int>>[
- toBeScheduled,
- ],
- );
- // Only one batch request should be published
- expect(pubsub.messages.length, 1);
-
- final bbv2.BatchRequest request = bbv2.BatchRequest().createEmptyInstance();
- request.mergeFromProto3Json(pubsub.messages.single);
- expect(request.requests.single.scheduleBuild, isNotNull);
-
- final bbv2.ScheduleBuildRequest scheduleBuild = request.requests.single.scheduleBuild;
- expect(scheduleBuild.builder.bucket, 'prod');
- expect(scheduleBuild.builder.builder, 'Linux 1');
- expect(scheduleBuild.notify.pubsubTopic, 'projects/flutter-dashboard/topics/build-bucket-postsubmit');
-
- final Map<String, dynamic> userData = UserData.decodeUserDataBytes(scheduleBuild.notify.userData);
-
- expect(userData, <String, dynamic>{
- 'commit_key': 'flutter/flutter/master/1',
- 'task_key': '1',
- 'check_run_id': 1,
- 'commit_sha': '0',
- 'commit_branch': 'master',
- 'builder_name': 'Linux 1',
- 'repo_owner': 'flutter',
- 'repo_name': 'packages',
- 'firestore_commit_document_name': '0',
- 'firestore_task_document_name': '0_task1_1',
- });
- });
-
- test('return the orignal list when hitting buildbucket exception', () async {
- final Commit commit = generateCommit(0, repo: 'packages');
- when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
- throw const BuildBucketException(1, 'error');
- });
- final Tuple<Target, Task, int> toBeScheduled = Tuple<Target, Task, int>(
- generateTarget(
- 1,
- properties: <String, String>{
- 'os': 'debian-10.12',
- },
- slug: RepositorySlug('flutter', 'packages'),
- ),
- generateTask(1),
- LuciBuildServiceV2.kDefaultPriority,
- );
- final List<Tuple<Target, Task, int>> results = await service.schedulePostsubmitBuilds(
- commit: commit,
- toBeScheduled: <Tuple<Target, Task, int>>[
- toBeScheduled,
- ],
- );
- expect(results, <Tuple<Target, Task, int>>[
- toBeScheduled,
- ]);
- });
-
- test('reschedule using checkrun event fails gracefully', () async {
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
- .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
-
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[],
- ),
- ),
- ],
- );
- });
-
- final pushMessage = generateCheckRunEvent(action: 'created', numberOfPullRequests: 1);
- final Map<String, dynamic> jsonMap = json.decode(pushMessage.data!);
- final Map<String, dynamic> jsonSubMap = json.decode(jsonMap['2']);
- final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(jsonSubMap);
-
- expect(
- () async => service.reschedulePostsubmitBuildUsingCheckRunEvent(
- checkRunEvent,
- commit: generateCommit(0),
- task: generateTask(0),
- target: generateTarget(0),
- ),
- throwsA(const TypeMatcher<NoBuildFoundException>()),
- );
- });
-
- test('do not create postsubmit checkrun for bringup: true target', () async {
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
- .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
- final Commit commit = generateCommit(0, repo: Config.packagesSlug.name);
- when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
- return bbv2.ListBuildersResponse(
- builders: [
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux 1')),
- ],
- );
- });
- final Tuple<Target, Task, int> toBeScheduled = Tuple<Target, Task, int>(
- generateTarget(
- 1,
- properties: <String, String>{
- 'os': 'debian-10.12',
- },
- bringup: true,
- slug: Config.packagesSlug,
- ),
- generateTask(1, parent: commit),
- LuciBuildServiceV2.kDefaultPriority,
- );
- await service.schedulePostsubmitBuilds(
- commit: commit,
- toBeScheduled: <Tuple<Target, Task, int>>[
- toBeScheduled,
- ],
- );
- // Only one batch request should be published
- expect(pubsub.messages.length, 1);
-
- final bbv2.BatchRequest request = bbv2.BatchRequest().createEmptyInstance();
- request.mergeFromProto3Json(pubsub.messages.single);
- expect(request.requests.single.scheduleBuild, isNotNull);
-
- final bbv2.ScheduleBuildRequest scheduleBuild = request.requests.single.scheduleBuild;
- expect(scheduleBuild.builder.bucket, 'staging');
- expect(scheduleBuild.builder.builder, 'Linux 1');
- expect(scheduleBuild.notify.pubsubTopic, 'projects/flutter-dashboard/topics/build-bucket-postsubmit');
- final Map<String, dynamic> userData = UserData.decodeUserDataBytes(scheduleBuild.notify.userData);
- // No check run related data.
- expect(userData, <String, dynamic>{
- 'commit_key': 'flutter/packages/master/0',
- 'task_key': '1',
- 'firestore_commit_document_name': '0',
- 'firestore_task_document_name': '0_task1_1',
- });
- });
-
- test('Skip non-existing builder', () async {
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
- .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
- final Commit commit = generateCommit(0);
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
- .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 2'));
- when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
- return bbv2.ListBuildersResponse(
- builders: [
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux 2')),
- ],
- );
- });
- final Tuple<Target, Task, int> toBeScheduled1 = Tuple<Target, Task, int>(
- generateTarget(
- 1,
- properties: <String, String>{
- 'os': 'debian-10.12',
- },
- ),
- generateTask(1),
- LuciBuildService.kDefaultPriority,
- );
- final Tuple<Target, Task, int> toBeScheduled2 = Tuple<Target, Task, int>(
- generateTarget(
- 2,
- properties: <String, String>{
- 'os': 'debian-10.12',
- },
- ),
- generateTask(1),
- LuciBuildService.kDefaultPriority,
- );
- await service.schedulePostsubmitBuilds(
- commit: commit,
- toBeScheduled: <Tuple<Target, Task, int>>[
- toBeScheduled1,
- toBeScheduled2,
- ],
- );
- expect(pubsub.messages.length, 1);
- final bbv2.BatchRequest request = bbv2.BatchRequest().createEmptyInstance();
- request.mergeFromProto3Json(pubsub.messages.single);
- // Only existing builder: `Linux 2` is scheduled.
- expect(request.requests.length, 1);
- expect(request.requests.single.scheduleBuild, isNotNull);
- final bbv2.ScheduleBuildRequest scheduleBuild = request.requests.single.scheduleBuild;
- expect(scheduleBuild.builder.bucket, 'prod');
- expect(scheduleBuild.builder.builder, 'Linux 2');
- });
- });
-
- group('schedulePresubmitBuilds', () {
- setUp(() {
- cache = CacheService(inMemory: true);
- mockBuildBucketV2Client = MockBuildBucketV2Client();
- pubsub = FakePubSub();
- service = LuciBuildServiceV2(
- config: FakeConfig(),
- cache: cache,
- buildBucketV2Client: mockBuildBucketV2Client,
- githubChecksUtil: mockGithubChecksUtil,
- pubsub: pubsub,
- );
- });
-
- test('reschedule using checkrun event', () async {
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any))
- .thenAnswer((_) async => generateCheckRun(1, name: 'Linux 1'));
-
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[
- generateBbv2Build(
- Int64(1),
- name: 'Linux',
- status: bbv2.Status.ENDED_MASK,
- tags: <bbv2.StringPair>[
- bbv2.StringPair(key: 'buildset', value: 'pr/git/123'),
- bbv2.StringPair(key: 'cipd_version', value: 'refs/heads/main'),
- bbv2.StringPair(key: 'github_link', value: 'https://github.com/flutter/flutter/pull/1'),
- ],
- input: bbv2.Build_Input(properties: bbv2.Struct(fields: {'test': bbv2.Value(stringValue: 'abc')})),
- ),
- ],
- ),
- ),
- ],
- );
- });
- when(mockBuildBucketV2Client.scheduleBuild(any)).thenAnswer((_) async => generateBbv2Build(Int64(1)));
-
- final pushMessage = generateCheckRunEvent(action: 'created', numberOfPullRequests: 1);
- final Map<String, dynamic> jsonMap = json.decode(pushMessage.data!);
- final Map<String, dynamic> jsonSubMap = json.decode(jsonMap['2']);
- final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(jsonSubMap);
-
- await service.reschedulePresubmitBuildUsingCheckRunEvent(
- checkRunEvent: checkRunEvent,
- );
-
- final List<dynamic> captured = verify(
- mockBuildBucketV2Client.scheduleBuild(
- captureAny,
- ),
- ).captured;
- expect(captured.length, 1);
-
- final bbv2.ScheduleBuildRequest scheduleBuildRequest = captured[0] as bbv2.ScheduleBuildRequest;
-
- final Map<String, dynamic> userData = UserData.decodeUserDataBytes(scheduleBuildRequest.notify.userData);
-
- expect(userData, <String, dynamic>{
- 'check_run_id': 1,
- 'commit_branch': 'master',
- 'commit_sha': 'ec26c3e57ca3a959ca5aad62de7213c562f8c821',
- 'repo_owner': 'flutter',
- 'repo_name': 'flutter',
- 'user_agent': 'flutter-cocoon',
- });
-
- final Map<String, dynamic> expectedProperties = {};
- expectedProperties['overrides'] = ['override: test'];
- final bbv2.Struct propertiesStruct = bbv2.Struct().createEmptyInstance();
- propertiesStruct.mergeFromProto3Json(expectedProperties);
-
- final Map<String, bbv2.Value> properties = scheduleBuildRequest.properties.fields;
- expect(properties['overrides'], propertiesStruct.fields['overrides']);
- });
- });
-
- group('cancelBuilds', () {
- setUp(() {
- cache = CacheService(inMemory: true);
- config = FakeConfig();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
- pubsub = FakePubSub();
- service = LuciBuildServiceV2(
- config: config,
- cache: cache,
- buildBucketV2Client: mockBuildBucketV2Client,
- pubsub: pubsub,
- );
- slug = RepositorySlug('flutter', 'cocoon');
- });
-
- test('Cancel builds when build list is empty', () async {
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[],
- );
- });
- await service.cancelBuilds(pullRequest: pullRequest, reason: 'new builds');
- // This is okay, it is getting called twice when it runs cancel builds
- // because the call is no longer being short-circuited. It calls batch in
- // tryBuildsForPullRequest and it calls in the top level cancelBuilds
- // function.
- verify(mockBuildBucketV2Client.batch(any)).called(1);
- });
-
- test('Cancel builds that are scheduled', () async {
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[
- generateBbv2Build(Int64(998), name: 'Linux', status: bbv2.Status.STARTED),
- ],
- ),
- ),
- ],
- );
- });
- await service.cancelBuilds(pullRequest: pullRequest, reason: 'new builds');
-
- final List<dynamic> captured = verify(
- mockBuildBucketV2Client.batch(
- captureAny,
- ),
- ).captured;
-
- final List<bbv2.BatchRequest_Request> capturedBatchRequests = [];
- for (dynamic cap in captured) {
- capturedBatchRequests.add((cap as bbv2.BatchRequest).requests.first);
- }
-
- final bbv2.SearchBuildsRequest searchBuildRequest =
- capturedBatchRequests.firstWhere((req) => req.hasSearchBuilds()).searchBuilds;
- final bbv2.CancelBuildRequest cancelBuildRequest =
- capturedBatchRequests.firstWhere((req) => req.hasCancelBuild()).cancelBuild;
- expect(searchBuildRequest, isNotNull);
- expect(cancelBuildRequest, isNotNull);
-
- expect(cancelBuildRequest.id, Int64(998));
- expect(cancelBuildRequest.summaryMarkdown, 'new builds');
- });
- });
-
- group('failedBuilds', () {
- setUp(() {
- cache = CacheService(inMemory: true);
- githubService = FakeGithubService();
- config = FakeConfig(githubService: githubService);
- mockBuildBucketV2Client = MockBuildBucketV2Client();
- pubsub = FakePubSub();
- service = LuciBuildServiceV2(
- config: config,
- cache: cache,
- buildBucketV2Client: mockBuildBucketV2Client,
- pubsub: pubsub,
- );
- slug = RepositorySlug('flutter', 'flutter');
- });
-
- test('Failed builds from an empty list', () async {
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[],
- );
- });
- final List<bbv2.Build?> result = await service.failedBuilds(pullRequest: pullRequest, targets: <Target>[]);
- expect(result, isEmpty);
- });
-
- test('Failed builds from a list of builds with failures', () async {
- when(mockBuildBucketV2Client.batch(any)).thenAnswer((_) async {
- return bbv2.BatchResponse(
- responses: <bbv2.BatchResponse_Response>[
- bbv2.BatchResponse_Response(
- searchBuilds: bbv2.SearchBuildsResponse(
- builds: <bbv2.Build>[
- generateBbv2Build(Int64(998), name: 'Linux 1', status: bbv2.Status.FAILURE),
- ],
- ),
- ),
- ],
- );
- });
- final List<bbv2.Build?> result =
- await service.failedBuilds(pullRequest: pullRequest, targets: <Target>[generateTarget(1)]);
- expect(result, hasLength(1));
- });
- });
-
- group('rescheduleBuild', () {
- late bbv2.BuildsV2PubSub rescheduleBuild;
-
- setUp(() {
- cache = CacheService(inMemory: true);
- config = FakeConfig();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
- pubsub = FakePubSub();
- service = LuciBuildServiceV2(
- config: config,
- cache: cache,
- buildBucketV2Client: mockBuildBucketV2Client,
- pubsub: pubsub,
- );
- rescheduleBuild = createBuild(Int64(1), status: bbv2.Status.FAILURE, builder: 'Linux Host Engine');
- });
-
- test('Reschedule an existing build', () async {
- when(mockBuildBucketV2Client.scheduleBuild(any)).thenAnswer((_) async => generateBbv2Build(Int64(1)));
- final build = await service.rescheduleBuild(
- builderName: 'mybuild',
- build: rescheduleBuild.build,
- rescheduleAttempt: 2,
- userDataMap: {},
- );
- expect(build.id, Int64(1));
- expect(build.status, bbv2.Status.SUCCESS);
- final List<dynamic> captured = verify(mockBuildBucketV2Client.scheduleBuild(captureAny)).captured;
- expect(captured.length, 1);
-
- final bbv2.ScheduleBuildRequest scheduleBuildRequest = captured[0];
- expect(scheduleBuildRequest, isNotNull);
- final List<bbv2.StringPair> tags = scheduleBuildRequest.tags;
- final bbv2.StringPair attemptPair = tags.firstWhere((element) => element.key == 'current_attempt');
- expect(attemptPair.value, '2');
- });
- });
-
- group('checkRerunBuilder', () {
- late Commit commit;
- late Commit totCommit;
- late DatastoreService datastore;
- late MockGithubChecksUtil mockGithubChecksUtil;
- late MockFirestoreService mockFirestoreService;
- firestore.Task? firestoreTask;
- firestore_commit.Commit? firestoreCommit;
- setUp(() {
- cache = CacheService(inMemory: true);
- config = FakeConfig();
- firestoreTask = null;
- firestoreCommit = null;
- mockGithubChecksUtil = MockGithubChecksUtil();
- mockFirestoreService = MockFirestoreService();
- mockBuildBucketV2Client = MockBuildBucketV2Client();
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output')))
- .thenAnswer((realInvocation) async => generateCheckRun(1));
- when(
- mockFirestoreService.batchWriteDocuments(
- captureAny,
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<BatchWriteResponse>.value(BatchWriteResponse());
- });
- when(
- mockFirestoreService.getDocument(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<firestore_commit.Commit>.value(
- firestoreCommit,
- );
- });
- when(
- mockFirestoreService.queryRecentCommits(
- limit: captureAnyNamed('limit'),
- slug: captureAnyNamed('slug'),
- branch: captureAnyNamed('branch'),
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<List<firestore_commit.Commit>>.value(
- <firestore_commit.Commit>[firestoreCommit!],
- );
- });
- pubsub = FakePubSub();
- service = LuciBuildServiceV2(
- config: config,
- cache: cache,
- buildBucketV2Client: mockBuildBucketV2Client,
- githubChecksUtil: mockGithubChecksUtil,
- pubsub: pubsub,
- );
- datastore = DatastoreService(config.db, 5);
- });
-
- test('Pass repo and properties correctly', () async {
- firestoreTask = generateFirestoreTask(1, attempts: 1, status: firestore.Task.statusFailed);
- firestoreCommit = generateFirestoreCommit(1);
- totCommit = generateCommit(1, repo: 'engine', branch: 'main');
- config.db.values[totCommit.key] = totCommit;
- config.maxLuciTaskRetriesValue = 1;
- final Task task = generateTask(
- 1,
- status: Task.statusFailed,
- parent: totCommit,
- buildNumber: 1,
- );
- final Target target = generateTarget(1);
- expect(task.attempts, 1);
- expect(task.status, Task.statusFailed);
- final bool rerunFlag = await service.checkRerunBuilder(
- commit: totCommit,
- task: task,
- target: target,
- datastore: datastore,
- firestoreService: mockFirestoreService,
- taskDocument: firestoreTask!,
- );
- expect(pubsub.messages.length, 1);
-
- final bbv2.BatchRequest request = bbv2.BatchRequest().createEmptyInstance();
- request.mergeFromProto3Json(pubsub.messages.single);
- expect(request, isNotNull);
- final bbv2.ScheduleBuildRequest scheduleBuildRequest = request.requests.first.scheduleBuild;
-
- final Map<String, bbv2.Value> properties = scheduleBuildRequest.properties.fields;
- for (String key in Config.defaultProperties.keys) {
- expect(properties.containsKey(key), true);
- }
- expect(scheduleBuildRequest.priority, LuciBuildService.kRerunPriority);
- expect(scheduleBuildRequest.gitilesCommit.project, 'mirrors/engine');
- expect(scheduleBuildRequest.tags.firstWhere((tag) => tag.key == 'trigger_type').value, 'auto_retry');
- expect(rerunFlag, isTrue);
- expect(task.attempts, 2);
- expect(task.status, Task.statusInProgress);
- });
-
- test('Rerun a test failed builder', () async {
- firestoreTask = generateFirestoreTask(1, attempts: 1, status: firestore.Task.statusFailed);
- firestoreCommit = generateFirestoreCommit(1);
- totCommit = generateCommit(1);
- config.db.values[totCommit.key] = totCommit;
- config.maxLuciTaskRetriesValue = 1;
- final Task task = generateTask(
- 1,
- status: Task.statusFailed,
- parent: totCommit,
- buildNumber: 1,
- );
- final Target target = generateTarget(1);
- final bool rerunFlag = await service.checkRerunBuilder(
- commit: totCommit,
- task: task,
- target: target,
- datastore: datastore,
- firestoreService: mockFirestoreService,
- taskDocument: firestoreTask!,
- );
- expect(rerunFlag, isTrue);
- });
-
- test('Rerun an infra failed builder', () async {
- firestoreTask = generateFirestoreTask(1, attempts: 1, status: firestore.Task.statusInfraFailure);
- firestoreCommit = generateFirestoreCommit(1);
- totCommit = generateCommit(1);
- config.db.values[totCommit.key] = totCommit;
- config.maxLuciTaskRetriesValue = 1;
- final Task task = generateTask(
- 1,
- status: Task.statusInfraFailure,
- parent: totCommit,
- buildNumber: 1,
- );
- final Target target = generateTarget(1);
- final bool rerunFlag = await service.checkRerunBuilder(
- commit: totCommit,
- task: task,
- target: target,
- datastore: datastore,
- firestoreService: mockFirestoreService,
- taskDocument: firestoreTask!,
- );
- expect(rerunFlag, isTrue);
- });
-
- test('Skip rerun a failed test when task status update hit exception', () async {
- firestoreTask = generateFirestoreTask(1, attempts: 1, status: firestore.Task.statusInfraFailure);
- when(
- mockFirestoreService.batchWriteDocuments(
- captureAny,
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- throw InternalError();
- });
- firestoreCommit = generateFirestoreCommit(1);
- totCommit = generateCommit(1);
- config.db.values[totCommit.key] = totCommit;
- config.maxLuciTaskRetriesValue = 1;
- final Task task = generateTask(
- 1,
- status: Task.statusFailed,
- parent: totCommit,
- buildNumber: 1,
- );
- final Target target = generateTarget(1);
- final bool rerunFlag = await service.checkRerunBuilder(
- commit: totCommit,
- task: task,
- target: target,
- datastore: datastore,
- firestoreService: mockFirestoreService,
- taskDocument: firestoreTask!,
- );
- expect(rerunFlag, isFalse);
- expect(pubsub.messages.length, 0);
- });
-
- test('Do not rerun a successful builder', () async {
- firestoreTask = generateFirestoreTask(1, attempts: 1);
- totCommit = generateCommit(1);
- config.db.values[totCommit.key] = totCommit;
- config.maxLuciTaskRetriesValue = 1;
- final Task task = generateTask(
- 1,
- status: Task.statusSucceeded,
- parent: totCommit,
- buildNumber: 1,
- );
- final Target target = generateTarget(1);
- final bool rerunFlag = await service.checkRerunBuilder(
- commit: totCommit,
- task: task,
- target: target,
- datastore: datastore,
- firestoreService: mockFirestoreService,
- taskDocument: firestoreTask!,
- );
- expect(rerunFlag, isFalse);
- });
-
- test('Do not rerun a builder exceeding retry limit', () async {
- firestoreTask = generateFirestoreTask(1, attempts: 1);
- totCommit = generateCommit(1);
- config.db.values[totCommit.key] = totCommit;
- config.maxLuciTaskRetriesValue = 1;
- final Task task = generateTask(
- 1,
- status: Task.statusInfraFailure,
- parent: totCommit,
- buildNumber: 1,
- attempts: 2,
- );
- final Target target = generateTarget(1);
- final bool rerunFlag = await service.checkRerunBuilder(
- commit: totCommit,
- task: task,
- target: target,
- datastore: datastore,
- firestoreService: mockFirestoreService,
- taskDocument: firestoreTask!,
- );
- expect(rerunFlag, isFalse);
- });
-
- test('Do not rerun a builder when not tip of tree', () async {
- firestoreTask = generateFirestoreTask(1, attempts: 1);
- totCommit = generateCommit(2, sha: 'def');
- commit = generateCommit(1, sha: 'abc');
- config.db.values[totCommit.key] = totCommit;
- config.db.values[commit.key] = commit;
- config.maxLuciTaskRetriesValue = 1;
- final Task task = generateTask(
- 1,
- status: Task.statusInfraFailure,
- parent: commit,
- buildNumber: 1,
- );
- final Target target = generateTarget(1);
- final bool rerunFlag = await service.checkRerunBuilder(
- commit: commit,
- task: task,
- target: target,
- datastore: datastore,
- firestoreService: mockFirestoreService,
- taskDocument: firestoreTask!,
- );
- expect(rerunFlag, isFalse);
- });
-
- test('insert retried task document to firestore', () async {
- firestoreTask = generateFirestoreTask(1, attempts: 1, status: firestore.Task.statusInfraFailure);
- firestoreCommit = generateFirestoreCommit(1);
- totCommit = generateCommit(1);
- config.db.values[totCommit.key] = totCommit;
- config.maxLuciTaskRetriesValue = 1;
- final Task task = generateTask(
- 1,
- status: Task.statusInfraFailure,
- parent: totCommit,
- buildNumber: 1,
- );
- final Target target = generateTarget(1);
- expect(firestoreTask!.attempts, 1);
- final bool rerunFlag = await service.checkRerunBuilder(
- commit: totCommit,
- task: task,
- target: target,
- datastore: datastore,
- firestoreService: mockFirestoreService,
- taskDocument: firestoreTask!,
- );
- expect(rerunFlag, isTrue);
-
- expect(firestoreTask!.attempts, 2);
- final List<dynamic> captured = verify(mockFirestoreService.batchWriteDocuments(captureAny, captureAny)).captured;
- expect(captured.length, 2);
- final BatchWriteRequest batchWriteRequest = captured[0] as BatchWriteRequest;
- expect(batchWriteRequest.writes!.length, 1);
- final Document insertedTaskDocument = batchWriteRequest.writes![0].update!;
- expect(insertedTaskDocument, firestoreTask);
- expect(firestoreTask!.status, firestore.Task.statusInProgress);
- });
- });
-}
diff --git a/app_dart/test/service/scheduler_test.dart b/app_dart/test/service/scheduler_test.dart
index 115d616..83935e8 100644
--- a/app_dart/test/service/scheduler_test.dart
+++ b/app_dart/test/service/scheduler_test.dart
@@ -1195,7 +1195,6 @@
test('retries only triggers failed builds only', () async {
final MockBuildBucketClient mockBuildbucket = MockBuildBucketClient();
- final MockBuildBucketV2Client mockBuildBucketV2Client = MockBuildBucketV2Client();
buildStatusService =
FakeBuildStatusService(commitStatuses: <CommitStatus>[CommitStatus(generateCommit(1), const <Stage>[])]);
final FakePubSub pubsub = FakePubSub();
@@ -1210,7 +1209,6 @@
config: config,
githubChecksUtil: mockGithubChecksUtil,
buildbucket: mockBuildbucket,
- buildBucketV2Client: mockBuildBucketV2Client,
gerritService: FakeGerritService(branchesValue: <String>['master']),
pubsub: pubsub,
),
diff --git a/app_dart/test/service/scheduler_v2_test.dart b/app_dart/test/service/scheduler_v2_test.dart
deleted file mode 100644
index a09cf12..0000000
--- a/app_dart/test/service/scheduler_v2_test.dart
+++ /dev/null
@@ -1,1377 +0,0 @@
-// Copyright 2021 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/src/foundation/utils.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/appengine/stage.dart';
-import 'package:cocoon_service/src/model/appengine/task.dart';
-import 'package:cocoon_service/src/model/ci_yaml/target.dart';
-import 'package:cocoon_service/src/model/github/checks.dart' as cocoon_checks;
-import 'package:cocoon_service/src/service/build_status_provider.dart';
-import 'package:cocoon_service/src/service/cache_service.dart';
-import 'package:cocoon_service/src/service/config.dart';
-import 'package:cocoon_service/src/service/datastore.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:gcloud/db.dart' as gcloud_db;
-import 'package:gcloud/db.dart';
-import 'package:github/github.dart';
-import 'package:googleapis/bigquery/v2.dart';
-import 'package:googleapis/firestore/v1.dart' hide Status;
-import 'package:http/http.dart' as http;
-import 'package:http/testing.dart';
-import 'package:mockito/mockito.dart';
-import 'package:test/test.dart';
-
-import '../model/github/checks_test_data.dart';
-import '../src/datastore/fake_config.dart';
-import '../src/datastore/fake_datastore.dart';
-import '../src/service/fake_build_status_provider.dart';
-import '../src/request_handling/fake_pubsub.dart';
-import '../src/service/fake_gerrit_service.dart';
-import '../src/service/fake_github_service.dart';
-import '../src/service/fake_luci_build_service_v2.dart';
-import '../src/utilities/entity_generators.dart';
-import '../src/utilities/mocks.dart';
-
-const String singleCiYaml = r'''
-enabled_branches:
- - master
- - main
- - flutter-\d+\.\d+-candidate\.\d+
-targets:
- - name: Linux A
- properties:
- custom: abc
- - name: Linux B
- enabled_branches:
- - stable
- scheduler: luci
- - name: Linux runIf
- runIf:
- - .ci.yaml
- - dev/**
- - name: Google Internal Roll
- postsubmit: true
- presubmit: false
- scheduler: google_internal
-''';
-
-void main() {
- late CacheService cache;
- late FakeConfig config;
- late FakeDatastoreDB db;
- late FakeBuildStatusService buildStatusService;
- late MockClient httpClient;
- late MockFirestoreService mockFirestoreService;
- late MockGithubChecksUtil mockGithubChecksUtil;
- late SchedulerV2 scheduler;
-
- final PullRequest pullRequest = generatePullRequest(id: 42);
-
- Commit shaToCommit(String sha, {String branch = 'master'}) {
- return Commit(
- key: db.emptyKey.append(Commit, id: 'flutter/flutter/$branch/$sha'),
- repository: 'flutter/flutter',
- sha: sha,
- branch: branch,
- timestamp: int.parse(sha),
- );
- }
-
- group('Scheduler', () {
- setUp(() {
- final MockTabledataResource tabledataResource = MockTabledataResource();
- when(tabledataResource.insertAll(any, any, any, any)).thenAnswer((_) async {
- return TableDataInsertAllResponse();
- });
-
- cache = CacheService(inMemory: true);
- db = FakeDatastoreDB();
- mockFirestoreService = MockFirestoreService();
- buildStatusService = FakeBuildStatusService(
- commitStatuses: <CommitStatus>[
- CommitStatus(generateCommit(1), const <Stage>[]),
- CommitStatus(generateCommit(1, branch: 'main', repo: Config.engineSlug.name), const <Stage>[]),
- ],
- );
- config = FakeConfig(
- tabledataResource: tabledataResource,
- dbValue: db,
- githubService: FakeGithubService(),
- githubClient: MockGitHub(),
- firestoreService: mockFirestoreService,
- supportedReposValue: <RepositorySlug>{
- Config.engineSlug,
- Config.flutterSlug,
- },
- );
- httpClient = MockClient((http.Request request) async {
- if (request.url.path.contains('.ci.yaml')) {
- return http.Response(singleCiYaml, 200);
- }
- throw Exception('Failed to find ${request.url.path}');
- });
-
- mockGithubChecksUtil = MockGithubChecksUtil();
- // Generate check runs based on the name hash code
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output')))
- .thenAnswer((Invocation invocation) async => generateCheckRun(invocation.positionalArguments[2].hashCode));
- scheduler = SchedulerV2(
- cache: cache,
- config: config,
- datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
- buildStatusProvider: (_, __) => buildStatusService,
- githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
- httpClientProvider: () => httpClient,
- luciBuildService: FakeLuciBuildServiceV2(
- config: config,
- githubChecksUtil: mockGithubChecksUtil,
- gerritService: FakeGerritService(
- branchesValue: <String>['master', 'main'],
- ),
- ),
- );
-
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any)).thenAnswer((_) async {
- return CheckRun.fromJson(const <String, dynamic>{
- 'id': 1,
- 'started_at': '2020-05-10T02:49:31Z',
- 'check_suite': <String, dynamic>{'id': 2},
- });
- });
- });
-
- group('add commits', () {
- final FakePubSub pubsub = FakePubSub();
- List<Commit> createCommitList(
- List<String> shas, {
- String repo = 'flutter',
- String branch = 'master',
- }) {
- return List<Commit>.generate(
- shas.length,
- (int index) => Commit(
- author: 'Username',
- authorAvatarUrl: 'http://example.org/avatar.jpg',
- branch: branch,
- key: db.emptyKey.append(Commit, id: 'flutter/$repo/$branch/${shas[index]}'),
- message: 'commit message',
- repository: 'flutter/$repo',
- sha: shas[index],
- timestamp: DateTime.fromMillisecondsSinceEpoch(int.parse(shas[index])).millisecondsSinceEpoch,
- ),
- );
- }
-
- test('succeeds when GitHub returns no commits', () async {
- await scheduler.addCommits(<Commit>[]);
- expect(db.values, isEmpty);
- });
-
- test('inserts all relevant fields of the commit', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- config.supportedBranchesValue = <String>['master'];
- expect(db.values.values.whereType<Commit>().length, 0);
- await scheduler.addCommits(createCommitList(<String>['1']));
- expect(db.values.values.whereType<Commit>().length, 1);
- final Commit commit = db.values.values.whereType<Commit>().single;
- expect(commit.repository, 'flutter/flutter');
- expect(commit.branch, 'master');
- expect(commit.sha, '1');
- expect(commit.timestamp, 1);
- expect(commit.author, 'Username');
- expect(commit.authorAvatarUrl, 'http://example.org/avatar.jpg');
- expect(commit.message, 'commit message');
- });
-
- test('skips scheduling for unsupported repos', () async {
- config.supportedBranchesValue = <String>['master'];
- await scheduler.addCommits(createCommitList(<String>['1'], repo: 'not-supported'));
- expect(db.values.values.whereType<Commit>().length, 0);
- });
-
- test('skips commits for which transaction commit fails', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- config.supportedBranchesValue = <String>['master'];
-
- // Existing commits should not be duplicated.
- final Commit commit = shaToCommit('1');
- db.values[commit.key] = commit;
-
- db.onCommit = (List<gcloud_db.Model<dynamic>> inserts, List<gcloud_db.Key<dynamic>> deletes) {
- if (inserts.whereType<Commit>().where((Commit commit) => commit.sha == '3').isNotEmpty) {
- throw StateError('Commit failed');
- }
- };
- // Commits are expect from newest to oldest timestamps
- await scheduler.addCommits(createCommitList(<String>['2', '3', '4']));
- expect(db.values.values.whereType<Commit>().length, 3);
- // The 2 new commits are scheduled 3 tasks, existing commit has none.
- expect(db.values.values.whereType<Task>().length, 2 * 3);
- // Check commits were added, but 3 was not
- expect(db.values.values.whereType<Commit>().map<String>(toSha), containsAll(<String>['1', '2', '4']));
- expect(db.values.values.whereType<Commit>().map<String>(toSha), isNot(contains('3')));
- });
-
- test('skips commits for which task transaction fails', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- config.supportedBranchesValue = <String>['master'];
-
- // Existing commits should not be duplicated.
- final Commit commit = shaToCommit('1');
- db.values[commit.key] = commit;
-
- db.onCommit = (List<gcloud_db.Model<dynamic>> inserts, List<gcloud_db.Key<dynamic>> deletes) {
- if (inserts.whereType<Task>().where((Task task) => task.createTimestamp == 3).isNotEmpty) {
- throw StateError('Task failed');
- }
- };
- // Commits are expect from newest to oldest timestamps
- await scheduler.addCommits(createCommitList(<String>['2', '3', '4']));
- expect(db.values.values.whereType<Commit>().length, 3);
- // The 2 new commits are scheduled 3 tasks, existing commit has none.
- expect(db.values.values.whereType<Task>().length, 2 * 3);
- // Check commits were added, but 3 was not
- expect(db.values.values.whereType<Commit>().map<String>(toSha), containsAll(<String>['1', '2', '4']));
- expect(db.values.values.whereType<Commit>().map<String>(toSha), isNot(contains('3')));
- });
-
- test('schedules cocoon based targets', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- final MockLuciBuildServiceV2 luciBuildService = MockLuciBuildServiceV2();
- when(
- luciBuildService.schedulePostsubmitBuilds(
- commit: anyNamed('commit'),
- toBeScheduled: captureAnyNamed('toBeScheduled'),
- ),
- ).thenAnswer((_) => Future<List<Tuple<Target, Task, int>>>.value(<Tuple<Target, Task, int>>[]));
- buildStatusService = FakeBuildStatusService(
- commitStatuses: <CommitStatus>[
- CommitStatus(generateCommit(1, repo: 'engine', branch: 'main'), const <Stage>[]),
- ],
- );
- scheduler = SchedulerV2(
- cache: cache,
- config: config,
- buildStatusProvider: (_, __) => buildStatusService,
- datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
- githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
- httpClientProvider: () => httpClient,
- luciBuildService: luciBuildService,
- );
-
- await scheduler.addCommits(createCommitList(<String>['1'], repo: 'engine', branch: 'main'));
- final List<dynamic> captured = verify(
- luciBuildService.schedulePostsubmitBuilds(
- commit: anyNamed('commit'),
- toBeScheduled: captureAnyNamed('toBeScheduled'),
- ),
- ).captured;
- final List<dynamic> toBeScheduled = captured.first as List<dynamic>;
- expect(toBeScheduled.length, 2);
- final Iterable<Tuple<Target, Task, int>> tuples =
- toBeScheduled.map((dynamic tuple) => tuple as Tuple<Target, Task, int>);
- final Iterable<String> scheduledTargetNames =
- tuples.map((Tuple<Target, Task, int> tuple) => tuple.second.name!);
- expect(scheduledTargetNames, ['Linux A', 'Linux runIf']);
- // Tasks triggered by cocoon are marked as in progress
- final Iterable<Task> tasks = db.values.values.whereType<Task>();
- expect(tasks.singleWhere((Task task) => task.name == 'Linux A').status, Task.statusInProgress);
- });
-
- test('schedules cocoon based targets - multiple batch requests', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- final MockBuildBucketV2Client mockBuildBucketV2Client = MockBuildBucketV2Client();
- final FakeLuciBuildServiceV2 luciBuildServiceV2 = FakeLuciBuildServiceV2(
- config: config,
- buildBucketV2Client: mockBuildBucketV2Client,
- gerritService: FakeGerritService(),
- githubChecksUtil: mockGithubChecksUtil,
- pubsub: pubsub,
- );
- when(mockGithubChecksUtil.createCheckRun(any, any, any, any, output: anyNamed('output')))
- .thenAnswer((_) async => generateCheckRun(1, name: 'Linux A'));
-
- when(mockBuildBucketV2Client.listBuilders(any)).thenAnswer((_) async {
- return bbv2.ListBuildersResponse(
- builders: [
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux A')),
- bbv2.BuilderItem(id: bbv2.BuilderID(bucket: 'prod', project: 'flutter', builder: 'Linux runIf')),
- ],
- );
- });
- buildStatusService = FakeBuildStatusService(
- commitStatuses: <CommitStatus>[
- CommitStatus(generateCommit(1, repo: 'engine', branch: 'main'), const <Stage>[]),
- ],
- );
- config.batchSizeValue = 1;
- scheduler = SchedulerV2(
- cache: cache,
- config: config,
- buildStatusProvider: (_, __) => buildStatusService,
- datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
- githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
- httpClientProvider: () => httpClient,
- luciBuildService: luciBuildServiceV2,
- );
-
- await scheduler.addCommits(createCommitList(<String>['1'], repo: 'engine', branch: 'main'));
- expect(pubsub.messages.length, 2);
- });
- });
-
- group('add pull request', () {
- test('creates expected commit', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- final PullRequest mergedPr = generatePullRequest();
- await scheduler.addPullRequest(mergedPr);
-
- expect(db.values.values.whereType<Commit>().length, 1);
- final Commit commit = db.values.values.whereType<Commit>().single;
- expect(commit.repository, 'flutter/flutter');
- expect(commit.branch, 'master');
- expect(commit.sha, 'abc');
- expect(commit.timestamp, 1);
- expect(commit.author, 'dash');
- expect(commit.authorAvatarUrl, 'dashatar');
- expect(commit.message, 'example message');
-
- final List<dynamic> captured = verify(mockFirestoreService.writeViaTransaction(captureAny)).captured;
- expect(captured.length, 1);
- final List<Write> commitResponse = captured[0] as List<Write>;
- expect(commitResponse.length, 4);
- });
-
- test('schedules tasks against merged PRs', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- final PullRequest mergedPr = generatePullRequest();
- await scheduler.addPullRequest(mergedPr);
-
- expect(db.values.values.whereType<Commit>().length, 1);
- expect(db.values.values.whereType<Task>().length, 3);
- });
-
- test('guarantees scheduling of tasks against merged release branch PR', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- final PullRequest mergedPr = generatePullRequest(branch: 'flutter-3.2-candidate.5');
- await scheduler.addPullRequest(mergedPr);
-
- expect(db.values.values.whereType<Commit>().length, 1);
- expect(db.values.values.whereType<Task>().length, 3);
- // Ensure all tasks have been marked in progress
- expect(db.values.values.whereType<Task>().where((Task task) => task.status == Task.statusNew), isEmpty);
- });
-
- test('guarantees scheduling of tasks against merged engine PR', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- final PullRequest mergedPr = generatePullRequest(
- repo: Config.engineSlug.name,
- branch: Config.defaultBranch(Config.engineSlug),
- );
- await scheduler.addPullRequest(mergedPr);
-
- expect(db.values.values.whereType<Commit>().length, 1);
- expect(db.values.values.whereType<Task>().length, 3);
- // Ensure all tasks under cocoon scheduler have been marked in progress
- expect(db.values.values.whereType<Task>().where((Task task) => task.status == Task.statusInProgress).length, 2);
- });
-
- test('Release candidate branch commit filters builders not in default branch', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- const String totCiYaml = r'''
-enabled_branches:
- - main
- - flutter-\d+\.\d+-candidate\.\d+
-targets:
- - name: Linux A
- properties:
- custom: abc
-''';
- httpClient = MockClient((http.Request request) async {
- if (request.url.path == '/flutter/engine/abc/.ci.yaml') {
- return http.Response(totCiYaml, HttpStatus.ok);
- }
- if (request.url.path == '/flutter/engine/1/.ci.yaml') {
- return http.Response(singleCiYaml, HttpStatus.ok);
- }
- print(request.url.path);
- throw Exception('Failed to find ${request.url.path}');
- });
- scheduler = SchedulerV2(
- cache: cache,
- config: config,
- datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
- buildStatusProvider: (_, __) => buildStatusService,
- githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
- httpClientProvider: () => httpClient,
- luciBuildService: FakeLuciBuildServiceV2(
- config: config,
- githubChecksUtil: mockGithubChecksUtil,
- gerritService: FakeGerritService(
- branchesValue: <String>['master', 'main'],
- ),
- ),
- );
-
- final PullRequest mergedPr = generatePullRequest(
- repo: Config.engineSlug.name,
- branch: 'flutter-3.10-candidate.1',
- );
- await scheduler.addPullRequest(mergedPr);
-
- final List<Task> tasks = db.values.values.whereType<Task>().toList();
- expect(db.values.values.whereType<Commit>().length, 1);
- expect(tasks, hasLength(1));
- expect(tasks.first.name, 'Linux A');
- // Ensure all tasks under cocoon scheduler have been marked in progress
- expect(db.values.values.whereType<Task>().where((Task task) => task.status == Task.statusInProgress).length, 1);
- });
-
- test('does not schedule tasks against non-merged PRs', () async {
- final PullRequest notMergedPr = generatePullRequest(merged: false);
- await scheduler.addPullRequest(notMergedPr);
-
- expect(db.values.values.whereType<Commit>().map<String>(toSha).length, 0);
- expect(db.values.values.whereType<Task>().length, 0);
- });
-
- test('does not schedule tasks against already added PRs', () async {
- // Existing commits should not be duplicated.
- final Commit commit = shaToCommit('1');
- db.values[commit.key] = commit;
-
- final PullRequest alreadyLandedPr = generatePullRequest(sha: '1');
- await scheduler.addPullRequest(alreadyLandedPr);
-
- expect(db.values.values.whereType<Commit>().map<String>(toSha).length, 1);
- // No tasks should be scheduled as that is done on commit insert.
- expect(db.values.values.whereType<Task>().length, 0);
- });
-
- test('creates expected commit from release branch PR', () async {
- when(
- mockFirestoreService.writeViaTransaction(
- captureAny,
- ),
- ).thenAnswer((Invocation invocation) {
- return Future<CommitResponse>.value(CommitResponse());
- });
- final PullRequest mergedPr = generatePullRequest(branch: '1.26');
- await scheduler.addPullRequest(mergedPr);
-
- expect(db.values.values.whereType<Commit>().length, 1);
- final Commit commit = db.values.values.whereType<Commit>().single;
- expect(commit.repository, 'flutter/flutter');
- expect(commit.branch, '1.26');
- expect(commit.sha, 'abc');
- expect(commit.timestamp, 1);
- expect(commit.author, 'dash');
- expect(commit.authorAvatarUrl, 'dashatar');
- expect(commit.message, 'example message');
- });
- });
-
- group('process check run', () {
- test('rerequested ci.yaml check retriggers presubmit', () async {
- final MockGithubService mockGithubService = MockGithubService();
- final MockGitHub mockGithubClient = MockGitHub();
- buildStatusService =
- FakeBuildStatusService(commitStatuses: <CommitStatus>[CommitStatus(generateCommit(1), const <Stage>[])]);
- config = FakeConfig(
- githubService: mockGithubService,
- firestoreService: mockFirestoreService,
- );
- scheduler = SchedulerV2(
- cache: cache,
- config: config,
- buildStatusProvider: (_, __) => buildStatusService,
- githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
- httpClientProvider: () => httpClient,
- luciBuildService: FakeLuciBuildServiceV2(
- config: config,
- githubChecksUtil: mockGithubChecksUtil,
- ),
- );
- when(mockGithubService.github).thenReturn(mockGithubClient);
- when(mockGithubService.searchIssuesAndPRs(any, any, sort: anyNamed('sort'), pages: anyNamed('pages')))
- .thenAnswer((_) async => [generateIssue(3)]);
- when(mockGithubChecksUtil.listCheckSuitesForRef(any, any, ref: anyNamed('ref'))).thenAnswer(
- (_) async => [
- // From check_run.check_suite.id in [checkRunString].
- generateCheckSuite(668083231),
- ],
- );
- when(mockGithubService.getPullRequest(any, any)).thenAnswer((_) async => generatePullRequest());
- when(mockGithubService.listFiles(any)).thenAnswer((_) async => ['abc/def']);
- when(
- mockGithubChecksUtil.createCheckRun(
- any,
- any,
- any,
- any,
- output: anyNamed('output'),
- ),
- ).thenAnswer((_) async {
- return CheckRun.fromJson(const <String, dynamic>{
- 'id': 1,
- 'started_at': '2020-05-10T02:49:31Z',
- 'name': Scheduler.kCiYamlCheckName,
- 'check_suite': <String, dynamic>{'id': 2},
- });
- });
- final Map<String, dynamic> checkRunEventJson = jsonDecode(checkRunString) as Map<String, dynamic>;
- checkRunEventJson['check_run']['name'] = Scheduler.kCiYamlCheckName;
- final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(checkRunEventJson);
- expect(await scheduler.processCheckRun(checkRunEvent), true);
- verify(
- mockGithubChecksUtil.createCheckRun(
- any,
- any,
- any,
- Scheduler.kCiYamlCheckName,
- output: anyNamed('output'),
- ),
- );
- // Verfies Linux A was created
- verify(mockGithubChecksUtil.createCheckRun(any, any, any, any)).called(1);
- });
-
- // test('rerequested presubmit check triggers presubmit build', () async {
- // // Note that we're not inserting any commits into the db, because
- // // only postsubmit commits are stored in the datastore.
- // config = FakeConfig(dbValue: db);
- // db = FakeDatastoreDB();
-
- // // Set up mock buildbucket to validate which bucket is requested.
- // final MockBuildBucketV2Client mockBuildbucket = MockBuildBucketV2Client();
-
- // when(mockBuildbucket.batch(any)).thenAnswer((i) async {
- // return FakeBuildBucketV2Client().batch(i.positionalArguments[0]);
- // });
-
- // when(mockBuildbucket.scheduleBuild(any, buildBucketUri: anyNamed('buildBucketUri')))
- // .thenAnswer((realInvocation) async {
- // final ScheduleBuildRequest scheduleBuildRequest = realInvocation.positionalArguments[0];
- // // Ensure this is an attempt to schedule a presubmit build by
- // // verifying that bucket == 'try'.
- // expect(scheduleBuildRequest.builderId.bucket, equals('try'));
- // return bbv2.Build(builder: bbv2.BuilderID(), id: Int64());
- // });
-
- // scheduler = SchedulerV2(
- // cache: cache,
- // config: config,
- // githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
- // luciBuildService: FakeLuciBuildServiceV2(
- // config: config,
- // githubChecksUtil: mockGithubChecksUtil,
- // buildBucketV2Client: mockBuildbucket,
- // ),
- // );
-
- // final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(
- // jsonDecode(checkRunString) as Map<String, dynamic>,
- // );
-
- // expect(await scheduler.processCheckRun(checkRunEvent), true);
-
- // verify(mockBuildbucket.scheduleBuild(any, buildBucketUri: anyNamed('buildBucketUri'))).called(1);
- // verify(mockGithubChecksUtil.createCheckRun(any, any, any, any)).called(1);
- // });
-
-// test('rerequested postsubmit check triggers postsubmit build', () async {
-// // Set up datastore with postsubmit entities matching [checkRunString].
-// db = FakeDatastoreDB();
-// config = FakeConfig(
-// dbValue: db,
-// postsubmitSupportedReposValue: {RepositorySlug('abc', 'cocoon')},
-// firestoreService: mockFirestoreService,
-// );
-// final Commit commit = generateCommit(
-// 1,
-// sha: '66d6bd9a3f79a36fe4f5178ccefbc781488a596c',
-// branch: 'independent_agent',
-// owner: 'abc',
-// repo: 'cocoon',
-// );
-// final Commit commitToT = generateCommit(
-// 1,
-// sha: '66d6bd9a3f79a36fe4f5178ccefbc781488a592c',
-// branch: 'master',
-// owner: 'abc',
-// repo: 'cocoon',
-// );
-// config.db.values[commit.key] = commit;
-// config.db.values[commitToT.key] = commitToT;
-// final Task task = generateTask(1, name: 'test1', parent: commit);
-// config.db.values[task.key] = task;
-
-// // Set up ci.yaml with task name and branch name from [checkRunString].
-// httpClient = MockClient((http.Request request) async {
-// if (request.url.path.contains('.ci.yaml')) {
-// return http.Response(
-// r'''
-// enabled_branches:
-// - independent_agent
-// - master
-// targets:
-// - name: test1
-// ''',
-// 200,
-// );
-// }
-// throw Exception('Failed to find ${request.url.path}');
-// });
-
-// // Set up mock buildbucket to validate which bucket is requested.
-// final MockBuildBucketV2Client mockBuildbucket = MockBuildBucketV2Client();
-// when(mockBuildbucket.batch(any)).thenAnswer((i) async {
-// return FakeBuildBucketV2Client().batch(i.positionalArguments[0]);
-// });
-// when(mockBuildbucket.scheduleBuild(any, buildBucketUri: anyNamed('buildBucketUri')))
-// .thenAnswer((realInvocation) async {
-// final ScheduleBuildRequest scheduleBuildRequest = realInvocation.positionalArguments[0];
-// // Ensure this is an attempt to schedule a postsubmit build by
-// // verifying that bucket == 'prod'.
-// expect(scheduleBuildRequest.builderId.bucket, equals('prod'));
-// return bbv2.Build(builder: bbv2.BuilderID(), id: Int64());
-// });
-
-// scheduler = SchedulerV2(
-// cache: cache,
-// config: config,
-// githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
-// httpClientProvider: () => httpClient,
-// luciBuildService: FakeLuciBuildServiceV2(
-// config: config,
-// githubChecksUtil: mockGithubChecksUtil,
-// buildBucketV2Client: mockBuildbucket,
-// gerritService: FakeGerritService(
-// branchesValue: <String>['master', 'main'],
-// ),
-// ),
-// );
-// final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(
-// jsonDecode(checkRunString) as Map<String, dynamic>,
-// );
-// expect(await scheduler.processCheckRun(checkRunEvent), true);
-// verify(mockBuildbucket.scheduleBuild(any, buildBucketUri: anyNamed('buildBucketUri'))).called(1);
-// verify(mockGithubChecksUtil.createCheckRun(any, any, any, any)).called(1);
-// });
-
- // test('rerequested does not fail on empty pull request list', () async {
- // when(mockGithubChecksUtil.createCheckRun(any, any, any, any)).thenAnswer((_) async {
- // return CheckRun.fromJson(const <String, dynamic>{
- // 'id': 1,
- // 'started_at': '2020-05-10T02:49:31Z',
- // 'check_suite': <String, dynamic>{'id': 2},
- // });
- // });
- // final cocoon_checks.CheckRunEvent checkRunEvent = cocoon_checks.CheckRunEvent.fromJson(
- // jsonDecode(checkRunWithEmptyPullRequests) as Map<String, dynamic>,
- // );
- // expect(await scheduler.processCheckRun(checkRunEvent), true);
- // verify(mockGithubChecksUtil.createCheckRun(any, any, any, any)).called(1);
- // });
- });
-
- group('presubmit', () {
- test('gets only enabled .ci.yaml builds', () async {
- httpClient = MockClient((http.Request request) async {
- if (request.url.path.contains('.ci.yaml')) {
- return http.Response(
- '''
-enabled_branches:
- - master
-targets:
- - name: Linux A
- presubmit: true
- scheduler: luci
- - name: Linux B
- scheduler: luci
- enabled_branches:
- - stable
- presubmit: true
- - name: Linux C
- scheduler: luci
- enabled_branches:
- - master
- presubmit: true
- - name: Linux D
- scheduler: luci
- bringup: true
- presubmit: true
- - name: Google-internal roll
- scheduler: google_internal
- enabled_branches:
- - master
- presubmit: true
- ''',
- 200,
- );
- }
- throw Exception('Failed to find ${request.url.path}');
- });
- final List<Target> presubmitTargets = await scheduler.getPresubmitTargets(pullRequest);
- expect(
- presubmitTargets.map((Target target) => target.value.name).toList(),
- containsAll(<String>['Linux A', 'Linux C']),
- );
- });
-
- group('treats postsubmit as presubmit if a label is present', () {
- final IssueLabel runAllTests = IssueLabel(name: 'test: all');
- setUp(() async {
- httpClient = MockClient((http.Request request) async {
- if (request.url.path.contains('.ci.yaml')) {
- return http.Response(
- '''
- enabled_branches:
- - main
- - master
- targets:
- - name: Linux Presubmit
- presubmit: true
- scheduler: luci
- - name: Linux Conditional Presubmit (runIf)
- presubmit: true
- scheduler: luci
- runIf:
- - .ci.yaml
- - DEPS
- - dev/run_if/**
- - name: Linux Conditional Presubmit (runIfNot)
- presubmit: true
- scheduler: luci
- runIfNot:
- - dev/run_if_not/**
- - name: Linux Postsubmit
- presubmit: false
- scheduler: luci
- - name: Linux Cache
- presubmit: false
- scheduler: luci
- properties:
- cache_name: "builder"
- ''',
- 200,
- );
- }
- throw Exception('Failed to find ${request.url.path}');
- });
- });
-
- test('with a specific label in the flutter/engine repo', () async {
- final enginePr = generatePullRequest(
- branch: Config.defaultBranch(Config.engineSlug),
- labels: <IssueLabel>[runAllTests],
- repo: Config.engineSlug.name,
- );
- final List<Target> presubmitTargets = await scheduler.getPresubmitTargets(enginePr);
- expect(
- presubmitTargets.map((Target target) => target.value.name).toList(),
- <String>[
- // Always runs.
- 'Linux Presubmit',
- // test: all label is present, so runIf is skipped.
- 'Linux Conditional Presubmit (runIf)',
- 'Linux Conditional Presubmit (runIfNot)',
- // test: all label is present, so postsubmit is treated as presubmit.
- 'Linux Postsubmit',
- ],
- );
- });
-
- test('with a specific label in the flutter/flutter repo', () async {
- final frameworkPr = generatePullRequest(
- branch: Config.defaultBranch(Config.flutterSlug),
- labels: <IssueLabel>[runAllTests],
- repo: Config.flutterSlug.name,
- );
- final List<Target> presubmitTargets = await scheduler.getPresubmitTargets(frameworkPr);
- expect(
- presubmitTargets.map((Target target) => target.value.name).toList(),
- <String>[
- // Always runs.
- 'Linux Presubmit',
- 'Linux Conditional Presubmit (runIfNot)',
- ],
- );
- });
-
- test('without a specific label', () async {
- final enginePr = generatePullRequest(
- branch: Config.defaultBranch(Config.engineSlug),
- labels: <IssueLabel>[],
- repo: Config.engineSlug.name,
- );
- final List<Target> presubmitTargets = await scheduler.getPresubmitTargets(enginePr);
- expect(
- presubmitTargets.map((Target target) => target.value.name).toList(),
- (<String>[
- // Always runs.
- 'Linux Presubmit',
- 'Linux Conditional Presubmit (runIfNot)',
- ]),
- );
- });
- });
-
- test('checks for release branches', () async {
- const String branch = 'flutter-1.24-candidate.1';
- httpClient = MockClient((http.Request request) async {
- if (request.url.path.contains('.ci.yaml')) {
- return http.Response(
- '''
-enabled_branches:
- - master
-targets:
- - name: Linux A
- presubmit: true
- scheduler: luci
- ''',
- 200,
- );
- }
- throw Exception('Failed to find ${request.url.path}');
- });
- expect(
- scheduler.getPresubmitTargets(generatePullRequest(branch: branch)),
- throwsA(predicate((Exception e) => e.toString().contains('$branch is not enabled'))),
- );
- });
-
- test('checks for release branch regex', () async {
- const String branch = 'flutter-1.24-candidate.1';
- httpClient = MockClient((http.Request request) async {
- if (request.url.path.contains('.ci.yaml')) {
- return http.Response(
- '''
-enabled_branches:
- - main
- - master
- - flutter-\\d+.\\d+-candidate.\\d+
-targets:
- - name: Linux A
- scheduler: luci
- ''',
- 200,
- );
- }
- throw Exception('Failed to find ${request.url.path}');
- });
- final List<Target> targets = await scheduler.getPresubmitTargets(generatePullRequest(branch: branch));
- expect(targets.single.value.name, 'Linux A');
- });
-
- test('triggers expected presubmit build checks', () async {
- await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
- expect(
- verify(mockGithubChecksUtil.createCheckRun(any, any, any, captureAny, output: captureAnyNamed('output')))
- .captured,
- <dynamic>[
- Scheduler.kCiYamlCheckName,
- const CheckRunOutput(
- title: Scheduler.kCiYamlCheckName,
- summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
- ),
- 'Linux A',
- null,
- // Linux runIf is not run as this is for tip of tree and the files weren't affected
- ],
- );
- });
-
- test('Do not schedule other targets on revert request.', () async {
- final PullRequest releasePullRequest = generatePullRequest(
- labels: [IssueLabel(name: 'revert of')],
- );
-
- releasePullRequest.user = User(login: 'auto-submit[bot]');
-
- await scheduler.triggerPresubmitTargets(pullRequest: releasePullRequest);
- expect(
- verify(mockGithubChecksUtil.createCheckRun(any, any, any, captureAny, output: captureAnyNamed('output')))
- .captured,
- <dynamic>[
- Scheduler.kCiYamlCheckName,
- // No other targets should be created.
- const CheckRunOutput(
- title: Scheduler.kCiYamlCheckName,
- summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
- ),
- ],
- );
- });
-
- test('filters out presubmit targets that do not exist in main and do not filter targets not in main', () async {
- const String singleCiYaml = r'''
-enabled_branches:
- - master
- - main
- - flutter-\d+\.\d+-candidate\.\d+
-targets:
- - name: Linux A
- properties:
- custom: abc
- - name: Linux B
- enabled_branches:
- - flutter-\d+\.\d+-candidate\.\d+
- scheduler: luci
- - name: Linux C
- enabled_branches:
- - main
- - flutter-\d+\.\d+-candidate\.\d+
- scheduler: luci
-''';
- const String totCiYaml = r'''
-enabled_branches:
- - main
- - flutter-\d+\.\d+-candidate\.\d+
-targets:
- - name: Linux A
- bringup: true
- properties:
- custom: abc
-''';
- httpClient = MockClient((http.Request request) async {
- if (request.url.path == '/flutter/engine/1/.ci.yaml') {
- return http.Response(totCiYaml, HttpStatus.ok);
- }
- if (request.url.path == '/flutter/engine/abc/.ci.yaml') {
- return http.Response(singleCiYaml, HttpStatus.ok);
- }
- print(request.url.path);
- throw Exception('Failed to find ${request.url.path}');
- });
- scheduler = SchedulerV2(
- cache: cache,
- config: config,
- datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
- buildStatusProvider: (_, __) => buildStatusService,
- githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
- httpClientProvider: () => httpClient,
- luciBuildService: FakeLuciBuildServiceV2(
- config: config,
- githubChecksUtil: mockGithubChecksUtil,
- gerritService: FakeGerritService(
- branchesValue: <String>['master', 'main'],
- ),
- ),
- );
- final PullRequest pr = generatePullRequest(
- repo: Config.engineSlug.name,
- branch: 'flutter-3.10-candidate.1',
- );
- final List<Target> targets = await scheduler.getPresubmitTargets(pr);
- expect(
- targets.map((Target target) => target.value.name).toList(),
- containsAll(<String>['Linux A', 'Linux B']),
- );
- });
-
- test('triggers all presubmit build checks when diff cannot be found', () async {
- final MockGithubService mockGithubService = MockGithubService();
- when(mockGithubService.listFiles(pullRequest))
- .thenThrow(GitHubError(GitHub(), 'Requested Resource was Not Found'));
- buildStatusService =
- FakeBuildStatusService(commitStatuses: <CommitStatus>[CommitStatus(generateCommit(1), const <Stage>[])]);
- scheduler = SchedulerV2(
- cache: cache,
- config: FakeConfig(
- // tabledataResource: tabledataResource,
- dbValue: db,
- githubService: mockGithubService,
- githubClient: MockGitHub(),
- firestoreService: mockFirestoreService,
- ),
- buildStatusProvider: (_, __) => buildStatusService,
- datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
- githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
- httpClientProvider: () => httpClient,
- luciBuildService: FakeLuciBuildServiceV2(
- config: config,
- githubChecksUtil: mockGithubChecksUtil,
- gerritService: FakeGerritService(branchesValue: <String>['master']),
- ),
- );
- await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
- expect(
- verify(mockGithubChecksUtil.createCheckRun(any, any, any, captureAny, output: captureAnyNamed('output')))
- .captured,
- <dynamic>[
- Scheduler.kCiYamlCheckName,
- const CheckRunOutput(
- title: Scheduler.kCiYamlCheckName,
- summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
- ),
- 'Linux A',
- null,
- // runIf requires a diff in dev, so an error will cause it to be triggered
- 'Linux runIf',
- null,
- ],
- );
- });
-
- test('triggers all presubmit targets on release branch pull request', () async {
- final PullRequest releasePullRequest = generatePullRequest(
- branch: 'flutter-1.24-candidate.1',
- );
- await scheduler.triggerPresubmitTargets(pullRequest: releasePullRequest);
- expect(
- verify(mockGithubChecksUtil.createCheckRun(any, any, any, captureAny, output: captureAnyNamed('output')))
- .captured,
- <dynamic>[
- Scheduler.kCiYamlCheckName,
- const CheckRunOutput(
- title: Scheduler.kCiYamlCheckName,
- summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
- ),
- 'Linux A',
- null,
- 'Linux runIf',
- null,
- ],
- );
- });
-
- test('ci.yaml validation passes with default config', () async {
- when(mockGithubChecksUtil.getCheckRun(any, any, any))
- .thenAnswer((Invocation invocation) async => createCheckRun(id: 0));
- await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
- expect(
- verify(
- mockGithubChecksUtil.updateCheckRun(
- any,
- any,
- any,
- status: captureAnyNamed('status'),
- conclusion: captureAnyNamed('conclusion'),
- output: anyNamed('output'),
- ),
- ).captured,
- <dynamic>[CheckRunStatus.completed, CheckRunConclusion.success],
- );
- });
-
- test('ci.yaml validation fails with empty config', () async {
- httpClient = MockClient((http.Request request) async {
- if (request.url.path.contains('.ci.yaml')) {
- return http.Response('', 200);
- }
- throw Exception('Failed to find ${request.url.path}');
- });
- await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
- expect(
- verify(
- mockGithubChecksUtil.updateCheckRun(
- any,
- any,
- any,
- status: captureAnyNamed('status'),
- conclusion: captureAnyNamed('conclusion'),
- output: anyNamed('output'),
- ),
- ).captured,
- <dynamic>[CheckRunStatus.completed, CheckRunConclusion.failure],
- );
- });
-
- test('ci.yaml validation fails on not enabled branch', () async {
- final PullRequest pullRequest = generatePullRequest(branch: 'not-valid');
- await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
- expect(
- verify(
- mockGithubChecksUtil.updateCheckRun(
- any,
- any,
- any,
- status: captureAnyNamed('status'),
- conclusion: captureAnyNamed('conclusion'),
- output: anyNamed('output'),
- ),
- ).captured,
- <dynamic>[CheckRunStatus.completed, CheckRunConclusion.failure],
- );
- });
-
- test('ci.yaml validation fails with config with unknown dependencies', () async {
- httpClient = MockClient((http.Request request) async {
- if (request.url.path.contains('.ci.yaml')) {
- return http.Response(
- '''
-enabled_branches:
- - master
-targets:
- - name: A
- builder: Linux A
- dependencies:
- - B
- ''',
- 200,
- );
- }
- throw Exception('Failed to find ${request.url.path}');
- });
- await scheduler.triggerPresubmitTargets(pullRequest: pullRequest);
- expect(
- verify(
- mockGithubChecksUtil.updateCheckRun(
- any,
- any,
- any,
- status: anyNamed('status'),
- conclusion: anyNamed('conclusion'),
- output: captureAnyNamed('output'),
- ),
- ).captured.first.text,
- 'FormatException: ERROR: A depends on B which does not exist',
- );
- });
-
- // test('retries only triggers failed builds only', () async {
- // final MockBuildBucketV2Client mockBuildbucket = MockBuildBucketV2Client();
- // buildStatusService =
- // FakeBuildStatusService(commitStatuses: <CommitStatus>[CommitStatus(generateCommit(1), const <Stage>[])]);
- // final FakePubSub pubsub = FakePubSub();
- // scheduler = SchedulerV2(
- // cache: cache,
- // config: config,
- // datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
- // githubChecksService: GithubChecksServiceV2(config, githubChecksUtil: mockGithubChecksUtil),
- // buildStatusProvider: (_, __) => buildStatusService,
- // httpClientProvider: () => httpClient,
- // luciBuildService: FakeLuciBuildServiceV2(
- // config: config,
- // githubChecksUtil: mockGithubChecksUtil,
- // buildBucketV2Client: mockBuildbucket,
- // gerritService: FakeGerritService(branchesValue: <String>['master']),
- // pubsub: pubsub,
- // ),
- // );
- // when(mockBuildbucket.batch(any)).thenAnswer(
- // (_) async => bbv2.BatchResponse(
- // responses: <bbv2.BatchResponse_Response>[
- // bbv2.BatchResponse_Response(
- // searchBuilds: bbv2.SearchBuildsResponse(
- // builds: <bbv2.Build>[
- // generateBuild(1000, name: 'Linux', bucket: 'try'),
- // generateBuild(2000, name: 'Linux Coverage', bucket: 'try'),
- // generateBuild(3000, name: 'Mac', bucket: 'try', status: Status.scheduled),
- // generateBuild(4000, name: 'Windows', bucket: 'try', status: Status.started),
- // generateBuild(5000, name: 'Linux A', bucket: 'try', status: Status.failure),
- // ],
- // ),
- // ),
- // ],
- // ),
- // );
- // when(mockBuildbucket.scheduleBuild(any))
- // .thenAnswer((_) async => generateBuild(5001, name: 'Linux A', bucket: 'try', status: Status.scheduled));
- // // Only Linux A should be retried
- // final Map<String, CheckRun> checkRuns = <String, CheckRun>{
- // 'Linux': createCheckRun(name: 'Linux', id: 100),
- // 'Linux Coverage': createCheckRun(name: 'Linux Coverage', id: 200),
- // 'Mac': createCheckRun(name: 'Mac', id: 300, status: CheckRunStatus.queued),
- // 'Windows': createCheckRun(name: 'Windows', id: 400, status: CheckRunStatus.inProgress),
- // 'Linux A': createCheckRun(name: 'Linux A', id: 500),
- // };
- // when(mockGithubChecksUtil.allCheckRuns(any, any)).thenAnswer((_) async {
- // return checkRuns;
- // });
-
- // final CheckSuiteEvent checkSuiteEvent =
- // CheckSuiteEvent.fromJson(jsonDecode(checkSuiteTemplate('rerequested')) as Map<String, dynamic>);
- // await scheduler.retryPresubmitTargets(
- // pullRequest: pullRequest,
- // checkSuiteEvent: checkSuiteEvent,
- // );
-
- // expect(pubsub.messages.length, 1);
- // final BatchRequest batchRequest = pubsub.messages.single as BatchRequest;
- // expect(batchRequest.requests!.length, 1);
- // // Schedule build should have been sent
- // expect(batchRequest.requests!.single.scheduleBuild, isNotNull);
- // final ScheduleBuildRequest scheduleBuildRequest = batchRequest.requests!.single.scheduleBuild!;
- // // Verify expected parameters to schedule build
- // expect(scheduleBuildRequest.builderId.builder, 'Linux A');
- // expect(scheduleBuildRequest.properties!['custom'], 'abc');
- // });
-
- // test('pass github_build_label to properties', () async {
- // final MockBuildBucketClient mockBuildbucket = MockBuildBucketClient();
- // buildStatusService =
- // FakeBuildStatusService(commitStatuses: <CommitStatus>[CommitStatus(generateCommit(1), const <Stage>[])]);
- // final FakePubSub pubsub = FakePubSub();
- // scheduler = Scheduler(
- // cache: cache,
- // config: config,
- // datastoreProvider: (DatastoreDB db) => DatastoreService(db, 2),
- // githubChecksService: GithubChecksService(config, githubChecksUtil: mockGithubChecksUtil),
- // buildStatusProvider: (_, __) => buildStatusService,
- // httpClientProvider: () => httpClient,
- // luciBuildService: FakeLuciBuildService(
- // config: config,
- // githubChecksUtil: mockGithubChecksUtil,
- // buildbucket: mockBuildbucket,
- // gerritService: FakeGerritService(branchesValue: <String>['master']),
- // pubsub: pubsub,
- // ),
- // );
- // when(mockBuildbucket.batch(any)).thenAnswer(
- // (_) async => BatchResponse(
- // responses: <Response>[
- // Response(
- // searchBuilds: SearchBuildsResponse(
- // builds: <Build>[
- // generateBuild(1000, name: 'Linux', bucket: 'try'),
- // generateBuild(2000, name: 'Linux Coverage', bucket: 'try'),
- // generateBuild(3000, name: 'Mac', bucket: 'try', status: Status.scheduled),
- // generateBuild(4000, name: 'Windows', bucket: 'try', status: Status.started),
- // generateBuild(5000, name: 'Linux A', bucket: 'try', status: Status.failure),
- // ],
- // ),
- // ),
- // ],
- // ),
- // );
- // when(mockBuildbucket.scheduleBuild(any))
- // .thenAnswer((_) async => generateBuild(5001, name: 'Linux A', bucket: 'try', status: Status.scheduled));
- // // Only Linux A should be retried
- // final Map<String, CheckRun> checkRuns = <String, CheckRun>{
- // 'Linux': createCheckRun(name: 'Linux', id: 100),
- // 'Linux Coverage': createCheckRun(name: 'Linux Coverage', id: 200),
- // 'Mac': createCheckRun(name: 'Mac', id: 300, status: CheckRunStatus.queued),
- // 'Windows': createCheckRun(name: 'Windows', id: 400, status: CheckRunStatus.inProgress),
- // 'Linux A': createCheckRun(name: 'Linux A', id: 500),
- // };
- // when(mockGithubChecksUtil.allCheckRuns(any, any)).thenAnswer((_) async {
- // return checkRuns;
- // });
-
- // final CheckSuiteEvent checkSuiteEvent =
- // CheckSuiteEvent.fromJson(jsonDecode(checkSuiteTemplate('rerequested')) as Map<String, dynamic>);
- // await scheduler.retryPresubmitTargets(
- // pullRequest: pullRequest,
- // checkSuiteEvent: checkSuiteEvent,
- // );
-
- // expect(pubsub.messages.length, 1);
- // final BatchRequest batchRequest = pubsub.messages.single as BatchRequest;
- // expect(batchRequest.requests!.length, 1);
- // // Schedule build should have been sent
- // expect(batchRequest.requests!.single.scheduleBuild, isNotNull);
- // final ScheduleBuildRequest scheduleBuildRequest = batchRequest.requests!.single.scheduleBuild!;
- // // Verify expected parameters to schedule build
- // expect(scheduleBuildRequest.builderId.builder, 'Linux A');
- // expect(scheduleBuildRequest.properties!['custom'], 'abc');
- // });
-
- test('triggers only specificed targets', () async {
- final List<Target> presubmitTargets = <Target>[generateTarget(1), generateTarget(2)];
- final List<Target> presubmitTriggerTargets = scheduler.getTriggerList(presubmitTargets, <String>['Linux 1']);
- expect(presubmitTriggerTargets.length, 1);
- });
-
- test('triggers all presubmit targets when trigger list is null', () async {
- final List<Target> presubmitTargets = <Target>[generateTarget(1), generateTarget(2)];
- final List<Target> presubmitTriggerTargets = scheduler.getTriggerList(presubmitTargets, null);
- expect(presubmitTriggerTargets.length, 2);
- });
-
- test('triggers all presubmit targets when trigger list is empty', () async {
- final List<Target> presubmitTargets = <Target>[generateTarget(1), generateTarget(2)];
- final List<Target> presubmitTriggerTargets = scheduler.getTriggerList(presubmitTargets, <String>[]);
- expect(presubmitTriggerTargets.length, 2);
- });
-
- test('triggers only targets that are contained in the trigger list', () async {
- final List<Target> presubmitTargets = <Target>[generateTarget(1), generateTarget(2)];
- final List<Target> presubmitTriggerTargets =
- scheduler.getTriggerList(presubmitTargets, <String>['Linux 1', 'Linux 3']);
- expect(presubmitTriggerTargets.length, 1);
- expect(presubmitTargets[0].value.name, 'Linux 1');
- });
- });
- });
-}
-
-CheckRun createCheckRun({String? name, required int id, CheckRunStatus status = CheckRunStatus.completed}) {
- final int externalId = id * 2;
- final String checkRunJson =
- '{"name": "$name", "id": $id, "external_id": "{$externalId}", "status": "$status", "started_at": "2020-05-10T02:49:31Z", "head_sha": "the_sha", "check_suite": {"id": 456}}';
- return CheckRun.fromJson(jsonDecode(checkRunJson) as Map<String, dynamic>);
-}
-
-String toSha(Commit commit) => commit.sha!;
-
-int toTimestamp(Commit commit) => commit.timestamp!;
diff --git a/app_dart/test/src/service/fake_luci_build_service.dart b/app_dart/test/src/service/fake_luci_build_service.dart
index 196447a..6650085 100644
--- a/app_dart/test/src/service/fake_luci_build_service.dart
+++ b/app_dart/test/src/service/fake_luci_build_service.dart
@@ -4,7 +4,6 @@
import 'package:cocoon_service/src/foundation/github_checks_util.dart';
import 'package:cocoon_service/src/request_handling/pubsub.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
import 'package:cocoon_service/src/service/buildbucket.dart';
import 'package:cocoon_service/src/service/cache_service.dart';
import 'package:cocoon_service/src/service/gerrit_service.dart';
@@ -12,7 +11,6 @@
import '../request_handling/fake_pubsub.dart';
import '../utilities/mocks.dart';
-import 'fake_build_bucket_v2_client.dart';
import 'fake_buildbucket.dart';
import 'fake_gerrit_service.dart';
@@ -21,14 +19,12 @@
FakeLuciBuildService({
required super.config,
BuildBucketClient? buildbucket,
- BuildBucketV2Client? buildBucketV2Client,
GithubChecksUtil? githubChecksUtil,
GerritService? gerritService,
PubSub? pubsub,
}) : super(
cache: CacheService(inMemory: true),
buildBucketClient: buildbucket ?? FakeBuildBucketClient(),
- buildBucketV2Client: buildBucketV2Client ?? FakeBuildBucketV2Client(),
githubChecksUtil: githubChecksUtil ?? MockGithubChecksUtil(),
gerritService: gerritService ?? FakeGerritService(),
pubsub: pubsub ?? FakePubSub(),
diff --git a/app_dart/test/src/service/fake_luci_build_service_v2.dart b/app_dart/test/src/service/fake_luci_build_service_v2.dart
deleted file mode 100644
index 9e1e8ce..0000000
--- a/app_dart/test/src/service/fake_luci_build_service_v2.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2021 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/src/foundation/github_checks_util.dart';
-import 'package:cocoon_service/src/request_handling/pubsub.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
-import 'package:cocoon_service/src/service/cache_service.dart';
-import 'package:cocoon_service/src/service/gerrit_service.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-
-import '../request_handling/fake_pubsub.dart';
-import '../utilities/mocks.dart';
-import 'fake_build_bucket_v2_client.dart';
-import 'fake_gerrit_service.dart';
-
-/// Fake [LuciBuildService] for use in tests.
-class FakeLuciBuildServiceV2 extends LuciBuildServiceV2 {
- FakeLuciBuildServiceV2({
- required super.config,
- BuildBucketV2Client? buildBucketV2Client,
- GithubChecksUtil? githubChecksUtil,
- GerritService? gerritService,
- PubSub? pubsub,
- }) : super(
- cache: CacheService(inMemory: true),
- buildBucketV2Client: buildBucketV2Client ?? FakeBuildBucketV2Client(),
- githubChecksUtil: githubChecksUtil ?? MockGithubChecksUtil(),
- gerritService: gerritService ?? FakeGerritService(),
- pubsub: pubsub ?? FakePubSub(),
- );
-}
diff --git a/app_dart/test/src/service/fake_scheduler_v2.dart b/app_dart/test/src/service/fake_scheduler_v2.dart
deleted file mode 100644
index d185218..0000000
--- a/app_dart/test/src/service/fake_scheduler_v2.dart
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright 2021 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:cocoon_service/src/foundation/github_checks_util.dart';
-import 'package:cocoon_service/src/model/appengine/commit.dart';
-import 'package:cocoon_service/src/model/ci_yaml/ci_yaml.dart';
-import 'package:cocoon_service/src/model/proto/protos.dart' as pb;
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
-import 'package:cocoon_service/src/service/cache_service.dart';
-import 'package:cocoon_service/src/service/config.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
-import 'package:cocoon_service/src/service/scheduler.dart';
-import 'package:cocoon_service/src/service/scheduler_v2.dart';
-import 'package:github/github.dart';
-import 'package:retry/retry.dart';
-
-import '../utilities/entity_generators.dart';
-import 'fake_luci_build_service_v2.dart';
-
-/// Fake for [Scheduler] to use for tests that rely on it.
-class FakeSchedulerV2 extends SchedulerV2 {
- FakeSchedulerV2({
- this.ciYaml,
- LuciBuildServiceV2? luciBuildService,
- BuildBucketV2Client? buildbucket,
- required super.config,
- GithubChecksUtil? githubChecksUtil,
- }) : super(
- cache: CacheService(inMemory: true),
- githubChecksService: GithubChecksServiceV2(
- config,
- githubChecksUtil: githubChecksUtil,
- ),
- luciBuildService: luciBuildService ??
- FakeLuciBuildServiceV2(
- config: config,
- buildBucketV2Client: buildbucket,
- githubChecksUtil: githubChecksUtil,
- ),
- );
-
- final CiYaml _defaultConfig = emptyConfig;
-
- /// [CiYaml] value to be injected on [getCiYaml].
- CiYaml? ciYaml;
-
- @override
- Future<CiYaml> getCiYaml(
- Commit commit, {
- CiYaml? totCiYaml,
- RetryOptions? retryOptions,
- bool validate = false,
- }) async =>
- ciYaml ?? _defaultConfig;
-
- @override
- Future<Commit> generateTotCommit({required String branch, required RepositorySlug slug}) async {
- return generateCommit(1);
- }
-
- int cancelPreSubmitTargetsCallCnt = 0;
-
- int get cancelPreSubmitTargetsCallCount => cancelPreSubmitTargetsCallCnt;
-
- void resetCancelPreSubmitTargetsCallCount() => cancelPreSubmitTargetsCallCnt = 0;
-
- @override
- Future<void> cancelPreSubmitTargets({
- required PullRequest pullRequest,
- String reason = 'Newer commit available',
- }) async {
- await super.cancelPreSubmitTargets(pullRequest: pullRequest);
- cancelPreSubmitTargetsCallCnt++;
- }
-
- int triggerPresubmitTargetsCnt = 0;
-
- int get triggerPresubmitTargetsCallCount => triggerPresubmitTargetsCnt;
-
- void resetTriggerPresubmitTargetsCallCount() => triggerPresubmitTargetsCnt = 0;
-
- @override
- Future<void> triggerPresubmitTargets({
- required PullRequest pullRequest,
- String reason = 'Newer commit available',
- List<String>? builderTriggerList,
- }) async {
- await super.triggerPresubmitTargets(pullRequest: pullRequest);
- triggerPresubmitTargetsCnt++;
- }
-
- int addPullRequestCallCnt = 0;
-
- int get addPullRequestCallCount {
- return addPullRequestCallCnt;
- }
-
- void resetAddPullRequestCallCount() {
- addPullRequestCallCnt = 0;
- }
-
- @override
- Future<void> addPullRequest(
- PullRequest pr,
- ) async {
- await super.addPullRequest(pr);
- addPullRequestCallCnt++;
- }
-}
-
-final CiYaml emptyConfig = CiYaml(
- slug: Config.flutterSlug,
- branch: Config.defaultBranch(Config.flutterSlug),
- config: pb.SchedulerConfig(
- enabledBranches: <String>[
- Config.defaultBranch(Config.flutterSlug),
- ],
- targets: <pb.Target>[
- pb.Target(
- name: 'Linux A',
- scheduler: pb.SchedulerSystem.luci,
- ),
- ],
- ),
-);
-
-CiYaml exampleConfig = CiYaml(
- slug: Config.flutterSlug,
- branch: Config.defaultBranch(Config.flutterSlug),
- config: pb.SchedulerConfig(
- enabledBranches: <String>[
- Config.defaultBranch(Config.flutterSlug),
- ],
- targets: <pb.Target>[
- pb.Target(
- name: 'Linux A',
- scheduler: pb.SchedulerSystem.luci,
- ),
- pb.Target(
- name: 'Mac A',
- scheduler: pb.SchedulerSystem.luci,
- ),
- pb.Target(
- name: 'Windows A',
- scheduler: pb.SchedulerSystem.luci,
- ),
- pb.Target(
- name: 'Google Internal Roll',
- presubmit: false,
- postsubmit: true,
- scheduler: pb.SchedulerSystem.google_internal,
- ),
- ],
- ),
-);
-
-CiYaml exampleBackfillConfig = CiYaml(
- slug: Config.flutterSlug,
- branch: Config.defaultBranch(Config.flutterSlug),
- config: pb.SchedulerConfig(
- enabledBranches: <String>[
- Config.defaultBranch(Config.flutterSlug),
- ],
- targets: <pb.Target>[
- pb.Target(
- name: 'Linux A',
- scheduler: pb.SchedulerSystem.luci,
- postsubmit: true,
- properties: {'backfill': 'true'},
- ),
- pb.Target(
- name: 'Mac A',
- scheduler: pb.SchedulerSystem.luci,
- postsubmit: true,
- ),
- pb.Target(
- name: 'Windows A',
- scheduler: pb.SchedulerSystem.luci,
- postsubmit: true,
- properties: {'backfill': 'false'},
- ),
- ],
- ),
-);
-
-CiYaml examplePresubmitRescheduleConfig = CiYaml(
- slug: Config.flutterSlug,
- branch: Config.defaultBranch(Config.flutterSlug),
- config: pb.SchedulerConfig(
- enabledBranches: <String>[
- Config.defaultBranch(Config.flutterSlug),
- ],
- targets: <pb.Target>[
- pb.Target(
- name: 'Linux A',
- ),
- pb.Target(
- name: 'Linux B',
- postsubmit: true,
- properties: {'presubmit_retry': '1'},
- ),
- ],
- ),
-);
-
-final CiYaml batchPolicyConfig = CiYaml(
- slug: Config.flutterSlug,
- branch: Config.defaultBranch(Config.flutterSlug),
- config: pb.SchedulerConfig(
- enabledBranches: <String>[
- Config.defaultBranch(Config.flutterSlug),
- ],
- targets: <pb.Target>[
- pb.Target(
- name: 'Linux_android A',
- ),
- pb.Target(
- name: 'Linux_android B',
- ),
- pb.Target(
- name: 'Linux_android C',
- ),
- ],
- ),
-);
-
-final CiYaml unsupportedPostsubmitCheckrunConfig = CiYaml(
- slug: Config.flutterSlug,
- branch: Config.defaultBranch(Config.flutterSlug),
- config: pb.SchedulerConfig(
- enabledBranches: <String>[
- Config.defaultBranch(Config.flutterSlug),
- ],
- targets: <pb.Target>[
- pb.Target(
- name: 'Linux flutter',
- ),
- ],
- ),
-);
-
-final CiYaml nonBringupPackagesConfig = CiYaml(
- slug: Config.packagesSlug,
- branch: Config.defaultBranch(Config.packagesSlug),
- config: pb.SchedulerConfig(
- enabledBranches: <String>[
- Config.defaultBranch(Config.packagesSlug),
- ],
- targets: <pb.Target>[
- pb.Target(
- name: 'Linux nonbringup',
- ),
- ],
- ),
-);
-
-final CiYaml bringupPackagesConfig = CiYaml(
- slug: Config.packagesSlug,
- branch: Config.defaultBranch(Config.packagesSlug),
- config: pb.SchedulerConfig(
- enabledBranches: <String>[
- Config.defaultBranch(Config.packagesSlug),
- ],
- targets: <pb.Target>[
- pb.Target(
- name: 'Linux bringup',
- bringup: true,
- ),
- ],
- ),
-);
-
-final CiYaml totCiYaml = CiYaml(
- slug: Config.flutterSlug,
- branch: Config.defaultBranch(Config.flutterSlug),
- config: pb.SchedulerConfig(
- enabledBranches: <String>[
- Config.defaultBranch(Config.flutterSlug),
- ],
- targets: <pb.Target>[
- pb.Target(
- name: 'Linux_android B',
- ),
- pb.Target(
- name: 'Linux_android C',
- ),
- ],
- ),
-);
-
-final CiYaml notInToTConfig = CiYaml(
- slug: Config.flutterSlug,
- branch: Config.defaultBranch(Config.flutterSlug),
- config: pb.SchedulerConfig(
- enabledBranches: <String>[
- Config.defaultBranch(Config.flutterSlug),
- ],
- targets: <pb.Target>[
- pb.Target(
- name: 'Linux_android A',
- ),
- ],
- ),
- totConfig: totCiYaml,
-);
diff --git a/app_dart/test/src/utilities/build_bucket_v2_messages.dart b/app_dart/test/src/utilities/build_bucket_v2_messages.dart
deleted file mode 100644
index 8b6a812..0000000
--- a/app_dart/test/src/utilities/build_bucket_v2_messages.dart
+++ /dev/null
@@ -1,1654 +0,0 @@
-// Copyright 2024 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:convert';
-
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
-import 'package:cocoon_service/src/model/luci/pubsub_message_v2.dart';
-import 'package:cocoon_service/src/model/luci/user_data.dart';
-import 'package:fixnum/fixnum.dart';
-
-PushMessageV2 createPushMessageV2(
- Int64 id, {
- String? project = 'flutter',
- String? bucket = 'try',
- String? builder = 'Windows Engine Drone',
- int? number = 259942,
- bbv2.Status? status = bbv2.Status.SCHEDULED,
- Map<String, dynamic>? userData = const {},
- bool? addBuildSet = true,
-}) {
- final bbv2.PubSubCallBack pubSubCallBack = createPubSubCallBack(
- id,
- project: project,
- bucket: bucket,
- builder: builder,
- number: number,
- status: status,
- userData: userData,
- addBuildSet: addBuildSet,
- );
-
- final Map<String, dynamic> pubSubCallBackMap = pubSubCallBack.toProto3Json() as Map<String, dynamic>;
-
- final String pubSubCallBackString = jsonEncode(pubSubCallBackMap);
-
- return PushMessageV2(data: pubSubCallBackString);
-}
-
-bbv2.PubSubCallBack createPubSubCallBack(
- Int64 id, {
- String? project = 'flutter',
- String? bucket = 'try',
- String? builder = 'Windows Engine Drone',
- int? number = 259942,
- bbv2.Status? status = bbv2.Status.SCHEDULED,
- Map<String, dynamic>? userData = const {},
- bool? addBuildSet = true,
-}) {
- // this contains BuildsV2PubSub and UserData (List<int>).
- final bbv2.BuildsV2PubSub buildsV2PubSub = createBuild(
- id,
- project: project,
- bucket: bucket,
- builder: builder,
- number: number,
- status: status,
- addBuildSet: addBuildSet,
- );
- final List<int>? userDataBytes = UserData.encodeUserDataToBytes(userData!);
- return bbv2.PubSubCallBack(buildPubsub: buildsV2PubSub, userData: userDataBytes);
-}
-
-bbv2.BuildsV2PubSub createBuild(
- Int64 id, {
- String? project = 'flutter',
- String? bucket = 'try',
- String? builder = 'Windows Engine Drone',
- int? number = 259942,
- bbv2.Status? status = bbv2.Status.SCHEDULED,
- bool? addBuildSet = true,
-}) {
- final bbv2.BuildsV2PubSub build = bbv2.BuildsV2PubSub().createEmptyInstance();
- build.mergeFromProto3Json(
- jsonDecode(
- createBuildString(
- id,
- project: project,
- bucket: bucket,
- builder: builder,
- number: number,
- status: status,
- addBuildSet: addBuildSet,
- ),
- ) as Map<String, dynamic>,
- );
- return build;
-}
-
-String createBuildString(
- Int64 id, {
- String? project = 'flutter',
- String? bucket = 'try',
- String? builder = 'Windows Engine Drone',
- int? number = 259942,
- bbv2.Status? status = bbv2.Status.SCHEDULED,
- bool? addBuildSet = true,
-}) {
- return '''
- {
- "build":
- {
- "id": "$id",
- "builder": {
- "project": "$project",
- "bucket": "$bucket",
- "builder": "$builder"
- },
- "number": $number,
- "createdBy": "user:flutter-try-builder@chops-service-accounts.iam.gserviceaccount.com",
- "createTime": "2023-10-18T23:40:43.480388983Z",
- "startTime": "2023-10-18T23:40:45.692900Z",
- "updateTime": "2023-10-18T23:47:04.674226745Z",
- "endTime": "2023-10-18T23:47:04.674226745Z",
- "status": "$status",
- "input": {
- "properties": {
- "\$flutter/goma": {
- "server": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog"
- },
- "\$flutter/rbe": {
- "instance": "projects/flutter-rbe-prod/instances/default",
- "platform": "container-image=docker://gcr.io/cloud-marketplace/google/debian11@sha256:69e2789c9f3d28c6a0f13b25062c240ee7772be1f5e6d41bb4680b63eae6b304"
- },
- "\$kitchen": {
- "emulate_gce": true
- },
- "\$recipe_engine/isolated": {
- "server": "https://isolateserver.appspot.com"
- },
- "\$recipe_engine/path": {
- "cache_dir": "C:cache",
- "temp_dir": "C:t"
- },
- "\$recipe_engine/swarming": {
- "server": "https://chromium-swarm.appspot.com"
- },
- "add_recipes_cq": true,
- "bot_id": "flutter-try-windows-us-central1-f-16-8a9p",
- "bringup": false,
- "build": {
- "archives": [
- {
- "base_path": "out/host_release_arm64/zip_archives/",
- "include_paths": [
- "out/host_release_arm64/zip_archives/windows-arm64-release/windows-arm64-flutter.zip"
- ],
- "name": "host_profile_arm64",
- "realm": "production",
- "type": "gcs"
- }
- ],
- "drone_dimensions": [
- "device_type=none",
- "os=Windows-10"
- ],
- "gclient_variables": {
- "download_android_deps": false
- },
- "generators": {},
- "gn": [
- "--runtime-mode",
- "release",
- "--no-lto",
- "--windows-cpu",
- "arm64"
- ],
- "name": "host_release_arm64",
- "ninja": {
- "config": "host_release_arm64",
- "targets": [
- "windows",
- "gen_snapshot",
- "flutter/build/archives:windows_flutter"
- ]
- },
- "recipe": "engine_v2/builder"
- },
- "build_android_aot": false,
- "build_android_debug": false,
- "build_android_jit_release": false,
- "build_android_vulkan": false,
- "build_fuchsia": false,
- "build_host": false,
- "build_ios": false,
- "buildnumber": 13882,
- "clobber": false,
- "config_name": "windows_arm_host_engine",
- "device_type": "none",
- "exe_cipd_version": "refs/heads/main",
- "gclient_variables": {
- "download_android_deps": false
- },
- "gcs_goldens_bucket": "",
- "git_branch": "main",
- "git_ref": "refs/pull/47066/head",
- "git_repo": "engine",
- "git_url": "https://github.com/flutter/engine",
- "gold_tryjob": true,
- "goma_jobs": "200",
- "ios_debug": false,
- "ios_profile": false,
- "ios_release": false,
- "mastername": "client.flutter",
- "no_lto": true,
- "os": "Windows-10",
- "rbe_jobs": "200",
- "recipe": "engine_v2/builder",
- "upload_packages": false,
- "use_cas": true
- },
- "experiments": [
- "luci.buildbucket.agent.cipd_installation",
- "luci.buildbucket.agent.start_build",
- "luci.buildbucket.backend_go",
- "luci.buildbucket.bbagent_getbuild",
- "luci.buildbucket.bq_exporter_go",
- "luci.buildbucket.parent_tracking",
- "luci.buildbucket.use_bbagent",
- "luci.recipes.use_python3"
- ]
- },
- "output": {
- "properties": {
- "git_cache_epoch": "1687554665",
- "got_engine_revision": "4d97460a271ceab7335b4e22110df77e9d3fd9a7"
- },
- "logs": [
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/stdout"
- },
- {
- "name": "stderr",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/stderr",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/stderr"
- }
- ],
- "status": "STARTED"
- },
- "steps": [
- {
- "name": "setup_build",
- "startTime": "2023-10-18T23:41:10.699537Z",
- "endTime": "2023-10-18T23:41:10.709056Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "run_recipe",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/run_recipe",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/run_recipe"
- },
- {
- "name": "memory_profile",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/memory_profile",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/memory_profile"
- },
- {
- "name": "logging",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/logging",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_build/logging"
- }
- ],
- "summaryMarkdown": "running recipe: \\"engine_v2/builder\\" with Python 3.8.10"
- },
- {
- "name": "Clobber build output",
- "startTime": "2023-10-18T23:41:10.710867Z",
- "endTime": "2023-10-18T23:41:11.094743Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Clobber_build_output/stdout"
- }
- ]
- },
- {
- "name": "Ensure checkout cache",
- "startTime": "2023-10-18T23:41:11.095676Z",
- "endTime": "2023-10-18T23:41:11.223466Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Ensure_checkout_cache/stdout"
- }
- ]
- },
- {
- "name": "Enable long path support",
- "startTime": "2023-10-18T23:41:11.224518Z",
- "endTime": "2023-10-18T23:41:11.573466Z",
- "status": "SUCCESS"
- },
- {
- "name": "Enable long path support|Run long path support script",
- "startTime": "2023-10-18T23:41:11.225300Z",
- "endTime": "2023-10-18T23:41:11.573466Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Enable_long_path_support/Run_long_path_support_script/stdout"
- }
- ]
- },
- {
- "name": "Empty C:cache/git",
- "startTime": "2023-10-18T23:41:11.575710Z",
- "endTime": "2023-10-18T23:41:11.713322Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/execution_details"
- },
- {
- "name": "stderr",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/stderr",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/stderr"
- },
- {
- "name": "listdir",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/listdir",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_git/listdir"
- }
- ]
- },
- {
- "name": "Empty C:cache/builder",
- "startTime": "2023-10-18T23:41:11.713646Z",
- "endTime": "2023-10-18T23:41:11.862582Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/execution_details"
- },
- {
- "name": "stderr",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/stderr",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/stderr"
- },
- {
- "name": "listdir",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/listdir",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Empty_C:_b_s_w_ir_cache_builder/listdir"
- }
- ]
- },
- {
- "name": "copy win_toolchain_metadata",
- "startTime": "2023-10-18T23:41:11.863620Z",
- "endTime": "2023-10-18T23:41:12.005728Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/copy_win_toolchain_metadata/stdout"
- }
- ]
- },
- {
- "name": "read win toolchain metadata",
- "startTime": "2023-10-18T23:41:12.006719Z",
- "endTime": "2023-10-18T23:41:12.129104Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/stdout"
- },
- {
- "name": "data.json",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/data.json",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/read_win_toolchain_metadata/data.json"
- }
- ]
- },
- {
- "name": "Checkout source code",
- "startTime": "2023-10-18T23:41:12.129104Z",
- "endTime": "2023-10-18T23:43:41.719117Z",
- "status": "SUCCESS"
- },
- {
- "name": "Checkout source code|bot_update",
- "startTime": "2023-10-18T23:41:12.174050Z",
- "endTime": "2023-10-18T23:43:02.007547Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/stdout"
- },
- {
- "name": "json.output",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/json.output",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/bot_update/json.output"
- }
- ],
- "summaryMarkdown": "[82GB/498GB used (16%)]"
- },
- {
- "name": "Checkout source code|gclient runhooks",
- "startTime": "2023-10-18T23:43:02.007547Z",
- "endTime": "2023-10-18T23:43:41.465210Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/gclient_runhooks/stdout"
- }
- ]
- },
- {
- "name": "Checkout source code|copy win_toolchain_metadata",
- "startTime": "2023-10-18T23:43:41.465210Z",
- "endTime": "2023-10-18T23:43:41.594714Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/copy_win_toolchain_metadata/stdout"
- }
- ]
- },
- {
- "name": "Checkout source code|read win toolchain metadata",
- "startTime": "2023-10-18T23:43:41.595635Z",
- "endTime": "2023-10-18T23:43:41.718896Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/stdout"
- },
- {
- "name": "data.json",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/data.json",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/Checkout_source_code/read_win_toolchain_metadata/data.json"
- }
- ]
- },
- {
- "name": "ensure goma",
- "startTime": "2023-10-18T23:43:41.719922Z",
- "endTime": "2023-10-18T23:43:41.846305Z",
- "status": "SUCCESS"
- },
- {
- "name": "ensure goma|ensure_installed",
- "startTime": "2023-10-18T23:43:41.721089Z",
- "endTime": "2023-10-18T23:43:41.846179Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/stdout"
- },
- {
- "name": "json.output",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/json.output",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/ensure_goma/ensure_installed/json.output"
- }
- ]
- },
- {
- "name": "setup goma",
- "startTime": "2023-10-18T23:43:41.846366Z",
- "endTime": "2023-10-18T23:43:47.675164Z",
- "status": "SUCCESS"
- },
- {
- "name": "setup goma|ensure cpython3",
- "startTime": "2023-10-18T23:43:41.846366Z",
- "endTime": "2023-10-18T23:43:46.120490Z",
- "status": "SUCCESS"
- },
- {
- "name": "setup goma|ensure cpython3|read manifest",
- "startTime": "2023-10-18T23:43:41.847844Z",
- "endTime": "2023-10-18T23:43:41.973087Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/stdout"
- },
- {
- "name": "tool_manifest.json",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/tool_manifest.json",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/read_manifest/tool_manifest.json"
- }
- ]
- },
- {
- "name": "setup goma|ensure cpython3|install infra/3pp/tools/cpython3",
- "startTime": "2023-10-18T23:43:42.157406Z",
- "endTime": "2023-10-18T23:43:46.119514Z",
- "status": "SUCCESS"
- },
- {
- "name": "setup goma|ensure cpython3|install infra/3pp/tools/cpython3|ensure package directory",
- "startTime": "2023-10-18T23:43:42.157406Z",
- "endTime": "2023-10-18T23:43:42.293267Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_package_directory/stdout"
- }
- ]
- },
- {
- "name": "setup goma|ensure cpython3|install infra/3pp/tools/cpython3|ensure_installed",
- "startTime": "2023-10-18T23:43:42.294156Z",
- "endTime": "2023-10-18T23:43:46.119514Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/stdout"
- },
- {
- "name": "json.output",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/json.output",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/ensure_cpython3/install_infra_3pp_tools_cpython3/ensure_installed/json.output"
- }
- ]
- },
- {
- "name": "setup goma|start goma",
- "startTime": "2023-10-18T23:43:46.121466Z",
- "endTime": "2023-10-18T23:43:47.675164Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma/start_goma/stdout"
- }
- ]
- },
- {
- "name": "gn --runtime-mode release --no-lto --windows-cpu arm64",
- "startTime": "2023-10-18T23:43:47.677090Z",
- "endTime": "2023-10-18T23:43:51.922997Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/gn_--runtime-mode_release_--no-lto_--windows-cpu_arm64/stdout"
- }
- ]
- },
- {
- "name": "teardown goma",
- "startTime": "2023-10-18T23:43:51.922997Z",
- "endTime": "2023-10-18T23:43:56.540194Z",
- "status": "SUCCESS"
- },
- {
- "name": "teardown goma|goma jsonstatus",
- "startTime": "2023-10-18T23:43:51.924849Z",
- "endTime": "2023-10-18T23:43:52.281422Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/stdout"
- },
- {
- "name": "json.output",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/json.output",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_jsonstatus/json.output"
- }
- ]
- },
- {
- "name": "teardown goma|goma stats",
- "startTime": "2023-10-18T23:43:52.281422Z",
- "endTime": "2023-10-18T23:43:52.598735Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/goma_stats/stdout"
- }
- ]
- },
- {
- "name": "teardown goma|stop goma",
- "startTime": "2023-10-18T23:43:52.599129Z",
- "endTime": "2023-10-18T23:43:55.348252Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/stop_goma/stdout"
- }
- ]
- },
- {
- "name": "teardown goma|read goma_stats.json",
- "startTime": "2023-10-18T23:43:55.348819Z",
- "endTime": "2023-10-18T23:43:55.472990Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/stdout"
- },
- {
- "name": "json.output",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/json.output",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/read_goma_stats.json/json.output"
- }
- ]
- },
- {
- "name": "teardown goma|ensure bqupload",
- "startTime": "2023-10-18T23:43:55.472990Z",
- "endTime": "2023-10-18T23:43:56.157092Z",
- "status": "SUCCESS"
- },
- {
- "name": "teardown goma|ensure bqupload|read manifest",
- "startTime": "2023-10-18T23:43:55.473991Z",
- "endTime": "2023-10-18T23:43:55.599246Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/stdout"
- },
- {
- "name": "tool_manifest.json",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/tool_manifest.json",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/read_manifest/tool_manifest.json"
- }
- ]
- },
- {
- "name": "teardown goma|ensure bqupload|install infra/tools/bqupload",
- "startTime": "2023-10-18T23:43:55.606847Z",
- "endTime": "2023-10-18T23:43:56.157092Z",
- "status": "SUCCESS"
- },
- {
- "name": "teardown goma|ensure bqupload|install infra/tools/bqupload|ensure package directory",
- "startTime": "2023-10-18T23:43:55.607934Z",
- "endTime": "2023-10-18T23:43:55.729687Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_package_directory/stdout"
- }
- ]
- },
- {
- "name": "teardown goma|ensure bqupload|install infra/tools/bqupload|ensure_installed",
- "startTime": "2023-10-18T23:43:55.730870Z",
- "endTime": "2023-10-18T23:43:56.157092Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/stdout"
- },
- {
- "name": "json.output",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/json.output",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/ensure_bqupload/install_infra_tools_bqupload/ensure_installed/json.output"
- }
- ]
- },
- {
- "name": "teardown goma|upload goma stats to bigquery",
- "startTime": "2023-10-18T23:43:56.158075Z",
- "endTime": "2023-10-18T23:43:56.540194Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/teardown_goma/upload_goma_stats_to_bigquery/stdout"
- }
- ]
- },
- {
- "name": "setup goma (2)",
- "startTime": "2023-10-18T23:43:56.541475Z",
- "endTime": "2023-10-18T23:43:57.337570Z",
- "status": "SUCCESS"
- },
- {
- "name": "setup goma (2)|start goma",
- "startTime": "2023-10-18T23:43:56.542723Z",
- "endTime": "2023-10-18T23:43:57.337252Z",
- "status": "SUCCESS",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/setup_goma__2_/start_goma/stdout"
- }
- ]
- },
- {
- "name": "build host_release_arm64 windows gen_snapshot flutter/build/archives:windows_flutter",
- "startTime": "2023-10-18T23:43:57.338625Z",
- "status": "STARTED",
- "logs": [
- {
- "name": "\$debug",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/l_debug",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/l_debug"
- },
- {
- "name": "execution details",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/execution_details",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/execution_details"
- },
- {
- "name": "stdout",
- "viewUrl": "https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/stdout",
- "url": "logdog://logs.chromium.org/flutter/buildbucket/cr-buildbucket/8766855135863637953/+/u/build_host_release_arm64_windows_gen_snapshot_flutter_build_archives:windows_flutter/stdout"
- }
- ]
- }
- ],
- "infra": {
- "buildbucket": {
- "requestedProperties": {
- "\$flutter/goma": {
- "server": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog"
- },
- "\$flutter/rbe": {
- "instance": "projects/flutter-rbe-prod/instances/default",
- "platform": "container-image=docker://gcr.io/cloud-marketplace/google/debian11@sha256:69e2789c9f3d28c6a0f13b25062c240ee7772be1f5e6d41bb4680b63eae6b304"
- },
- "\$kitchen": {
- "emulate_gce": true
- },
- "\$recipe_engine/isolated": {
- "server": "https://isolateserver.appspot.com"
- },
- "\$recipe_engine/path": {
- "cache_dir": "C:cache",
- "temp_dir": "C:t"
- },
- "\$recipe_engine/swarming": {
- "server": "https://chromium-swarm.appspot.com"
- },
- "add_recipes_cq": true,
- "bot_id": "flutter-try-windows-us-central1-f-16-8a9p",
- "bringup": false,
- "build": {
- "archives": [
- {
- "base_path": "out/host_release_arm64/zip_archives/",
- "include_paths": [
- "out/host_release_arm64/zip_archives/windows-arm64-release/windows-arm64-flutter.zip"
- ],
- "name": "host_profile_arm64",
- "realm": "production",
- "type": "gcs"
- }
- ],
- "drone_dimensions": [
- "device_type=none",
- "os=Windows-10"
- ],
- "gclient_variables": {
- "download_android_deps": false
- },
- "generators": {},
- "gn": [
- "--runtime-mode",
- "release",
- "--no-lto",
- "--windows-cpu",
- "arm64"
- ],
- "name": "host_release_arm64",
- "ninja": {
- "config": "host_release_arm64",
- "targets": [
- "windows",
- "gen_snapshot",
- "flutter/build/archives:windows_flutter"
- ]
- },
- "recipe": "engine_v2/builder"
- },
- "build_android_aot": false,
- "build_android_debug": false,
- "build_android_jit_release": false,
- "build_android_vulkan": false,
- "build_fuchsia": false,
- "build_host": false,
- "build_ios": false,
- "buildnumber": 13882,
- "clobber": false,
- "config_name": "windows_arm_host_engine",
- "device_type": "none",
- "exe_cipd_version": "refs/heads/main",
- "gclient_variables": {
- "download_android_deps": false
- },
- "gcs_goldens_bucket": "",
- "git_branch": "main",
- "git_ref": "refs/pull/47066/head",
- "git_repo": "engine",
- "git_url": "https://github.com/flutter/engine",
- "gold_tryjob": true,
- "goma_jobs": "200",
- "ios_debug": false,
- "ios_profile": false,
- "ios_release": false,
- "mastername": "client.flutter",
- "no_lto": true,
- "os": "Windows-10",
- "rbe_jobs": "200",
- "recipe": "engine_v2/builder",
- "upload_packages": false,
- "use_cas": true
- },
- "requestedDimensions": [
- {
- "key": "device_type",
- "value": "none"
- },
- {
- "key": "os",
- "value": "Windows-10"
- }
- ],
- "hostname": "cr-buildbucket.appspot.com",
- "experimentReasons": {
- "luci.best_effort_platform": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
- "luci.buildbucket.agent.cipd_installation": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
- "luci.buildbucket.agent.start_build": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
- "luci.buildbucket.backend_go": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
- "luci.buildbucket.bbagent_getbuild": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
- "luci.buildbucket.bq_exporter_go": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
- "luci.buildbucket.canary_software": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
- "luci.buildbucket.parent_tracking": "EXPERIMENT_REASON_REQUESTED",
- "luci.buildbucket.use_bbagent": "EXPERIMENT_REASON_BUILDER_CONFIG",
- "luci.buildbucket.use_bbagent_race": "EXPERIMENT_REASON_GLOBAL_DEFAULT",
- "luci.non_production": "EXPERIMENT_REASON_REQUESTED",
- "luci.recipes.use_python3": "EXPERIMENT_REASON_BUILDER_CONFIG"
- },
- "agent": {
- "input": {
- "data": {
- "bbagent_utility_packages": {
- "cipd": {
- "specs": [
- {
- "package": "infra/tools/luci/cas/\${platform}",
- "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
- }
- ]
- },
- "onPath": [
- "bbagent_utility_packages",
- "bbagent_utility_packages/bin"
- ]
- },
- "cipd_bin_packages": {
- "cipd": {
- "specs": [
- {
- "package": "infra/3pp/tools/git/\${platform}",
- "version": "version:2@2.42.0.chromium.11"
- },
- {
- "package": "infra/tools/git/\${platform}",
- "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
- },
- {
- "package": "infra/tools/luci/git-credential-luci/\${platform}",
- "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
- },
- {
- "package": "infra/tools/luci/docker-credential-luci/\${platform}",
- "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
- },
- {
- "package": "infra/tools/luci/vpython3/\${platform}",
- "version": "git_revision:7c18303a74d8a6ae4bb3aae9de8f659cc8a6c571"
- },
- {
- "package": "infra/tools/luci/lucicfg/\${platform}",
- "version": "git_revision:34ddbb29b2632cdcec7648a40a9e0150ad33fd6c"
- },
- {
- "package": "infra/tools/luci-auth/\${platform}",
- "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
- },
- {
- "package": "infra/tools/bb/\${platform}",
- "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
- },
- {
- "package": "infra/tools/cloudtail/\${platform}",
- "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
- },
- {
- "package": "infra/tools/prpc/\${platform}",
- "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
- },
- {
- "package": "infra/tools/rdb/\${platform}",
- "version": "git_revision:ec494f363fdfd8cdd5926baad4508d562b7353d4"
- },
- {
- "package": "infra/tools/luci/led/\${platform}",
- "version": "git_revision:0bb208f2de6f3e9c698b70a33cd01c6de9985db2"
- }
- ]
- },
- "onPath": [
- "cipd_bin_packages",
- "cipd_bin_packages/bin"
- ]
- },
- "cipd_bin_packages/cpython3": {
- "cipd": {
- "specs": [
- {
- "package": "infra/3pp/tools/cpython3/\$platform",
- "version": "version:2@3.8.10.chromium.26"
- }
- ]
- },
- "onPath": [
- "cipd_bin_packages/cpython3",
- "cipd_bin_packages/cpython3/bin"
- ]
- },
- "kitchen-checkout": {
- "cipd": {
- "specs": [
- {
- "package": "flutter/recipe_bundles/flutter.googlesource.com/recipes",
- "version": "refs/heads/main"
- }
- ]
- }
- }
- }
- },
- "output": {
- "resolvedData": {
- "": {
- "cipd": {
- "specs": [
- {
- "package": "infra/tools/luci/bbagent/windows-amd64",
- "version": "CWZTz-PPn4V6PQOLwboppTkVcHpDBw4mbSFdFzSCVZ8C"
- }
- ]
- }
- },
- "bbagent_utility_packages": {
- "cipd": {
- "specs": [
- {
- "package": "infra/tools/luci/cas/windows-amd64",
- "version": "GLca2xxHU1T7i8mC6CIQaVHYTpBsIgbfg461-p9auHgC"
- }
- ]
- }
- },
- "cipd_bin_packages": {
- "cipd": {
- "specs": [
- {
- "package": "infra/3pp/tools/git/windows-amd64",
- "version": "nUmXIMXMWYpRRL5G_imH9ylYe8OuFrw8E8E-aQqNniQC"
- },
- {
- "package": "infra/tools/git/windows-amd64",
- "version": "k9xBg8ePL7uiVWiSpRNiuwhZvIFXw9To1-Y7zmGLEsoC"
- },
- {
- "package": "infra/tools/luci/git-credential-luci/windows-amd64",
- "version": "wTYHK_9ozzrCAhNvSJQ2aNh4Xj_WdSZH8z_iPGygl1EC"
- },
- {
- "package": "infra/tools/luci/docker-credential-luci/windows-amd64",
- "version": "TkZdTN7vFH_togft9p4cUxn0aO3uvwCX2KCpCimlN0cC"
- },
- {
- "package": "infra/tools/luci/vpython3/windows-amd64",
- "version": "1JfARK50t0eNaL62bEi837AkuEnOCDAenGnpGcVplFUC"
- },
- {
- "package": "infra/tools/luci/lucicfg/windows-amd64",
- "version": "cWjTUBeuuKTpxum2UgieF5Gpk7maDGMWzGLrxPrIVBcC"
- },
- {
- "package": "infra/tools/luci-auth/windows-amd64",
- "version": "aIJRax7rJxdMLPUzrI7z7Semi5aWdt5LNaogSG72ke8C"
- },
- {
- "package": "infra/tools/bb/windows-amd64",
- "version": "AJCTgGxzUFvFWEY7pC3huf3BQJCRdE3dr06fqyD6_3sC"
- },
- {
- "package": "infra/tools/cloudtail/windows-amd64",
- "version": "wkrKDMSgJA6K4j1y5UkoGT8RJr2xcYqrRGd7EkpsamgC"
- },
- {
- "package": "infra/tools/prpc/windows-amd64",
- "version": "uVp8B8Ebw_buQCapgLcKbbABtQOBXTP69BZ-hiRjstIC"
- },
- {
- "package": "infra/tools/rdb/windows-amd64",
- "version": "LpQ6w9adpEItDPjyzrdc9JkgmySUqjIoawxM6XchQAwC"
- },
- {
- "package": "infra/tools/luci/led/windows-amd64",
- "version": "GUOxVDh_JsTrFpG8smahZzLBlOyWsiJBMfWm5RWm6qEC"
- }
- ]
- }
- },
- "cipd_bin_packages/cpython3": {
- "cipd": {
- "specs": [
- {
- "package": "infra/3pp/tools/cpython3/windows-amd64",
- "version": "55_vUpmQ9RyBMmHoJvSChlnlP07QjmvRaFAG4q4AF-QC"
- }
- ]
- }
- },
- "kitchen-checkout": {
- "cipd": {
- "specs": [
- {
- "package": "flutter/recipe_bundles/flutter.googlesource.com/recipes",
- "version": "y0oPD122qjmiYkrkpcIhZ0GZSeBgKYUHpiRAUuEAjGcC"
- }
- ]
- }
- }
- },
- "status": "SUCCESS",
- "agentPlatform": "windows-amd64",
- "totalDuration": "17s"
- },
- "source": {
- "cipd": {
- "package": "infra/tools/luci/bbagent/\$platform",
- "version": "git_revision:d210fcc40e0faaaf5b0a8bf57a8db5bfe1638c33"
- }
- },
- "purposes": {
- "bbagent_utility_packages": "PURPOSE_BBAGENT_UTILITY",
- "kitchen-checkout": "PURPOSE_EXE_PAYLOAD"
- }
- },
- "knownPublicGerritHosts": [
- "android.googlesource.com",
- "aomedia.googlesource.com",
- "boringssl.googlesource.com",
- "chromium.googlesource.com",
- "dart.googlesource.com",
- "dawn.googlesource.com",
- "fuchsia.googlesource.com",
- "gn.googlesource.com",
- "go.googlesource.com",
- "llvm.googlesource.com",
- "pdfium.googlesource.com",
- "quiche.googlesource.com",
- "skia.googlesource.com",
- "swiftshader.googlesource.com",
- "webrtc.googlesource.com"
- ],
- "buildNumber": true
- },
- "swarming": {
- "hostname": "chromium-swarm.appspot.com",
- "taskId": "655dfb42a28dbe10",
- "parentRunId": "655df9add49f7311",
- "taskServiceAccount": "flutter-try-builder@chops-service-accounts.iam.gserviceaccount.com",
- "priority": 30,
- "taskDimensions": [
- {
- "key": "device_type",
- "value": "none"
- },
- {
- "key": "os",
- "value": "Windows-10"
- },
- {
- "key": "pool",
- "value": "luci.flutter.try"
- }
- ],
- "botDimensions": [
- {
- "key": "bot_config",
- "value": "bot_config.py"
- },
- {
- "key": "caches",
- "value": "engine_main_builder"
- },
- {
- "key": "caches",
- "value": "engine_main_git"
- },
- {
- "key": "caches",
- "value": "flutter_main_android_sdk_version_33v6_legacy"
- },
- {
- "key": "caches",
- "value": "flutter_main_certs_version_9563bb"
- },
- {
- "key": "caches",
- "value": "flutter_main_chrome_and_driver_version_119_0_6045_9_legacy"
- },
- {
- "key": "caches",
- "value": "flutter_main_open_jdk_version_11_legacy"
- },
- {
- "key": "caches",
- "value": "goma_v2"
- },
- {
- "key": "caches",
- "value": "packages_main_certs_version_9563bb"
- },
- {
- "key": "caches",
- "value": "vpython"
- },
- {
- "key": "cipd_platform",
- "value": "windows-amd64"
- },
- {
- "key": "cores",
- "value": "16"
- },
- {
- "key": "cpu",
- "value": "x86"
- },
- {
- "key": "cpu",
- "value": "x86-64"
- },
- {
- "key": "cpu",
- "value": "x86-64-Broadwell_GCE"
- },
- {
- "key": "device_os",
- "value": "none"
- },
- {
- "key": "device_type",
- "value": "none"
- },
- {
- "key": "display_attached",
- "value": "0"
- },
- {
- "key": "gce",
- "value": "1"
- },
- {
- "key": "gcp",
- "value": "flutter-machines-prod"
- },
- {
- "key": "gpu",
- "value": "none"
- },
- {
- "key": "id",
- "value": "flutter-try-flutterprj-windows-us-central1-b-1-602w"
- },
- {
- "key": "image",
- "value": "chrome-win10-22h2-23101200-2b28f7ecb56"
- },
- {
- "key": "inside_docker",
- "value": "0"
- },
- {
- "key": "integrity",
- "value": "high"
- },
- {
- "key": "locale",
- "value": "en_US.cp1252"
- },
- {
- "key": "machine_type",
- "value": "e2-highmem-16"
- },
- {
- "key": "os",
- "value": "Windows"
- },
- {
- "key": "os",
- "value": "Windows-10"
- },
- {
- "key": "os",
- "value": "Windows-10-19045"
- },
- {
- "key": "os",
- "value": "Windows-10-19045.2006"
- },
- {
- "key": "pool",
- "value": "luci.flutter.try"
- },
- {
- "key": "python",
- "value": "3"
- },
- {
- "key": "python",
- "value": "3.8"
- },
- {
- "key": "python",
- "value": "3.8.9"
- },
- {
- "key": "server_version",
- "value": "7419-34ac013"
- },
- {
- "key": "ssd",
- "value": "1"
- },
- {
- "key": "visual_studio_version",
- "value": "16.0"
- },
- {
- "key": "windows_client_version",
- "value": "10"
- },
- {
- "key": "zone",
- "value": "us"
- },
- {
- "key": "zone",
- "value": "us-central"
- },
- {
- "key": "zone",
- "value": "us-central1"
- },
- {
- "key": "zone",
- "value": "us-central1-b"
- }
- ],
- "caches": [
- {
- "name": "pub_cache",
- "path": ".pub-cache"
- },
- {
- "name": "engine_main_builder",
- "path": "builder"
- },
- {
- "name": "engine_main_git",
- "path": "git"
- },
- {
- "name": "goma_v2",
- "path": "goma"
- },
- {
- "name": "engine_main_open_jdk_version_11_legacy",
- "path": "java"
- },
- {
- "name": "engine_main_open_jdk_version_11",
- "path": "open_jdk"
- },
- {
- "name": "vpython",
- "path": "vpython",
- "envVar": "VPYTHON_VIRTUALENV_ROOT"
- }
- ]
- },
- "logdog": {
- "hostname": "logs.chromium.org",
- "project": "flutter",
- "prefix": "buildbucket/cr-buildbucket/8766855135863637953"
- },
- "resultdb": {
- "hostname": "results.api.cr.dev"
- },
- "bbagent": {
- "payloadPath": "kitchen-checkout",
- "cacheDir": "cache"
- }
- },
- "tags": [
- {
- "key": "build_address",
- "value": "luci.flutter.prod/$builder/1698"
- },
- {
- "key": "builder",
- "value": "$builder"
- },
- ${addBuildSet! ? '''
- {
- "key": "buildset",
- "value": "pr/git/47066"
- },
- {
- "key": "buildset",
- "value": "sha/git/4d97460a271ceab7335b4e22110df77e9d3fd9a7"
- },
- ''' : ''}
- {
- "key": "parent_buildbucket_id",
- "value": "8766855244016195329"
- },
- {
- "key": "parent_task_id",
- "value": "655df9add49f7311"
- },
- {
- "key": "user_agent",
- "value": "recipe"
- },
- {
- "key": "current_attempt",
- "value": "1"
- }
- ],
- "exe": {
- "cipdPackage": "flutter/recipe_bundles/flutter.googlesource.com/recipes",
- "cipdVersion": "refs/heads/main",
- "cmd": [
- "luciexe"
- ]
- },
- "schedulingTimeout": "21600s",
- "executionTimeout": "3600s",
- "gracePeriod": "30s",
- "ancestorIds": [
- "8766855244016195329"
- ]
- }
-}
-''';
-}
diff --git a/app_dart/test/src/utilities/entity_generators.dart b/app_dart/test/src/utilities/entity_generators.dart
index 07db685..7b9eab8 100644
--- a/app_dart/test/src/utilities/entity_generators.dart
+++ b/app_dart/test/src/utilities/entity_generators.dart
@@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'package:buildbucket/buildbucket_pb.dart' as bbv2;
import 'package:cocoon_service/ci_yaml.dart';
import 'package:cocoon_service/src/model/appengine/commit.dart';
import 'package:cocoon_service/src/model/appengine/task.dart';
@@ -15,7 +14,6 @@
import 'package:cocoon_service/src/model/luci/buildbucket.dart';
import 'package:cocoon_service/src/model/luci/push_message.dart' as push_message;
import 'package:cocoon_service/src/model/proto/protos.dart' as pb;
-import 'package:fixnum/fixnum.dart';
import 'package:gcloud/db.dart';
import 'package:googleapis/firestore/v1.dart' hide Status;
import 'package:github/github.dart' as github;
@@ -271,28 +269,6 @@
input: input,
);
-bbv2.Build generateBbv2Build(
- Int64 i, {
- String bucket = 'prod',
- String name = 'Linux test_builder',
- bbv2.Status status = bbv2.Status.SUCCESS,
- Iterable<bbv2.StringPair>? tags,
- bbv2.Build_Input? input,
- int buildNumber = 1,
-}) =>
- bbv2.Build(
- id: i,
- builder: bbv2.BuilderID(
- project: 'flutter',
- bucket: bucket,
- builder: name,
- ),
- status: status,
- tags: tags,
- number: buildNumber,
- input: input,
- );
-
push_message.Build generatePushMessageBuild(
int i, {
String bucket = 'prod',
diff --git a/app_dart/test/src/utilities/mocks.dart b/app_dart/test/src/utilities/mocks.dart
index 37e7318..42a4b1c 100644
--- a/app_dart/test/src/utilities/mocks.dart
+++ b/app_dart/test/src/utilities/mocks.dart
@@ -12,16 +12,13 @@
import 'package:cocoon_service/src/service/bigquery.dart';
import 'package:cocoon_service/src/service/branch_service.dart';
import 'package:cocoon_service/src/service/buildbucket.dart';
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart';
import 'package:cocoon_service/src/service/commit_service.dart';
import 'package:cocoon_service/src/service/config.dart';
import 'package:cocoon_service/src/service/datastore.dart';
import 'package:cocoon_service/src/service/firestore.dart';
import 'package:cocoon_service/src/service/github_checks_service.dart';
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart';
import 'package:cocoon_service/src/service/github_service.dart';
import 'package:cocoon_service/src/service/luci_build_service.dart';
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart';
import 'package:github/github.dart';
import 'package:googleapis/bigquery/v2.dart';
import 'package:googleapis_auth/googleapis_auth.dart';
@@ -69,7 +66,6 @@
BigqueryService,
BranchService,
BuildBucketClient,
- BuildBucketV2Client,
CommitService,
Config,
DatastoreService,
@@ -77,7 +73,6 @@
FirestoreService,
IssuesService,
GithubChecksService,
- GithubChecksServiceV2,
GithubChecksUtil,
GithubService,
GitService,
@@ -87,7 +82,6 @@
HttpClientResponse,
JobsResource,
LuciBuildService,
- LuciBuildServiceV2,
ProcessManager,
PullRequestsService,
RepositoriesService,
diff --git a/app_dart/test/src/utilities/mocks.mocks.dart b/app_dart/test/src/utilities/mocks.mocks.dart
index 969603f..8b60c90 100644
--- a/app_dart/test/src/utilities/mocks.mocks.dart
+++ b/app_dart/test/src/utilities/mocks.mocks.dart
@@ -3,59 +3,53 @@
// Do not manually edit this file.
// ignore_for_file: no_leading_underscores_for_library_prefixes
-import 'dart:async' as _i21;
-import 'dart:convert' as _i27;
-import 'dart:io' as _i26;
-import 'dart:typed_data' as _i40;
+import 'dart:async' as _i20;
+import 'dart:convert' as _i26;
+import 'dart:io' as _i25;
+import 'dart:typed_data' as _i38;
-import 'package:appengine/appengine.dart' as _i11;
-import 'package:buildbucket/buildbucket_pb.dart' as _i9;
-import 'package:cocoon_service/cocoon_service.dart' as _i16;
-import 'package:cocoon_service/src/foundation/github_checks_util.dart' as _i25;
-import 'package:cocoon_service/src/model/appengine/branch.dart' as _i35;
-import 'package:cocoon_service/src/model/appengine/commit.dart' as _i36;
-import 'package:cocoon_service/src/model/appengine/github_build_status_update.dart' as _i19;
-import 'package:cocoon_service/src/model/appengine/github_gold_status_update.dart' as _i20;
-import 'package:cocoon_service/src/model/appengine/key_helper.dart' as _i13;
-import 'package:cocoon_service/src/model/appengine/stage.dart' as _i38;
-import 'package:cocoon_service/src/model/appengine/task.dart' as _i37;
-import 'package:cocoon_service/src/model/ci_yaml/target.dart' as _i47;
-import 'package:cocoon_service/src/model/firestore/commit.dart' as _i41;
-import 'package:cocoon_service/src/model/firestore/github_build_status.dart' as _i24;
-import 'package:cocoon_service/src/model/firestore/github_gold_status.dart' as _i23;
-import 'package:cocoon_service/src/model/firestore/task.dart' as _i42;
-import 'package:cocoon_service/src/model/github/checks.dart' as _i48;
+import 'package:appengine/appengine.dart' as _i10;
+import 'package:cocoon_service/cocoon_service.dart' as _i15;
+import 'package:cocoon_service/src/foundation/github_checks_util.dart' as _i24;
+import 'package:cocoon_service/src/model/appengine/branch.dart' as _i33;
+import 'package:cocoon_service/src/model/appengine/commit.dart' as _i34;
+import 'package:cocoon_service/src/model/appengine/github_build_status_update.dart' as _i18;
+import 'package:cocoon_service/src/model/appengine/github_gold_status_update.dart' as _i19;
+import 'package:cocoon_service/src/model/appengine/key_helper.dart' as _i12;
+import 'package:cocoon_service/src/model/appengine/stage.dart' as _i36;
+import 'package:cocoon_service/src/model/appengine/task.dart' as _i35;
+import 'package:cocoon_service/src/model/ci_yaml/target.dart' as _i42;
+import 'package:cocoon_service/src/model/firestore/commit.dart' as _i39;
+import 'package:cocoon_service/src/model/firestore/github_build_status.dart' as _i23;
+import 'package:cocoon_service/src/model/firestore/github_gold_status.dart' as _i22;
+import 'package:cocoon_service/src/model/firestore/task.dart' as _i40;
+import 'package:cocoon_service/src/model/github/checks.dart' as _i43;
import 'package:cocoon_service/src/model/luci/buildbucket.dart' as _i8;
-import 'package:cocoon_service/src/model/luci/push_message.dart' as _i43;
+import 'package:cocoon_service/src/model/luci/push_message.dart' as _i41;
import 'package:cocoon_service/src/service/access_client_provider.dart' as _i5;
-import 'package:cocoon_service/src/service/access_token_provider.dart' as _i30;
-import 'package:cocoon_service/src/service/bigquery.dart' as _i17;
-import 'package:cocoon_service/src/service/build_bucket_v2_client.dart' as _i28;
-import 'package:cocoon_service/src/service/commit_service.dart' as _i33;
+import 'package:cocoon_service/src/service/access_token_provider.dart' as _i28;
+import 'package:cocoon_service/src/service/bigquery.dart' as _i16;
+import 'package:cocoon_service/src/service/commit_service.dart' as _i31;
import 'package:cocoon_service/src/service/config.dart' as _i3;
-import 'package:cocoon_service/src/service/datastore.dart' as _i10;
+import 'package:cocoon_service/src/service/datastore.dart' as _i9;
import 'package:cocoon_service/src/service/gerrit_service.dart' as _i7;
-import 'package:cocoon_service/src/service/github_checks_service_v2.dart' as _i44;
-import 'package:cocoon_service/src/service/github_service.dart' as _i18;
-import 'package:cocoon_service/src/service/luci_build_service_v2.dart' as _i46;
-import 'package:cocoon_service/src/service/scheduler_v2.dart' as _i45;
-import 'package:fixnum/fixnum.dart' as _i49;
-import 'package:gcloud/db.dart' as _i12;
-import 'package:github/github.dart' as _i14;
-import 'package:github/hooks.dart' as _i34;
+import 'package:cocoon_service/src/service/github_service.dart' as _i17;
+import 'package:gcloud/db.dart' as _i11;
+import 'package:github/github.dart' as _i13;
+import 'package:github/hooks.dart' as _i32;
import 'package:googleapis/bigquery/v2.dart' as _i6;
-import 'package:googleapis/firestore/v1.dart' as _i22;
+import 'package:googleapis/firestore/v1.dart' as _i21;
import 'package:googleapis_auth/auth_io.dart' as _i4;
-import 'package:graphql/client.dart' as _i15;
+import 'package:graphql/client.dart' as _i14;
import 'package:http/http.dart' as _i2;
import 'package:mockito/mockito.dart' as _i1;
-import 'package:mockito/src/dummies.dart' as _i32;
-import 'package:neat_cache/neat_cache.dart' as _i29;
-import 'package:process/src/interface/process_manager.dart' as _i50;
-import 'package:retry/retry.dart' as _i31;
+import 'package:mockito/src/dummies.dart' as _i30;
+import 'package:neat_cache/neat_cache.dart' as _i27;
+import 'package:process/src/interface/process_manager.dart' as _i44;
+import 'package:retry/retry.dart' as _i29;
-import '../../service/cache_service_test.dart' as _i39;
-import 'mocks.dart' as _i51;
+import '../../service/cache_service_test.dart' as _i37;
+import 'mocks.dart' as _i45;
// ignore_for_file: type=lint
// ignore_for_file: avoid_redundant_argument_values
@@ -180,8 +174,8 @@
);
}
-class _FakeBuild_11 extends _i1.SmartFake implements _i9.Build {
- _FakeBuild_11(
+class _FakeDatastoreService_11 extends _i1.SmartFake implements _i9.DatastoreService {
+ _FakeDatastoreService_11(
Object parent,
Invocation parentInvocation,
) : super(
@@ -190,8 +184,8 @@
);
}
-class _FakeSearchBuildsResponse_12 extends _i1.SmartFake implements _i9.SearchBuildsResponse {
- _FakeSearchBuildsResponse_12(
+class _FakeLogging_12 extends _i1.SmartFake implements _i10.Logging {
+ _FakeLogging_12(
Object parent,
Invocation parentInvocation,
) : super(
@@ -200,8 +194,8 @@
);
}
-class _FakeBatchResponse_13 extends _i1.SmartFake implements _i9.BatchResponse {
- _FakeBatchResponse_13(
+class _FakeDatastoreDB_13 extends _i1.SmartFake implements _i11.DatastoreDB {
+ _FakeDatastoreDB_13(
Object parent,
Invocation parentInvocation,
) : super(
@@ -210,8 +204,8 @@
);
}
-class _FakeListBuildersResponse_14 extends _i1.SmartFake implements _i9.ListBuildersResponse {
- _FakeListBuildersResponse_14(
+class _FakeKeyHelper_14 extends _i1.SmartFake implements _i12.KeyHelper {
+ _FakeKeyHelper_14(
Object parent,
Invocation parentInvocation,
) : super(
@@ -220,8 +214,8 @@
);
}
-class _FakeDatastoreService_15 extends _i1.SmartFake implements _i10.DatastoreService {
- _FakeDatastoreService_15(
+class _FakeDuration_15 extends _i1.SmartFake implements Duration {
+ _FakeDuration_15(
Object parent,
Invocation parentInvocation,
) : super(
@@ -230,8 +224,8 @@
);
}
-class _FakeLogging_16 extends _i1.SmartFake implements _i11.Logging {
- _FakeLogging_16(
+class _FakeGitHub_16 extends _i1.SmartFake implements _i13.GitHub {
+ _FakeGitHub_16(
Object parent,
Invocation parentInvocation,
) : super(
@@ -240,8 +234,8 @@
);
}
-class _FakeDatastoreDB_17 extends _i1.SmartFake implements _i12.DatastoreDB {
- _FakeDatastoreDB_17(
+class _FakeGraphQLClient_17 extends _i1.SmartFake implements _i14.GraphQLClient {
+ _FakeGraphQLClient_17(
Object parent,
Invocation parentInvocation,
) : super(
@@ -250,8 +244,8 @@
);
}
-class _FakeKeyHelper_18 extends _i1.SmartFake implements _i13.KeyHelper {
- _FakeKeyHelper_18(
+class _FakeFirestoreService_18 extends _i1.SmartFake implements _i15.FirestoreService {
+ _FakeFirestoreService_18(
Object parent,
Invocation parentInvocation,
) : super(
@@ -260,8 +254,8 @@
);
}
-class _FakeDuration_19 extends _i1.SmartFake implements Duration {
- _FakeDuration_19(
+class _FakeBigqueryService_19 extends _i1.SmartFake implements _i16.BigqueryService {
+ _FakeBigqueryService_19(
Object parent,
Invocation parentInvocation,
) : super(
@@ -270,8 +264,8 @@
);
}
-class _FakeGitHub_20 extends _i1.SmartFake implements _i14.GitHub {
- _FakeGitHub_20(
+class _FakeGithubService_20 extends _i1.SmartFake implements _i17.GithubService {
+ _FakeGithubService_20(
Object parent,
Invocation parentInvocation,
) : super(
@@ -280,8 +274,8 @@
);
}
-class _FakeGraphQLClient_21 extends _i1.SmartFake implements _i15.GraphQLClient {
- _FakeGraphQLClient_21(
+class _FakeGithubBuildStatusUpdate_21 extends _i1.SmartFake implements _i18.GithubBuildStatusUpdate {
+ _FakeGithubBuildStatusUpdate_21(
Object parent,
Invocation parentInvocation,
) : super(
@@ -290,8 +284,8 @@
);
}
-class _FakeFirestoreService_22 extends _i1.SmartFake implements _i16.FirestoreService {
- _FakeFirestoreService_22(
+class _FakeGithubGoldStatusUpdate_22 extends _i1.SmartFake implements _i19.GithubGoldStatusUpdate {
+ _FakeGithubGoldStatusUpdate_22(
Object parent,
Invocation parentInvocation,
) : super(
@@ -300,8 +294,8 @@
);
}
-class _FakeBigqueryService_23 extends _i1.SmartFake implements _i17.BigqueryService {
- _FakeBigqueryService_23(
+class _FakeFuture_23<T1> extends _i1.SmartFake implements _i20.Future<T1> {
+ _FakeFuture_23(
Object parent,
Invocation parentInvocation,
) : super(
@@ -310,8 +304,9 @@
);
}
-class _FakeGithubService_24 extends _i1.SmartFake implements _i18.GithubService {
- _FakeGithubService_24(
+class _FakeProjectsDatabasesDocumentsResource_24 extends _i1.SmartFake
+ implements _i21.ProjectsDatabasesDocumentsResource {
+ _FakeProjectsDatabasesDocumentsResource_24(
Object parent,
Invocation parentInvocation,
) : super(
@@ -320,8 +315,8 @@
);
}
-class _FakeGithubBuildStatusUpdate_25 extends _i1.SmartFake implements _i19.GithubBuildStatusUpdate {
- _FakeGithubBuildStatusUpdate_25(
+class _FakeDocument_25 extends _i1.SmartFake implements _i21.Document {
+ _FakeDocument_25(
Object parent,
Invocation parentInvocation,
) : super(
@@ -330,8 +325,8 @@
);
}
-class _FakeGithubGoldStatusUpdate_26 extends _i1.SmartFake implements _i20.GithubGoldStatusUpdate {
- _FakeGithubGoldStatusUpdate_26(
+class _FakeBatchWriteResponse_26 extends _i1.SmartFake implements _i21.BatchWriteResponse {
+ _FakeBatchWriteResponse_26(
Object parent,
Invocation parentInvocation,
) : super(
@@ -340,8 +335,8 @@
);
}
-class _FakeFuture_27<T1> extends _i1.SmartFake implements _i21.Future<T1> {
- _FakeFuture_27(
+class _FakeCommitResponse_27 extends _i1.SmartFake implements _i21.CommitResponse {
+ _FakeCommitResponse_27(
Object parent,
Invocation parentInvocation,
) : super(
@@ -350,9 +345,8 @@
);
}
-class _FakeProjectsDatabasesDocumentsResource_28 extends _i1.SmartFake
- implements _i22.ProjectsDatabasesDocumentsResource {
- _FakeProjectsDatabasesDocumentsResource_28(
+class _FakeGithubGoldStatus_28 extends _i1.SmartFake implements _i22.GithubGoldStatus {
+ _FakeGithubGoldStatus_28(
Object parent,
Invocation parentInvocation,
) : super(
@@ -361,8 +355,8 @@
);
}
-class _FakeDocument_29 extends _i1.SmartFake implements _i22.Document {
- _FakeDocument_29(
+class _FakeGithubBuildStatus_29 extends _i1.SmartFake implements _i23.GithubBuildStatus {
+ _FakeGithubBuildStatus_29(
Object parent,
Invocation parentInvocation,
) : super(
@@ -371,8 +365,8 @@
);
}
-class _FakeBatchWriteResponse_30 extends _i1.SmartFake implements _i22.BatchWriteResponse {
- _FakeBatchWriteResponse_30(
+class _FakeValue_30 extends _i1.SmartFake implements _i21.Value {
+ _FakeValue_30(
Object parent,
Invocation parentInvocation,
) : super(
@@ -381,8 +375,8 @@
);
}
-class _FakeCommitResponse_31 extends _i1.SmartFake implements _i22.CommitResponse {
- _FakeCommitResponse_31(
+class _FakeFilter_31 extends _i1.SmartFake implements _i21.Filter {
+ _FakeFilter_31(
Object parent,
Invocation parentInvocation,
) : super(
@@ -391,8 +385,8 @@
);
}
-class _FakeGithubGoldStatus_32 extends _i1.SmartFake implements _i23.GithubGoldStatus {
- _FakeGithubGoldStatus_32(
+class _FakeIssue_32 extends _i1.SmartFake implements _i13.Issue {
+ _FakeIssue_32(
Object parent,
Invocation parentInvocation,
) : super(
@@ -401,8 +395,8 @@
);
}
-class _FakeGithubBuildStatus_33 extends _i1.SmartFake implements _i24.GithubBuildStatus {
- _FakeGithubBuildStatus_33(
+class _FakeIssueComment_33 extends _i1.SmartFake implements _i13.IssueComment {
+ _FakeIssueComment_33(
Object parent,
Invocation parentInvocation,
) : super(
@@ -411,8 +405,8 @@
);
}
-class _FakeValue_34 extends _i1.SmartFake implements _i22.Value {
- _FakeValue_34(
+class _FakeIssueLabel_34 extends _i1.SmartFake implements _i13.IssueLabel {
+ _FakeIssueLabel_34(
Object parent,
Invocation parentInvocation,
) : super(
@@ -421,8 +415,8 @@
);
}
-class _FakeFilter_35 extends _i1.SmartFake implements _i22.Filter {
- _FakeFilter_35(
+class _FakeMilestone_35 extends _i1.SmartFake implements _i13.Milestone {
+ _FakeMilestone_35(
Object parent,
Invocation parentInvocation,
) : super(
@@ -431,8 +425,8 @@
);
}
-class _FakeIssue_36 extends _i1.SmartFake implements _i14.Issue {
- _FakeIssue_36(
+class _FakeGithubChecksUtil_36 extends _i1.SmartFake implements _i24.GithubChecksUtil {
+ _FakeGithubChecksUtil_36(
Object parent,
Invocation parentInvocation,
) : super(
@@ -441,8 +435,8 @@
);
}
-class _FakeIssueComment_37 extends _i1.SmartFake implements _i14.IssueComment {
- _FakeIssueComment_37(
+class _FakeCheckRunConclusion_37 extends _i1.SmartFake implements _i13.CheckRunConclusion {
+ _FakeCheckRunConclusion_37(
Object parent,
Invocation parentInvocation,
) : super(
@@ -451,8 +445,8 @@
);
}
-class _FakeIssueLabel_38 extends _i1.SmartFake implements _i14.IssueLabel {
- _FakeIssueLabel_38(
+class _FakeCheckRunStatus_38 extends _i1.SmartFake implements _i13.CheckRunStatus {
+ _FakeCheckRunStatus_38(
Object parent,
Invocation parentInvocation,
) : super(
@@ -461,8 +455,8 @@
);
}
-class _FakeMilestone_39 extends _i1.SmartFake implements _i14.Milestone {
- _FakeMilestone_39(
+class _FakeCheckSuite_39 extends _i1.SmartFake implements _i13.CheckSuite {
+ _FakeCheckSuite_39(
Object parent,
Invocation parentInvocation,
) : super(
@@ -471,8 +465,8 @@
);
}
-class _FakeGithubChecksUtil_40 extends _i1.SmartFake implements _i25.GithubChecksUtil {
- _FakeGithubChecksUtil_40(
+class _FakeCheckRun_40 extends _i1.SmartFake implements _i13.CheckRun {
+ _FakeCheckRun_40(
Object parent,
Invocation parentInvocation,
) : super(
@@ -481,8 +475,8 @@
);
}
-class _FakeCheckRunConclusion_41 extends _i1.SmartFake implements _i14.CheckRunConclusion {
- _FakeCheckRunConclusion_41(
+class _FakePullRequest_41 extends _i1.SmartFake implements _i13.PullRequest {
+ _FakePullRequest_41(
Object parent,
Invocation parentInvocation,
) : super(
@@ -491,8 +485,8 @@
);
}
-class _FakeCheckRunStatus_42 extends _i1.SmartFake implements _i14.CheckRunStatus {
- _FakeCheckRunStatus_42(
+class _FakeGitReference_42 extends _i1.SmartFake implements _i13.GitReference {
+ _FakeGitReference_42(
Object parent,
Invocation parentInvocation,
) : super(
@@ -501,8 +495,8 @@
);
}
-class _FakeCheckSuite_43 extends _i1.SmartFake implements _i14.CheckSuite {
- _FakeCheckSuite_43(
+class _FakeRateLimit_43 extends _i1.SmartFake implements _i13.RateLimit {
+ _FakeRateLimit_43(
Object parent,
Invocation parentInvocation,
) : super(
@@ -511,8 +505,8 @@
);
}
-class _FakeCheckRun_44 extends _i1.SmartFake implements _i14.CheckRun {
- _FakeCheckRun_44(
+class _FakeGitBlob_44 extends _i1.SmartFake implements _i13.GitBlob {
+ _FakeGitBlob_44(
Object parent,
Invocation parentInvocation,
) : super(
@@ -521,8 +515,8 @@
);
}
-class _FakePullRequest_45 extends _i1.SmartFake implements _i14.PullRequest {
- _FakePullRequest_45(
+class _FakeGitCommit_45 extends _i1.SmartFake implements _i13.GitCommit {
+ _FakeGitCommit_45(
Object parent,
Invocation parentInvocation,
) : super(
@@ -531,8 +525,8 @@
);
}
-class _FakeGitReference_46 extends _i1.SmartFake implements _i14.GitReference {
- _FakeGitReference_46(
+class _FakeGitTag_46 extends _i1.SmartFake implements _i13.GitTag {
+ _FakeGitTag_46(
Object parent,
Invocation parentInvocation,
) : super(
@@ -541,8 +535,8 @@
);
}
-class _FakeRateLimit_47 extends _i1.SmartFake implements _i14.RateLimit {
- _FakeRateLimit_47(
+class _FakeGitTree_47 extends _i1.SmartFake implements _i13.GitTree {
+ _FakeGitTree_47(
Object parent,
Invocation parentInvocation,
) : super(
@@ -551,8 +545,8 @@
);
}
-class _FakeGitBlob_48 extends _i1.SmartFake implements _i14.GitBlob {
- _FakeGitBlob_48(
+class _FakeDefaultPolicies_48 extends _i1.SmartFake implements _i14.DefaultPolicies {
+ _FakeDefaultPolicies_48(
Object parent,
Invocation parentInvocation,
) : super(
@@ -561,8 +555,8 @@
);
}
-class _FakeGitCommit_49 extends _i1.SmartFake implements _i14.GitCommit {
- _FakeGitCommit_49(
+class _FakeLink_49 extends _i1.SmartFake implements _i14.Link {
+ _FakeLink_49(
Object parent,
Invocation parentInvocation,
) : super(
@@ -571,8 +565,8 @@
);
}
-class _FakeGitTag_50 extends _i1.SmartFake implements _i14.GitTag {
- _FakeGitTag_50(
+class _FakeGraphQLCache_50 extends _i1.SmartFake implements _i14.GraphQLCache {
+ _FakeGraphQLCache_50(
Object parent,
Invocation parentInvocation,
) : super(
@@ -581,8 +575,8 @@
);
}
-class _FakeGitTree_51 extends _i1.SmartFake implements _i14.GitTree {
- _FakeGitTree_51(
+class _FakeQueryManager_51 extends _i1.SmartFake implements _i14.QueryManager {
+ _FakeQueryManager_51(
Object parent,
Invocation parentInvocation,
) : super(
@@ -591,8 +585,8 @@
);
}
-class _FakeDefaultPolicies_52 extends _i1.SmartFake implements _i15.DefaultPolicies {
- _FakeDefaultPolicies_52(
+class _FakeObservableQuery_52<TParsed1> extends _i1.SmartFake implements _i14.ObservableQuery<TParsed1> {
+ _FakeObservableQuery_52(
Object parent,
Invocation parentInvocation,
) : super(
@@ -601,8 +595,8 @@
);
}
-class _FakeLink_53 extends _i1.SmartFake implements _i15.Link {
- _FakeLink_53(
+class _FakeQueryResult_53<TParsed1 extends Object?> extends _i1.SmartFake implements _i14.QueryResult<TParsed1> {
+ _FakeQueryResult_53(
Object parent,
Invocation parentInvocation,
) : super(
@@ -611,8 +605,8 @@
);
}
-class _FakeGraphQLCache_54 extends _i1.SmartFake implements _i15.GraphQLCache {
- _FakeGraphQLCache_54(
+class _FakeHttpClientRequest_54 extends _i1.SmartFake implements _i25.HttpClientRequest {
+ _FakeHttpClientRequest_54(
Object parent,
Invocation parentInvocation,
) : super(
@@ -621,8 +615,8 @@
);
}
-class _FakeQueryManager_55 extends _i1.SmartFake implements _i15.QueryManager {
- _FakeQueryManager_55(
+class _FakeUri_55 extends _i1.SmartFake implements Uri {
+ _FakeUri_55(
Object parent,
Invocation parentInvocation,
) : super(
@@ -631,8 +625,8 @@
);
}
-class _FakeObservableQuery_56<TParsed1> extends _i1.SmartFake implements _i15.ObservableQuery<TParsed1> {
- _FakeObservableQuery_56(
+class _FakeHttpHeaders_56 extends _i1.SmartFake implements _i25.HttpHeaders {
+ _FakeHttpHeaders_56(
Object parent,
Invocation parentInvocation,
) : super(
@@ -641,8 +635,8 @@
);
}
-class _FakeQueryResult_57<TParsed1 extends Object?> extends _i1.SmartFake implements _i15.QueryResult<TParsed1> {
- _FakeQueryResult_57(
+class _FakeHttpClientResponse_57 extends _i1.SmartFake implements _i25.HttpClientResponse {
+ _FakeHttpClientResponse_57(
Object parent,
Invocation parentInvocation,
) : super(
@@ -651,8 +645,8 @@
);
}
-class _FakeHttpClientRequest_58 extends _i1.SmartFake implements _i26.HttpClientRequest {
- _FakeHttpClientRequest_58(
+class _FakeEncoding_58 extends _i1.SmartFake implements _i26.Encoding {
+ _FakeEncoding_58(
Object parent,
Invocation parentInvocation,
) : super(
@@ -661,8 +655,8 @@
);
}
-class _FakeUri_59 extends _i1.SmartFake implements Uri {
- _FakeUri_59(
+class _FakeSocket_59 extends _i1.SmartFake implements _i25.Socket {
+ _FakeSocket_59(
Object parent,
Invocation parentInvocation,
) : super(
@@ -671,8 +665,8 @@
);
}
-class _FakeHttpHeaders_60 extends _i1.SmartFake implements _i26.HttpHeaders {
- _FakeHttpHeaders_60(
+class _FakeStreamSubscription_60<T> extends _i1.SmartFake implements _i20.StreamSubscription<T> {
+ _FakeStreamSubscription_60(
Object parent,
Invocation parentInvocation,
) : super(
@@ -681,8 +675,8 @@
);
}
-class _FakeHttpClientResponse_61 extends _i1.SmartFake implements _i26.HttpClientResponse {
- _FakeHttpClientResponse_61(
+class _FakeJobCancelResponse_61 extends _i1.SmartFake implements _i6.JobCancelResponse {
+ _FakeJobCancelResponse_61(
Object parent,
Invocation parentInvocation,
) : super(
@@ -691,8 +685,8 @@
);
}
-class _FakeEncoding_62 extends _i1.SmartFake implements _i27.Encoding {
- _FakeEncoding_62(
+class _FakeJob_62 extends _i1.SmartFake implements _i6.Job {
+ _FakeJob_62(
Object parent,
Invocation parentInvocation,
) : super(
@@ -701,8 +695,8 @@
);
}
-class _FakeSocket_63 extends _i1.SmartFake implements _i26.Socket {
- _FakeSocket_63(
+class _FakeGetQueryResultsResponse_63 extends _i1.SmartFake implements _i6.GetQueryResultsResponse {
+ _FakeGetQueryResultsResponse_63(
Object parent,
Invocation parentInvocation,
) : super(
@@ -711,8 +705,8 @@
);
}
-class _FakeStreamSubscription_64<T> extends _i1.SmartFake implements _i21.StreamSubscription<T> {
- _FakeStreamSubscription_64(
+class _FakeJobList_64 extends _i1.SmartFake implements _i6.JobList {
+ _FakeJobList_64(
Object parent,
Invocation parentInvocation,
) : super(
@@ -721,8 +715,8 @@
);
}
-class _FakeJobCancelResponse_65 extends _i1.SmartFake implements _i6.JobCancelResponse {
- _FakeJobCancelResponse_65(
+class _FakeQueryResponse_65 extends _i1.SmartFake implements _i6.QueryResponse {
+ _FakeQueryResponse_65(
Object parent,
Invocation parentInvocation,
) : super(
@@ -731,8 +725,8 @@
);
}
-class _FakeJob_66 extends _i1.SmartFake implements _i6.Job {
- _FakeJob_66(
+class _FakeBuildBucketClient_66 extends _i1.SmartFake implements _i15.BuildBucketClient {
+ _FakeBuildBucketClient_66(
Object parent,
Invocation parentInvocation,
) : super(
@@ -741,8 +735,8 @@
);
}
-class _FakeGetQueryResultsResponse_67 extends _i1.SmartFake implements _i6.GetQueryResultsResponse {
- _FakeGetQueryResultsResponse_67(
+class _FakeCacheService_67 extends _i1.SmartFake implements _i15.CacheService {
+ _FakeCacheService_67(
Object parent,
Invocation parentInvocation,
) : super(
@@ -751,58 +745,8 @@
);
}
-class _FakeJobList_68 extends _i1.SmartFake implements _i6.JobList {
- _FakeJobList_68(
- Object parent,
- Invocation parentInvocation,
- ) : super(
- parent,
- parentInvocation,
- );
-}
-
-class _FakeQueryResponse_69 extends _i1.SmartFake implements _i6.QueryResponse {
- _FakeQueryResponse_69(
- Object parent,
- Invocation parentInvocation,
- ) : super(
- parent,
- parentInvocation,
- );
-}
-
-class _FakeBuildBucketClient_70 extends _i1.SmartFake implements _i16.BuildBucketClient {
- _FakeBuildBucketClient_70(
- Object parent,
- Invocation parentInvocation,
- ) : super(
- parent,
- parentInvocation,
- );
-}
-
-class _FakeBuildBucketV2Client_71 extends _i1.SmartFake implements _i28.BuildBucketV2Client {
- _FakeBuildBucketV2Client_71(
- Object parent,
- Invocation parentInvocation,
- ) : super(
- parent,
- parentInvocation,
- );
-}
-
-class _FakeCacheService_72 extends _i1.SmartFake implements _i16.CacheService {
- _FakeCacheService_72(
- Object parent,
- Invocation parentInvocation,
- ) : super(
- parent,
- parentInvocation,
- );
-}
-
-class _FakePubSub_73 extends _i1.SmartFake implements _i16.PubSub {
- _FakePubSub_73(
+class _FakePubSub_68 extends _i1.SmartFake implements _i15.PubSub {
+ _FakePubSub_68(
Object parent,
Invocation parentInvocation,
) : super(
@@ -811,8 +755,8 @@
);
}
-class _FakeProcess_74 extends _i1.SmartFake implements _i26.Process {
- _FakeProcess_74(
+class _FakeProcess_69 extends _i1.SmartFake implements _i25.Process {
+ _FakeProcess_69(
Object parent,
Invocation parentInvocation,
) : super(
@@ -821,8 +765,8 @@
);
}
-class _FakePullRequestMerge_75 extends _i1.SmartFake implements _i14.PullRequestMerge {
- _FakePullRequestMerge_75(
+class _FakePullRequestMerge_70 extends _i1.SmartFake implements _i13.PullRequestMerge {
+ _FakePullRequestMerge_70(
Object parent,
Invocation parentInvocation,
) : super(
@@ -831,8 +775,8 @@
);
}
-class _FakePullRequestComment_76 extends _i1.SmartFake implements _i14.PullRequestComment {
- _FakePullRequestComment_76(
+class _FakePullRequestComment_71 extends _i1.SmartFake implements _i13.PullRequestComment {
+ _FakePullRequestComment_71(
Object parent,
Invocation parentInvocation,
) : super(
@@ -841,8 +785,8 @@
);
}
-class _FakePullRequestReview_77 extends _i1.SmartFake implements _i14.PullRequestReview {
- _FakePullRequestReview_77(
+class _FakePullRequestReview_72 extends _i1.SmartFake implements _i13.PullRequestReview {
+ _FakePullRequestReview_72(
Object parent,
Invocation parentInvocation,
) : super(
@@ -851,8 +795,8 @@
);
}
-class _FakeRepository_78 extends _i1.SmartFake implements _i14.Repository {
- _FakeRepository_78(
+class _FakeRepository_73 extends _i1.SmartFake implements _i13.Repository {
+ _FakeRepository_73(
Object parent,
Invocation parentInvocation,
) : super(
@@ -861,8 +805,8 @@
);
}
-class _FakeLicenseDetails_79 extends _i1.SmartFake implements _i14.LicenseDetails {
- _FakeLicenseDetails_79(
+class _FakeLicenseDetails_74 extends _i1.SmartFake implements _i13.LicenseDetails {
+ _FakeLicenseDetails_74(
Object parent,
Invocation parentInvocation,
) : super(
@@ -871,8 +815,8 @@
);
}
-class _FakeLanguageBreakdown_80 extends _i1.SmartFake implements _i14.LanguageBreakdown {
- _FakeLanguageBreakdown_80(
+class _FakeLanguageBreakdown_75 extends _i1.SmartFake implements _i13.LanguageBreakdown {
+ _FakeLanguageBreakdown_75(
Object parent,
Invocation parentInvocation,
) : super(
@@ -881,8 +825,8 @@
);
}
-class _FakeBranch_81 extends _i1.SmartFake implements _i14.Branch {
- _FakeBranch_81(
+class _FakeBranch_76 extends _i1.SmartFake implements _i13.Branch {
+ _FakeBranch_76(
Object parent,
Invocation parentInvocation,
) : super(
@@ -891,8 +835,8 @@
);
}
-class _FakeCommitComment_82 extends _i1.SmartFake implements _i14.CommitComment {
- _FakeCommitComment_82(
+class _FakeCommitComment_77 extends _i1.SmartFake implements _i13.CommitComment {
+ _FakeCommitComment_77(
Object parent,
Invocation parentInvocation,
) : super(
@@ -901,8 +845,8 @@
);
}
-class _FakeRepositoryCommit_83 extends _i1.SmartFake implements _i14.RepositoryCommit {
- _FakeRepositoryCommit_83(
+class _FakeRepositoryCommit_78 extends _i1.SmartFake implements _i13.RepositoryCommit {
+ _FakeRepositoryCommit_78(
Object parent,
Invocation parentInvocation,
) : super(
@@ -911,8 +855,8 @@
);
}
-class _FakeGitHubComparison_84 extends _i1.SmartFake implements _i14.GitHubComparison {
- _FakeGitHubComparison_84(
+class _FakeGitHubComparison_79 extends _i1.SmartFake implements _i13.GitHubComparison {
+ _FakeGitHubComparison_79(
Object parent,
Invocation parentInvocation,
) : super(
@@ -921,8 +865,8 @@
);
}
-class _FakeGitHubFile_85 extends _i1.SmartFake implements _i14.GitHubFile {
- _FakeGitHubFile_85(
+class _FakeGitHubFile_80 extends _i1.SmartFake implements _i13.GitHubFile {
+ _FakeGitHubFile_80(
Object parent,
Invocation parentInvocation,
) : super(
@@ -931,8 +875,8 @@
);
}
-class _FakeRepositoryContents_86 extends _i1.SmartFake implements _i14.RepositoryContents {
- _FakeRepositoryContents_86(
+class _FakeRepositoryContents_81 extends _i1.SmartFake implements _i13.RepositoryContents {
+ _FakeRepositoryContents_81(
Object parent,
Invocation parentInvocation,
) : super(
@@ -941,8 +885,8 @@
);
}
-class _FakeContentCreation_87 extends _i1.SmartFake implements _i14.ContentCreation {
- _FakeContentCreation_87(
+class _FakeContentCreation_82 extends _i1.SmartFake implements _i13.ContentCreation {
+ _FakeContentCreation_82(
Object parent,
Invocation parentInvocation,
) : super(
@@ -951,8 +895,8 @@
);
}
-class _FakeHook_88 extends _i1.SmartFake implements _i14.Hook {
- _FakeHook_88(
+class _FakeHook_83 extends _i1.SmartFake implements _i13.Hook {
+ _FakeHook_83(
Object parent,
Invocation parentInvocation,
) : super(
@@ -961,8 +905,8 @@
);
}
-class _FakePublicKey_89 extends _i1.SmartFake implements _i14.PublicKey {
- _FakePublicKey_89(
+class _FakePublicKey_84 extends _i1.SmartFake implements _i13.PublicKey {
+ _FakePublicKey_84(
Object parent,
Invocation parentInvocation,
) : super(
@@ -971,8 +915,8 @@
);
}
-class _FakeRepositoryPages_90 extends _i1.SmartFake implements _i14.RepositoryPages {
- _FakeRepositoryPages_90(
+class _FakeRepositoryPages_85 extends _i1.SmartFake implements _i13.RepositoryPages {
+ _FakeRepositoryPages_85(
Object parent,
Invocation parentInvocation,
) : super(
@@ -981,8 +925,8 @@
);
}
-class _FakePageBuild_91 extends _i1.SmartFake implements _i14.PageBuild {
- _FakePageBuild_91(
+class _FakePageBuild_86 extends _i1.SmartFake implements _i13.PageBuild {
+ _FakePageBuild_86(
Object parent,
Invocation parentInvocation,
) : super(
@@ -991,8 +935,8 @@
);
}
-class _FakeRelease_92 extends _i1.SmartFake implements _i14.Release {
- _FakeRelease_92(
+class _FakeRelease_87 extends _i1.SmartFake implements _i13.Release {
+ _FakeRelease_87(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1001,8 +945,8 @@
);
}
-class _FakeReleaseAsset_93 extends _i1.SmartFake implements _i14.ReleaseAsset {
- _FakeReleaseAsset_93(
+class _FakeReleaseAsset_88 extends _i1.SmartFake implements _i13.ReleaseAsset {
+ _FakeReleaseAsset_88(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1011,8 +955,8 @@
);
}
-class _FakeContributorParticipation_94 extends _i1.SmartFake implements _i14.ContributorParticipation {
- _FakeContributorParticipation_94(
+class _FakeContributorParticipation_89 extends _i1.SmartFake implements _i13.ContributorParticipation {
+ _FakeContributorParticipation_89(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1021,8 +965,8 @@
);
}
-class _FakeRepositoryStatus_95 extends _i1.SmartFake implements _i14.RepositoryStatus {
- _FakeRepositoryStatus_95(
+class _FakeRepositoryStatus_90 extends _i1.SmartFake implements _i13.RepositoryStatus {
+ _FakeRepositoryStatus_90(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1031,8 +975,8 @@
);
}
-class _FakeCombinedRepositoryStatus_96 extends _i1.SmartFake implements _i14.CombinedRepositoryStatus {
- _FakeCombinedRepositoryStatus_96(
+class _FakeCombinedRepositoryStatus_91 extends _i1.SmartFake implements _i13.CombinedRepositoryStatus {
+ _FakeCombinedRepositoryStatus_91(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1041,8 +985,8 @@
);
}
-class _FakeReleaseNotes_97 extends _i1.SmartFake implements _i14.ReleaseNotes {
- _FakeReleaseNotes_97(
+class _FakeReleaseNotes_92 extends _i1.SmartFake implements _i13.ReleaseNotes {
+ _FakeReleaseNotes_92(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1051,8 +995,8 @@
);
}
-class _FakeTableDataInsertAllResponse_98 extends _i1.SmartFake implements _i6.TableDataInsertAllResponse {
- _FakeTableDataInsertAllResponse_98(
+class _FakeTableDataInsertAllResponse_93 extends _i1.SmartFake implements _i6.TableDataInsertAllResponse {
+ _FakeTableDataInsertAllResponse_93(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1061,8 +1005,8 @@
);
}
-class _FakeTableDataList_99 extends _i1.SmartFake implements _i6.TableDataList {
- _FakeTableDataList_99(
+class _FakeTableDataList_94 extends _i1.SmartFake implements _i6.TableDataList {
+ _FakeTableDataList_94(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1071,8 +1015,8 @@
);
}
-class _FakeUser_100 extends _i1.SmartFake implements _i14.User {
- _FakeUser_100(
+class _FakeUser_95 extends _i1.SmartFake implements _i13.User {
+ _FakeUser_95(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1081,8 +1025,8 @@
);
}
-class _FakeCurrentUser_101 extends _i1.SmartFake implements _i14.CurrentUser {
- _FakeCurrentUser_101(
+class _FakeCurrentUser_96 extends _i1.SmartFake implements _i13.CurrentUser {
+ _FakeCurrentUser_96(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1091,8 +1035,8 @@
);
}
-class _FakeEntry_102<T> extends _i1.SmartFake implements _i29.Entry<T> {
- _FakeEntry_102(
+class _FakeEntry_97<T> extends _i1.SmartFake implements _i27.Entry<T> {
+ _FakeEntry_97(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1101,8 +1045,8 @@
);
}
-class _FakeCache_103<T> extends _i1.SmartFake implements _i29.Cache<T> {
- _FakeCache_103(
+class _FakeCache_98<T> extends _i1.SmartFake implements _i27.Cache<T> {
+ _FakeCache_98(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1111,8 +1055,8 @@
);
}
-class _FakeAuthentication_104 extends _i1.SmartFake implements _i14.Authentication {
- _FakeAuthentication_104(
+class _FakeAuthentication_99 extends _i1.SmartFake implements _i13.Authentication {
+ _FakeAuthentication_99(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1121,8 +1065,8 @@
);
}
-class _FakeActivityService_105 extends _i1.SmartFake implements _i14.ActivityService {
- _FakeActivityService_105(
+class _FakeActivityService_100 extends _i1.SmartFake implements _i13.ActivityService {
+ _FakeActivityService_100(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1131,8 +1075,8 @@
);
}
-class _FakeAuthorizationsService_106 extends _i1.SmartFake implements _i14.AuthorizationsService {
- _FakeAuthorizationsService_106(
+class _FakeAuthorizationsService_101 extends _i1.SmartFake implements _i13.AuthorizationsService {
+ _FakeAuthorizationsService_101(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1141,8 +1085,8 @@
);
}
-class _FakeGistsService_107 extends _i1.SmartFake implements _i14.GistsService {
- _FakeGistsService_107(
+class _FakeGistsService_102 extends _i1.SmartFake implements _i13.GistsService {
+ _FakeGistsService_102(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1151,8 +1095,8 @@
);
}
-class _FakeGitService_108 extends _i1.SmartFake implements _i14.GitService {
- _FakeGitService_108(
+class _FakeGitService_103 extends _i1.SmartFake implements _i13.GitService {
+ _FakeGitService_103(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1161,8 +1105,8 @@
);
}
-class _FakeIssuesService_109 extends _i1.SmartFake implements _i14.IssuesService {
- _FakeIssuesService_109(
+class _FakeIssuesService_104 extends _i1.SmartFake implements _i13.IssuesService {
+ _FakeIssuesService_104(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1171,8 +1115,8 @@
);
}
-class _FakeMiscService_110 extends _i1.SmartFake implements _i14.MiscService {
- _FakeMiscService_110(
+class _FakeMiscService_105 extends _i1.SmartFake implements _i13.MiscService {
+ _FakeMiscService_105(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1181,8 +1125,8 @@
);
}
-class _FakeOrganizationsService_111 extends _i1.SmartFake implements _i14.OrganizationsService {
- _FakeOrganizationsService_111(
+class _FakeOrganizationsService_106 extends _i1.SmartFake implements _i13.OrganizationsService {
+ _FakeOrganizationsService_106(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1191,8 +1135,8 @@
);
}
-class _FakePullRequestsService_112 extends _i1.SmartFake implements _i14.PullRequestsService {
- _FakePullRequestsService_112(
+class _FakePullRequestsService_107 extends _i1.SmartFake implements _i13.PullRequestsService {
+ _FakePullRequestsService_107(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1201,8 +1145,8 @@
);
}
-class _FakeRepositoriesService_113 extends _i1.SmartFake implements _i14.RepositoriesService {
- _FakeRepositoriesService_113(
+class _FakeRepositoriesService_108 extends _i1.SmartFake implements _i13.RepositoriesService {
+ _FakeRepositoriesService_108(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1211,8 +1155,8 @@
);
}
-class _FakeSearchService_114 extends _i1.SmartFake implements _i14.SearchService {
- _FakeSearchService_114(
+class _FakeSearchService_109 extends _i1.SmartFake implements _i13.SearchService {
+ _FakeSearchService_109(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1221,8 +1165,8 @@
);
}
-class _FakeUrlShortenerService_115 extends _i1.SmartFake implements _i14.UrlShortenerService {
- _FakeUrlShortenerService_115(
+class _FakeUrlShortenerService_110 extends _i1.SmartFake implements _i13.UrlShortenerService {
+ _FakeUrlShortenerService_110(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1231,8 +1175,8 @@
);
}
-class _FakeUsersService_116 extends _i1.SmartFake implements _i14.UsersService {
- _FakeUsersService_116(
+class _FakeUsersService_111 extends _i1.SmartFake implements _i13.UsersService {
+ _FakeUsersService_111(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1241,8 +1185,8 @@
);
}
-class _FakeChecksService_117 extends _i1.SmartFake implements _i14.ChecksService {
- _FakeChecksService_117(
+class _FakeChecksService_112 extends _i1.SmartFake implements _i13.ChecksService {
+ _FakeChecksService_112(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1251,8 +1195,8 @@
);
}
-class _FakeResponse_118 extends _i1.SmartFake implements _i2.Response {
- _FakeResponse_118(
+class _FakeResponse_113 extends _i1.SmartFake implements _i2.Response {
+ _FakeResponse_113(
Object parent,
Invocation parentInvocation,
) : super(
@@ -1270,7 +1214,7 @@
}
@override
- _i21.Future<_i2.Client> createAccessClient({
+ _i20.Future<_i2.Client> createAccessClient({
List<String>? scopes = const [r'https://www.googleapis.com/auth/cloud-platform'],
_i2.Client? baseClient,
}) =>
@@ -1283,7 +1227,7 @@
#baseClient: baseClient,
},
),
- returnValue: _i21.Future<_i2.Client>.value(_FakeClient_0(
+ returnValue: _i20.Future<_i2.Client>.value(_FakeClient_0(
this,
Invocation.method(
#createAccessClient,
@@ -1294,13 +1238,13 @@
},
),
)),
- ) as _i21.Future<_i2.Client>);
+ ) as _i20.Future<_i2.Client>);
}
/// A class which mocks [AccessTokenService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockAccessTokenService extends _i1.Mock implements _i30.AccessTokenService {
+class MockAccessTokenService extends _i1.Mock implements _i28.AccessTokenService {
MockAccessTokenService() {
_i1.throwOnMissingStub(this);
}
@@ -1315,25 +1259,25 @@
) as _i3.Config);
@override
- _i21.Future<_i4.AccessToken> createAccessToken() => (super.noSuchMethod(
+ _i20.Future<_i4.AccessToken> createAccessToken() => (super.noSuchMethod(
Invocation.method(
#createAccessToken,
[],
),
- returnValue: _i21.Future<_i4.AccessToken>.value(_FakeAccessToken_2(
+ returnValue: _i20.Future<_i4.AccessToken>.value(_FakeAccessToken_2(
this,
Invocation.method(
#createAccessToken,
[],
),
)),
- ) as _i21.Future<_i4.AccessToken>);
+ ) as _i20.Future<_i4.AccessToken>);
}
/// A class which mocks [BigqueryService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockBigqueryService extends _i1.Mock implements _i17.BigqueryService {
+class MockBigqueryService extends _i1.Mock implements _i16.BigqueryService {
MockBigqueryService() {
_i1.throwOnMissingStub(this);
}
@@ -1348,37 +1292,37 @@
) as _i5.AccessClientProvider);
@override
- _i21.Future<_i6.TabledataResource> defaultTabledata() => (super.noSuchMethod(
+ _i20.Future<_i6.TabledataResource> defaultTabledata() => (super.noSuchMethod(
Invocation.method(
#defaultTabledata,
[],
),
- returnValue: _i21.Future<_i6.TabledataResource>.value(_FakeTabledataResource_4(
+ returnValue: _i20.Future<_i6.TabledataResource>.value(_FakeTabledataResource_4(
this,
Invocation.method(
#defaultTabledata,
[],
),
)),
- ) as _i21.Future<_i6.TabledataResource>);
+ ) as _i20.Future<_i6.TabledataResource>);
@override
- _i21.Future<_i6.JobsResource> defaultJobs() => (super.noSuchMethod(
+ _i20.Future<_i6.JobsResource> defaultJobs() => (super.noSuchMethod(
Invocation.method(
#defaultJobs,
[],
),
- returnValue: _i21.Future<_i6.JobsResource>.value(_FakeJobsResource_5(
+ returnValue: _i20.Future<_i6.JobsResource>.value(_FakeJobsResource_5(
this,
Invocation.method(
#defaultJobs,
[],
),
)),
- ) as _i21.Future<_i6.JobsResource>);
+ ) as _i20.Future<_i6.JobsResource>);
@override
- _i21.Future<List<_i17.BuilderStatistic>> listBuilderStatistic(
+ _i20.Future<List<_i16.BuilderStatistic>> listBuilderStatistic(
String? projectId, {
int? limit = 100,
String? bucket = r'prod',
@@ -1392,11 +1336,11 @@
#bucket: bucket,
},
),
- returnValue: _i21.Future<List<_i17.BuilderStatistic>>.value(<_i17.BuilderStatistic>[]),
- ) as _i21.Future<List<_i17.BuilderStatistic>>);
+ returnValue: _i20.Future<List<_i16.BuilderStatistic>>.value(<_i16.BuilderStatistic>[]),
+ ) as _i20.Future<List<_i16.BuilderStatistic>>);
@override
- _i21.Future<List<_i17.BuilderRecord>> listRecentBuildRecordsForBuilder(
+ _i20.Future<List<_i16.BuilderRecord>> listRecentBuildRecordsForBuilder(
String? projectId, {
String? builder,
int? limit,
@@ -1410,14 +1354,14 @@
#limit: limit,
},
),
- returnValue: _i21.Future<List<_i17.BuilderRecord>>.value(<_i17.BuilderRecord>[]),
- ) as _i21.Future<List<_i17.BuilderRecord>>);
+ returnValue: _i20.Future<List<_i16.BuilderRecord>>.value(<_i16.BuilderRecord>[]),
+ ) as _i20.Future<List<_i16.BuilderRecord>>);
}
/// A class which mocks [BranchService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockBranchService extends _i1.Mock implements _i16.BranchService {
+class MockBranchService extends _i1.Mock implements _i15.BranchService {
MockBranchService() {
_i1.throwOnMissingStub(this);
}
@@ -1441,16 +1385,16 @@
) as _i7.GerritService);
@override
- _i31.RetryOptions get retryOptions => (super.noSuchMethod(
+ _i29.RetryOptions get retryOptions => (super.noSuchMethod(
Invocation.getter(#retryOptions),
- returnValue: _i32.dummyValue<_i31.RetryOptions>(
+ returnValue: _i30.dummyValue<_i29.RetryOptions>(
this,
Invocation.getter(#retryOptions),
),
- ) as _i31.RetryOptions);
+ ) as _i29.RetryOptions);
@override
- _i21.Future<void> branchFlutterRecipes(
+ _i20.Future<void> branchFlutterRecipes(
String? branch,
String? engineSha,
) =>
@@ -1462,14 +1406,14 @@
engineSha,
],
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<List<Map<String, String>>> getReleaseBranches({
- required _i18.GithubService? githubService,
- required _i14.RepositorySlug? slug,
+ _i20.Future<List<Map<String, String>>> getReleaseBranches({
+ required _i17.GithubService? githubService,
+ required _i13.RepositorySlug? slug,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -1480,15 +1424,15 @@
#slug: slug,
},
),
- returnValue: _i21.Future<List<Map<String, String>>>.value(<Map<String, String>>[]),
- ) as _i21.Future<List<Map<String, String>>>);
+ returnValue: _i20.Future<List<Map<String, String>>>.value(<Map<String, String>>[]),
+ ) as _i20.Future<List<Map<String, String>>>);
}
/// A class which mocks [BuildBucketClient].
///
/// See the documentation for Mockito's code generation for more information.
// ignore: must_be_immutable
-class MockBuildBucketClient extends _i1.Mock implements _i16.BuildBucketClient {
+class MockBuildBucketClient extends _i1.Mock implements _i15.BuildBucketClient {
MockBuildBucketClient() {
_i1.throwOnMissingStub(this);
}
@@ -1496,7 +1440,7 @@
@override
String get buildBucketBuildUri => (super.noSuchMethod(
Invocation.getter(#buildBucketBuildUri),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#buildBucketBuildUri),
),
@@ -1505,7 +1449,7 @@
@override
String get buildBucketBuilderUri => (super.noSuchMethod(
Invocation.getter(#buildBucketBuilderUri),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#buildBucketBuilderUri),
),
@@ -1521,7 +1465,7 @@
) as _i2.Client);
@override
- _i21.Future<_i8.Build> scheduleBuild(
+ _i20.Future<_i8.Build> scheduleBuild(
_i8.ScheduleBuildRequest? request, {
String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
}) =>
@@ -1531,7 +1475,7 @@
[request],
{#buildBucketUri: buildBucketUri},
),
- returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+ returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
this,
Invocation.method(
#scheduleBuild,
@@ -1539,10 +1483,10 @@
{#buildBucketUri: buildBucketUri},
),
)),
- ) as _i21.Future<_i8.Build>);
+ ) as _i20.Future<_i8.Build>);
@override
- _i21.Future<_i8.SearchBuildsResponse> searchBuilds(
+ _i20.Future<_i8.SearchBuildsResponse> searchBuilds(
_i8.SearchBuildsRequest? request, {
String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
}) =>
@@ -1552,7 +1496,7 @@
[request],
{#buildBucketUri: buildBucketUri},
),
- returnValue: _i21.Future<_i8.SearchBuildsResponse>.value(_FakeSearchBuildsResponse_8(
+ returnValue: _i20.Future<_i8.SearchBuildsResponse>.value(_FakeSearchBuildsResponse_8(
this,
Invocation.method(
#searchBuilds,
@@ -1560,10 +1504,10 @@
{#buildBucketUri: buildBucketUri},
),
)),
- ) as _i21.Future<_i8.SearchBuildsResponse>);
+ ) as _i20.Future<_i8.SearchBuildsResponse>);
@override
- _i21.Future<_i8.BatchResponse> batch(
+ _i20.Future<_i8.BatchResponse> batch(
_i8.BatchRequest? request, {
String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
}) =>
@@ -1573,7 +1517,7 @@
[request],
{#buildBucketUri: buildBucketUri},
),
- returnValue: _i21.Future<_i8.BatchResponse>.value(_FakeBatchResponse_9(
+ returnValue: _i20.Future<_i8.BatchResponse>.value(_FakeBatchResponse_9(
this,
Invocation.method(
#batch,
@@ -1581,10 +1525,10 @@
{#buildBucketUri: buildBucketUri},
),
)),
- ) as _i21.Future<_i8.BatchResponse>);
+ ) as _i20.Future<_i8.BatchResponse>);
@override
- _i21.Future<_i8.Build> cancelBuild(
+ _i20.Future<_i8.Build> cancelBuild(
_i8.CancelBuildRequest? request, {
String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
}) =>
@@ -1594,7 +1538,7 @@
[request],
{#buildBucketUri: buildBucketUri},
),
- returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+ returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
this,
Invocation.method(
#cancelBuild,
@@ -1602,10 +1546,10 @@
{#buildBucketUri: buildBucketUri},
),
)),
- ) as _i21.Future<_i8.Build>);
+ ) as _i20.Future<_i8.Build>);
@override
- _i21.Future<_i8.Build> getBuild(
+ _i20.Future<_i8.Build> getBuild(
_i8.GetBuildRequest? request, {
String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
}) =>
@@ -1615,7 +1559,7 @@
[request],
{#buildBucketUri: buildBucketUri},
),
- returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+ returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
this,
Invocation.method(
#getBuild,
@@ -1623,10 +1567,10 @@
{#buildBucketUri: buildBucketUri},
),
)),
- ) as _i21.Future<_i8.Build>);
+ ) as _i20.Future<_i8.Build>);
@override
- _i21.Future<_i8.ListBuildersResponse> listBuilders(
+ _i20.Future<_i8.ListBuildersResponse> listBuilders(
_i8.ListBuildersRequest? request, {
String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builders',
}) =>
@@ -1636,7 +1580,7 @@
[request],
{#buildBucketUri: buildBucketUri},
),
- returnValue: _i21.Future<_i8.ListBuildersResponse>.value(_FakeListBuildersResponse_10(
+ returnValue: _i20.Future<_i8.ListBuildersResponse>.value(_FakeListBuildersResponse_10(
this,
Invocation.method(
#listBuilders,
@@ -1644,179 +1588,7 @@
{#buildBucketUri: buildBucketUri},
),
)),
- ) as _i21.Future<_i8.ListBuildersResponse>);
-
- @override
- void close() => super.noSuchMethod(
- Invocation.method(
- #close,
- [],
- ),
- returnValueForMissingStub: null,
- );
-}
-
-/// A class which mocks [BuildBucketV2Client].
-///
-/// See the documentation for Mockito's code generation for more information.
-// ignore: must_be_immutable
-class MockBuildBucketV2Client extends _i1.Mock implements _i28.BuildBucketV2Client {
- MockBuildBucketV2Client() {
- _i1.throwOnMissingStub(this);
- }
-
- @override
- String get buildBucketBuildUri => (super.noSuchMethod(
- Invocation.getter(#buildBucketBuildUri),
- returnValue: _i32.dummyValue<String>(
- this,
- Invocation.getter(#buildBucketBuildUri),
- ),
- ) as String);
-
- @override
- String get buildBucketBuilderUri => (super.noSuchMethod(
- Invocation.getter(#buildBucketBuilderUri),
- returnValue: _i32.dummyValue<String>(
- this,
- Invocation.getter(#buildBucketBuilderUri),
- ),
- ) as String);
-
- @override
- _i2.Client get httpClient => (super.noSuchMethod(
- Invocation.getter(#httpClient),
- returnValue: _FakeClient_0(
- this,
- Invocation.getter(#httpClient),
- ),
- ) as _i2.Client);
-
- @override
- _i21.Future<_i9.Build> scheduleBuild(
- _i9.ScheduleBuildRequest? request, {
- String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #scheduleBuild,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
- this,
- Invocation.method(
- #scheduleBuild,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- )),
- ) as _i21.Future<_i9.Build>);
-
- @override
- _i21.Future<_i9.SearchBuildsResponse> searchBuilds(
- _i9.SearchBuildsRequest? request, {
- String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #searchBuilds,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- returnValue: _i21.Future<_i9.SearchBuildsResponse>.value(_FakeSearchBuildsResponse_12(
- this,
- Invocation.method(
- #searchBuilds,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- )),
- ) as _i21.Future<_i9.SearchBuildsResponse>);
-
- @override
- _i21.Future<_i9.BatchResponse> batch(
- _i9.BatchRequest? request, {
- String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #batch,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- returnValue: _i21.Future<_i9.BatchResponse>.value(_FakeBatchResponse_13(
- this,
- Invocation.method(
- #batch,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- )),
- ) as _i21.Future<_i9.BatchResponse>);
-
- @override
- _i21.Future<_i9.Build> cancelBuild(
- _i9.CancelBuildRequest? request, {
- String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #cancelBuild,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
- this,
- Invocation.method(
- #cancelBuild,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- )),
- ) as _i21.Future<_i9.Build>);
-
- @override
- _i21.Future<_i9.Build> getBuild(
- _i9.GetBuildRequest? request, {
- String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builds',
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #getBuild,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
- this,
- Invocation.method(
- #getBuild,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- )),
- ) as _i21.Future<_i9.Build>);
-
- @override
- _i21.Future<_i9.ListBuildersResponse> listBuilders(
- _i9.ListBuildersRequest? request, {
- String? buildBucketUri = r'https://cr-buildbucket.appspot.com/prpc/buildbucket.v2.Builders',
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #listBuilders,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- returnValue: _i21.Future<_i9.ListBuildersResponse>.value(_FakeListBuildersResponse_14(
- this,
- Invocation.method(
- #listBuilders,
- [request],
- {#buildBucketUri: buildBucketUri},
- ),
- )),
- ) as _i21.Future<_i9.ListBuildersResponse>);
+ ) as _i20.Future<_i8.ListBuildersResponse>);
@override
void close() => super.noSuchMethod(
@@ -1831,7 +1603,7 @@
/// A class which mocks [CommitService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockCommitService extends _i1.Mock implements _i33.CommitService {
+class MockCommitService extends _i1.Mock implements _i31.CommitService {
MockCommitService() {
_i1.throwOnMissingStub(this);
}
@@ -1846,33 +1618,33 @@
) as _i3.Config);
@override
- _i10.DatastoreServiceProvider get datastoreProvider => (super.noSuchMethod(
+ _i9.DatastoreServiceProvider get datastoreProvider => (super.noSuchMethod(
Invocation.getter(#datastoreProvider),
- returnValue: (_i12.DatastoreDB db) => _FakeDatastoreService_15(
+ returnValue: (_i11.DatastoreDB db) => _FakeDatastoreService_11(
this,
Invocation.getter(#datastoreProvider),
),
- ) as _i10.DatastoreServiceProvider);
+ ) as _i9.DatastoreServiceProvider);
@override
- _i21.Future<void> handleCreateGithubRequest(_i34.CreateEvent? createEvent) => (super.noSuchMethod(
+ _i20.Future<void> handleCreateGithubRequest(_i32.CreateEvent? createEvent) => (super.noSuchMethod(
Invocation.method(
#handleCreateGithubRequest,
[createEvent],
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<void> handlePushGithubRequest(Map<String, dynamic>? pushEvent) => (super.noSuchMethod(
+ _i20.Future<void> handlePushGithubRequest(Map<String, dynamic>? pushEvent) => (super.noSuchMethod(
Invocation.method(
#handlePushGithubRequest,
[pushEvent],
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
}
/// A class which mocks [Config].
@@ -1884,94 +1656,94 @@
}
@override
- Set<_i14.RepositorySlug> get supportedRepos => (super.noSuchMethod(
+ Set<_i13.RepositorySlug> get supportedRepos => (super.noSuchMethod(
Invocation.getter(#supportedRepos),
- returnValue: <_i14.RepositorySlug>{},
- ) as Set<_i14.RepositorySlug>);
+ returnValue: <_i13.RepositorySlug>{},
+ ) as Set<_i13.RepositorySlug>);
@override
- Set<_i14.RepositorySlug> get postsubmitSupportedRepos => (super.noSuchMethod(
+ Set<_i13.RepositorySlug> get postsubmitSupportedRepos => (super.noSuchMethod(
Invocation.getter(#postsubmitSupportedRepos),
- returnValue: <_i14.RepositorySlug>{},
- ) as Set<_i14.RepositorySlug>);
+ returnValue: <_i13.RepositorySlug>{},
+ ) as Set<_i13.RepositorySlug>);
@override
String get autosubmitBot => (super.noSuchMethod(
Invocation.getter(#autosubmitBot),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#autosubmitBot),
),
) as String);
@override
- _i11.Logging get loggingService => (super.noSuchMethod(
+ _i10.Logging get loggingService => (super.noSuchMethod(
Invocation.getter(#loggingService),
- returnValue: _FakeLogging_16(
+ returnValue: _FakeLogging_12(
this,
Invocation.getter(#loggingService),
),
- ) as _i11.Logging);
+ ) as _i10.Logging);
@override
- _i21.Future<String> get githubPrivateKey => (super.noSuchMethod(
+ _i20.Future<String> get githubPrivateKey => (super.noSuchMethod(
Invocation.getter(#githubPrivateKey),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.getter(#githubPrivateKey),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<String> get overrideTreeStatusLabel => (super.noSuchMethod(
+ _i20.Future<String> get overrideTreeStatusLabel => (super.noSuchMethod(
Invocation.getter(#overrideTreeStatusLabel),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.getter(#overrideTreeStatusLabel),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<String> get githubPublicKey => (super.noSuchMethod(
+ _i20.Future<String> get githubPublicKey => (super.noSuchMethod(
Invocation.getter(#githubPublicKey),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.getter(#githubPublicKey),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<String> get githubAppId => (super.noSuchMethod(
+ _i20.Future<String> get githubAppId => (super.noSuchMethod(
Invocation.getter(#githubAppId),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.getter(#githubAppId),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<Map<String, dynamic>> get githubAppInstallations => (super.noSuchMethod(
+ _i20.Future<Map<String, dynamic>> get githubAppInstallations => (super.noSuchMethod(
Invocation.getter(#githubAppInstallations),
- returnValue: _i21.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
- ) as _i21.Future<Map<String, dynamic>>);
+ returnValue: _i20.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
+ ) as _i20.Future<Map<String, dynamic>>);
@override
String get defaultRecipeBundleRef => (super.noSuchMethod(
Invocation.getter(#defaultRecipeBundleRef),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#defaultRecipeBundleRef),
),
) as String);
@override
- _i12.DatastoreDB get db => (super.noSuchMethod(
+ _i11.DatastoreDB get db => (super.noSuchMethod(
Invocation.getter(#db),
- returnValue: _FakeDatastoreDB_17(
+ returnValue: _FakeDatastoreDB_13(
this,
Invocation.getter(#db),
),
- ) as _i12.DatastoreDB);
+ ) as _i11.DatastoreDB);
@override
int get schedulingShardSize => (super.noSuchMethod(
@@ -2004,42 +1776,42 @@
) as int);
@override
- _i21.Future<List<String>> get releaseAccounts => (super.noSuchMethod(
+ _i20.Future<List<String>> get releaseAccounts => (super.noSuchMethod(
Invocation.getter(#releaseAccounts),
- returnValue: _i21.Future<List<String>>.value(<String>[]),
- ) as _i21.Future<List<String>>);
+ returnValue: _i20.Future<List<String>>.value(<String>[]),
+ ) as _i20.Future<List<String>>);
@override
- _i21.Future<String> get oauthClientId => (super.noSuchMethod(
+ _i20.Future<String> get oauthClientId => (super.noSuchMethod(
Invocation.getter(#oauthClientId),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.getter(#oauthClientId),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<String> get frobWebhookKey => (super.noSuchMethod(
+ _i20.Future<String> get frobWebhookKey => (super.noSuchMethod(
Invocation.getter(#frobWebhookKey),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.getter(#frobWebhookKey),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<String> get githubOAuthToken => (super.noSuchMethod(
+ _i20.Future<String> get githubOAuthToken => (super.noSuchMethod(
Invocation.getter(#githubOAuthToken),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.getter(#githubOAuthToken),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
String get wrongBaseBranchPullRequestMessage => (super.noSuchMethod(
Invocation.getter(#wrongBaseBranchPullRequestMessage),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#wrongBaseBranchPullRequestMessage),
),
@@ -2048,25 +1820,25 @@
@override
String get releaseBranchPullRequestMessage => (super.noSuchMethod(
Invocation.getter(#releaseBranchPullRequestMessage),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#releaseBranchPullRequestMessage),
),
) as String);
@override
- _i21.Future<String> get webhookKey => (super.noSuchMethod(
+ _i20.Future<String> get webhookKey => (super.noSuchMethod(
Invocation.getter(#webhookKey),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.getter(#webhookKey),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
String get mergeConflictPullRequestMessage => (super.noSuchMethod(
Invocation.getter(#mergeConflictPullRequestMessage),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#mergeConflictPullRequestMessage),
),
@@ -2075,7 +1847,7 @@
@override
String get missingTestsPullRequestMessage => (super.noSuchMethod(
Invocation.getter(#missingTestsPullRequestMessage),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#missingTestsPullRequestMessage),
),
@@ -2084,7 +1856,7 @@
@override
String get flutterGoldPending => (super.noSuchMethod(
Invocation.getter(#flutterGoldPending),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#flutterGoldPending),
),
@@ -2093,7 +1865,7 @@
@override
String get flutterGoldSuccess => (super.noSuchMethod(
Invocation.getter(#flutterGoldSuccess),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#flutterGoldSuccess),
),
@@ -2102,7 +1874,7 @@
@override
String get flutterGoldChanges => (super.noSuchMethod(
Invocation.getter(#flutterGoldChanges),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#flutterGoldChanges),
),
@@ -2111,7 +1883,7 @@
@override
String get flutterGoldStalePR => (super.noSuchMethod(
Invocation.getter(#flutterGoldStalePR),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#flutterGoldStalePR),
),
@@ -2120,7 +1892,7 @@
@override
String get flutterGoldDraftChange => (super.noSuchMethod(
Invocation.getter(#flutterGoldDraftChange),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#flutterGoldDraftChange),
),
@@ -2145,13 +1917,13 @@
) as int);
@override
- _i13.KeyHelper get keyHelper => (super.noSuchMethod(
+ _i12.KeyHelper get keyHelper => (super.noSuchMethod(
Invocation.getter(#keyHelper),
- returnValue: _FakeKeyHelper_18(
+ returnValue: _FakeKeyHelper_14(
this,
Invocation.getter(#keyHelper),
),
- ) as _i13.KeyHelper);
+ ) as _i12.KeyHelper);
@override
int get maxRecords => (super.noSuchMethod(
@@ -2162,7 +1934,7 @@
@override
Duration get githubRequestDelay => (super.noSuchMethod(
Invocation.getter(#githubRequestDelay),
- returnValue: _FakeDuration_19(
+ returnValue: _FakeDuration_15(
this,
Invocation.getter(#githubRequestDelay),
),
@@ -2171,7 +1943,7 @@
@override
String get flutterBuild => (super.noSuchMethod(
Invocation.getter(#flutterBuild),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#flutterBuild),
),
@@ -2180,7 +1952,7 @@
@override
String get flutterBuildDescription => (super.noSuchMethod(
Invocation.getter(#flutterBuildDescription),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#flutterBuildDescription),
),
@@ -2189,7 +1961,7 @@
@override
String get waitingForTreeToGoGreenLabelName => (super.noSuchMethod(
Invocation.getter(#waitingForTreeToGoGreenLabelName),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#waitingForTreeToGoGreenLabelName),
),
@@ -2202,13 +1974,13 @@
) as Set<String>);
@override
- _i21.Future<Iterable<_i35.Branch>> getBranches(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<Iterable<_i33.Branch>> getBranches(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#getBranches,
[slug],
),
- returnValue: _i21.Future<Iterable<_i35.Branch>>.value(<_i35.Branch>[]),
- ) as _i21.Future<Iterable<_i35.Branch>>);
+ returnValue: _i20.Future<Iterable<_i33.Branch>>.value(<_i33.Branch>[]),
+ ) as _i20.Future<Iterable<_i33.Branch>>);
@override
String wrongHeadBranchPullRequestMessage(String? branch) => (super.noSuchMethod(
@@ -2216,7 +1988,7 @@
#wrongHeadBranchPullRequestMessage,
[branch],
),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.method(
#wrongHeadBranchPullRequestMessage,
@@ -2231,7 +2003,7 @@
#flutterGoldInitialAlert,
[url],
),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.method(
#flutterGoldInitialAlert,
@@ -2246,7 +2018,7 @@
#flutterGoldFollowUpAlert,
[url],
),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.method(
#flutterGoldFollowUpAlert,
@@ -2256,12 +2028,12 @@
) as String);
@override
- String flutterGoldAlertConstant(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ String flutterGoldAlertConstant(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#flutterGoldAlertConstant,
[slug],
),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.method(
#flutterGoldAlertConstant,
@@ -2271,12 +2043,12 @@
) as String);
@override
- String flutterGoldCommentID(_i14.PullRequest? pr) => (super.noSuchMethod(
+ String flutterGoldCommentID(_i13.PullRequest? pr) => (super.noSuchMethod(
Invocation.method(
#flutterGoldCommentID,
[pr],
),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.method(
#flutterGoldCommentID,
@@ -2286,39 +2058,39 @@
) as String);
@override
- _i21.Future<String> generateJsonWebToken() => (super.noSuchMethod(
+ _i20.Future<String> generateJsonWebToken() => (super.noSuchMethod(
Invocation.method(
#generateJsonWebToken,
[],
),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.method(
#generateJsonWebToken,
[],
),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<String> generateGithubToken(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<String> generateGithubToken(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#generateGithubToken,
[slug],
),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.method(
#generateGithubToken,
[slug],
),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<_i14.GitHub> createGitHubClient({
- _i14.PullRequest? pullRequest,
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.GitHub> createGitHubClient({
+ _i13.PullRequest? pullRequest,
+ _i13.RepositorySlug? slug,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -2329,7 +2101,7 @@
#slug: slug,
},
),
- returnValue: _i21.Future<_i14.GitHub>.value(_FakeGitHub_20(
+ returnValue: _i20.Future<_i13.GitHub>.value(_FakeGitHub_16(
this,
Invocation.method(
#createGitHubClient,
@@ -2340,134 +2112,134 @@
},
),
)),
- ) as _i21.Future<_i14.GitHub>);
+ ) as _i20.Future<_i13.GitHub>);
@override
- _i14.GitHub createGitHubClientWithToken(String? token) => (super.noSuchMethod(
+ _i13.GitHub createGitHubClientWithToken(String? token) => (super.noSuchMethod(
Invocation.method(
#createGitHubClientWithToken,
[token],
),
- returnValue: _FakeGitHub_20(
+ returnValue: _FakeGitHub_16(
this,
Invocation.method(
#createGitHubClientWithToken,
[token],
),
),
- ) as _i14.GitHub);
+ ) as _i13.GitHub);
@override
- _i21.Future<_i15.GraphQLClient> createGitHubGraphQLClient() => (super.noSuchMethod(
+ _i20.Future<_i14.GraphQLClient> createGitHubGraphQLClient() => (super.noSuchMethod(
Invocation.method(
#createGitHubGraphQLClient,
[],
),
- returnValue: _i21.Future<_i15.GraphQLClient>.value(_FakeGraphQLClient_21(
+ returnValue: _i20.Future<_i14.GraphQLClient>.value(_FakeGraphQLClient_17(
this,
Invocation.method(
#createGitHubGraphQLClient,
[],
),
)),
- ) as _i21.Future<_i15.GraphQLClient>);
+ ) as _i20.Future<_i14.GraphQLClient>);
@override
- _i21.Future<_i16.FirestoreService> createFirestoreService() => (super.noSuchMethod(
+ _i20.Future<_i15.FirestoreService> createFirestoreService() => (super.noSuchMethod(
Invocation.method(
#createFirestoreService,
[],
),
- returnValue: _i21.Future<_i16.FirestoreService>.value(_FakeFirestoreService_22(
+ returnValue: _i20.Future<_i15.FirestoreService>.value(_FakeFirestoreService_18(
this,
Invocation.method(
#createFirestoreService,
[],
),
)),
- ) as _i21.Future<_i16.FirestoreService>);
+ ) as _i20.Future<_i15.FirestoreService>);
@override
- _i21.Future<_i17.BigqueryService> createBigQueryService() => (super.noSuchMethod(
+ _i20.Future<_i16.BigqueryService> createBigQueryService() => (super.noSuchMethod(
Invocation.method(
#createBigQueryService,
[],
),
- returnValue: _i21.Future<_i17.BigqueryService>.value(_FakeBigqueryService_23(
+ returnValue: _i20.Future<_i16.BigqueryService>.value(_FakeBigqueryService_19(
this,
Invocation.method(
#createBigQueryService,
[],
),
)),
- ) as _i21.Future<_i17.BigqueryService>);
+ ) as _i20.Future<_i16.BigqueryService>);
@override
- _i21.Future<_i6.TabledataResource> createTabledataResourceApi() => (super.noSuchMethod(
+ _i20.Future<_i6.TabledataResource> createTabledataResourceApi() => (super.noSuchMethod(
Invocation.method(
#createTabledataResourceApi,
[],
),
- returnValue: _i21.Future<_i6.TabledataResource>.value(_FakeTabledataResource_4(
+ returnValue: _i20.Future<_i6.TabledataResource>.value(_FakeTabledataResource_4(
this,
Invocation.method(
#createTabledataResourceApi,
[],
),
)),
- ) as _i21.Future<_i6.TabledataResource>);
+ ) as _i20.Future<_i6.TabledataResource>);
@override
- _i21.Future<_i18.GithubService> createDefaultGitHubService() => (super.noSuchMethod(
+ _i20.Future<_i17.GithubService> createDefaultGitHubService() => (super.noSuchMethod(
Invocation.method(
#createDefaultGitHubService,
[],
),
- returnValue: _i21.Future<_i18.GithubService>.value(_FakeGithubService_24(
+ returnValue: _i20.Future<_i17.GithubService>.value(_FakeGithubService_20(
this,
Invocation.method(
#createDefaultGitHubService,
[],
),
)),
- ) as _i21.Future<_i18.GithubService>);
+ ) as _i20.Future<_i17.GithubService>);
@override
- _i21.Future<_i18.GithubService> createGithubService(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<_i17.GithubService> createGithubService(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#createGithubService,
[slug],
),
- returnValue: _i21.Future<_i18.GithubService>.value(_FakeGithubService_24(
+ returnValue: _i20.Future<_i17.GithubService>.value(_FakeGithubService_20(
this,
Invocation.method(
#createGithubService,
[slug],
),
)),
- ) as _i21.Future<_i18.GithubService>);
+ ) as _i20.Future<_i17.GithubService>);
@override
- _i18.GithubService createGithubServiceWithToken(String? token) => (super.noSuchMethod(
+ _i17.GithubService createGithubServiceWithToken(String? token) => (super.noSuchMethod(
Invocation.method(
#createGithubServiceWithToken,
[token],
),
- returnValue: _FakeGithubService_24(
+ returnValue: _FakeGithubService_20(
this,
Invocation.method(
#createGithubServiceWithToken,
[token],
),
),
- ) as _i18.GithubService);
+ ) as _i17.GithubService);
}
/// A class which mocks [DatastoreService].
///
/// See the documentation for Mockito's code generation for more information.
// ignore: must_be_immutable
-class MockDatastoreService extends _i1.Mock implements _i10.DatastoreService {
+class MockDatastoreService extends _i1.Mock implements _i9.DatastoreService {
MockDatastoreService() {
_i1.throwOnMissingStub(this);
}
@@ -2479,29 +2251,29 @@
) as int);
@override
- _i12.DatastoreDB get db => (super.noSuchMethod(
+ _i11.DatastoreDB get db => (super.noSuchMethod(
Invocation.getter(#db),
- returnValue: _FakeDatastoreDB_17(
+ returnValue: _FakeDatastoreDB_13(
this,
Invocation.getter(#db),
),
- ) as _i12.DatastoreDB);
+ ) as _i11.DatastoreDB);
@override
- _i31.RetryOptions get retryOptions => (super.noSuchMethod(
+ _i29.RetryOptions get retryOptions => (super.noSuchMethod(
Invocation.getter(#retryOptions),
- returnValue: _i32.dummyValue<_i31.RetryOptions>(
+ returnValue: _i30.dummyValue<_i29.RetryOptions>(
this,
Invocation.getter(#retryOptions),
),
- ) as _i31.RetryOptions);
+ ) as _i29.RetryOptions);
@override
- _i21.Stream<_i36.Commit> queryRecentCommits({
+ _i20.Stream<_i34.Commit> queryRecentCommits({
int? limit = 100,
int? timestamp,
String? branch,
- required _i14.RepositorySlug? slug,
+ required _i13.RepositorySlug? slug,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -2514,20 +2286,20 @@
#slug: slug,
},
),
- returnValue: _i21.Stream<_i36.Commit>.empty(),
- ) as _i21.Stream<_i36.Commit>);
+ returnValue: _i20.Stream<_i34.Commit>.empty(),
+ ) as _i20.Stream<_i34.Commit>);
@override
- _i21.Stream<_i35.Branch> queryBranches() => (super.noSuchMethod(
+ _i20.Stream<_i33.Branch> queryBranches() => (super.noSuchMethod(
Invocation.method(
#queryBranches,
[],
),
- returnValue: _i21.Stream<_i35.Branch>.empty(),
- ) as _i21.Stream<_i35.Branch>);
+ returnValue: _i20.Stream<_i33.Branch>.empty(),
+ ) as _i20.Stream<_i33.Branch>);
@override
- _i21.Stream<_i37.Task> queryRecentTasksByName({
+ _i20.Stream<_i35.Task> queryRecentTasksByName({
int? limit = 100,
required String? name,
}) =>
@@ -2540,15 +2312,15 @@
#name: name,
},
),
- returnValue: _i21.Stream<_i37.Task>.empty(),
- ) as _i21.Stream<_i37.Task>);
+ returnValue: _i20.Stream<_i35.Task>.empty(),
+ ) as _i20.Stream<_i35.Task>);
@override
- _i21.Stream<_i37.FullTask> queryRecentTasks({
+ _i20.Stream<_i35.FullTask> queryRecentTasks({
String? taskName,
int? commitLimit = 20,
String? branch,
- required _i14.RepositorySlug? slug,
+ required _i13.RepositorySlug? slug,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -2561,22 +2333,22 @@
#slug: slug,
},
),
- returnValue: _i21.Stream<_i37.FullTask>.empty(),
- ) as _i21.Stream<_i37.FullTask>);
+ returnValue: _i20.Stream<_i35.FullTask>.empty(),
+ ) as _i20.Stream<_i35.FullTask>);
@override
- _i21.Future<List<_i38.Stage>> queryTasksGroupedByStage(_i36.Commit? commit) => (super.noSuchMethod(
+ _i20.Future<List<_i36.Stage>> queryTasksGroupedByStage(_i34.Commit? commit) => (super.noSuchMethod(
Invocation.method(
#queryTasksGroupedByStage,
[commit],
),
- returnValue: _i21.Future<List<_i38.Stage>>.value(<_i38.Stage>[]),
- ) as _i21.Future<List<_i38.Stage>>);
+ returnValue: _i20.Future<List<_i36.Stage>>.value(<_i36.Stage>[]),
+ ) as _i20.Future<List<_i36.Stage>>);
@override
- _i21.Future<_i19.GithubBuildStatusUpdate> queryLastStatusUpdate(
- _i14.RepositorySlug? slug,
- _i14.PullRequest? pr,
+ _i20.Future<_i18.GithubBuildStatusUpdate> queryLastStatusUpdate(
+ _i13.RepositorySlug? slug,
+ _i13.PullRequest? pr,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -2586,7 +2358,7 @@
pr,
],
),
- returnValue: _i21.Future<_i19.GithubBuildStatusUpdate>.value(_FakeGithubBuildStatusUpdate_25(
+ returnValue: _i20.Future<_i18.GithubBuildStatusUpdate>.value(_FakeGithubBuildStatusUpdate_21(
this,
Invocation.method(
#queryLastStatusUpdate,
@@ -2596,12 +2368,12 @@
],
),
)),
- ) as _i21.Future<_i19.GithubBuildStatusUpdate>);
+ ) as _i20.Future<_i18.GithubBuildStatusUpdate>);
@override
- _i21.Future<_i20.GithubGoldStatusUpdate> queryLastGoldUpdate(
- _i14.RepositorySlug? slug,
- _i14.PullRequest? pr,
+ _i20.Future<_i19.GithubGoldStatusUpdate> queryLastGoldUpdate(
+ _i13.RepositorySlug? slug,
+ _i13.PullRequest? pr,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -2611,7 +2383,7 @@
pr,
],
),
- returnValue: _i21.Future<_i20.GithubGoldStatusUpdate>.value(_FakeGithubGoldStatusUpdate_26(
+ returnValue: _i20.Future<_i19.GithubGoldStatusUpdate>.value(_FakeGithubGoldStatusUpdate_22(
this,
Invocation.method(
#queryLastGoldUpdate,
@@ -2621,40 +2393,40 @@
],
),
)),
- ) as _i21.Future<_i20.GithubGoldStatusUpdate>);
+ ) as _i20.Future<_i19.GithubGoldStatusUpdate>);
@override
- _i21.Future<List<List<_i12.Model<dynamic>>>> shard(List<_i12.Model<dynamic>>? rows) => (super.noSuchMethod(
+ _i20.Future<List<List<_i11.Model<dynamic>>>> shard(List<_i11.Model<dynamic>>? rows) => (super.noSuchMethod(
Invocation.method(
#shard,
[rows],
),
- returnValue: _i21.Future<List<List<_i12.Model<dynamic>>>>.value(<List<_i12.Model<dynamic>>>[]),
- ) as _i21.Future<List<List<_i12.Model<dynamic>>>>);
+ returnValue: _i20.Future<List<List<_i11.Model<dynamic>>>>.value(<List<_i11.Model<dynamic>>>[]),
+ ) as _i20.Future<List<List<_i11.Model<dynamic>>>>);
@override
- _i21.Future<void> insert(List<_i12.Model<dynamic>>? rows) => (super.noSuchMethod(
+ _i20.Future<void> insert(List<_i11.Model<dynamic>>? rows) => (super.noSuchMethod(
Invocation.method(
#insert,
[rows],
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<List<T?>> lookupByKey<T extends _i12.Model<dynamic>>(List<_i12.Key<dynamic>>? keys) =>
+ _i20.Future<List<T?>> lookupByKey<T extends _i11.Model<dynamic>>(List<_i11.Key<dynamic>>? keys) =>
(super.noSuchMethod(
Invocation.method(
#lookupByKey,
[keys],
),
- returnValue: _i21.Future<List<T?>>.value(<T?>[]),
- ) as _i21.Future<List<T?>>);
+ returnValue: _i20.Future<List<T?>>.value(<T?>[]),
+ ) as _i20.Future<List<T?>>);
@override
- _i21.Future<T> lookupByValue<T extends _i12.Model<dynamic>>(
- _i12.Key<dynamic>? key, {
+ _i20.Future<T> lookupByValue<T extends _i11.Model<dynamic>>(
+ _i11.Key<dynamic>? key, {
T Function()? orElse,
}) =>
(super.noSuchMethod(
@@ -2663,8 +2435,8 @@
[key],
{#orElse: orElse},
),
- returnValue: _i32.ifNotNull(
- _i32.dummyValueOrNull<T>(
+ returnValue: _i30.ifNotNull(
+ _i30.dummyValueOrNull<T>(
this,
Invocation.method(
#lookupByValue,
@@ -2672,9 +2444,9 @@
{#orElse: orElse},
),
),
- (T v) => _i21.Future<T>.value(v),
+ (T v) => _i20.Future<T>.value(v),
) ??
- _FakeFuture_27<T>(
+ _FakeFuture_23<T>(
this,
Invocation.method(
#lookupByValue,
@@ -2682,19 +2454,19 @@
{#orElse: orElse},
),
),
- ) as _i21.Future<T>);
+ ) as _i20.Future<T>);
@override
- _i21.Future<T?> withTransaction<T>(_i21.Future<T> Function(_i12.Transaction)? handler) => (super.noSuchMethod(
+ _i20.Future<T?> withTransaction<T>(_i20.Future<T> Function(_i11.Transaction)? handler) => (super.noSuchMethod(
Invocation.method(
#withTransaction,
[handler],
),
- returnValue: _i21.Future<T?>.value(),
- ) as _i21.Future<T?>);
+ returnValue: _i20.Future<T?>.value(),
+ ) as _i20.Future<T?>);
@override
- _i21.Future<_i37.Task?> getTaskFromBuildbucketBuild(
+ _i20.Future<_i35.Task?> getTaskFromBuildbucketBuild(
_i8.Build? build, {
String? customName,
}) =>
@@ -2704,40 +2476,26 @@
[build],
{#customName: customName},
),
- returnValue: _i21.Future<_i37.Task?>.value(),
- ) as _i21.Future<_i37.Task?>);
-
- @override
- _i21.Future<_i37.Task?> getTaskFromBuildbucketV2Build(
- _i9.Build? build, {
- String? customName,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #getTaskFromBuildbucketV2Build,
- [build],
- {#customName: customName},
- ),
- returnValue: _i21.Future<_i37.Task?>.value(),
- ) as _i21.Future<_i37.Task?>);
+ returnValue: _i20.Future<_i35.Task?>.value(),
+ ) as _i20.Future<_i35.Task?>);
}
/// A class which mocks [FakeEntry].
///
/// See the documentation for Mockito's code generation for more information.
-class MockFakeEntry extends _i1.Mock implements _i39.FakeEntry {
+class MockFakeEntry extends _i1.Mock implements _i37.FakeEntry {
MockFakeEntry() {
_i1.throwOnMissingStub(this);
}
@override
- _i40.Uint8List get value => (super.noSuchMethod(
+ _i38.Uint8List get value => (super.noSuchMethod(
Invocation.getter(#value),
- returnValue: _i40.Uint8List(0),
- ) as _i40.Uint8List);
+ returnValue: _i38.Uint8List(0),
+ ) as _i38.Uint8List);
@override
- set value(_i40.Uint8List? _value) => super.noSuchMethod(
+ set value(_i38.Uint8List? _value) => super.noSuchMethod(
Invocation.setter(
#value,
_value,
@@ -2746,8 +2504,8 @@
);
@override
- _i21.Future<_i40.Uint8List> get([
- _i21.Future<_i40.Uint8List?> Function()? create,
+ _i20.Future<_i38.Uint8List> get([
+ _i20.Future<_i38.Uint8List?> Function()? create,
Duration? ttl,
]) =>
(super.noSuchMethod(
@@ -2758,23 +2516,23 @@
ttl,
],
),
- returnValue: _i21.Future<_i40.Uint8List>.value(_i40.Uint8List(0)),
- ) as _i21.Future<_i40.Uint8List>);
+ returnValue: _i20.Future<_i38.Uint8List>.value(_i38.Uint8List(0)),
+ ) as _i20.Future<_i38.Uint8List>);
@override
- _i21.Future<void> purge({int? retries = 0}) => (super.noSuchMethod(
+ _i20.Future<void> purge({int? retries = 0}) => (super.noSuchMethod(
Invocation.method(
#purge,
[],
{#retries: retries},
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<_i40.Uint8List?> set(
- _i40.Uint8List? value, [
+ _i20.Future<_i38.Uint8List?> set(
+ _i38.Uint8List? value, [
Duration? ttl,
]) =>
(super.noSuchMethod(
@@ -2785,14 +2543,14 @@
ttl,
],
),
- returnValue: _i21.Future<_i40.Uint8List?>.value(),
- ) as _i21.Future<_i40.Uint8List?>);
+ returnValue: _i20.Future<_i38.Uint8List?>.value(),
+ ) as _i20.Future<_i38.Uint8List?>);
}
/// A class which mocks [FirestoreService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockFirestoreService extends _i1.Mock implements _i16.FirestoreService {
+class MockFirestoreService extends _i1.Mock implements _i15.FirestoreService {
MockFirestoreService() {
_i1.throwOnMissingStub(this);
}
@@ -2807,39 +2565,39 @@
) as _i5.AccessClientProvider);
@override
- _i21.Future<_i22.ProjectsDatabasesDocumentsResource> documentResource() => (super.noSuchMethod(
+ _i20.Future<_i21.ProjectsDatabasesDocumentsResource> documentResource() => (super.noSuchMethod(
Invocation.method(
#documentResource,
[],
),
returnValue:
- _i21.Future<_i22.ProjectsDatabasesDocumentsResource>.value(_FakeProjectsDatabasesDocumentsResource_28(
+ _i20.Future<_i21.ProjectsDatabasesDocumentsResource>.value(_FakeProjectsDatabasesDocumentsResource_24(
this,
Invocation.method(
#documentResource,
[],
),
)),
- ) as _i21.Future<_i22.ProjectsDatabasesDocumentsResource>);
+ ) as _i20.Future<_i21.ProjectsDatabasesDocumentsResource>);
@override
- _i21.Future<_i22.Document> getDocument(String? name) => (super.noSuchMethod(
+ _i20.Future<_i21.Document> getDocument(String? name) => (super.noSuchMethod(
Invocation.method(
#getDocument,
[name],
),
- returnValue: _i21.Future<_i22.Document>.value(_FakeDocument_29(
+ returnValue: _i20.Future<_i21.Document>.value(_FakeDocument_25(
this,
Invocation.method(
#getDocument,
[name],
),
)),
- ) as _i21.Future<_i22.Document>);
+ ) as _i20.Future<_i21.Document>);
@override
- _i21.Future<_i22.BatchWriteResponse> batchWriteDocuments(
- _i22.BatchWriteRequest? request,
+ _i20.Future<_i21.BatchWriteResponse> batchWriteDocuments(
+ _i21.BatchWriteRequest? request,
String? database,
) =>
(super.noSuchMethod(
@@ -2850,7 +2608,7 @@
database,
],
),
- returnValue: _i21.Future<_i22.BatchWriteResponse>.value(_FakeBatchWriteResponse_30(
+ returnValue: _i20.Future<_i21.BatchWriteResponse>.value(_FakeBatchWriteResponse_26(
this,
Invocation.method(
#batchWriteDocuments,
@@ -2860,29 +2618,29 @@
],
),
)),
- ) as _i21.Future<_i22.BatchWriteResponse>);
+ ) as _i20.Future<_i21.BatchWriteResponse>);
@override
- _i21.Future<_i22.CommitResponse> writeViaTransaction(List<_i22.Write>? writes) => (super.noSuchMethod(
+ _i20.Future<_i21.CommitResponse> writeViaTransaction(List<_i21.Write>? writes) => (super.noSuchMethod(
Invocation.method(
#writeViaTransaction,
[writes],
),
- returnValue: _i21.Future<_i22.CommitResponse>.value(_FakeCommitResponse_31(
+ returnValue: _i20.Future<_i21.CommitResponse>.value(_FakeCommitResponse_27(
this,
Invocation.method(
#writeViaTransaction,
[writes],
),
)),
- ) as _i21.Future<_i22.CommitResponse>);
+ ) as _i20.Future<_i21.CommitResponse>);
@override
- _i21.Future<List<_i41.Commit>> queryRecentCommits({
+ _i20.Future<List<_i39.Commit>> queryRecentCommits({
int? limit = 100,
int? timestamp,
String? branch,
- required _i14.RepositorySlug? slug,
+ required _i13.RepositorySlug? slug,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -2895,21 +2653,21 @@
#slug: slug,
},
),
- returnValue: _i21.Future<List<_i41.Commit>>.value(<_i41.Commit>[]),
- ) as _i21.Future<List<_i41.Commit>>);
+ returnValue: _i20.Future<List<_i39.Commit>>.value(<_i39.Commit>[]),
+ ) as _i20.Future<List<_i39.Commit>>);
@override
- _i21.Future<List<_i42.Task>> queryCommitTasks(String? commitSha) => (super.noSuchMethod(
+ _i20.Future<List<_i40.Task>> queryCommitTasks(String? commitSha) => (super.noSuchMethod(
Invocation.method(
#queryCommitTasks,
[commitSha],
),
- returnValue: _i21.Future<List<_i42.Task>>.value(<_i42.Task>[]),
- ) as _i21.Future<List<_i42.Task>>);
+ returnValue: _i20.Future<List<_i40.Task>>.value(<_i40.Task>[]),
+ ) as _i20.Future<List<_i40.Task>>);
@override
- _i21.Future<_i23.GithubGoldStatus> queryLastGoldStatus(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i22.GithubGoldStatus> queryLastGoldStatus(
+ _i13.RepositorySlug? slug,
int? prNumber,
) =>
(super.noSuchMethod(
@@ -2920,7 +2678,7 @@
prNumber,
],
),
- returnValue: _i21.Future<_i23.GithubGoldStatus>.value(_FakeGithubGoldStatus_32(
+ returnValue: _i20.Future<_i22.GithubGoldStatus>.value(_FakeGithubGoldStatus_28(
this,
Invocation.method(
#queryLastGoldStatus,
@@ -2930,11 +2688,11 @@
],
),
)),
- ) as _i21.Future<_i23.GithubGoldStatus>);
+ ) as _i20.Future<_i22.GithubGoldStatus>);
@override
- _i21.Future<_i24.GithubBuildStatus> queryLastBuildStatus(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i23.GithubBuildStatus> queryLastBuildStatus(
+ _i13.RepositorySlug? slug,
int? prNumber,
String? head,
) =>
@@ -2947,7 +2705,7 @@
head,
],
),
- returnValue: _i21.Future<_i24.GithubBuildStatus>.value(_FakeGithubBuildStatus_33(
+ returnValue: _i20.Future<_i23.GithubBuildStatus>.value(_FakeGithubBuildStatus_29(
this,
Invocation.method(
#queryLastBuildStatus,
@@ -2958,25 +2716,25 @@
],
),
)),
- ) as _i21.Future<_i24.GithubBuildStatus>);
+ ) as _i20.Future<_i23.GithubBuildStatus>);
@override
- _i22.Value getValueFromFilter(Object? comparisonOject) => (super.noSuchMethod(
+ _i21.Value getValueFromFilter(Object? comparisonOject) => (super.noSuchMethod(
Invocation.method(
#getValueFromFilter,
[comparisonOject],
),
- returnValue: _FakeValue_34(
+ returnValue: _FakeValue_30(
this,
Invocation.method(
#getValueFromFilter,
[comparisonOject],
),
),
- ) as _i22.Value);
+ ) as _i21.Value);
@override
- _i22.Filter generateFilter(
+ _i21.Filter generateFilter(
Map<String, Object>? filterMap,
String? compositeFilterOp,
) =>
@@ -2988,7 +2746,7 @@
compositeFilterOp,
],
),
- returnValue: _FakeFilter_35(
+ returnValue: _FakeFilter_31(
this,
Invocation.method(
#generateFilter,
@@ -2998,10 +2756,10 @@
],
),
),
- ) as _i22.Filter);
+ ) as _i21.Filter);
@override
- _i21.Future<List<_i22.Document>> query(
+ _i20.Future<List<_i21.Document>> query(
String? collectionId,
Map<String, Object>? filterMap, {
int? limit,
@@ -3021,39 +2779,39 @@
#compositeFilterOp: compositeFilterOp,
},
),
- returnValue: _i21.Future<List<_i22.Document>>.value(<_i22.Document>[]),
- ) as _i21.Future<List<_i22.Document>>);
+ returnValue: _i20.Future<List<_i21.Document>>.value(<_i21.Document>[]),
+ ) as _i20.Future<List<_i21.Document>>);
@override
- List<_i22.Document> documentsFromQueryResponse(List<_i22.RunQueryResponseElement>? runQueryResponseElements) =>
+ List<_i21.Document> documentsFromQueryResponse(List<_i21.RunQueryResponseElement>? runQueryResponseElements) =>
(super.noSuchMethod(
Invocation.method(
#documentsFromQueryResponse,
[runQueryResponseElements],
),
- returnValue: <_i22.Document>[],
- ) as List<_i22.Document>);
+ returnValue: <_i21.Document>[],
+ ) as List<_i21.Document>);
}
/// A class which mocks [IssuesService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockIssuesService extends _i1.Mock implements _i14.IssuesService {
+class MockIssuesService extends _i1.Mock implements _i13.IssuesService {
MockIssuesService() {
_i1.throwOnMissingStub(this);
}
@override
- _i14.GitHub get github => (super.noSuchMethod(
+ _i13.GitHub get github => (super.noSuchMethod(
Invocation.getter(#github),
- returnValue: _FakeGitHub_20(
+ returnValue: _FakeGitHub_16(
this,
Invocation.getter(#github),
),
- ) as _i14.GitHub);
+ ) as _i13.GitHub);
@override
- _i21.Stream<_i14.Issue> listAll({
+ _i20.Stream<_i13.Issue> listAll({
int? milestoneNumber,
String? state,
String? direction,
@@ -3076,11 +2834,11 @@
#labels: labels,
},
),
- returnValue: _i21.Stream<_i14.Issue>.empty(),
- ) as _i21.Stream<_i14.Issue>);
+ returnValue: _i20.Stream<_i13.Issue>.empty(),
+ ) as _i20.Stream<_i13.Issue>);
@override
- _i21.Stream<_i14.Issue> listByUser({
+ _i20.Stream<_i13.Issue> listByUser({
int? milestoneNumber,
String? state,
String? direction,
@@ -3103,11 +2861,11 @@
#labels: labels,
},
),
- returnValue: _i21.Stream<_i14.Issue>.empty(),
- ) as _i21.Stream<_i14.Issue>);
+ returnValue: _i20.Stream<_i13.Issue>.empty(),
+ ) as _i20.Stream<_i13.Issue>);
@override
- _i21.Stream<_i14.Issue> listByOrg(
+ _i20.Stream<_i13.Issue> listByOrg(
String? org, {
int? milestoneNumber,
String? state,
@@ -3131,12 +2889,12 @@
#labels: labels,
},
),
- returnValue: _i21.Stream<_i14.Issue>.empty(),
- ) as _i21.Stream<_i14.Issue>);
+ returnValue: _i20.Stream<_i13.Issue>.empty(),
+ ) as _i20.Stream<_i13.Issue>);
@override
- _i21.Stream<_i14.Issue> listByRepo(
- _i14.RepositorySlug? slug, {
+ _i20.Stream<_i13.Issue> listByRepo(
+ _i13.RepositorySlug? slug, {
int? milestoneNumber,
String? state,
String? direction,
@@ -3159,14 +2917,14 @@
#labels: labels,
},
),
- returnValue: _i21.Stream<_i14.Issue>.empty(),
- ) as _i21.Stream<_i14.Issue>);
+ returnValue: _i20.Stream<_i13.Issue>.empty(),
+ ) as _i20.Stream<_i13.Issue>);
@override
- _i21.Stream<_i14.Reaction> listReactions(
- _i14.RepositorySlug? slug,
+ _i20.Stream<_i13.Reaction> listReactions(
+ _i13.RepositorySlug? slug,
int? issueNumber, {
- _i14.ReactionType? content,
+ _i13.ReactionType? content,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -3177,14 +2935,14 @@
],
{#content: content},
),
- returnValue: _i21.Stream<_i14.Reaction>.empty(),
- ) as _i21.Stream<_i14.Reaction>);
+ returnValue: _i20.Stream<_i13.Reaction>.empty(),
+ ) as _i20.Stream<_i13.Reaction>);
@override
- _i21.Future<_i14.Issue> edit(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.Issue> edit(
+ _i13.RepositorySlug? slug,
int? issueNumber,
- _i14.IssueRequest? issue,
+ _i13.IssueRequest? issue,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -3195,7 +2953,7 @@
issue,
],
),
- returnValue: _i21.Future<_i14.Issue>.value(_FakeIssue_36(
+ returnValue: _i20.Future<_i13.Issue>.value(_FakeIssue_32(
this,
Invocation.method(
#edit,
@@ -3206,11 +2964,11 @@
],
),
)),
- ) as _i21.Future<_i14.Issue>);
+ ) as _i20.Future<_i13.Issue>);
@override
- _i21.Future<_i14.Issue> get(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.Issue> get(
+ _i13.RepositorySlug? slug,
int? issueNumber,
) =>
(super.noSuchMethod(
@@ -3221,7 +2979,7 @@
issueNumber,
],
),
- returnValue: _i21.Future<_i14.Issue>.value(_FakeIssue_36(
+ returnValue: _i20.Future<_i13.Issue>.value(_FakeIssue_32(
this,
Invocation.method(
#get,
@@ -3231,12 +2989,12 @@
],
),
)),
- ) as _i21.Future<_i14.Issue>);
+ ) as _i20.Future<_i13.Issue>);
@override
- _i21.Future<_i14.Issue> create(
- _i14.RepositorySlug? slug,
- _i14.IssueRequest? issue,
+ _i20.Future<_i13.Issue> create(
+ _i13.RepositorySlug? slug,
+ _i13.IssueRequest? issue,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -3246,7 +3004,7 @@
issue,
],
),
- returnValue: _i21.Future<_i14.Issue>.value(_FakeIssue_36(
+ returnValue: _i20.Future<_i13.Issue>.value(_FakeIssue_32(
this,
Invocation.method(
#create,
@@ -3256,20 +3014,20 @@
],
),
)),
- ) as _i21.Future<_i14.Issue>);
+ ) as _i20.Future<_i13.Issue>);
@override
- _i21.Stream<_i14.User> listAssignees(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.User> listAssignees(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listAssignees,
[slug],
),
- returnValue: _i21.Stream<_i14.User>.empty(),
- ) as _i21.Stream<_i14.User>);
+ returnValue: _i20.Stream<_i13.User>.empty(),
+ ) as _i20.Stream<_i13.User>);
@override
- _i21.Future<bool> isAssignee(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> isAssignee(
+ _i13.RepositorySlug? slug,
String? repoName,
) =>
(super.noSuchMethod(
@@ -3280,12 +3038,12 @@
repoName,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.IssueComment> listCommentsByIssue(
- _i14.RepositorySlug? slug,
+ _i20.Stream<_i13.IssueComment> listCommentsByIssue(
+ _i13.RepositorySlug? slug,
int? issueNumber,
) =>
(super.noSuchMethod(
@@ -3296,21 +3054,21 @@
issueNumber,
],
),
- returnValue: _i21.Stream<_i14.IssueComment>.empty(),
- ) as _i21.Stream<_i14.IssueComment>);
+ returnValue: _i20.Stream<_i13.IssueComment>.empty(),
+ ) as _i20.Stream<_i13.IssueComment>);
@override
- _i21.Stream<_i14.IssueComment> listCommentsByRepo(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.IssueComment> listCommentsByRepo(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listCommentsByRepo,
[slug],
),
- returnValue: _i21.Stream<_i14.IssueComment>.empty(),
- ) as _i21.Stream<_i14.IssueComment>);
+ returnValue: _i20.Stream<_i13.IssueComment>.empty(),
+ ) as _i20.Stream<_i13.IssueComment>);
@override
- _i21.Future<_i14.IssueComment> getComment(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.IssueComment> getComment(
+ _i13.RepositorySlug? slug,
int? id,
) =>
(super.noSuchMethod(
@@ -3321,7 +3079,7 @@
id,
],
),
- returnValue: _i21.Future<_i14.IssueComment>.value(_FakeIssueComment_37(
+ returnValue: _i20.Future<_i13.IssueComment>.value(_FakeIssueComment_33(
this,
Invocation.method(
#getComment,
@@ -3331,11 +3089,11 @@
],
),
)),
- ) as _i21.Future<_i14.IssueComment>);
+ ) as _i20.Future<_i13.IssueComment>);
@override
- _i21.Future<_i14.IssueComment> createComment(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.IssueComment> createComment(
+ _i13.RepositorySlug? slug,
int? issueNumber,
String? body,
) =>
@@ -3348,7 +3106,7 @@
body,
],
),
- returnValue: _i21.Future<_i14.IssueComment>.value(_FakeIssueComment_37(
+ returnValue: _i20.Future<_i13.IssueComment>.value(_FakeIssueComment_33(
this,
Invocation.method(
#createComment,
@@ -3359,11 +3117,11 @@
],
),
)),
- ) as _i21.Future<_i14.IssueComment>);
+ ) as _i20.Future<_i13.IssueComment>);
@override
- _i21.Future<_i14.IssueComment> updateComment(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.IssueComment> updateComment(
+ _i13.RepositorySlug? slug,
int? id,
String? body,
) =>
@@ -3376,7 +3134,7 @@
body,
],
),
- returnValue: _i21.Future<_i14.IssueComment>.value(_FakeIssueComment_37(
+ returnValue: _i20.Future<_i13.IssueComment>.value(_FakeIssueComment_33(
this,
Invocation.method(
#updateComment,
@@ -3387,11 +3145,11 @@
],
),
)),
- ) as _i21.Future<_i14.IssueComment>);
+ ) as _i20.Future<_i13.IssueComment>);
@override
- _i21.Future<bool> deleteComment(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> deleteComment(
+ _i13.RepositorySlug? slug,
int? id,
) =>
(super.noSuchMethod(
@@ -3402,21 +3160,21 @@
id,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.IssueLabel> listLabels(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.IssueLabel> listLabels(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listLabels,
[slug],
),
- returnValue: _i21.Stream<_i14.IssueLabel>.empty(),
- ) as _i21.Stream<_i14.IssueLabel>);
+ returnValue: _i20.Stream<_i13.IssueLabel>.empty(),
+ ) as _i20.Stream<_i13.IssueLabel>);
@override
- _i21.Future<_i14.IssueLabel> getLabel(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.IssueLabel> getLabel(
+ _i13.RepositorySlug? slug,
String? name,
) =>
(super.noSuchMethod(
@@ -3427,7 +3185,7 @@
name,
],
),
- returnValue: _i21.Future<_i14.IssueLabel>.value(_FakeIssueLabel_38(
+ returnValue: _i20.Future<_i13.IssueLabel>.value(_FakeIssueLabel_34(
this,
Invocation.method(
#getLabel,
@@ -3437,11 +3195,11 @@
],
),
)),
- ) as _i21.Future<_i14.IssueLabel>);
+ ) as _i20.Future<_i13.IssueLabel>);
@override
- _i21.Future<_i14.IssueLabel> createLabel(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.IssueLabel> createLabel(
+ _i13.RepositorySlug? slug,
String? name, {
String? color,
String? description,
@@ -3458,7 +3216,7 @@
#description: description,
},
),
- returnValue: _i21.Future<_i14.IssueLabel>.value(_FakeIssueLabel_38(
+ returnValue: _i20.Future<_i13.IssueLabel>.value(_FakeIssueLabel_34(
this,
Invocation.method(
#createLabel,
@@ -3472,11 +3230,11 @@
},
),
)),
- ) as _i21.Future<_i14.IssueLabel>);
+ ) as _i20.Future<_i13.IssueLabel>);
@override
- _i21.Future<_i14.IssueLabel> editLabel(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.IssueLabel> editLabel(
+ _i13.RepositorySlug? slug,
String? name,
String? color,
) =>
@@ -3489,7 +3247,7 @@
color,
],
),
- returnValue: _i21.Future<_i14.IssueLabel>.value(_FakeIssueLabel_38(
+ returnValue: _i20.Future<_i13.IssueLabel>.value(_FakeIssueLabel_34(
this,
Invocation.method(
#editLabel,
@@ -3500,11 +3258,11 @@
],
),
)),
- ) as _i21.Future<_i14.IssueLabel>);
+ ) as _i20.Future<_i13.IssueLabel>);
@override
- _i21.Future<_i14.IssueLabel> updateLabel(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.IssueLabel> updateLabel(
+ _i13.RepositorySlug? slug,
String? name, {
String? newName,
String? color,
@@ -3523,7 +3281,7 @@
#description: description,
},
),
- returnValue: _i21.Future<_i14.IssueLabel>.value(_FakeIssueLabel_38(
+ returnValue: _i20.Future<_i13.IssueLabel>.value(_FakeIssueLabel_34(
this,
Invocation.method(
#updateLabel,
@@ -3538,11 +3296,11 @@
},
),
)),
- ) as _i21.Future<_i14.IssueLabel>);
+ ) as _i20.Future<_i13.IssueLabel>);
@override
- _i21.Future<bool> deleteLabel(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> deleteLabel(
+ _i13.RepositorySlug? slug,
String? name,
) =>
(super.noSuchMethod(
@@ -3553,12 +3311,12 @@
name,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.IssueLabel> listLabelsByIssue(
- _i14.RepositorySlug? slug,
+ _i20.Stream<_i13.IssueLabel> listLabelsByIssue(
+ _i13.RepositorySlug? slug,
int? issueNumber,
) =>
(super.noSuchMethod(
@@ -3569,12 +3327,12 @@
issueNumber,
],
),
- returnValue: _i21.Stream<_i14.IssueLabel>.empty(),
- ) as _i21.Stream<_i14.IssueLabel>);
+ returnValue: _i20.Stream<_i13.IssueLabel>.empty(),
+ ) as _i20.Stream<_i13.IssueLabel>);
@override
- _i21.Future<List<_i14.IssueLabel>> addLabelsToIssue(
- _i14.RepositorySlug? slug,
+ _i20.Future<List<_i13.IssueLabel>> addLabelsToIssue(
+ _i13.RepositorySlug? slug,
int? issueNumber,
List<String>? labels,
) =>
@@ -3587,12 +3345,12 @@
labels,
],
),
- returnValue: _i21.Future<List<_i14.IssueLabel>>.value(<_i14.IssueLabel>[]),
- ) as _i21.Future<List<_i14.IssueLabel>>);
+ returnValue: _i20.Future<List<_i13.IssueLabel>>.value(<_i13.IssueLabel>[]),
+ ) as _i20.Future<List<_i13.IssueLabel>>);
@override
- _i21.Future<List<_i14.IssueLabel>> replaceLabelsForIssue(
- _i14.RepositorySlug? slug,
+ _i20.Future<List<_i13.IssueLabel>> replaceLabelsForIssue(
+ _i13.RepositorySlug? slug,
int? issueNumber,
List<String>? labels,
) =>
@@ -3605,12 +3363,12 @@
labels,
],
),
- returnValue: _i21.Future<List<_i14.IssueLabel>>.value(<_i14.IssueLabel>[]),
- ) as _i21.Future<List<_i14.IssueLabel>>);
+ returnValue: _i20.Future<List<_i13.IssueLabel>>.value(<_i13.IssueLabel>[]),
+ ) as _i20.Future<List<_i13.IssueLabel>>);
@override
- _i21.Future<bool> removeLabelForIssue(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> removeLabelForIssue(
+ _i13.RepositorySlug? slug,
int? issueNumber,
String? label,
) =>
@@ -3623,12 +3381,12 @@
label,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<bool> removeAllLabelsForIssue(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> removeAllLabelsForIssue(
+ _i13.RepositorySlug? slug,
int? issueNumber,
) =>
(super.noSuchMethod(
@@ -3639,22 +3397,22 @@
issueNumber,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.Milestone> listMilestones(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.Milestone> listMilestones(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listMilestones,
[slug],
),
- returnValue: _i21.Stream<_i14.Milestone>.empty(),
- ) as _i21.Stream<_i14.Milestone>);
+ returnValue: _i20.Stream<_i13.Milestone>.empty(),
+ ) as _i20.Stream<_i13.Milestone>);
@override
- _i21.Future<_i14.Milestone> createMilestone(
- _i14.RepositorySlug? slug,
- _i14.CreateMilestone? request,
+ _i20.Future<_i13.Milestone> createMilestone(
+ _i13.RepositorySlug? slug,
+ _i13.CreateMilestone? request,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -3664,7 +3422,7 @@
request,
],
),
- returnValue: _i21.Future<_i14.Milestone>.value(_FakeMilestone_39(
+ returnValue: _i20.Future<_i13.Milestone>.value(_FakeMilestone_35(
this,
Invocation.method(
#createMilestone,
@@ -3674,11 +3432,11 @@
],
),
)),
- ) as _i21.Future<_i14.Milestone>);
+ ) as _i20.Future<_i13.Milestone>);
@override
- _i21.Future<bool> deleteMilestone(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> deleteMilestone(
+ _i13.RepositorySlug? slug,
int? number,
) =>
(super.noSuchMethod(
@@ -3689,12 +3447,12 @@
number,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.TimelineEvent> listTimeline(
- _i14.RepositorySlug? slug,
+ _i20.Stream<_i13.TimelineEvent> listTimeline(
+ _i13.RepositorySlug? slug,
int? issueNumber,
) =>
(super.noSuchMethod(
@@ -3705,12 +3463,12 @@
issueNumber,
],
),
- returnValue: _i21.Stream<_i14.TimelineEvent>.empty(),
- ) as _i21.Stream<_i14.TimelineEvent>);
+ returnValue: _i20.Stream<_i13.TimelineEvent>.empty(),
+ ) as _i20.Stream<_i13.TimelineEvent>);
@override
- _i21.Future<void> lock(
- _i14.RepositorySlug? slug,
+ _i20.Future<void> lock(
+ _i13.RepositorySlug? slug,
int? number, {
String? lockReason,
}) =>
@@ -3723,13 +3481,13 @@
],
{#lockReason: lockReason},
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<void> unlock(
- _i14.RepositorySlug? slug,
+ _i20.Future<void> unlock(
+ _i13.RepositorySlug? slug,
int? number,
) =>
(super.noSuchMethod(
@@ -3740,15 +3498,15 @@
number,
],
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
}
/// A class which mocks [GithubChecksService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockGithubChecksService extends _i1.Mock implements _i16.GithubChecksService {
+class MockGithubChecksService extends _i1.Mock implements _i15.GithubChecksService {
MockGithubChecksService() {
_i1.throwOnMissingStub(this);
}
@@ -3772,16 +3530,16 @@
);
@override
- _i25.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
+ _i24.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
Invocation.getter(#githubChecksUtil),
- returnValue: _FakeGithubChecksUtil_40(
+ returnValue: _FakeGithubChecksUtil_36(
this,
Invocation.getter(#githubChecksUtil),
),
- ) as _i25.GithubChecksUtil);
+ ) as _i24.GithubChecksUtil);
@override
- set githubChecksUtil(_i25.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
+ set githubChecksUtil(_i24.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
Invocation.setter(
#githubChecksUtil,
_githubChecksUtil,
@@ -3790,10 +3548,10 @@
);
@override
- _i21.Future<void> handleCheckSuite(
- _i14.PullRequest? pullRequest,
- _i34.CheckSuiteEvent? checkSuiteEvent,
- _i16.Scheduler? scheduler,
+ _i20.Future<void> handleCheckSuite(
+ _i13.PullRequest? pullRequest,
+ _i32.CheckSuiteEvent? checkSuiteEvent,
+ _i15.Scheduler? scheduler,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -3804,15 +3562,15 @@
scheduler,
],
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<bool> updateCheckStatus(
- _i43.BuildPushMessage? buildPushMessage,
- _i16.LuciBuildService? luciBuildService,
- _i14.RepositorySlug? slug, {
+ _i20.Future<bool> updateCheckStatus(
+ _i41.BuildPushMessage? buildPushMessage,
+ _i15.LuciBuildService? luciBuildService,
+ _i13.RepositorySlug? slug, {
bool? rescheduled = false,
}) =>
(super.noSuchMethod(
@@ -3825,11 +3583,11 @@
],
{#rescheduled: rescheduled},
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- bool taskFailed(_i43.BuildPushMessage? buildPushMessage) => (super.noSuchMethod(
+ bool taskFailed(_i41.BuildPushMessage? buildPushMessage) => (super.noSuchMethod(
Invocation.method(
#taskFailed,
[buildPushMessage],
@@ -3838,7 +3596,7 @@
) as bool);
@override
- int currentAttempt(_i43.Build? build) => (super.noSuchMethod(
+ int currentAttempt(_i41.Build? build) => (super.noSuchMethod(
Invocation.method(
#currentAttempt,
[build],
@@ -3852,7 +3610,7 @@
#getGithubSummary,
[summary],
),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.method(
#getGithubSummary,
@@ -3862,38 +3620,38 @@
) as String);
@override
- _i14.CheckRunConclusion conclusionForResult(_i43.Result? result) => (super.noSuchMethod(
+ _i13.CheckRunConclusion conclusionForResult(_i41.Result? result) => (super.noSuchMethod(
Invocation.method(
#conclusionForResult,
[result],
),
- returnValue: _FakeCheckRunConclusion_41(
+ returnValue: _FakeCheckRunConclusion_37(
this,
Invocation.method(
#conclusionForResult,
[result],
),
),
- ) as _i14.CheckRunConclusion);
+ ) as _i13.CheckRunConclusion);
@override
- _i14.CheckRunStatus statusForResult(_i43.Status? status) => (super.noSuchMethod(
+ _i13.CheckRunStatus statusForResult(_i41.Status? status) => (super.noSuchMethod(
Invocation.method(
#statusForResult,
[status],
),
- returnValue: _FakeCheckRunStatus_42(
+ returnValue: _FakeCheckRunStatus_38(
this,
Invocation.method(
#statusForResult,
[status],
),
),
- ) as _i14.CheckRunStatus);
+ ) as _i13.CheckRunStatus);
@override
- _i21.Future<_i14.PullRequest?> findMatchingPullRequest(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.PullRequest?> findMatchingPullRequest(
+ _i13.RepositorySlug? slug,
String? headSha,
int? checkSuiteId,
) =>
@@ -3906,190 +3664,22 @@
checkSuiteId,
],
),
- returnValue: _i21.Future<_i14.PullRequest?>.value(),
- ) as _i21.Future<_i14.PullRequest?>);
-}
-
-/// A class which mocks [GithubChecksServiceV2].
-///
-/// See the documentation for Mockito's code generation for more information.
-class MockGithubChecksServiceV2 extends _i1.Mock implements _i44.GithubChecksServiceV2 {
- MockGithubChecksServiceV2() {
- _i1.throwOnMissingStub(this);
- }
-
- @override
- _i3.Config get config => (super.noSuchMethod(
- Invocation.getter(#config),
- returnValue: _FakeConfig_1(
- this,
- Invocation.getter(#config),
- ),
- ) as _i3.Config);
-
- @override
- set config(_i3.Config? _config) => super.noSuchMethod(
- Invocation.setter(
- #config,
- _config,
- ),
- returnValueForMissingStub: null,
- );
-
- @override
- _i25.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
- Invocation.getter(#githubChecksUtil),
- returnValue: _FakeGithubChecksUtil_40(
- this,
- Invocation.getter(#githubChecksUtil),
- ),
- ) as _i25.GithubChecksUtil);
-
- @override
- set githubChecksUtil(_i25.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
- Invocation.setter(
- #githubChecksUtil,
- _githubChecksUtil,
- ),
- returnValueForMissingStub: null,
- );
-
- @override
- _i21.Future<void> handleCheckSuite(
- _i14.PullRequest? pullRequest,
- _i34.CheckSuiteEvent? checkSuiteEvent,
- _i45.SchedulerV2? scheduler,
- ) =>
- (super.noSuchMethod(
- Invocation.method(
- #handleCheckSuite,
- [
- pullRequest,
- checkSuiteEvent,
- scheduler,
- ],
- ),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
-
- @override
- _i21.Future<bool> updateCheckStatus({
- required _i9.Build? build,
- required Map<String, dynamic>? userDataMap,
- required _i46.LuciBuildServiceV2? luciBuildService,
- required _i14.RepositorySlug? slug,
- bool? rescheduled = false,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #updateCheckStatus,
- [],
- {
- #build: build,
- #userDataMap: userDataMap,
- #luciBuildService: luciBuildService,
- #slug: slug,
- #rescheduled: rescheduled,
- },
- ),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
-
- @override
- bool taskFailed(_i9.Status? status) => (super.noSuchMethod(
- Invocation.method(
- #taskFailed,
- [status],
- ),
- returnValue: false,
- ) as bool);
-
- @override
- int currentAttempt(List<_i9.StringPair>? tags) => (super.noSuchMethod(
- Invocation.method(
- #currentAttempt,
- [tags],
- ),
- returnValue: 0,
- ) as int);
-
- @override
- String getGithubSummary(String? summary) => (super.noSuchMethod(
- Invocation.method(
- #getGithubSummary,
- [summary],
- ),
- returnValue: _i32.dummyValue<String>(
- this,
- Invocation.method(
- #getGithubSummary,
- [summary],
- ),
- ),
- ) as String);
-
- @override
- _i14.CheckRunConclusion conclusionForResult(_i9.Status? status) => (super.noSuchMethod(
- Invocation.method(
- #conclusionForResult,
- [status],
- ),
- returnValue: _FakeCheckRunConclusion_41(
- this,
- Invocation.method(
- #conclusionForResult,
- [status],
- ),
- ),
- ) as _i14.CheckRunConclusion);
-
- @override
- _i14.CheckRunStatus statusForResult(_i9.Status? status) => (super.noSuchMethod(
- Invocation.method(
- #statusForResult,
- [status],
- ),
- returnValue: _FakeCheckRunStatus_42(
- this,
- Invocation.method(
- #statusForResult,
- [status],
- ),
- ),
- ) as _i14.CheckRunStatus);
-
- @override
- _i21.Future<_i14.PullRequest?> findMatchingPullRequest(
- _i14.RepositorySlug? slug,
- String? headSha,
- int? checkSuiteId,
- ) =>
- (super.noSuchMethod(
- Invocation.method(
- #findMatchingPullRequest,
- [
- slug,
- headSha,
- checkSuiteId,
- ],
- ),
- returnValue: _i21.Future<_i14.PullRequest?>.value(),
- ) as _i21.Future<_i14.PullRequest?>);
+ returnValue: _i20.Future<_i13.PullRequest?>.value(),
+ ) as _i20.Future<_i13.PullRequest?>);
}
/// A class which mocks [GithubChecksUtil].
///
/// See the documentation for Mockito's code generation for more information.
-class MockGithubChecksUtil extends _i1.Mock implements _i25.GithubChecksUtil {
+class MockGithubChecksUtil extends _i1.Mock implements _i24.GithubChecksUtil {
MockGithubChecksUtil() {
_i1.throwOnMissingStub(this);
}
@override
- _i21.Future<Map<String, _i14.CheckRun>> allCheckRuns(
- _i14.GitHub? gitHubClient,
- _i34.CheckSuiteEvent? checkSuiteEvent,
+ _i20.Future<Map<String, _i13.CheckRun>> allCheckRuns(
+ _i13.GitHub? gitHubClient,
+ _i32.CheckSuiteEvent? checkSuiteEvent,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -4099,13 +3689,13 @@
checkSuiteEvent,
],
),
- returnValue: _i21.Future<Map<String, _i14.CheckRun>>.value(<String, _i14.CheckRun>{}),
- ) as _i21.Future<Map<String, _i14.CheckRun>>);
+ returnValue: _i20.Future<Map<String, _i13.CheckRun>>.value(<String, _i13.CheckRun>{}),
+ ) as _i20.Future<Map<String, _i13.CheckRun>>);
@override
- _i21.Future<_i14.CheckSuite> getCheckSuite(
- _i14.GitHub? gitHubClient,
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.CheckSuite> getCheckSuite(
+ _i13.GitHub? gitHubClient,
+ _i13.RepositorySlug? slug,
int? checkSuiteId,
) =>
(super.noSuchMethod(
@@ -4117,7 +3707,7 @@
checkSuiteId,
],
),
- returnValue: _i21.Future<_i14.CheckSuite>.value(_FakeCheckSuite_43(
+ returnValue: _i20.Future<_i13.CheckSuite>.value(_FakeCheckSuite_39(
this,
Invocation.method(
#getCheckSuite,
@@ -4128,12 +3718,12 @@
],
),
)),
- ) as _i21.Future<_i14.CheckSuite>);
+ ) as _i20.Future<_i13.CheckSuite>);
@override
- _i21.Future<List<_i14.CheckSuite>> listCheckSuitesForRef(
- _i14.GitHub? gitHubClient,
- _i14.RepositorySlug? slug, {
+ _i20.Future<List<_i13.CheckSuite>> listCheckSuitesForRef(
+ _i13.GitHub? gitHubClient,
+ _i13.RepositorySlug? slug, {
required String? ref,
int? appId,
String? checkName,
@@ -4151,18 +3741,18 @@
#checkName: checkName,
},
),
- returnValue: _i21.Future<List<_i14.CheckSuite>>.value(<_i14.CheckSuite>[]),
- ) as _i21.Future<List<_i14.CheckSuite>>);
+ returnValue: _i20.Future<List<_i13.CheckSuite>>.value(<_i13.CheckSuite>[]),
+ ) as _i20.Future<List<_i13.CheckSuite>>);
@override
- _i21.Future<void> updateCheckRun(
+ _i20.Future<void> updateCheckRun(
_i3.Config? config,
- _i14.RepositorySlug? slug,
- _i14.CheckRun? checkRun, {
- _i14.CheckRunStatus? status = _i14.CheckRunStatus.queued,
- _i14.CheckRunConclusion? conclusion,
+ _i13.RepositorySlug? slug,
+ _i13.CheckRun? checkRun, {
+ _i13.CheckRunStatus? status = _i13.CheckRunStatus.queued,
+ _i13.CheckRunConclusion? conclusion,
String? detailsUrl,
- _i14.CheckRunOutput? output,
+ _i13.CheckRunOutput? output,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -4179,14 +3769,14 @@
#output: output,
},
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<_i14.CheckRun> getCheckRun(
+ _i20.Future<_i13.CheckRun> getCheckRun(
_i3.Config? config,
- _i14.RepositorySlug? slug,
+ _i13.RepositorySlug? slug,
int? id,
) =>
(super.noSuchMethod(
@@ -4198,7 +3788,7 @@
id,
],
),
- returnValue: _i21.Future<_i14.CheckRun>.value(_FakeCheckRun_44(
+ returnValue: _i20.Future<_i13.CheckRun>.value(_FakeCheckRun_40(
this,
Invocation.method(
#getCheckRun,
@@ -4209,15 +3799,15 @@
],
),
)),
- ) as _i21.Future<_i14.CheckRun>);
+ ) as _i20.Future<_i13.CheckRun>);
@override
- _i21.Future<_i14.CheckRun> createCheckRun(
+ _i20.Future<_i13.CheckRun> createCheckRun(
_i3.Config? config,
- _i14.RepositorySlug? slug,
+ _i13.RepositorySlug? slug,
String? sha,
String? name, {
- _i14.CheckRunOutput? output,
+ _i13.CheckRunOutput? output,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -4230,7 +3820,7 @@
],
{#output: output},
),
- returnValue: _i21.Future<_i14.CheckRun>.value(_FakeCheckRun_44(
+ returnValue: _i20.Future<_i13.CheckRun>.value(_FakeCheckRun_40(
this,
Invocation.method(
#createCheckRun,
@@ -4243,29 +3833,29 @@
{#output: output},
),
)),
- ) as _i21.Future<_i14.CheckRun>);
+ ) as _i20.Future<_i13.CheckRun>);
}
/// A class which mocks [GithubService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockGithubService extends _i1.Mock implements _i18.GithubService {
+class MockGithubService extends _i1.Mock implements _i17.GithubService {
MockGithubService() {
_i1.throwOnMissingStub(this);
}
@override
- _i14.GitHub get github => (super.noSuchMethod(
+ _i13.GitHub get github => (super.noSuchMethod(
Invocation.getter(#github),
- returnValue: _FakeGitHub_20(
+ returnValue: _FakeGitHub_16(
this,
Invocation.getter(#github),
),
- ) as _i14.GitHub);
+ ) as _i13.GitHub);
@override
- _i21.Future<List<_i14.RepositoryCommit>> listBranchedCommits(
- _i14.RepositorySlug? slug,
+ _i20.Future<List<_i13.RepositoryCommit>> listBranchedCommits(
+ _i13.RepositorySlug? slug,
String? branch,
int? lastCommitTimestampMills,
) =>
@@ -4278,12 +3868,12 @@
lastCommitTimestampMills,
],
),
- returnValue: _i21.Future<List<_i14.RepositoryCommit>>.value(<_i14.RepositoryCommit>[]),
- ) as _i21.Future<List<_i14.RepositoryCommit>>);
+ returnValue: _i20.Future<List<_i13.RepositoryCommit>>.value(<_i13.RepositoryCommit>[]),
+ ) as _i20.Future<List<_i13.RepositoryCommit>>);
@override
- _i21.Future<List<_i14.PullRequest>> listPullRequests(
- _i14.RepositorySlug? slug,
+ _i20.Future<List<_i13.PullRequest>> listPullRequests(
+ _i13.RepositorySlug? slug,
String? branch,
) =>
(super.noSuchMethod(
@@ -4294,17 +3884,17 @@
branch,
],
),
- returnValue: _i21.Future<List<_i14.PullRequest>>.value(<_i14.PullRequest>[]),
- ) as _i21.Future<List<_i14.PullRequest>>);
+ returnValue: _i20.Future<List<_i13.PullRequest>>.value(<_i13.PullRequest>[]),
+ ) as _i20.Future<List<_i13.PullRequest>>);
@override
- _i21.Future<_i14.PullRequest> createPullRequest(
- _i14.RepositorySlug? slug, {
+ _i20.Future<_i13.PullRequest> createPullRequest(
+ _i13.RepositorySlug? slug, {
required String? title,
String? body,
String? commitMessage,
- required _i14.GitReference? baseRef,
- List<_i14.CreateGitTreeEntry>? entries,
+ required _i13.GitReference? baseRef,
+ List<_i13.CreateGitTreeEntry>? entries,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -4318,7 +3908,7 @@
#entries: entries,
},
),
- returnValue: _i21.Future<_i14.PullRequest>.value(_FakePullRequest_45(
+ returnValue: _i20.Future<_i13.PullRequest>.value(_FakePullRequest_41(
this,
Invocation.method(
#createPullRequest,
@@ -4332,11 +3922,11 @@
},
),
)),
- ) as _i21.Future<_i14.PullRequest>);
+ ) as _i20.Future<_i13.PullRequest>);
@override
- _i21.Future<void> assignReviewer(
- _i14.RepositorySlug? slug, {
+ _i20.Future<void> assignReviewer(
+ _i13.RepositorySlug? slug, {
int? pullRequestNumber,
String? reviewer,
}) =>
@@ -4349,13 +3939,13 @@
#reviewer: reviewer,
},
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<List<_i14.IssueLabel>> getIssueLabels(
- _i14.RepositorySlug? slug,
+ _i20.Future<List<_i13.IssueLabel>> getIssueLabels(
+ _i13.RepositorySlug? slug,
int? issueNumber,
) =>
(super.noSuchMethod(
@@ -4366,12 +3956,12 @@
issueNumber,
],
),
- returnValue: _i21.Future<List<_i14.IssueLabel>>.value(<_i14.IssueLabel>[]),
- ) as _i21.Future<List<_i14.IssueLabel>>);
+ returnValue: _i20.Future<List<_i13.IssueLabel>>.value(<_i13.IssueLabel>[]),
+ ) as _i20.Future<List<_i13.IssueLabel>>);
@override
- _i21.Future<List<_i14.IssueLabel>> addIssueLabels(
- _i14.RepositorySlug? slug,
+ _i20.Future<List<_i13.IssueLabel>> addIssueLabels(
+ _i13.RepositorySlug? slug,
int? issueNumber,
List<String>? labels,
) =>
@@ -4384,12 +3974,12 @@
labels,
],
),
- returnValue: _i21.Future<List<_i14.IssueLabel>>.value(<_i14.IssueLabel>[]),
- ) as _i21.Future<List<_i14.IssueLabel>>);
+ returnValue: _i20.Future<List<_i13.IssueLabel>>.value(<_i13.IssueLabel>[]),
+ ) as _i20.Future<List<_i13.IssueLabel>>);
@override
- _i21.Future<List<_i14.Issue>> listIssues(
- _i14.RepositorySlug? slug, {
+ _i20.Future<List<_i13.Issue>> listIssues(
+ _i13.RepositorySlug? slug, {
List<String>? labels,
String? state = r'open',
}) =>
@@ -4402,23 +3992,23 @@
#state: state,
},
),
- returnValue: _i21.Future<List<_i14.Issue>>.value(<_i14.Issue>[]),
- ) as _i21.Future<List<_i14.Issue>>);
+ returnValue: _i20.Future<List<_i13.Issue>>.value(<_i13.Issue>[]),
+ ) as _i20.Future<List<_i13.Issue>>);
@override
- _i21.Future<_i14.Issue>? getIssue(
- _i14.RepositorySlug? slug, {
+ _i20.Future<_i13.Issue>? getIssue(
+ _i13.RepositorySlug? slug, {
required int? issueNumber,
}) =>
(super.noSuchMethod(Invocation.method(
#getIssue,
[slug],
{#issueNumber: issueNumber},
- )) as _i21.Future<_i14.Issue>?);
+ )) as _i20.Future<_i13.Issue>?);
@override
- _i21.Future<void> assignIssue(
- _i14.RepositorySlug? slug, {
+ _i20.Future<void> assignIssue(
+ _i13.RepositorySlug? slug, {
required int? issueNumber,
required String? assignee,
}) =>
@@ -4431,13 +4021,13 @@
#assignee: assignee,
},
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<_i14.Issue> createIssue(
- _i14.RepositorySlug? slug, {
+ _i20.Future<_i13.Issue> createIssue(
+ _i13.RepositorySlug? slug, {
String? title,
String? body,
List<String>? labels,
@@ -4454,7 +4044,7 @@
#assignee: assignee,
},
),
- returnValue: _i21.Future<_i14.Issue>.value(_FakeIssue_36(
+ returnValue: _i20.Future<_i13.Issue>.value(_FakeIssue_32(
this,
Invocation.method(
#createIssue,
@@ -4467,11 +4057,11 @@
},
),
)),
- ) as _i21.Future<_i14.Issue>);
+ ) as _i20.Future<_i13.Issue>);
@override
- _i21.Future<_i14.IssueComment?> createComment(
- _i14.RepositorySlug? slug, {
+ _i20.Future<_i13.IssueComment?> createComment(
+ _i13.RepositorySlug? slug, {
required int? issueNumber,
required String? body,
}) =>
@@ -4484,12 +4074,12 @@
#body: body,
},
),
- returnValue: _i21.Future<_i14.IssueComment?>.value(),
- ) as _i21.Future<_i14.IssueComment?>);
+ returnValue: _i20.Future<_i13.IssueComment?>.value(),
+ ) as _i20.Future<_i13.IssueComment?>);
@override
- _i21.Future<List<_i14.IssueLabel>> replaceLabelsForIssue(
- _i14.RepositorySlug? slug, {
+ _i20.Future<List<_i13.IssueLabel>> replaceLabelsForIssue(
+ _i13.RepositorySlug? slug, {
required int? issueNumber,
required List<String>? labels,
}) =>
@@ -4502,21 +4092,21 @@
#labels: labels,
},
),
- returnValue: _i21.Future<List<_i14.IssueLabel>>.value(<_i14.IssueLabel>[]),
- ) as _i21.Future<List<_i14.IssueLabel>>);
+ returnValue: _i20.Future<List<_i13.IssueLabel>>.value(<_i13.IssueLabel>[]),
+ ) as _i20.Future<List<_i13.IssueLabel>>);
@override
- _i21.Future<List<String>> listFiles(_i14.PullRequest? pullRequest) => (super.noSuchMethod(
+ _i20.Future<List<String>> listFiles(_i13.PullRequest? pullRequest) => (super.noSuchMethod(
Invocation.method(
#listFiles,
[pullRequest],
),
- returnValue: _i21.Future<List<String>>.value(<String>[]),
- ) as _i21.Future<List<String>>);
+ returnValue: _i20.Future<List<String>>.value(<String>[]),
+ ) as _i20.Future<List<String>>);
@override
- _i21.Future<String> getFileContent(
- _i14.RepositorySlug? slug,
+ _i20.Future<String> getFileContent(
+ _i13.RepositorySlug? slug,
String? path, {
String? ref,
}) =>
@@ -4529,7 +4119,7 @@
],
{#ref: ref},
),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.method(
#getFileContent,
@@ -4540,11 +4130,11 @@
{#ref: ref},
),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<_i14.GitReference> getReference(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.GitReference> getReference(
+ _i13.RepositorySlug? slug,
String? ref,
) =>
(super.noSuchMethod(
@@ -4555,7 +4145,7 @@
ref,
],
),
- returnValue: _i21.Future<_i14.GitReference>.value(_FakeGitReference_46(
+ returnValue: _i20.Future<_i13.GitReference>.value(_FakeGitReference_42(
this,
Invocation.method(
#getReference,
@@ -4565,26 +4155,26 @@
],
),
)),
- ) as _i21.Future<_i14.GitReference>);
+ ) as _i20.Future<_i13.GitReference>);
@override
- _i21.Future<_i14.RateLimit> getRateLimit() => (super.noSuchMethod(
+ _i20.Future<_i13.RateLimit> getRateLimit() => (super.noSuchMethod(
Invocation.method(
#getRateLimit,
[],
),
- returnValue: _i21.Future<_i14.RateLimit>.value(_FakeRateLimit_47(
+ returnValue: _i20.Future<_i13.RateLimit>.value(_FakeRateLimit_43(
this,
Invocation.method(
#getRateLimit,
[],
),
)),
- ) as _i21.Future<_i14.RateLimit>);
+ ) as _i20.Future<_i13.RateLimit>);
@override
- _i21.Future<List<_i14.Issue>> searchIssuesAndPRs(
- _i14.RepositorySlug? slug,
+ _i20.Future<List<_i13.Issue>> searchIssuesAndPRs(
+ _i13.RepositorySlug? slug,
String? query, {
String? sort,
int? pages = 2,
@@ -4601,12 +4191,12 @@
#pages: pages,
},
),
- returnValue: _i21.Future<List<_i14.Issue>>.value(<_i14.Issue>[]),
- ) as _i21.Future<List<_i14.Issue>>);
+ returnValue: _i20.Future<List<_i13.Issue>>.value(<_i13.Issue>[]),
+ ) as _i20.Future<List<_i13.Issue>>);
@override
- _i21.Future<_i14.PullRequest> getPullRequest(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.PullRequest> getPullRequest(
+ _i13.RepositorySlug? slug,
int? number,
) =>
(super.noSuchMethod(
@@ -4617,7 +4207,7 @@
number,
],
),
- returnValue: _i21.Future<_i14.PullRequest>.value(_FakePullRequest_45(
+ returnValue: _i20.Future<_i13.PullRequest>.value(_FakePullRequest_41(
this,
Invocation.method(
#getPullRequest,
@@ -4627,29 +4217,29 @@
],
),
)),
- ) as _i21.Future<_i14.PullRequest>);
+ ) as _i20.Future<_i13.PullRequest>);
}
/// A class which mocks [GitService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockGitService extends _i1.Mock implements _i14.GitService {
+class MockGitService extends _i1.Mock implements _i13.GitService {
MockGitService() {
_i1.throwOnMissingStub(this);
}
@override
- _i14.GitHub get github => (super.noSuchMethod(
+ _i13.GitHub get github => (super.noSuchMethod(
Invocation.getter(#github),
- returnValue: _FakeGitHub_20(
+ returnValue: _FakeGitHub_16(
this,
Invocation.getter(#github),
),
- ) as _i14.GitHub);
+ ) as _i13.GitHub);
@override
- _i21.Future<_i14.GitBlob> getBlob(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.GitBlob> getBlob(
+ _i13.RepositorySlug? slug,
String? sha,
) =>
(super.noSuchMethod(
@@ -4660,7 +4250,7 @@
sha,
],
),
- returnValue: _i21.Future<_i14.GitBlob>.value(_FakeGitBlob_48(
+ returnValue: _i20.Future<_i13.GitBlob>.value(_FakeGitBlob_44(
this,
Invocation.method(
#getBlob,
@@ -4670,12 +4260,12 @@
],
),
)),
- ) as _i21.Future<_i14.GitBlob>);
+ ) as _i20.Future<_i13.GitBlob>);
@override
- _i21.Future<_i14.GitBlob> createBlob(
- _i14.RepositorySlug? slug,
- _i14.CreateGitBlob? blob,
+ _i20.Future<_i13.GitBlob> createBlob(
+ _i13.RepositorySlug? slug,
+ _i13.CreateGitBlob? blob,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -4685,7 +4275,7 @@
blob,
],
),
- returnValue: _i21.Future<_i14.GitBlob>.value(_FakeGitBlob_48(
+ returnValue: _i20.Future<_i13.GitBlob>.value(_FakeGitBlob_44(
this,
Invocation.method(
#createBlob,
@@ -4695,11 +4285,11 @@
],
),
)),
- ) as _i21.Future<_i14.GitBlob>);
+ ) as _i20.Future<_i13.GitBlob>);
@override
- _i21.Future<_i14.GitCommit> getCommit(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.GitCommit> getCommit(
+ _i13.RepositorySlug? slug,
String? sha,
) =>
(super.noSuchMethod(
@@ -4710,7 +4300,7 @@
sha,
],
),
- returnValue: _i21.Future<_i14.GitCommit>.value(_FakeGitCommit_49(
+ returnValue: _i20.Future<_i13.GitCommit>.value(_FakeGitCommit_45(
this,
Invocation.method(
#getCommit,
@@ -4720,12 +4310,12 @@
],
),
)),
- ) as _i21.Future<_i14.GitCommit>);
+ ) as _i20.Future<_i13.GitCommit>);
@override
- _i21.Future<_i14.GitCommit> createCommit(
- _i14.RepositorySlug? slug,
- _i14.CreateGitCommit? commit,
+ _i20.Future<_i13.GitCommit> createCommit(
+ _i13.RepositorySlug? slug,
+ _i13.CreateGitCommit? commit,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -4735,7 +4325,7 @@
commit,
],
),
- returnValue: _i21.Future<_i14.GitCommit>.value(_FakeGitCommit_49(
+ returnValue: _i20.Future<_i13.GitCommit>.value(_FakeGitCommit_45(
this,
Invocation.method(
#createCommit,
@@ -4745,11 +4335,11 @@
],
),
)),
- ) as _i21.Future<_i14.GitCommit>);
+ ) as _i20.Future<_i13.GitCommit>);
@override
- _i21.Future<_i14.GitReference> getReference(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.GitReference> getReference(
+ _i13.RepositorySlug? slug,
String? ref,
) =>
(super.noSuchMethod(
@@ -4760,7 +4350,7 @@
ref,
],
),
- returnValue: _i21.Future<_i14.GitReference>.value(_FakeGitReference_46(
+ returnValue: _i20.Future<_i13.GitReference>.value(_FakeGitReference_42(
this,
Invocation.method(
#getReference,
@@ -4770,11 +4360,11 @@
],
),
)),
- ) as _i21.Future<_i14.GitReference>);
+ ) as _i20.Future<_i13.GitReference>);
@override
- _i21.Stream<_i14.GitReference> listReferences(
- _i14.RepositorySlug? slug, {
+ _i20.Stream<_i13.GitReference> listReferences(
+ _i13.RepositorySlug? slug, {
String? type,
}) =>
(super.noSuchMethod(
@@ -4783,12 +4373,12 @@
[slug],
{#type: type},
),
- returnValue: _i21.Stream<_i14.GitReference>.empty(),
- ) as _i21.Stream<_i14.GitReference>);
+ returnValue: _i20.Stream<_i13.GitReference>.empty(),
+ ) as _i20.Stream<_i13.GitReference>);
@override
- _i21.Future<_i14.GitReference> createReference(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.GitReference> createReference(
+ _i13.RepositorySlug? slug,
String? ref,
String? sha,
) =>
@@ -4801,7 +4391,7 @@
sha,
],
),
- returnValue: _i21.Future<_i14.GitReference>.value(_FakeGitReference_46(
+ returnValue: _i20.Future<_i13.GitReference>.value(_FakeGitReference_42(
this,
Invocation.method(
#createReference,
@@ -4812,11 +4402,11 @@
],
),
)),
- ) as _i21.Future<_i14.GitReference>);
+ ) as _i20.Future<_i13.GitReference>);
@override
- _i21.Future<_i14.GitReference> editReference(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.GitReference> editReference(
+ _i13.RepositorySlug? slug,
String? ref,
String? sha, {
bool? force = false,
@@ -4831,7 +4421,7 @@
],
{#force: force},
),
- returnValue: _i21.Future<_i14.GitReference>.value(_FakeGitReference_46(
+ returnValue: _i20.Future<_i13.GitReference>.value(_FakeGitReference_42(
this,
Invocation.method(
#editReference,
@@ -4843,11 +4433,11 @@
{#force: force},
),
)),
- ) as _i21.Future<_i14.GitReference>);
+ ) as _i20.Future<_i13.GitReference>);
@override
- _i21.Future<bool> deleteReference(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> deleteReference(
+ _i13.RepositorySlug? slug,
String? ref,
) =>
(super.noSuchMethod(
@@ -4858,12 +4448,12 @@
ref,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<_i14.GitTag> getTag(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.GitTag> getTag(
+ _i13.RepositorySlug? slug,
String? sha,
) =>
(super.noSuchMethod(
@@ -4874,7 +4464,7 @@
sha,
],
),
- returnValue: _i21.Future<_i14.GitTag>.value(_FakeGitTag_50(
+ returnValue: _i20.Future<_i13.GitTag>.value(_FakeGitTag_46(
this,
Invocation.method(
#getTag,
@@ -4884,12 +4474,12 @@
],
),
)),
- ) as _i21.Future<_i14.GitTag>);
+ ) as _i20.Future<_i13.GitTag>);
@override
- _i21.Future<_i14.GitTag> createTag(
- _i14.RepositorySlug? slug,
- _i14.CreateGitTag? tag,
+ _i20.Future<_i13.GitTag> createTag(
+ _i13.RepositorySlug? slug,
+ _i13.CreateGitTag? tag,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -4899,7 +4489,7 @@
tag,
],
),
- returnValue: _i21.Future<_i14.GitTag>.value(_FakeGitTag_50(
+ returnValue: _i20.Future<_i13.GitTag>.value(_FakeGitTag_46(
this,
Invocation.method(
#createTag,
@@ -4909,11 +4499,11 @@
],
),
)),
- ) as _i21.Future<_i14.GitTag>);
+ ) as _i20.Future<_i13.GitTag>);
@override
- _i21.Future<_i14.GitTree> getTree(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.GitTree> getTree(
+ _i13.RepositorySlug? slug,
String? sha, {
bool? recursive = false,
}) =>
@@ -4926,7 +4516,7 @@
],
{#recursive: recursive},
),
- returnValue: _i21.Future<_i14.GitTree>.value(_FakeGitTree_51(
+ returnValue: _i20.Future<_i13.GitTree>.value(_FakeGitTree_47(
this,
Invocation.method(
#getTree,
@@ -4937,12 +4527,12 @@
{#recursive: recursive},
),
)),
- ) as _i21.Future<_i14.GitTree>);
+ ) as _i20.Future<_i13.GitTree>);
@override
- _i21.Future<_i14.GitTree> createTree(
- _i14.RepositorySlug? slug,
- _i14.CreateGitTree? tree,
+ _i20.Future<_i13.GitTree> createTree(
+ _i13.RepositorySlug? slug,
+ _i13.CreateGitTree? tree,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -4952,7 +4542,7 @@
tree,
],
),
- returnValue: _i21.Future<_i14.GitTree>.value(_FakeGitTree_51(
+ returnValue: _i20.Future<_i13.GitTree>.value(_FakeGitTree_47(
this,
Invocation.method(
#createTree,
@@ -4962,28 +4552,28 @@
],
),
)),
- ) as _i21.Future<_i14.GitTree>);
+ ) as _i20.Future<_i13.GitTree>);
}
/// A class which mocks [GraphQLClient].
///
/// See the documentation for Mockito's code generation for more information.
-class MockGraphQLClient extends _i1.Mock implements _i15.GraphQLClient {
+class MockGraphQLClient extends _i1.Mock implements _i14.GraphQLClient {
MockGraphQLClient() {
_i1.throwOnMissingStub(this);
}
@override
- _i15.DefaultPolicies get defaultPolicies => (super.noSuchMethod(
+ _i14.DefaultPolicies get defaultPolicies => (super.noSuchMethod(
Invocation.getter(#defaultPolicies),
- returnValue: _FakeDefaultPolicies_52(
+ returnValue: _FakeDefaultPolicies_48(
this,
Invocation.getter(#defaultPolicies),
),
- ) as _i15.DefaultPolicies);
+ ) as _i14.DefaultPolicies);
@override
- set defaultPolicies(_i15.DefaultPolicies? _defaultPolicies) => super.noSuchMethod(
+ set defaultPolicies(_i14.DefaultPolicies? _defaultPolicies) => super.noSuchMethod(
Invocation.setter(
#defaultPolicies,
_defaultPolicies,
@@ -4992,34 +4582,34 @@
);
@override
- _i15.Link get link => (super.noSuchMethod(
+ _i14.Link get link => (super.noSuchMethod(
Invocation.getter(#link),
- returnValue: _FakeLink_53(
+ returnValue: _FakeLink_49(
this,
Invocation.getter(#link),
),
- ) as _i15.Link);
+ ) as _i14.Link);
@override
- _i15.GraphQLCache get cache => (super.noSuchMethod(
+ _i14.GraphQLCache get cache => (super.noSuchMethod(
Invocation.getter(#cache),
- returnValue: _FakeGraphQLCache_54(
+ returnValue: _FakeGraphQLCache_50(
this,
Invocation.getter(#cache),
),
- ) as _i15.GraphQLCache);
+ ) as _i14.GraphQLCache);
@override
- _i15.QueryManager get queryManager => (super.noSuchMethod(
+ _i14.QueryManager get queryManager => (super.noSuchMethod(
Invocation.getter(#queryManager),
- returnValue: _FakeQueryManager_55(
+ returnValue: _FakeQueryManager_51(
this,
Invocation.getter(#queryManager),
),
- ) as _i15.QueryManager);
+ ) as _i14.QueryManager);
@override
- set queryManager(_i15.QueryManager? _queryManager) => super.noSuchMethod(
+ set queryManager(_i14.QueryManager? _queryManager) => super.noSuchMethod(
Invocation.setter(
#queryManager,
_queryManager,
@@ -5028,10 +4618,10 @@
);
@override
- _i15.GraphQLClient copyWith({
- _i15.Link? link,
- _i15.GraphQLCache? cache,
- _i15.DefaultPolicies? defaultPolicies,
+ _i14.GraphQLClient copyWith({
+ _i14.Link? link,
+ _i14.GraphQLCache? cache,
+ _i14.DefaultPolicies? defaultPolicies,
bool? alwaysRebroadcast,
}) =>
(super.noSuchMethod(
@@ -5045,7 +4635,7 @@
#alwaysRebroadcast: alwaysRebroadcast,
},
),
- returnValue: _FakeGraphQLClient_21(
+ returnValue: _FakeGraphQLClient_17(
this,
Invocation.method(
#copyWith,
@@ -5058,83 +4648,83 @@
},
),
),
- ) as _i15.GraphQLClient);
+ ) as _i14.GraphQLClient);
@override
- _i15.ObservableQuery<TParsed> watchQuery<TParsed>(_i15.WatchQueryOptions<TParsed>? options) => (super.noSuchMethod(
+ _i14.ObservableQuery<TParsed> watchQuery<TParsed>(_i14.WatchQueryOptions<TParsed>? options) => (super.noSuchMethod(
Invocation.method(
#watchQuery,
[options],
),
- returnValue: _FakeObservableQuery_56<TParsed>(
+ returnValue: _FakeObservableQuery_52<TParsed>(
this,
Invocation.method(
#watchQuery,
[options],
),
),
- ) as _i15.ObservableQuery<TParsed>);
+ ) as _i14.ObservableQuery<TParsed>);
@override
- _i15.ObservableQuery<TParsed> watchMutation<TParsed>(_i15.WatchQueryOptions<TParsed>? options) => (super.noSuchMethod(
+ _i14.ObservableQuery<TParsed> watchMutation<TParsed>(_i14.WatchQueryOptions<TParsed>? options) => (super.noSuchMethod(
Invocation.method(
#watchMutation,
[options],
),
- returnValue: _FakeObservableQuery_56<TParsed>(
+ returnValue: _FakeObservableQuery_52<TParsed>(
this,
Invocation.method(
#watchMutation,
[options],
),
),
- ) as _i15.ObservableQuery<TParsed>);
+ ) as _i14.ObservableQuery<TParsed>);
@override
- _i21.Future<_i15.QueryResult<TParsed>> query<TParsed>(_i15.QueryOptions<TParsed>? options) => (super.noSuchMethod(
+ _i20.Future<_i14.QueryResult<TParsed>> query<TParsed>(_i14.QueryOptions<TParsed>? options) => (super.noSuchMethod(
Invocation.method(
#query,
[options],
),
- returnValue: _i21.Future<_i15.QueryResult<TParsed>>.value(_FakeQueryResult_57<TParsed>(
+ returnValue: _i20.Future<_i14.QueryResult<TParsed>>.value(_FakeQueryResult_53<TParsed>(
this,
Invocation.method(
#query,
[options],
),
)),
- ) as _i21.Future<_i15.QueryResult<TParsed>>);
+ ) as _i20.Future<_i14.QueryResult<TParsed>>);
@override
- _i21.Future<_i15.QueryResult<TParsed>> mutate<TParsed>(_i15.MutationOptions<TParsed>? options) => (super.noSuchMethod(
+ _i20.Future<_i14.QueryResult<TParsed>> mutate<TParsed>(_i14.MutationOptions<TParsed>? options) => (super.noSuchMethod(
Invocation.method(
#mutate,
[options],
),
- returnValue: _i21.Future<_i15.QueryResult<TParsed>>.value(_FakeQueryResult_57<TParsed>(
+ returnValue: _i20.Future<_i14.QueryResult<TParsed>>.value(_FakeQueryResult_53<TParsed>(
this,
Invocation.method(
#mutate,
[options],
),
)),
- ) as _i21.Future<_i15.QueryResult<TParsed>>);
+ ) as _i20.Future<_i14.QueryResult<TParsed>>);
@override
- _i21.Stream<_i15.QueryResult<TParsed>> subscribe<TParsed>(_i15.SubscriptionOptions<TParsed>? options) =>
+ _i20.Stream<_i14.QueryResult<TParsed>> subscribe<TParsed>(_i14.SubscriptionOptions<TParsed>? options) =>
(super.noSuchMethod(
Invocation.method(
#subscribe,
[options],
),
- returnValue: _i21.Stream<_i15.QueryResult<TParsed>>.empty(),
- ) as _i21.Stream<_i15.QueryResult<TParsed>>);
+ returnValue: _i20.Stream<_i14.QueryResult<TParsed>>.empty(),
+ ) as _i20.Stream<_i14.QueryResult<TParsed>>);
@override
- _i21.Future<_i15.QueryResult<TParsed>> fetchMore<TParsed>(
- _i15.FetchMoreOptions? fetchMoreOptions, {
- required _i15.QueryOptions<TParsed>? originalOptions,
- required _i15.QueryResult<TParsed>? previousResult,
+ _i20.Future<_i14.QueryResult<TParsed>> fetchMore<TParsed>(
+ _i14.FetchMoreOptions? fetchMoreOptions, {
+ required _i14.QueryOptions<TParsed>? originalOptions,
+ required _i14.QueryResult<TParsed>? previousResult,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -5145,7 +4735,7 @@
#previousResult: previousResult,
},
),
- returnValue: _i21.Future<_i15.QueryResult<TParsed>>.value(_FakeQueryResult_57<TParsed>(
+ returnValue: _i20.Future<_i14.QueryResult<TParsed>>.value(_FakeQueryResult_53<TParsed>(
this,
Invocation.method(
#fetchMore,
@@ -5156,11 +4746,11 @@
},
),
)),
- ) as _i21.Future<_i15.QueryResult<TParsed>>);
+ ) as _i20.Future<_i14.QueryResult<TParsed>>);
@override
Map<String, dynamic>? readQuery(
- _i15.Request? request, {
+ _i14.Request? request, {
bool? optimistic = true,
}) =>
(super.noSuchMethod(Invocation.method(
@@ -5171,7 +4761,7 @@
@override
Map<String, dynamic>? readFragment(
- _i15.FragmentRequest? fragmentRequest, {
+ _i14.FragmentRequest? fragmentRequest, {
bool? optimistic = true,
}) =>
(super.noSuchMethod(Invocation.method(
@@ -5182,7 +4772,7 @@
@override
void writeQuery(
- _i15.Request? request, {
+ _i14.Request? request, {
required Map<String, dynamic>? data,
bool? broadcast = true,
}) =>
@@ -5200,7 +4790,7 @@
@override
void writeFragment(
- _i15.FragmentRequest? fragmentRequest, {
+ _i14.FragmentRequest? fragmentRequest, {
bool? broadcast = true,
required Map<String, dynamic>? data,
}) =>
@@ -5217,18 +4807,18 @@
);
@override
- _i21.Future<List<_i15.QueryResult<Object?>?>>? resetStore({bool? refetchQueries = true}) =>
+ _i20.Future<List<_i14.QueryResult<Object?>?>>? resetStore({bool? refetchQueries = true}) =>
(super.noSuchMethod(Invocation.method(
#resetStore,
[],
{#refetchQueries: refetchQueries},
- )) as _i21.Future<List<_i15.QueryResult<Object?>?>>?);
+ )) as _i20.Future<List<_i14.QueryResult<Object?>?>>?);
}
/// A class which mocks [HttpClient].
///
/// See the documentation for Mockito's code generation for more information.
-class MockHttpClient extends _i1.Mock implements _i26.HttpClient {
+class MockHttpClient extends _i1.Mock implements _i25.HttpClient {
MockHttpClient() {
_i1.throwOnMissingStub(this);
}
@@ -5236,7 +4826,7 @@
@override
Duration get idleTimeout => (super.noSuchMethod(
Invocation.getter(#idleTimeout),
- returnValue: _FakeDuration_19(
+ returnValue: _FakeDuration_15(
this,
Invocation.getter(#idleTimeout),
),
@@ -5295,7 +4885,7 @@
@override
set authenticate(
- _i21.Future<bool> Function(
+ _i20.Future<bool> Function(
Uri,
String,
String?,
@@ -5310,7 +4900,7 @@
@override
set connectionFactory(
- _i21.Future<_i26.ConnectionTask<_i26.Socket>> Function(
+ _i20.Future<_i25.ConnectionTask<_i25.Socket>> Function(
Uri,
String?,
int?,
@@ -5334,7 +4924,7 @@
@override
set authenticateProxy(
- _i21.Future<bool> Function(
+ _i20.Future<bool> Function(
String,
int,
String,
@@ -5351,7 +4941,7 @@
@override
set badCertificateCallback(
bool Function(
- _i26.X509Certificate,
+ _i25.X509Certificate,
String,
int,
)? callback) =>
@@ -5373,7 +4963,7 @@
);
@override
- _i21.Future<_i26.HttpClientRequest> open(
+ _i20.Future<_i25.HttpClientRequest> open(
String? method,
String? host,
int? port,
@@ -5389,7 +4979,7 @@
path,
],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#open,
@@ -5401,10 +4991,10 @@
],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> openUrl(
+ _i20.Future<_i25.HttpClientRequest> openUrl(
String? method,
Uri? url,
) =>
@@ -5416,7 +5006,7 @@
url,
],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#openUrl,
@@ -5426,10 +5016,10 @@
],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> get(
+ _i20.Future<_i25.HttpClientRequest> get(
String? host,
int? port,
String? path,
@@ -5443,7 +5033,7 @@
path,
],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#get,
@@ -5454,25 +5044,25 @@
],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> getUrl(Uri? url) => (super.noSuchMethod(
+ _i20.Future<_i25.HttpClientRequest> getUrl(Uri? url) => (super.noSuchMethod(
Invocation.method(
#getUrl,
[url],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#getUrl,
[url],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> post(
+ _i20.Future<_i25.HttpClientRequest> post(
String? host,
int? port,
String? path,
@@ -5486,7 +5076,7 @@
path,
],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#post,
@@ -5497,25 +5087,25 @@
],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> postUrl(Uri? url) => (super.noSuchMethod(
+ _i20.Future<_i25.HttpClientRequest> postUrl(Uri? url) => (super.noSuchMethod(
Invocation.method(
#postUrl,
[url],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#postUrl,
[url],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> put(
+ _i20.Future<_i25.HttpClientRequest> put(
String? host,
int? port,
String? path,
@@ -5529,7 +5119,7 @@
path,
],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#put,
@@ -5540,25 +5130,25 @@
],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> putUrl(Uri? url) => (super.noSuchMethod(
+ _i20.Future<_i25.HttpClientRequest> putUrl(Uri? url) => (super.noSuchMethod(
Invocation.method(
#putUrl,
[url],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#putUrl,
[url],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> delete(
+ _i20.Future<_i25.HttpClientRequest> delete(
String? host,
int? port,
String? path,
@@ -5572,7 +5162,7 @@
path,
],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#delete,
@@ -5583,25 +5173,25 @@
],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> deleteUrl(Uri? url) => (super.noSuchMethod(
+ _i20.Future<_i25.HttpClientRequest> deleteUrl(Uri? url) => (super.noSuchMethod(
Invocation.method(
#deleteUrl,
[url],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#deleteUrl,
[url],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> patch(
+ _i20.Future<_i25.HttpClientRequest> patch(
String? host,
int? port,
String? path,
@@ -5615,7 +5205,7 @@
path,
],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#patch,
@@ -5626,25 +5216,25 @@
],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> patchUrl(Uri? url) => (super.noSuchMethod(
+ _i20.Future<_i25.HttpClientRequest> patchUrl(Uri? url) => (super.noSuchMethod(
Invocation.method(
#patchUrl,
[url],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#patchUrl,
[url],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> head(
+ _i20.Future<_i25.HttpClientRequest> head(
String? host,
int? port,
String? path,
@@ -5658,7 +5248,7 @@
path,
],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#head,
@@ -5669,28 +5259,28 @@
],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
- _i21.Future<_i26.HttpClientRequest> headUrl(Uri? url) => (super.noSuchMethod(
+ _i20.Future<_i25.HttpClientRequest> headUrl(Uri? url) => (super.noSuchMethod(
Invocation.method(
#headUrl,
[url],
),
- returnValue: _i21.Future<_i26.HttpClientRequest>.value(_FakeHttpClientRequest_58(
+ returnValue: _i20.Future<_i25.HttpClientRequest>.value(_FakeHttpClientRequest_54(
this,
Invocation.method(
#headUrl,
[url],
),
)),
- ) as _i21.Future<_i26.HttpClientRequest>);
+ ) as _i20.Future<_i25.HttpClientRequest>);
@override
void addCredentials(
Uri? url,
String? realm,
- _i26.HttpClientCredentials? credentials,
+ _i25.HttpClientCredentials? credentials,
) =>
super.noSuchMethod(
Invocation.method(
@@ -5709,7 +5299,7 @@
String? host,
int? port,
String? realm,
- _i26.HttpClientCredentials? credentials,
+ _i25.HttpClientCredentials? credentials,
) =>
super.noSuchMethod(
Invocation.method(
@@ -5738,7 +5328,7 @@
/// A class which mocks [HttpClientRequest].
///
/// See the documentation for Mockito's code generation for more information.
-class MockHttpClientRequest extends _i1.Mock implements _i26.HttpClientRequest {
+class MockHttpClientRequest extends _i1.Mock implements _i25.HttpClientRequest {
MockHttpClientRequest() {
_i1.throwOnMissingStub(this);
}
@@ -5821,7 +5411,7 @@
@override
String get method => (super.noSuchMethod(
Invocation.getter(#method),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#method),
),
@@ -5830,47 +5420,47 @@
@override
Uri get uri => (super.noSuchMethod(
Invocation.getter(#uri),
- returnValue: _FakeUri_59(
+ returnValue: _FakeUri_55(
this,
Invocation.getter(#uri),
),
) as Uri);
@override
- _i26.HttpHeaders get headers => (super.noSuchMethod(
+ _i25.HttpHeaders get headers => (super.noSuchMethod(
Invocation.getter(#headers),
- returnValue: _FakeHttpHeaders_60(
+ returnValue: _FakeHttpHeaders_56(
this,
Invocation.getter(#headers),
),
- ) as _i26.HttpHeaders);
+ ) as _i25.HttpHeaders);
@override
- List<_i26.Cookie> get cookies => (super.noSuchMethod(
+ List<_i25.Cookie> get cookies => (super.noSuchMethod(
Invocation.getter(#cookies),
- returnValue: <_i26.Cookie>[],
- ) as List<_i26.Cookie>);
+ returnValue: <_i25.Cookie>[],
+ ) as List<_i25.Cookie>);
@override
- _i21.Future<_i26.HttpClientResponse> get done => (super.noSuchMethod(
+ _i20.Future<_i25.HttpClientResponse> get done => (super.noSuchMethod(
Invocation.getter(#done),
- returnValue: _i21.Future<_i26.HttpClientResponse>.value(_FakeHttpClientResponse_61(
+ returnValue: _i20.Future<_i25.HttpClientResponse>.value(_FakeHttpClientResponse_57(
this,
Invocation.getter(#done),
)),
- ) as _i21.Future<_i26.HttpClientResponse>);
+ ) as _i20.Future<_i25.HttpClientResponse>);
@override
- _i27.Encoding get encoding => (super.noSuchMethod(
+ _i26.Encoding get encoding => (super.noSuchMethod(
Invocation.getter(#encoding),
- returnValue: _FakeEncoding_62(
+ returnValue: _FakeEncoding_58(
this,
Invocation.getter(#encoding),
),
- ) as _i27.Encoding);
+ ) as _i26.Encoding);
@override
- set encoding(_i27.Encoding? _encoding) => super.noSuchMethod(
+ set encoding(_i26.Encoding? _encoding) => super.noSuchMethod(
Invocation.setter(
#encoding,
_encoding,
@@ -5879,19 +5469,19 @@
);
@override
- _i21.Future<_i26.HttpClientResponse> close() => (super.noSuchMethod(
+ _i20.Future<_i25.HttpClientResponse> close() => (super.noSuchMethod(
Invocation.method(
#close,
[],
),
- returnValue: _i21.Future<_i26.HttpClientResponse>.value(_FakeHttpClientResponse_61(
+ returnValue: _i20.Future<_i25.HttpClientResponse>.value(_FakeHttpClientResponse_57(
this,
Invocation.method(
#close,
[],
),
)),
- ) as _i21.Future<_i26.HttpClientResponse>);
+ ) as _i20.Future<_i25.HttpClientResponse>);
@override
void abort([
@@ -5978,28 +5568,28 @@
);
@override
- _i21.Future<dynamic> addStream(_i21.Stream<List<int>>? stream) => (super.noSuchMethod(
+ _i20.Future<dynamic> addStream(_i20.Stream<List<int>>? stream) => (super.noSuchMethod(
Invocation.method(
#addStream,
[stream],
),
- returnValue: _i21.Future<dynamic>.value(),
- ) as _i21.Future<dynamic>);
+ returnValue: _i20.Future<dynamic>.value(),
+ ) as _i20.Future<dynamic>);
@override
- _i21.Future<dynamic> flush() => (super.noSuchMethod(
+ _i20.Future<dynamic> flush() => (super.noSuchMethod(
Invocation.method(
#flush,
[],
),
- returnValue: _i21.Future<dynamic>.value(),
- ) as _i21.Future<dynamic>);
+ returnValue: _i20.Future<dynamic>.value(),
+ ) as _i20.Future<dynamic>);
}
/// A class which mocks [HttpClientResponse].
///
/// See the documentation for Mockito's code generation for more information.
-class MockHttpClientResponse extends _i1.Mock implements _i26.HttpClientResponse {
+class MockHttpClientResponse extends _i1.Mock implements _i25.HttpClientResponse {
MockHttpClientResponse() {
_i1.throwOnMissingStub(this);
}
@@ -6013,7 +5603,7 @@
@override
String get reasonPhrase => (super.noSuchMethod(
Invocation.getter(#reasonPhrase),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#reasonPhrase),
),
@@ -6026,10 +5616,10 @@
) as int);
@override
- _i26.HttpClientResponseCompressionState get compressionState => (super.noSuchMethod(
+ _i25.HttpClientResponseCompressionState get compressionState => (super.noSuchMethod(
Invocation.getter(#compressionState),
- returnValue: _i26.HttpClientResponseCompressionState.notCompressed,
- ) as _i26.HttpClientResponseCompressionState);
+ returnValue: _i25.HttpClientResponseCompressionState.notCompressed,
+ ) as _i25.HttpClientResponseCompressionState);
@override
bool get persistentConnection => (super.noSuchMethod(
@@ -6044,25 +5634,25 @@
) as bool);
@override
- List<_i26.RedirectInfo> get redirects => (super.noSuchMethod(
+ List<_i25.RedirectInfo> get redirects => (super.noSuchMethod(
Invocation.getter(#redirects),
- returnValue: <_i26.RedirectInfo>[],
- ) as List<_i26.RedirectInfo>);
+ returnValue: <_i25.RedirectInfo>[],
+ ) as List<_i25.RedirectInfo>);
@override
- _i26.HttpHeaders get headers => (super.noSuchMethod(
+ _i25.HttpHeaders get headers => (super.noSuchMethod(
Invocation.getter(#headers),
- returnValue: _FakeHttpHeaders_60(
+ returnValue: _FakeHttpHeaders_56(
this,
Invocation.getter(#headers),
),
- ) as _i26.HttpHeaders);
+ ) as _i25.HttpHeaders);
@override
- List<_i26.Cookie> get cookies => (super.noSuchMethod(
+ List<_i25.Cookie> get cookies => (super.noSuchMethod(
Invocation.getter(#cookies),
- returnValue: <_i26.Cookie>[],
- ) as List<_i26.Cookie>);
+ returnValue: <_i25.Cookie>[],
+ ) as List<_i25.Cookie>);
@override
bool get isBroadcast => (super.noSuchMethod(
@@ -6071,37 +5661,37 @@
) as bool);
@override
- _i21.Future<int> get length => (super.noSuchMethod(
+ _i20.Future<int> get length => (super.noSuchMethod(
Invocation.getter(#length),
- returnValue: _i21.Future<int>.value(0),
- ) as _i21.Future<int>);
+ returnValue: _i20.Future<int>.value(0),
+ ) as _i20.Future<int>);
@override
- _i21.Future<bool> get isEmpty => (super.noSuchMethod(
+ _i20.Future<bool> get isEmpty => (super.noSuchMethod(
Invocation.getter(#isEmpty),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<List<int>> get first => (super.noSuchMethod(
+ _i20.Future<List<int>> get first => (super.noSuchMethod(
Invocation.getter(#first),
- returnValue: _i21.Future<List<int>>.value(<int>[]),
- ) as _i21.Future<List<int>>);
+ returnValue: _i20.Future<List<int>>.value(<int>[]),
+ ) as _i20.Future<List<int>>);
@override
- _i21.Future<List<int>> get last => (super.noSuchMethod(
+ _i20.Future<List<int>> get last => (super.noSuchMethod(
Invocation.getter(#last),
- returnValue: _i21.Future<List<int>>.value(<int>[]),
- ) as _i21.Future<List<int>>);
+ returnValue: _i20.Future<List<int>>.value(<int>[]),
+ ) as _i20.Future<List<int>>);
@override
- _i21.Future<List<int>> get single => (super.noSuchMethod(
+ _i20.Future<List<int>> get single => (super.noSuchMethod(
Invocation.getter(#single),
- returnValue: _i21.Future<List<int>>.value(<int>[]),
- ) as _i21.Future<List<int>>);
+ returnValue: _i20.Future<List<int>>.value(<int>[]),
+ ) as _i20.Future<List<int>>);
@override
- _i21.Future<_i26.HttpClientResponse> redirect([
+ _i20.Future<_i25.HttpClientResponse> redirect([
String? method,
Uri? url,
bool? followLoops,
@@ -6115,7 +5705,7 @@
followLoops,
],
),
- returnValue: _i21.Future<_i26.HttpClientResponse>.value(_FakeHttpClientResponse_61(
+ returnValue: _i20.Future<_i25.HttpClientResponse>.value(_FakeHttpClientResponse_57(
this,
Invocation.method(
#redirect,
@@ -6126,27 +5716,27 @@
],
),
)),
- ) as _i21.Future<_i26.HttpClientResponse>);
+ ) as _i20.Future<_i25.HttpClientResponse>);
@override
- _i21.Future<_i26.Socket> detachSocket() => (super.noSuchMethod(
+ _i20.Future<_i25.Socket> detachSocket() => (super.noSuchMethod(
Invocation.method(
#detachSocket,
[],
),
- returnValue: _i21.Future<_i26.Socket>.value(_FakeSocket_63(
+ returnValue: _i20.Future<_i25.Socket>.value(_FakeSocket_59(
this,
Invocation.method(
#detachSocket,
[],
),
)),
- ) as _i21.Future<_i26.Socket>);
+ ) as _i20.Future<_i25.Socket>);
@override
- _i21.Stream<List<int>> asBroadcastStream({
- void Function(_i21.StreamSubscription<List<int>>)? onListen,
- void Function(_i21.StreamSubscription<List<int>>)? onCancel,
+ _i20.Stream<List<int>> asBroadcastStream({
+ void Function(_i20.StreamSubscription<List<int>>)? onListen,
+ void Function(_i20.StreamSubscription<List<int>>)? onCancel,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -6157,11 +5747,11 @@
#onCancel: onCancel,
},
),
- returnValue: _i21.Stream<List<int>>.empty(),
- ) as _i21.Stream<List<int>>);
+ returnValue: _i20.Stream<List<int>>.empty(),
+ ) as _i20.Stream<List<int>>);
@override
- _i21.StreamSubscription<List<int>> listen(
+ _i20.StreamSubscription<List<int>> listen(
void Function(List<int>)? onData, {
Function? onError,
void Function()? onDone,
@@ -6177,7 +5767,7 @@
#cancelOnError: cancelOnError,
},
),
- returnValue: _FakeStreamSubscription_64<List<int>>(
+ returnValue: _FakeStreamSubscription_60<List<int>>(
this,
Invocation.method(
#listen,
@@ -6189,46 +5779,46 @@
},
),
),
- ) as _i21.StreamSubscription<List<int>>);
+ ) as _i20.StreamSubscription<List<int>>);
@override
- _i21.Stream<List<int>> where(bool Function(List<int>)? test) => (super.noSuchMethod(
+ _i20.Stream<List<int>> where(bool Function(List<int>)? test) => (super.noSuchMethod(
Invocation.method(
#where,
[test],
),
- returnValue: _i21.Stream<List<int>>.empty(),
- ) as _i21.Stream<List<int>>);
+ returnValue: _i20.Stream<List<int>>.empty(),
+ ) as _i20.Stream<List<int>>);
@override
- _i21.Stream<S> map<S>(S Function(List<int>)? convert) => (super.noSuchMethod(
+ _i20.Stream<S> map<S>(S Function(List<int>)? convert) => (super.noSuchMethod(
Invocation.method(
#map,
[convert],
),
- returnValue: _i21.Stream<S>.empty(),
- ) as _i21.Stream<S>);
+ returnValue: _i20.Stream<S>.empty(),
+ ) as _i20.Stream<S>);
@override
- _i21.Stream<E> asyncMap<E>(_i21.FutureOr<E> Function(List<int>)? convert) => (super.noSuchMethod(
+ _i20.Stream<E> asyncMap<E>(_i20.FutureOr<E> Function(List<int>)? convert) => (super.noSuchMethod(
Invocation.method(
#asyncMap,
[convert],
),
- returnValue: _i21.Stream<E>.empty(),
- ) as _i21.Stream<E>);
+ returnValue: _i20.Stream<E>.empty(),
+ ) as _i20.Stream<E>);
@override
- _i21.Stream<E> asyncExpand<E>(_i21.Stream<E>? Function(List<int>)? convert) => (super.noSuchMethod(
+ _i20.Stream<E> asyncExpand<E>(_i20.Stream<E>? Function(List<int>)? convert) => (super.noSuchMethod(
Invocation.method(
#asyncExpand,
[convert],
),
- returnValue: _i21.Stream<E>.empty(),
- ) as _i21.Stream<E>);
+ returnValue: _i20.Stream<E>.empty(),
+ ) as _i20.Stream<E>);
@override
- _i21.Stream<List<int>> handleError(
+ _i20.Stream<List<int>> handleError(
Function? onError, {
bool Function(dynamic)? test,
}) =>
@@ -6238,38 +5828,38 @@
[onError],
{#test: test},
),
- returnValue: _i21.Stream<List<int>>.empty(),
- ) as _i21.Stream<List<int>>);
+ returnValue: _i20.Stream<List<int>>.empty(),
+ ) as _i20.Stream<List<int>>);
@override
- _i21.Stream<S> expand<S>(Iterable<S> Function(List<int>)? convert) => (super.noSuchMethod(
+ _i20.Stream<S> expand<S>(Iterable<S> Function(List<int>)? convert) => (super.noSuchMethod(
Invocation.method(
#expand,
[convert],
),
- returnValue: _i21.Stream<S>.empty(),
- ) as _i21.Stream<S>);
+ returnValue: _i20.Stream<S>.empty(),
+ ) as _i20.Stream<S>);
@override
- _i21.Future<dynamic> pipe(_i21.StreamConsumer<List<int>>? streamConsumer) => (super.noSuchMethod(
+ _i20.Future<dynamic> pipe(_i20.StreamConsumer<List<int>>? streamConsumer) => (super.noSuchMethod(
Invocation.method(
#pipe,
[streamConsumer],
),
- returnValue: _i21.Future<dynamic>.value(),
- ) as _i21.Future<dynamic>);
+ returnValue: _i20.Future<dynamic>.value(),
+ ) as _i20.Future<dynamic>);
@override
- _i21.Stream<S> transform<S>(_i21.StreamTransformer<List<int>, S>? streamTransformer) => (super.noSuchMethod(
+ _i20.Stream<S> transform<S>(_i20.StreamTransformer<List<int>, S>? streamTransformer) => (super.noSuchMethod(
Invocation.method(
#transform,
[streamTransformer],
),
- returnValue: _i21.Stream<S>.empty(),
- ) as _i21.Stream<S>);
+ returnValue: _i20.Stream<S>.empty(),
+ ) as _i20.Stream<S>);
@override
- _i21.Future<List<int>> reduce(
+ _i20.Future<List<int>> reduce(
List<int> Function(
List<int>,
List<int>,
@@ -6279,11 +5869,11 @@
#reduce,
[combine],
),
- returnValue: _i21.Future<List<int>>.value(<int>[]),
- ) as _i21.Future<List<int>>);
+ returnValue: _i20.Future<List<int>>.value(<int>[]),
+ ) as _i20.Future<List<int>>);
@override
- _i21.Future<S> fold<S>(
+ _i20.Future<S> fold<S>(
S? initialValue,
S Function(
S,
@@ -6298,8 +5888,8 @@
combine,
],
),
- returnValue: _i32.ifNotNull(
- _i32.dummyValueOrNull<S>(
+ returnValue: _i30.ifNotNull(
+ _i30.dummyValueOrNull<S>(
this,
Invocation.method(
#fold,
@@ -6309,9 +5899,9 @@
],
),
),
- (S v) => _i21.Future<S>.value(v),
+ (S v) => _i20.Future<S>.value(v),
) ??
- _FakeFuture_27<S>(
+ _FakeFuture_23<S>(
this,
Invocation.method(
#fold,
@@ -6321,150 +5911,150 @@
],
),
),
- ) as _i21.Future<S>);
+ ) as _i20.Future<S>);
@override
- _i21.Future<String> join([String? separator = r'']) => (super.noSuchMethod(
+ _i20.Future<String> join([String? separator = r'']) => (super.noSuchMethod(
Invocation.method(
#join,
[separator],
),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.method(
#join,
[separator],
),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<bool> contains(Object? needle) => (super.noSuchMethod(
+ _i20.Future<bool> contains(Object? needle) => (super.noSuchMethod(
Invocation.method(
#contains,
[needle],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<void> forEach(void Function(List<int>)? action) => (super.noSuchMethod(
+ _i20.Future<void> forEach(void Function(List<int>)? action) => (super.noSuchMethod(
Invocation.method(
#forEach,
[action],
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<bool> every(bool Function(List<int>)? test) => (super.noSuchMethod(
+ _i20.Future<bool> every(bool Function(List<int>)? test) => (super.noSuchMethod(
Invocation.method(
#every,
[test],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<bool> any(bool Function(List<int>)? test) => (super.noSuchMethod(
+ _i20.Future<bool> any(bool Function(List<int>)? test) => (super.noSuchMethod(
Invocation.method(
#any,
[test],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<R> cast<R>() => (super.noSuchMethod(
+ _i20.Stream<R> cast<R>() => (super.noSuchMethod(
Invocation.method(
#cast,
[],
),
- returnValue: _i21.Stream<R>.empty(),
- ) as _i21.Stream<R>);
+ returnValue: _i20.Stream<R>.empty(),
+ ) as _i20.Stream<R>);
@override
- _i21.Future<List<List<int>>> toList() => (super.noSuchMethod(
+ _i20.Future<List<List<int>>> toList() => (super.noSuchMethod(
Invocation.method(
#toList,
[],
),
- returnValue: _i21.Future<List<List<int>>>.value(<List<int>>[]),
- ) as _i21.Future<List<List<int>>>);
+ returnValue: _i20.Future<List<List<int>>>.value(<List<int>>[]),
+ ) as _i20.Future<List<List<int>>>);
@override
- _i21.Future<Set<List<int>>> toSet() => (super.noSuchMethod(
+ _i20.Future<Set<List<int>>> toSet() => (super.noSuchMethod(
Invocation.method(
#toSet,
[],
),
- returnValue: _i21.Future<Set<List<int>>>.value(<List<int>>{}),
- ) as _i21.Future<Set<List<int>>>);
+ returnValue: _i20.Future<Set<List<int>>>.value(<List<int>>{}),
+ ) as _i20.Future<Set<List<int>>>);
@override
- _i21.Future<E> drain<E>([E? futureValue]) => (super.noSuchMethod(
+ _i20.Future<E> drain<E>([E? futureValue]) => (super.noSuchMethod(
Invocation.method(
#drain,
[futureValue],
),
- returnValue: _i32.ifNotNull(
- _i32.dummyValueOrNull<E>(
+ returnValue: _i30.ifNotNull(
+ _i30.dummyValueOrNull<E>(
this,
Invocation.method(
#drain,
[futureValue],
),
),
- (E v) => _i21.Future<E>.value(v),
+ (E v) => _i20.Future<E>.value(v),
) ??
- _FakeFuture_27<E>(
+ _FakeFuture_23<E>(
this,
Invocation.method(
#drain,
[futureValue],
),
),
- ) as _i21.Future<E>);
+ ) as _i20.Future<E>);
@override
- _i21.Stream<List<int>> take(int? count) => (super.noSuchMethod(
+ _i20.Stream<List<int>> take(int? count) => (super.noSuchMethod(
Invocation.method(
#take,
[count],
),
- returnValue: _i21.Stream<List<int>>.empty(),
- ) as _i21.Stream<List<int>>);
+ returnValue: _i20.Stream<List<int>>.empty(),
+ ) as _i20.Stream<List<int>>);
@override
- _i21.Stream<List<int>> takeWhile(bool Function(List<int>)? test) => (super.noSuchMethod(
+ _i20.Stream<List<int>> takeWhile(bool Function(List<int>)? test) => (super.noSuchMethod(
Invocation.method(
#takeWhile,
[test],
),
- returnValue: _i21.Stream<List<int>>.empty(),
- ) as _i21.Stream<List<int>>);
+ returnValue: _i20.Stream<List<int>>.empty(),
+ ) as _i20.Stream<List<int>>);
@override
- _i21.Stream<List<int>> skip(int? count) => (super.noSuchMethod(
+ _i20.Stream<List<int>> skip(int? count) => (super.noSuchMethod(
Invocation.method(
#skip,
[count],
),
- returnValue: _i21.Stream<List<int>>.empty(),
- ) as _i21.Stream<List<int>>);
+ returnValue: _i20.Stream<List<int>>.empty(),
+ ) as _i20.Stream<List<int>>);
@override
- _i21.Stream<List<int>> skipWhile(bool Function(List<int>)? test) => (super.noSuchMethod(
+ _i20.Stream<List<int>> skipWhile(bool Function(List<int>)? test) => (super.noSuchMethod(
Invocation.method(
#skipWhile,
[test],
),
- returnValue: _i21.Stream<List<int>>.empty(),
- ) as _i21.Stream<List<int>>);
+ returnValue: _i20.Stream<List<int>>.empty(),
+ ) as _i20.Stream<List<int>>);
@override
- _i21.Stream<List<int>> distinct(
+ _i20.Stream<List<int>> distinct(
[bool Function(
List<int>,
List<int>,
@@ -6474,11 +6064,11 @@
#distinct,
[equals],
),
- returnValue: _i21.Stream<List<int>>.empty(),
- ) as _i21.Stream<List<int>>);
+ returnValue: _i20.Stream<List<int>>.empty(),
+ ) as _i20.Stream<List<int>>);
@override
- _i21.Future<List<int>> firstWhere(
+ _i20.Future<List<int>> firstWhere(
bool Function(List<int>)? test, {
List<int> Function()? orElse,
}) =>
@@ -6488,11 +6078,11 @@
[test],
{#orElse: orElse},
),
- returnValue: _i21.Future<List<int>>.value(<int>[]),
- ) as _i21.Future<List<int>>);
+ returnValue: _i20.Future<List<int>>.value(<int>[]),
+ ) as _i20.Future<List<int>>);
@override
- _i21.Future<List<int>> lastWhere(
+ _i20.Future<List<int>> lastWhere(
bool Function(List<int>)? test, {
List<int> Function()? orElse,
}) =>
@@ -6502,11 +6092,11 @@
[test],
{#orElse: orElse},
),
- returnValue: _i21.Future<List<int>>.value(<int>[]),
- ) as _i21.Future<List<int>>);
+ returnValue: _i20.Future<List<int>>.value(<int>[]),
+ ) as _i20.Future<List<int>>);
@override
- _i21.Future<List<int>> singleWhere(
+ _i20.Future<List<int>> singleWhere(
bool Function(List<int>)? test, {
List<int> Function()? orElse,
}) =>
@@ -6516,22 +6106,22 @@
[test],
{#orElse: orElse},
),
- returnValue: _i21.Future<List<int>>.value(<int>[]),
- ) as _i21.Future<List<int>>);
+ returnValue: _i20.Future<List<int>>.value(<int>[]),
+ ) as _i20.Future<List<int>>);
@override
- _i21.Future<List<int>> elementAt(int? index) => (super.noSuchMethod(
+ _i20.Future<List<int>> elementAt(int? index) => (super.noSuchMethod(
Invocation.method(
#elementAt,
[index],
),
- returnValue: _i21.Future<List<int>>.value(<int>[]),
- ) as _i21.Future<List<int>>);
+ returnValue: _i20.Future<List<int>>.value(<int>[]),
+ ) as _i20.Future<List<int>>);
@override
- _i21.Stream<List<int>> timeout(
+ _i20.Stream<List<int>> timeout(
Duration? timeLimit, {
- void Function(_i21.EventSink<List<int>>)? onTimeout,
+ void Function(_i20.EventSink<List<int>>)? onTimeout,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -6539,8 +6129,8 @@
[timeLimit],
{#onTimeout: onTimeout},
),
- returnValue: _i21.Stream<List<int>>.empty(),
- ) as _i21.Stream<List<int>>);
+ returnValue: _i20.Stream<List<int>>.empty(),
+ ) as _i20.Stream<List<int>>);
}
/// A class which mocks [JobsResource].
@@ -6552,7 +6142,7 @@
}
@override
- _i21.Future<_i6.JobCancelResponse> cancel(
+ _i20.Future<_i6.JobCancelResponse> cancel(
String? projectId,
String? jobId, {
String? location,
@@ -6570,7 +6160,7 @@
#$fields: $fields,
},
),
- returnValue: _i21.Future<_i6.JobCancelResponse>.value(_FakeJobCancelResponse_65(
+ returnValue: _i20.Future<_i6.JobCancelResponse>.value(_FakeJobCancelResponse_61(
this,
Invocation.method(
#cancel,
@@ -6584,10 +6174,10 @@
},
),
)),
- ) as _i21.Future<_i6.JobCancelResponse>);
+ ) as _i20.Future<_i6.JobCancelResponse>);
@override
- _i21.Future<void> delete(
+ _i20.Future<void> delete(
String? projectId,
String? jobId, {
String? location,
@@ -6605,12 +6195,12 @@
#$fields: $fields,
},
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<_i6.Job> get(
+ _i20.Future<_i6.Job> get(
String? projectId,
String? jobId, {
String? location,
@@ -6628,7 +6218,7 @@
#$fields: $fields,
},
),
- returnValue: _i21.Future<_i6.Job>.value(_FakeJob_66(
+ returnValue: _i20.Future<_i6.Job>.value(_FakeJob_62(
this,
Invocation.method(
#get,
@@ -6642,10 +6232,10 @@
},
),
)),
- ) as _i21.Future<_i6.Job>);
+ ) as _i20.Future<_i6.Job>);
@override
- _i21.Future<_i6.GetQueryResultsResponse> getQueryResults(
+ _i20.Future<_i6.GetQueryResultsResponse> getQueryResults(
String? projectId,
String? jobId, {
String? location,
@@ -6671,7 +6261,7 @@
#$fields: $fields,
},
),
- returnValue: _i21.Future<_i6.GetQueryResultsResponse>.value(_FakeGetQueryResultsResponse_67(
+ returnValue: _i20.Future<_i6.GetQueryResultsResponse>.value(_FakeGetQueryResultsResponse_63(
this,
Invocation.method(
#getQueryResults,
@@ -6689,10 +6279,10 @@
},
),
)),
- ) as _i21.Future<_i6.GetQueryResultsResponse>);
+ ) as _i20.Future<_i6.GetQueryResultsResponse>);
@override
- _i21.Future<_i6.Job> insert(
+ _i20.Future<_i6.Job> insert(
_i6.Job? request,
String? projectId, {
String? $fields,
@@ -6712,7 +6302,7 @@
#uploadMedia: uploadMedia,
},
),
- returnValue: _i21.Future<_i6.Job>.value(_FakeJob_66(
+ returnValue: _i20.Future<_i6.Job>.value(_FakeJob_62(
this,
Invocation.method(
#insert,
@@ -6727,10 +6317,10 @@
},
),
)),
- ) as _i21.Future<_i6.Job>);
+ ) as _i20.Future<_i6.Job>);
@override
- _i21.Future<_i6.JobList> list(
+ _i20.Future<_i6.JobList> list(
String? projectId, {
bool? allUsers,
String? maxCreationTime,
@@ -6758,7 +6348,7 @@
#$fields: $fields,
},
),
- returnValue: _i21.Future<_i6.JobList>.value(_FakeJobList_68(
+ returnValue: _i20.Future<_i6.JobList>.value(_FakeJobList_64(
this,
Invocation.method(
#list,
@@ -6776,10 +6366,10 @@
},
),
)),
- ) as _i21.Future<_i6.JobList>);
+ ) as _i20.Future<_i6.JobList>);
@override
- _i21.Future<_i6.QueryResponse> query(
+ _i20.Future<_i6.QueryResponse> query(
_i6.QueryRequest? request,
String? projectId, {
String? $fields,
@@ -6793,7 +6383,7 @@
],
{#$fields: $fields},
),
- returnValue: _i21.Future<_i6.QueryResponse>.value(_FakeQueryResponse_69(
+ returnValue: _i20.Future<_i6.QueryResponse>.value(_FakeQueryResponse_65(
this,
Invocation.method(
#query,
@@ -6804,28 +6394,28 @@
{#$fields: $fields},
),
)),
- ) as _i21.Future<_i6.QueryResponse>);
+ ) as _i20.Future<_i6.QueryResponse>);
}
/// A class which mocks [LuciBuildService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockLuciBuildService extends _i1.Mock implements _i16.LuciBuildService {
+class MockLuciBuildService extends _i1.Mock implements _i15.LuciBuildService {
MockLuciBuildService() {
_i1.throwOnMissingStub(this);
}
@override
- _i16.BuildBucketClient get buildBucketClient => (super.noSuchMethod(
+ _i15.BuildBucketClient get buildBucketClient => (super.noSuchMethod(
Invocation.getter(#buildBucketClient),
- returnValue: _FakeBuildBucketClient_70(
+ returnValue: _FakeBuildBucketClient_66(
this,
Invocation.getter(#buildBucketClient),
),
- ) as _i16.BuildBucketClient);
+ ) as _i15.BuildBucketClient);
@override
- set buildBucketClient(_i16.BuildBucketClient? _buildBucketClient) => super.noSuchMethod(
+ set buildBucketClient(_i15.BuildBucketClient? _buildBucketClient) => super.noSuchMethod(
Invocation.setter(
#buildBucketClient,
_buildBucketClient,
@@ -6834,31 +6424,13 @@
);
@override
- _i28.BuildBucketV2Client get buildBucketV2Client => (super.noSuchMethod(
- Invocation.getter(#buildBucketV2Client),
- returnValue: _FakeBuildBucketV2Client_71(
- this,
- Invocation.getter(#buildBucketV2Client),
- ),
- ) as _i28.BuildBucketV2Client);
-
- @override
- set buildBucketV2Client(_i28.BuildBucketV2Client? _buildBucketV2Client) => super.noSuchMethod(
- Invocation.setter(
- #buildBucketV2Client,
- _buildBucketV2Client,
- ),
- returnValueForMissingStub: null,
- );
-
- @override
- _i16.CacheService get cache => (super.noSuchMethod(
+ _i15.CacheService get cache => (super.noSuchMethod(
Invocation.getter(#cache),
- returnValue: _FakeCacheService_72(
+ returnValue: _FakeCacheService_67(
this,
Invocation.getter(#cache),
),
- ) as _i16.CacheService);
+ ) as _i15.CacheService);
@override
_i3.Config get config => (super.noSuchMethod(
@@ -6879,16 +6451,16 @@
);
@override
- _i25.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
+ _i24.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
Invocation.getter(#githubChecksUtil),
- returnValue: _FakeGithubChecksUtil_40(
+ returnValue: _FakeGithubChecksUtil_36(
this,
Invocation.getter(#githubChecksUtil),
),
- ) as _i25.GithubChecksUtil);
+ ) as _i24.GithubChecksUtil);
@override
- set githubChecksUtil(_i25.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
+ set githubChecksUtil(_i24.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
Invocation.setter(
#githubChecksUtil,
_githubChecksUtil,
@@ -6915,16 +6487,16 @@
);
@override
- _i16.PubSub get pubsub => (super.noSuchMethod(
+ _i15.PubSub get pubsub => (super.noSuchMethod(
Invocation.getter(#pubsub),
- returnValue: _FakePubSub_73(
+ returnValue: _FakePubSub_68(
this,
Invocation.getter(#pubsub),
),
- ) as _i16.PubSub);
+ ) as _i15.PubSub);
@override
- _i21.Future<List<List<_i8.Request>>> shard(
+ _i20.Future<List<List<_i8.Request>>> shard(
List<_i8.Request>? requests,
int? max,
) =>
@@ -6936,12 +6508,12 @@
max,
],
),
- returnValue: _i21.Future<List<List<_i8.Request>>>.value(<List<_i8.Request>>[]),
- ) as _i21.Future<List<List<_i8.Request>>>);
+ returnValue: _i20.Future<List<List<_i8.Request>>>.value(<List<_i8.Request>>[]),
+ ) as _i20.Future<List<List<_i8.Request>>>);
@override
- _i21.Future<Iterable<_i8.Build>> getTryBuilds(
- _i14.RepositorySlug? slug,
+ _i20.Future<Iterable<_i8.Build>> getTryBuilds(
+ _i13.RepositorySlug? slug,
String? sha,
String? builderName,
) =>
@@ -6954,48 +6526,21 @@
builderName,
],
),
- returnValue: _i21.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
- ) as _i21.Future<Iterable<_i8.Build>>);
+ returnValue: _i20.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
+ ) as _i20.Future<Iterable<_i8.Build>>);
@override
- _i21.Future<Iterable<_i9.Build>> getTryBuildsV2(
- _i14.RepositorySlug? slug,
- String? sha,
- String? builderName,
- ) =>
- (super.noSuchMethod(
- Invocation.method(
- #getTryBuildsV2,
- [
- slug,
- sha,
- builderName,
- ],
- ),
- returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
- ) as _i21.Future<Iterable<_i9.Build>>);
-
- @override
- _i21.Future<Iterable<_i8.Build>> getTryBuildsByPullRequest(_i14.PullRequest? pullRequest) => (super.noSuchMethod(
+ _i20.Future<Iterable<_i8.Build>> getTryBuildsByPullRequest(_i13.PullRequest? pullRequest) => (super.noSuchMethod(
Invocation.method(
#getTryBuildsByPullRequest,
[pullRequest],
),
- returnValue: _i21.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
- ) as _i21.Future<Iterable<_i8.Build>>);
+ returnValue: _i20.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
+ ) as _i20.Future<Iterable<_i8.Build>>);
@override
- _i21.Future<Iterable<_i9.Build>> getTryBuildsByPullRequestV2(_i14.PullRequest? pullRequest) => (super.noSuchMethod(
- Invocation.method(
- #getTryBuildsByPullRequestV2,
- [pullRequest],
- ),
- returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
- ) as _i21.Future<Iterable<_i9.Build>>);
-
- @override
- _i21.Future<Iterable<_i8.Build>> getProdBuilds(
- _i14.RepositorySlug? slug,
+ _i20.Future<Iterable<_i8.Build>> getProdBuilds(
+ _i13.RepositorySlug? slug,
String? commitSha,
String? builderName,
) =>
@@ -7008,12 +6553,12 @@
builderName,
],
),
- returnValue: _i21.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
- ) as _i21.Future<Iterable<_i8.Build>>);
+ returnValue: _i20.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
+ ) as _i20.Future<Iterable<_i8.Build>>);
@override
- _i21.Future<Iterable<_i8.Build>> getBuilds(
- _i14.RepositorySlug? slug,
+ _i20.Future<Iterable<_i8.Build>> getBuilds(
+ _i13.RepositorySlug? slug,
String? commitSha,
String? builderName,
String? bucket,
@@ -7030,36 +6575,14 @@
tags,
],
),
- returnValue: _i21.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
- ) as _i21.Future<Iterable<_i8.Build>>);
+ returnValue: _i20.Future<Iterable<_i8.Build>>.value(<_i8.Build>[]),
+ ) as _i20.Future<Iterable<_i8.Build>>);
@override
- _i21.Future<Iterable<_i9.Build>> getBuildsV2(
- _i14.RepositorySlug? slug,
- String? commitSha,
- String? builderName,
- String? bucket,
- List<_i9.StringPair>? tags,
- ) =>
- (super.noSuchMethod(
- Invocation.method(
- #getBuildsV2,
- [
- slug,
- commitSha,
- builderName,
- bucket,
- tags,
- ],
- ),
- returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
- ) as _i21.Future<Iterable<_i9.Build>>);
-
- @override
- _i21.Future<List<_i47.Target>> scheduleTryBuilds({
- required List<_i47.Target>? targets,
- required _i14.PullRequest? pullRequest,
- _i34.CheckSuiteEvent? checkSuiteEvent,
+ _i20.Future<List<_i42.Target>> scheduleTryBuilds({
+ required List<_i42.Target>? targets,
+ required _i13.PullRequest? pullRequest,
+ _i32.CheckSuiteEvent? checkSuiteEvent,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -7071,12 +6594,12 @@
#checkSuiteEvent: checkSuiteEvent,
},
),
- returnValue: _i21.Future<List<_i47.Target>>.value(<_i47.Target>[]),
- ) as _i21.Future<List<_i47.Target>>);
+ returnValue: _i20.Future<List<_i42.Target>>.value(<_i42.Target>[]),
+ ) as _i20.Future<List<_i42.Target>>);
@override
- _i21.Future<void> cancelBuilds(
- _i14.PullRequest? pullRequest,
+ _i20.Future<void> cancelBuilds(
+ _i13.PullRequest? pullRequest,
String? reason,
) =>
(super.noSuchMethod(
@@ -7087,31 +6610,14 @@
reason,
],
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<void> cancelBuildsV2(
- _i14.PullRequest? pullRequest,
- String? reason,
- ) =>
- (super.noSuchMethod(
- Invocation.method(
- #cancelBuildsV2,
- [
- pullRequest,
- reason,
- ],
- ),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
-
- @override
- _i21.Future<List<_i8.Build?>> failedBuilds(
- _i14.PullRequest? pullRequest,
- List<_i47.Target>? targets,
+ _i20.Future<List<_i8.Build?>> failedBuilds(
+ _i13.PullRequest? pullRequest,
+ List<_i42.Target>? targets,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -7121,13 +6627,13 @@
targets,
],
),
- returnValue: _i21.Future<List<_i8.Build?>>.value(<_i8.Build?>[]),
- ) as _i21.Future<List<_i8.Build?>>);
+ returnValue: _i20.Future<List<_i8.Build?>>.value(<_i8.Build?>[]),
+ ) as _i20.Future<List<_i8.Build?>>);
@override
- _i21.Future<_i8.Build> rescheduleBuild({
+ _i20.Future<_i8.Build> rescheduleBuild({
required String? builderName,
- required _i43.BuildPushMessage? buildPushMessage,
+ required _i41.BuildPushMessage? buildPushMessage,
required int? rescheduleAttempt,
}) =>
(super.noSuchMethod(
@@ -7140,7 +6646,7 @@
#rescheduleAttempt: rescheduleAttempt,
},
),
- returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+ returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
this,
Invocation.method(
#rescheduleBuild,
@@ -7152,27 +6658,27 @@
},
),
)),
- ) as _i21.Future<_i8.Build>);
+ ) as _i20.Future<_i8.Build>);
@override
- _i21.Future<_i8.Build> reschedulePresubmitBuildUsingCheckRunEvent(_i48.CheckRunEvent? checkRunEvent) =>
+ _i20.Future<_i8.Build> reschedulePresubmitBuildUsingCheckRunEvent(_i43.CheckRunEvent? checkRunEvent) =>
(super.noSuchMethod(
Invocation.method(
#reschedulePresubmitBuildUsingCheckRunEvent,
[checkRunEvent],
),
- returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+ returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
this,
Invocation.method(
#reschedulePresubmitBuildUsingCheckRunEvent,
[checkRunEvent],
),
)),
- ) as _i21.Future<_i8.Build>);
+ ) as _i20.Future<_i8.Build>);
@override
List<String>? extractPrefixedLabels(
- List<_i14.IssueLabel>? issueLabels,
+ List<_i13.IssueLabel>? issueLabels,
String? prefix,
) =>
(super.noSuchMethod(Invocation.method(
@@ -7184,11 +6690,11 @@
)) as List<String>?);
@override
- _i21.Future<_i8.Build> reschedulePostsubmitBuildUsingCheckRunEvent(
- _i48.CheckRunEvent? checkRunEvent, {
- required _i36.Commit? commit,
- required _i37.Task? task,
- required _i47.Target? target,
+ _i20.Future<_i8.Build> reschedulePostsubmitBuildUsingCheckRunEvent(
+ _i43.CheckRunEvent? checkRunEvent, {
+ required _i34.Commit? commit,
+ required _i35.Task? task,
+ required _i42.Target? target,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -7200,7 +6706,7 @@
#target: target,
},
),
- returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+ returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
this,
Invocation.method(
#reschedulePostsubmitBuildUsingCheckRunEvent,
@@ -7212,10 +6718,10 @@
},
),
)),
- ) as _i21.Future<_i8.Build>);
+ ) as _i20.Future<_i8.Build>);
@override
- _i21.Future<_i8.Build> getBuildById(
+ _i20.Future<_i8.Build> getBuildById(
String? id, {
String? fields,
}) =>
@@ -7225,7 +6731,7 @@
[id],
{#fields: fields},
),
- returnValue: _i21.Future<_i8.Build>.value(_FakeBuild_7(
+ returnValue: _i20.Future<_i8.Build>.value(_FakeBuild_7(
this,
Invocation.method(
#getBuildById,
@@ -7233,31 +6739,10 @@
{#fields: fields},
),
)),
- ) as _i21.Future<_i8.Build>);
+ ) as _i20.Future<_i8.Build>);
@override
- _i21.Future<_i9.Build> getBuildByIdV2(
- _i49.Int64? id, {
- _i9.BuildMask? buildMask,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #getBuildByIdV2,
- [id],
- {#buildMask: buildMask},
- ),
- returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
- this,
- Invocation.method(
- #getBuildByIdV2,
- [id],
- {#buildMask: buildMask},
- ),
- )),
- ) as _i21.Future<_i9.Build>);
-
- @override
- _i21.Future<Set<String>> getAvailableBuilderSet({
+ _i20.Future<Set<String>> getAvailableBuilderSet({
String? project = r'flutter',
String? bucket = r'prod',
}) =>
@@ -7270,13 +6755,13 @@
#bucket: bucket,
},
),
- returnValue: _i21.Future<Set<String>>.value(<String>{}),
- ) as _i21.Future<Set<String>>);
+ returnValue: _i20.Future<Set<String>>.value(<String>{}),
+ ) as _i20.Future<Set<String>>);
@override
- _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>> schedulePostsubmitBuilds({
- required _i36.Commit? commit,
- required List<_i16.Tuple<_i47.Target, _i37.Task, int>>? toBeScheduled,
+ _i20.Future<List<_i15.Tuple<_i42.Target, _i35.Task, int>>> schedulePostsubmitBuilds({
+ required _i34.Commit? commit,
+ required List<_i15.Tuple<_i42.Target, _i35.Task, int>>? toBeScheduled,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -7287,14 +6772,14 @@
#toBeScheduled: toBeScheduled,
},
),
- returnValue: _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>>.value(
- <_i16.Tuple<_i47.Target, _i37.Task, int>>[]),
- ) as _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>>);
+ returnValue: _i20.Future<List<_i15.Tuple<_i42.Target, _i35.Task, int>>>.value(
+ <_i15.Tuple<_i42.Target, _i35.Task, int>>[]),
+ ) as _i20.Future<List<_i15.Tuple<_i42.Target, _i35.Task, int>>>);
@override
- _i21.Future<void> createPostsubmitCheckRun(
- _i36.Commit? commit,
- _i47.Target? target,
+ _i20.Future<void> createPostsubmitCheckRun(
+ _i34.Commit? commit,
+ _i42.Target? target,
Map<String, dynamic>? rawUserData,
) =>
(super.noSuchMethod(
@@ -7306,20 +6791,20 @@
rawUserData,
],
),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
+ returnValue: _i20.Future<void>.value(),
+ returnValueForMissingStub: _i20.Future<void>.value(),
+ ) as _i20.Future<void>);
@override
- _i21.Future<bool> checkRerunBuilder({
- required _i36.Commit? commit,
- required _i47.Target? target,
- required _i37.Task? task,
- required _i10.DatastoreService? datastore,
- required _i42.Task? taskDocument,
- required _i16.FirestoreService? firestoreService,
+ _i20.Future<bool> checkRerunBuilder({
+ required _i34.Commit? commit,
+ required _i42.Target? target,
+ required _i35.Task? task,
+ required _i9.DatastoreService? datastore,
+ _i15.FirestoreService? firestoreService,
Map<String, List<String>>? tags,
bool? ignoreChecks = false,
+ _i40.Task? taskDocument,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -7330,474 +6815,32 @@
#target: target,
#task: task,
#datastore: datastore,
- #taskDocument: taskDocument,
#firestoreService: firestoreService,
#tags: tags,
#ignoreChecks: ignoreChecks,
- },
- ),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
-}
-
-/// A class which mocks [LuciBuildServiceV2].
-///
-/// See the documentation for Mockito's code generation for more information.
-class MockLuciBuildServiceV2 extends _i1.Mock implements _i46.LuciBuildServiceV2 {
- MockLuciBuildServiceV2() {
- _i1.throwOnMissingStub(this);
- }
-
- @override
- _i28.BuildBucketV2Client get buildBucketV2Client => (super.noSuchMethod(
- Invocation.getter(#buildBucketV2Client),
- returnValue: _FakeBuildBucketV2Client_71(
- this,
- Invocation.getter(#buildBucketV2Client),
- ),
- ) as _i28.BuildBucketV2Client);
-
- @override
- set buildBucketV2Client(_i28.BuildBucketV2Client? _buildBucketV2Client) => super.noSuchMethod(
- Invocation.setter(
- #buildBucketV2Client,
- _buildBucketV2Client,
- ),
- returnValueForMissingStub: null,
- );
-
- @override
- _i16.CacheService get cache => (super.noSuchMethod(
- Invocation.getter(#cache),
- returnValue: _FakeCacheService_72(
- this,
- Invocation.getter(#cache),
- ),
- ) as _i16.CacheService);
-
- @override
- _i3.Config get config => (super.noSuchMethod(
- Invocation.getter(#config),
- returnValue: _FakeConfig_1(
- this,
- Invocation.getter(#config),
- ),
- ) as _i3.Config);
-
- @override
- set config(_i3.Config? _config) => super.noSuchMethod(
- Invocation.setter(
- #config,
- _config,
- ),
- returnValueForMissingStub: null,
- );
-
- @override
- _i25.GithubChecksUtil get githubChecksUtil => (super.noSuchMethod(
- Invocation.getter(#githubChecksUtil),
- returnValue: _FakeGithubChecksUtil_40(
- this,
- Invocation.getter(#githubChecksUtil),
- ),
- ) as _i25.GithubChecksUtil);
-
- @override
- set githubChecksUtil(_i25.GithubChecksUtil? _githubChecksUtil) => super.noSuchMethod(
- Invocation.setter(
- #githubChecksUtil,
- _githubChecksUtil,
- ),
- returnValueForMissingStub: null,
- );
-
- @override
- _i7.GerritService get gerritService => (super.noSuchMethod(
- Invocation.getter(#gerritService),
- returnValue: _FakeGerritService_6(
- this,
- Invocation.getter(#gerritService),
- ),
- ) as _i7.GerritService);
-
- @override
- set gerritService(_i7.GerritService? _gerritService) => super.noSuchMethod(
- Invocation.setter(
- #gerritService,
- _gerritService,
- ),
- returnValueForMissingStub: null,
- );
-
- @override
- _i16.PubSub get pubsub => (super.noSuchMethod(
- Invocation.getter(#pubsub),
- returnValue: _FakePubSub_73(
- this,
- Invocation.getter(#pubsub),
- ),
- ) as _i16.PubSub);
-
- @override
- _i21.Future<List<List<_i9.BatchRequest_Request>>> shard({
- required List<_i9.BatchRequest_Request>? requests,
- required int? maxShardSize,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #shard,
- [],
- {
- #requests: requests,
- #maxShardSize: maxShardSize,
- },
- ),
- returnValue: _i21.Future<List<List<_i9.BatchRequest_Request>>>.value(<List<_i9.BatchRequest_Request>>[]),
- ) as _i21.Future<List<List<_i9.BatchRequest_Request>>>);
-
- @override
- _i21.Future<Iterable<_i9.Build>> getTryBuilds({
- required _i14.RepositorySlug? slug,
- required String? sha,
- String? builderName,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #getTryBuilds,
- [],
- {
- #slug: slug,
- #sha: sha,
- #builderName: builderName,
- },
- ),
- returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
- ) as _i21.Future<Iterable<_i9.Build>>);
-
- @override
- _i21.Future<Iterable<_i9.Build>> getTryBuildsByPullRequest({required _i14.PullRequest? pullRequest}) =>
- (super.noSuchMethod(
- Invocation.method(
- #getTryBuildsByPullRequest,
- [],
- {#pullRequest: pullRequest},
- ),
- returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
- ) as _i21.Future<Iterable<_i9.Build>>);
-
- @override
- _i21.Future<Iterable<_i9.Build>> getProdBuilds({
- required _i14.RepositorySlug? slug,
- required String? commitSha,
- String? builderName,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #getProdBuilds,
- [],
- {
- #slug: slug,
- #commitSha: commitSha,
- #builderName: builderName,
- },
- ),
- returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
- ) as _i21.Future<Iterable<_i9.Build>>);
-
- @override
- _i21.Future<Iterable<_i9.Build>> getBuilds({
- required _i14.RepositorySlug? slug,
- required String? commitSha,
- required String? builderName,
- required String? bucket,
- required List<_i9.StringPair>? tags,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #getBuilds,
- [],
- {
- #slug: slug,
- #commitSha: commitSha,
- #builderName: builderName,
- #bucket: bucket,
- #tags: tags,
- },
- ),
- returnValue: _i21.Future<Iterable<_i9.Build>>.value(<_i9.Build>[]),
- ) as _i21.Future<Iterable<_i9.Build>>);
-
- @override
- _i21.Future<List<_i47.Target>> scheduleTryBuilds({
- required List<_i47.Target>? targets,
- required _i14.PullRequest? pullRequest,
- _i34.CheckSuiteEvent? checkSuiteEvent,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #scheduleTryBuilds,
- [],
- {
- #targets: targets,
- #pullRequest: pullRequest,
- #checkSuiteEvent: checkSuiteEvent,
- },
- ),
- returnValue: _i21.Future<List<_i47.Target>>.value(<_i47.Target>[]),
- ) as _i21.Future<List<_i47.Target>>);
-
- @override
- _i21.Future<void> cancelBuilds({
- required _i14.PullRequest? pullRequest,
- required String? reason,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #cancelBuilds,
- [],
- {
- #pullRequest: pullRequest,
- #reason: reason,
- },
- ),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
-
- @override
- _i21.Future<List<_i9.Build?>> failedBuilds({
- required _i14.PullRequest? pullRequest,
- required List<_i47.Target>? targets,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #failedBuilds,
- [],
- {
- #pullRequest: pullRequest,
- #targets: targets,
- },
- ),
- returnValue: _i21.Future<List<_i9.Build?>>.value(<_i9.Build?>[]),
- ) as _i21.Future<List<_i9.Build?>>);
-
- @override
- _i21.Future<_i9.Build> rescheduleBuild({
- required String? builderName,
- required _i9.Build? build,
- required int? rescheduleAttempt,
- required Map<String, dynamic>? userDataMap,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #rescheduleBuild,
- [],
- {
- #builderName: builderName,
- #build: build,
- #rescheduleAttempt: rescheduleAttempt,
- #userDataMap: userDataMap,
- },
- ),
- returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
- this,
- Invocation.method(
- #rescheduleBuild,
- [],
- {
- #builderName: builderName,
- #build: build,
- #rescheduleAttempt: rescheduleAttempt,
- #userDataMap: userDataMap,
- },
- ),
- )),
- ) as _i21.Future<_i9.Build>);
-
- @override
- _i21.Future<_i9.Build> reschedulePresubmitBuildUsingCheckRunEvent({required _i48.CheckRunEvent? checkRunEvent}) =>
- (super.noSuchMethod(
- Invocation.method(
- #reschedulePresubmitBuildUsingCheckRunEvent,
- [],
- {#checkRunEvent: checkRunEvent},
- ),
- returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
- this,
- Invocation.method(
- #reschedulePresubmitBuildUsingCheckRunEvent,
- [],
- {#checkRunEvent: checkRunEvent},
- ),
- )),
- ) as _i21.Future<_i9.Build>);
-
- @override
- List<String>? extractPrefixedLabels({
- List<_i14.IssueLabel>? issueLabels,
- required String? prefix,
- }) =>
- (super.noSuchMethod(Invocation.method(
- #extractPrefixedLabels,
- [],
- {
- #issueLabels: issueLabels,
- #prefix: prefix,
- },
- )) as List<String>?);
-
- @override
- _i21.Future<_i9.Build> reschedulePostsubmitBuildUsingCheckRunEvent(
- _i48.CheckRunEvent? checkRunEvent, {
- required _i36.Commit? commit,
- required _i37.Task? task,
- required _i47.Target? target,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #reschedulePostsubmitBuildUsingCheckRunEvent,
- [checkRunEvent],
- {
- #commit: commit,
- #task: task,
- #target: target,
- },
- ),
- returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
- this,
- Invocation.method(
- #reschedulePostsubmitBuildUsingCheckRunEvent,
- [checkRunEvent],
- {
- #commit: commit,
- #task: task,
- #target: target,
- },
- ),
- )),
- ) as _i21.Future<_i9.Build>);
-
- @override
- _i21.Future<_i9.Build> getBuildById(
- _i49.Int64? id, {
- _i9.BuildMask? buildMask,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #getBuildById,
- [id],
- {#buildMask: buildMask},
- ),
- returnValue: _i21.Future<_i9.Build>.value(_FakeBuild_11(
- this,
- Invocation.method(
- #getBuildById,
- [id],
- {#buildMask: buildMask},
- ),
- )),
- ) as _i21.Future<_i9.Build>);
-
- @override
- _i21.Future<Set<String>> getAvailableBuilderSet({
- String? project = r'flutter',
- String? bucket = r'prod',
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #getAvailableBuilderSet,
- [],
- {
- #project: project,
- #bucket: bucket,
- },
- ),
- returnValue: _i21.Future<Set<String>>.value(<String>{}),
- ) as _i21.Future<Set<String>>);
-
- @override
- _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>> schedulePostsubmitBuilds({
- required _i36.Commit? commit,
- required List<_i16.Tuple<_i47.Target, _i37.Task, int>>? toBeScheduled,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #schedulePostsubmitBuilds,
- [],
- {
- #commit: commit,
- #toBeScheduled: toBeScheduled,
- },
- ),
- returnValue: _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>>.value(
- <_i16.Tuple<_i47.Target, _i37.Task, int>>[]),
- ) as _i21.Future<List<_i16.Tuple<_i47.Target, _i37.Task, int>>>);
-
- @override
- _i21.Future<void> createPostsubmitCheckRun(
- _i36.Commit? commit,
- _i47.Target? target,
- Map<String, dynamic>? rawUserData,
- ) =>
- (super.noSuchMethod(
- Invocation.method(
- #createPostsubmitCheckRun,
- [
- commit,
- target,
- rawUserData,
- ],
- ),
- returnValue: _i21.Future<void>.value(),
- returnValueForMissingStub: _i21.Future<void>.value(),
- ) as _i21.Future<void>);
-
- @override
- _i21.Future<bool> checkRerunBuilder({
- required _i36.Commit? commit,
- required _i47.Target? target,
- required _i37.Task? task,
- required _i10.DatastoreService? datastore,
- required _i42.Task? taskDocument,
- required _i16.FirestoreService? firestoreService,
- List<_i9.StringPair>? tags,
- bool? ignoreChecks = false,
- }) =>
- (super.noSuchMethod(
- Invocation.method(
- #checkRerunBuilder,
- [],
- {
- #commit: commit,
- #target: target,
- #task: task,
- #datastore: datastore,
#taskDocument: taskDocument,
- #firestoreService: firestoreService,
- #tags: tags,
- #ignoreChecks: ignoreChecks,
},
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
}
/// A class which mocks [ProcessManager].
///
/// See the documentation for Mockito's code generation for more information.
-class MockProcessManager extends _i1.Mock implements _i50.ProcessManager {
+class MockProcessManager extends _i1.Mock implements _i44.ProcessManager {
MockProcessManager() {
_i1.throwOnMissingStub(this);
}
@override
- _i21.Future<_i26.Process> start(
+ _i20.Future<_i25.Process> start(
List<Object>? command, {
String? workingDirectory,
Map<String, String>? environment,
bool? includeParentEnvironment = true,
bool? runInShell = false,
- _i26.ProcessStartMode? mode = _i26.ProcessStartMode.normal,
+ _i25.ProcessStartMode? mode = _i25.ProcessStartMode.normal,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -7811,7 +6854,7 @@
#mode: mode,
},
),
- returnValue: _i21.Future<_i26.Process>.value(_FakeProcess_74(
+ returnValue: _i20.Future<_i25.Process>.value(_FakeProcess_69(
this,
Invocation.method(
#start,
@@ -7825,17 +6868,17 @@
},
),
)),
- ) as _i21.Future<_i26.Process>);
+ ) as _i20.Future<_i25.Process>);
@override
- _i21.Future<_i26.ProcessResult> run(
+ _i20.Future<_i25.ProcessResult> run(
List<Object>? command, {
String? workingDirectory,
Map<String, String>? environment,
bool? includeParentEnvironment = true,
bool? runInShell = false,
- _i27.Encoding? stdoutEncoding = const _i26.SystemEncoding(),
- _i27.Encoding? stderrEncoding = const _i26.SystemEncoding(),
+ _i26.Encoding? stdoutEncoding = const _i25.SystemEncoding(),
+ _i26.Encoding? stderrEncoding = const _i25.SystemEncoding(),
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -7850,7 +6893,7 @@
#stderrEncoding: stderrEncoding,
},
),
- returnValue: _i21.Future<_i26.ProcessResult>.value(_i32.dummyValue<_i26.ProcessResult>(
+ returnValue: _i20.Future<_i25.ProcessResult>.value(_i30.dummyValue<_i25.ProcessResult>(
this,
Invocation.method(
#run,
@@ -7865,17 +6908,17 @@
},
),
)),
- ) as _i21.Future<_i26.ProcessResult>);
+ ) as _i20.Future<_i25.ProcessResult>);
@override
- _i26.ProcessResult runSync(
+ _i25.ProcessResult runSync(
List<Object>? command, {
String? workingDirectory,
Map<String, String>? environment,
bool? includeParentEnvironment = true,
bool? runInShell = false,
- _i27.Encoding? stdoutEncoding = const _i26.SystemEncoding(),
- _i27.Encoding? stderrEncoding = const _i26.SystemEncoding(),
+ _i26.Encoding? stdoutEncoding = const _i25.SystemEncoding(),
+ _i26.Encoding? stderrEncoding = const _i25.SystemEncoding(),
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -7890,7 +6933,7 @@
#stderrEncoding: stderrEncoding,
},
),
- returnValue: _i32.dummyValue<_i26.ProcessResult>(
+ returnValue: _i30.dummyValue<_i25.ProcessResult>(
this,
Invocation.method(
#runSync,
@@ -7905,7 +6948,7 @@
},
),
),
- ) as _i26.ProcessResult);
+ ) as _i25.ProcessResult);
@override
bool canRun(
@@ -7924,7 +6967,7 @@
@override
bool killPid(
int? pid, [
- _i26.ProcessSignal? signal = _i26.ProcessSignal.sigterm,
+ _i25.ProcessSignal? signal = _i25.ProcessSignal.sigterm,
]) =>
(super.noSuchMethod(
Invocation.method(
@@ -7941,23 +6984,23 @@
/// A class which mocks [PullRequestsService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockPullRequestsService extends _i1.Mock implements _i14.PullRequestsService {
+class MockPullRequestsService extends _i1.Mock implements _i13.PullRequestsService {
MockPullRequestsService() {
_i1.throwOnMissingStub(this);
}
@override
- _i14.GitHub get github => (super.noSuchMethod(
+ _i13.GitHub get github => (super.noSuchMethod(
Invocation.getter(#github),
- returnValue: _FakeGitHub_20(
+ returnValue: _FakeGitHub_16(
this,
Invocation.getter(#github),
),
- ) as _i14.GitHub);
+ ) as _i13.GitHub);
@override
- _i21.Stream<_i14.PullRequest> list(
- _i14.RepositorySlug? slug, {
+ _i20.Stream<_i13.PullRequest> list(
+ _i13.RepositorySlug? slug, {
int? pages,
String? base,
String? direction = r'desc',
@@ -7978,12 +7021,12 @@
#state: state,
},
),
- returnValue: _i21.Stream<_i14.PullRequest>.empty(),
- ) as _i21.Stream<_i14.PullRequest>);
+ returnValue: _i20.Stream<_i13.PullRequest>.empty(),
+ ) as _i20.Stream<_i13.PullRequest>);
@override
- _i21.Future<_i14.PullRequest> get(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.PullRequest> get(
+ _i13.RepositorySlug? slug,
int? number,
) =>
(super.noSuchMethod(
@@ -7994,7 +7037,7 @@
number,
],
),
- returnValue: _i21.Future<_i14.PullRequest>.value(_FakePullRequest_45(
+ returnValue: _i20.Future<_i13.PullRequest>.value(_FakePullRequest_41(
this,
Invocation.method(
#get,
@@ -8004,12 +7047,12 @@
],
),
)),
- ) as _i21.Future<_i14.PullRequest>);
+ ) as _i20.Future<_i13.PullRequest>);
@override
- _i21.Future<_i14.PullRequest> create(
- _i14.RepositorySlug? slug,
- _i14.CreatePullRequest? request,
+ _i20.Future<_i13.PullRequest> create(
+ _i13.RepositorySlug? slug,
+ _i13.CreatePullRequest? request,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -8019,7 +7062,7 @@
request,
],
),
- returnValue: _i21.Future<_i14.PullRequest>.value(_FakePullRequest_45(
+ returnValue: _i20.Future<_i13.PullRequest>.value(_FakePullRequest_41(
this,
Invocation.method(
#create,
@@ -8029,11 +7072,11 @@
],
),
)),
- ) as _i21.Future<_i14.PullRequest>);
+ ) as _i20.Future<_i13.PullRequest>);
@override
- _i21.Future<_i14.PullRequest> edit(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.PullRequest> edit(
+ _i13.RepositorySlug? slug,
int? number, {
String? title,
String? body,
@@ -8054,7 +7097,7 @@
#base: base,
},
),
- returnValue: _i21.Future<_i14.PullRequest>.value(_FakePullRequest_45(
+ returnValue: _i20.Future<_i13.PullRequest>.value(_FakePullRequest_41(
this,
Invocation.method(
#edit,
@@ -8070,11 +7113,11 @@
},
),
)),
- ) as _i21.Future<_i14.PullRequest>);
+ ) as _i20.Future<_i13.PullRequest>);
@override
- _i21.Stream<_i14.RepositoryCommit> listCommits(
- _i14.RepositorySlug? slug,
+ _i20.Stream<_i13.RepositoryCommit> listCommits(
+ _i13.RepositorySlug? slug,
int? number,
) =>
(super.noSuchMethod(
@@ -8085,12 +7128,12 @@
number,
],
),
- returnValue: _i21.Stream<_i14.RepositoryCommit>.empty(),
- ) as _i21.Stream<_i14.RepositoryCommit>);
+ returnValue: _i20.Stream<_i13.RepositoryCommit>.empty(),
+ ) as _i20.Stream<_i13.RepositoryCommit>);
@override
- _i21.Stream<_i14.PullRequestFile> listFiles(
- _i14.RepositorySlug? slug,
+ _i20.Stream<_i13.PullRequestFile> listFiles(
+ _i13.RepositorySlug? slug,
int? number,
) =>
(super.noSuchMethod(
@@ -8101,12 +7144,12 @@
number,
],
),
- returnValue: _i21.Stream<_i14.PullRequestFile>.empty(),
- ) as _i21.Stream<_i14.PullRequestFile>);
+ returnValue: _i20.Stream<_i13.PullRequestFile>.empty(),
+ ) as _i20.Stream<_i13.PullRequestFile>);
@override
- _i21.Stream<_i14.PullRequestReview> listReviews(
- _i14.RepositorySlug? slug,
+ _i20.Stream<_i13.PullRequestReview> listReviews(
+ _i13.RepositorySlug? slug,
int? number,
) =>
(super.noSuchMethod(
@@ -8117,12 +7160,12 @@
number,
],
),
- returnValue: _i21.Stream<_i14.PullRequestReview>.empty(),
- ) as _i21.Stream<_i14.PullRequestReview>);
+ returnValue: _i20.Stream<_i13.PullRequestReview>.empty(),
+ ) as _i20.Stream<_i13.PullRequestReview>);
@override
- _i21.Future<bool> isMerged(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> isMerged(
+ _i13.RepositorySlug? slug,
int? number,
) =>
(super.noSuchMethod(
@@ -8133,15 +7176,15 @@
number,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<_i14.PullRequestMerge> merge(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.PullRequestMerge> merge(
+ _i13.RepositorySlug? slug,
int? number, {
String? message,
- _i14.MergeMethod? mergeMethod = _i14.MergeMethod.merge,
+ _i13.MergeMethod? mergeMethod = _i13.MergeMethod.merge,
String? requestSha,
}) =>
(super.noSuchMethod(
@@ -8157,7 +7200,7 @@
#requestSha: requestSha,
},
),
- returnValue: _i21.Future<_i14.PullRequestMerge>.value(_FakePullRequestMerge_75(
+ returnValue: _i20.Future<_i13.PullRequestMerge>.value(_FakePullRequestMerge_70(
this,
Invocation.method(
#merge,
@@ -8172,11 +7215,11 @@
},
),
)),
- ) as _i21.Future<_i14.PullRequestMerge>);
+ ) as _i20.Future<_i13.PullRequestMerge>);
@override
- _i21.Stream<_i14.PullRequestComment> listCommentsByPullRequest(
- _i14.RepositorySlug? slug,
+ _i20.Stream<_i13.PullRequestComment> listCommentsByPullRequest(
+ _i13.RepositorySlug? slug,
int? number,
) =>
(super.noSuchMethod(
@@ -8187,23 +7230,23 @@
number,
],
),
- returnValue: _i21.Stream<_i14.PullRequestComment>.empty(),
- ) as _i21.Stream<_i14.PullRequestComment>);
+ returnValue: _i20.Stream<_i13.PullRequestComment>.empty(),
+ ) as _i20.Stream<_i13.PullRequestComment>);
@override
- _i21.Stream<_i14.PullRequestComment> listComments(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.PullRequestComment> listComments(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listComments,
[slug],
),
- returnValue: _i21.Stream<_i14.PullRequestComment>.empty(),
- ) as _i21.Stream<_i14.PullRequestComment>);
+ returnValue: _i20.Stream<_i13.PullRequestComment>.empty(),
+ ) as _i20.Stream<_i13.PullRequestComment>);
@override
- _i21.Future<_i14.PullRequestComment> createComment(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.PullRequestComment> createComment(
+ _i13.RepositorySlug? slug,
int? number,
- _i14.CreatePullRequestComment? comment,
+ _i13.CreatePullRequestComment? comment,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -8214,7 +7257,7 @@
comment,
],
),
- returnValue: _i21.Future<_i14.PullRequestComment>.value(_FakePullRequestComment_76(
+ returnValue: _i20.Future<_i13.PullRequestComment>.value(_FakePullRequestComment_71(
this,
Invocation.method(
#createComment,
@@ -8225,12 +7268,12 @@
],
),
)),
- ) as _i21.Future<_i14.PullRequestComment>);
+ ) as _i20.Future<_i13.PullRequestComment>);
@override
- _i21.Future<_i14.PullRequestReview> createReview(
- _i14.RepositorySlug? slug,
- _i14.CreatePullRequestReview? review,
+ _i20.Future<_i13.PullRequestReview> createReview(
+ _i13.RepositorySlug? slug,
+ _i13.CreatePullRequestReview? review,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -8240,7 +7283,7 @@
review,
],
),
- returnValue: _i21.Future<_i14.PullRequestReview>.value(_FakePullRequestReview_77(
+ returnValue: _i20.Future<_i13.PullRequestReview>.value(_FakePullRequestReview_72(
this,
Invocation.method(
#createReview,
@@ -8250,28 +7293,28 @@
],
),
)),
- ) as _i21.Future<_i14.PullRequestReview>);
+ ) as _i20.Future<_i13.PullRequestReview>);
}
/// A class which mocks [RepositoriesService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockRepositoriesService extends _i1.Mock implements _i14.RepositoriesService {
+class MockRepositoriesService extends _i1.Mock implements _i13.RepositoriesService {
MockRepositoriesService() {
_i1.throwOnMissingStub(this);
}
@override
- _i14.GitHub get github => (super.noSuchMethod(
+ _i13.GitHub get github => (super.noSuchMethod(
Invocation.getter(#github),
- returnValue: _FakeGitHub_20(
+ returnValue: _FakeGitHub_16(
this,
Invocation.getter(#github),
),
- ) as _i14.GitHub);
+ ) as _i13.GitHub);
@override
- _i21.Stream<_i14.Repository> listRepositories({
+ _i20.Stream<_i13.Repository> listRepositories({
String? type = r'owner',
String? sort = r'full_name',
String? direction = r'asc',
@@ -8286,11 +7329,11 @@
#direction: direction,
},
),
- returnValue: _i21.Stream<_i14.Repository>.empty(),
- ) as _i21.Stream<_i14.Repository>);
+ returnValue: _i20.Stream<_i13.Repository>.empty(),
+ ) as _i20.Stream<_i13.Repository>);
@override
- _i21.Stream<_i14.Repository> listUserRepositories(
+ _i20.Stream<_i13.Repository> listUserRepositories(
String? user, {
String? type = r'owner',
String? sort = r'full_name',
@@ -8306,11 +7349,11 @@
#direction: direction,
},
),
- returnValue: _i21.Stream<_i14.Repository>.empty(),
- ) as _i21.Stream<_i14.Repository>);
+ returnValue: _i20.Stream<_i13.Repository>.empty(),
+ ) as _i20.Stream<_i13.Repository>);
@override
- _i21.Stream<_i14.Repository> listOrganizationRepositories(
+ _i20.Stream<_i13.Repository> listOrganizationRepositories(
String? org, {
String? type = r'all',
}) =>
@@ -8320,11 +7363,11 @@
[org],
{#type: type},
),
- returnValue: _i21.Stream<_i14.Repository>.empty(),
- ) as _i21.Stream<_i14.Repository>);
+ returnValue: _i20.Stream<_i13.Repository>.empty(),
+ ) as _i20.Stream<_i13.Repository>);
@override
- _i21.Stream<_i14.Repository> listPublicRepositories({
+ _i20.Stream<_i13.Repository> listPublicRepositories({
int? limit = 50,
DateTime? since,
}) =>
@@ -8337,12 +7380,12 @@
#since: since,
},
),
- returnValue: _i21.Stream<_i14.Repository>.empty(),
- ) as _i21.Stream<_i14.Repository>);
+ returnValue: _i20.Stream<_i13.Repository>.empty(),
+ ) as _i20.Stream<_i13.Repository>);
@override
- _i21.Future<_i14.Repository> createRepository(
- _i14.CreateRepository? repository, {
+ _i20.Future<_i13.Repository> createRepository(
+ _i13.CreateRepository? repository, {
String? org,
}) =>
(super.noSuchMethod(
@@ -8351,7 +7394,7 @@
[repository],
{#org: org},
),
- returnValue: _i21.Future<_i14.Repository>.value(_FakeRepository_78(
+ returnValue: _i20.Future<_i13.Repository>.value(_FakeRepository_73(
this,
Invocation.method(
#createRepository,
@@ -8359,50 +7402,50 @@
{#org: org},
),
)),
- ) as _i21.Future<_i14.Repository>);
+ ) as _i20.Future<_i13.Repository>);
@override
- _i21.Future<_i14.LicenseDetails> getLicense(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<_i13.LicenseDetails> getLicense(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#getLicense,
[slug],
),
- returnValue: _i21.Future<_i14.LicenseDetails>.value(_FakeLicenseDetails_79(
+ returnValue: _i20.Future<_i13.LicenseDetails>.value(_FakeLicenseDetails_74(
this,
Invocation.method(
#getLicense,
[slug],
),
)),
- ) as _i21.Future<_i14.LicenseDetails>);
+ ) as _i20.Future<_i13.LicenseDetails>);
@override
- _i21.Future<_i14.Repository> getRepository(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<_i13.Repository> getRepository(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#getRepository,
[slug],
),
- returnValue: _i21.Future<_i14.Repository>.value(_FakeRepository_78(
+ returnValue: _i20.Future<_i13.Repository>.value(_FakeRepository_73(
this,
Invocation.method(
#getRepository,
[slug],
),
)),
- ) as _i21.Future<_i14.Repository>);
+ ) as _i20.Future<_i13.Repository>);
@override
- _i21.Stream<_i14.Repository> getRepositories(List<_i14.RepositorySlug>? slugs) => (super.noSuchMethod(
+ _i20.Stream<_i13.Repository> getRepositories(List<_i13.RepositorySlug>? slugs) => (super.noSuchMethod(
Invocation.method(
#getRepositories,
[slugs],
),
- returnValue: _i21.Stream<_i14.Repository>.empty(),
- ) as _i21.Stream<_i14.Repository>);
+ returnValue: _i20.Stream<_i13.Repository>.empty(),
+ ) as _i20.Stream<_i13.Repository>);
@override
- _i21.Future<_i14.Repository> editRepository(
- _i14.RepositorySlug? slug, {
+ _i20.Future<_i13.Repository> editRepository(
+ _i13.RepositorySlug? slug, {
String? name,
String? description,
String? homepage,
@@ -8425,7 +7468,7 @@
#hasDownloads: hasDownloads,
},
),
- returnValue: _i21.Future<_i14.Repository>.value(_FakeRepository_78(
+ returnValue: _i20.Future<_i13.Repository>.value(_FakeRepository_73(
this,
Invocation.method(
#editRepository,
@@ -8441,20 +7484,20 @@
},
),
)),
- ) as _i21.Future<_i14.Repository>);
+ ) as _i20.Future<_i13.Repository>);
@override
- _i21.Future<bool> deleteRepository(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<bool> deleteRepository(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#deleteRepository,
[slug],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.Contributor> listContributors(
- _i14.RepositorySlug? slug, {
+ _i20.Stream<_i13.Contributor> listContributors(
+ _i13.RepositorySlug? slug, {
bool? anon = false,
}) =>
(super.noSuchMethod(
@@ -8463,36 +7506,36 @@
[slug],
{#anon: anon},
),
- returnValue: _i21.Stream<_i14.Contributor>.empty(),
- ) as _i21.Stream<_i14.Contributor>);
+ returnValue: _i20.Stream<_i13.Contributor>.empty(),
+ ) as _i20.Stream<_i13.Contributor>);
@override
- _i21.Stream<_i14.Team> listTeams(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.Team> listTeams(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listTeams,
[slug],
),
- returnValue: _i21.Stream<_i14.Team>.empty(),
- ) as _i21.Stream<_i14.Team>);
+ returnValue: _i20.Stream<_i13.Team>.empty(),
+ ) as _i20.Stream<_i13.Team>);
@override
- _i21.Future<_i14.LanguageBreakdown> listLanguages(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<_i13.LanguageBreakdown> listLanguages(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listLanguages,
[slug],
),
- returnValue: _i21.Future<_i14.LanguageBreakdown>.value(_FakeLanguageBreakdown_80(
+ returnValue: _i20.Future<_i13.LanguageBreakdown>.value(_FakeLanguageBreakdown_75(
this,
Invocation.method(
#listLanguages,
[slug],
),
)),
- ) as _i21.Future<_i14.LanguageBreakdown>);
+ ) as _i20.Future<_i13.LanguageBreakdown>);
@override
- _i21.Stream<_i14.Tag> listTags(
- _i14.RepositorySlug? slug, {
+ _i20.Stream<_i13.Tag> listTags(
+ _i13.RepositorySlug? slug, {
int? page = 1,
int? pages,
int? perPage = 30,
@@ -8507,21 +7550,21 @@
#perPage: perPage,
},
),
- returnValue: _i21.Stream<_i14.Tag>.empty(),
- ) as _i21.Stream<_i14.Tag>);
+ returnValue: _i20.Stream<_i13.Tag>.empty(),
+ ) as _i20.Stream<_i13.Tag>);
@override
- _i21.Stream<_i14.Branch> listBranches(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.Branch> listBranches(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listBranches,
[slug],
),
- returnValue: _i21.Stream<_i14.Branch>.empty(),
- ) as _i21.Stream<_i14.Branch>);
+ returnValue: _i20.Stream<_i13.Branch>.empty(),
+ ) as _i20.Stream<_i13.Branch>);
@override
- _i21.Future<_i14.Branch> getBranch(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.Branch> getBranch(
+ _i13.RepositorySlug? slug,
String? branch,
) =>
(super.noSuchMethod(
@@ -8532,7 +7575,7 @@
branch,
],
),
- returnValue: _i21.Future<_i14.Branch>.value(_FakeBranch_81(
+ returnValue: _i20.Future<_i13.Branch>.value(_FakeBranch_76(
this,
Invocation.method(
#getBranch,
@@ -8542,20 +7585,20 @@
],
),
)),
- ) as _i21.Future<_i14.Branch>);
+ ) as _i20.Future<_i13.Branch>);
@override
- _i21.Stream<_i14.Collaborator> listCollaborators(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.Collaborator> listCollaborators(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listCollaborators,
[slug],
),
- returnValue: _i21.Stream<_i14.Collaborator>.empty(),
- ) as _i21.Stream<_i14.Collaborator>);
+ returnValue: _i20.Stream<_i13.Collaborator>.empty(),
+ ) as _i20.Stream<_i13.Collaborator>);
@override
- _i21.Future<bool> isCollaborator(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> isCollaborator(
+ _i13.RepositorySlug? slug,
String? user,
) =>
(super.noSuchMethod(
@@ -8566,12 +7609,12 @@
user,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<bool> addCollaborator(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> addCollaborator(
+ _i13.RepositorySlug? slug,
String? user,
) =>
(super.noSuchMethod(
@@ -8582,12 +7625,12 @@
user,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<bool> removeCollaborator(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> removeCollaborator(
+ _i13.RepositorySlug? slug,
String? user,
) =>
(super.noSuchMethod(
@@ -8598,13 +7641,13 @@
user,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.CommitComment> listSingleCommitComments(
- _i14.RepositorySlug? slug,
- _i14.RepositoryCommit? commit,
+ _i20.Stream<_i13.CommitComment> listSingleCommitComments(
+ _i13.RepositorySlug? slug,
+ _i13.RepositoryCommit? commit,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -8614,22 +7657,22 @@
commit,
],
),
- returnValue: _i21.Stream<_i14.CommitComment>.empty(),
- ) as _i21.Stream<_i14.CommitComment>);
+ returnValue: _i20.Stream<_i13.CommitComment>.empty(),
+ ) as _i20.Stream<_i13.CommitComment>);
@override
- _i21.Stream<_i14.CommitComment> listCommitComments(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.CommitComment> listCommitComments(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listCommitComments,
[slug],
),
- returnValue: _i21.Stream<_i14.CommitComment>.empty(),
- ) as _i21.Stream<_i14.CommitComment>);
+ returnValue: _i20.Stream<_i13.CommitComment>.empty(),
+ ) as _i20.Stream<_i13.CommitComment>);
@override
- _i21.Future<_i14.CommitComment> createCommitComment(
- _i14.RepositorySlug? slug,
- _i14.RepositoryCommit? commit, {
+ _i20.Future<_i13.CommitComment> createCommitComment(
+ _i13.RepositorySlug? slug,
+ _i13.RepositoryCommit? commit, {
required String? body,
String? path,
int? position,
@@ -8649,7 +7692,7 @@
#line: line,
},
),
- returnValue: _i21.Future<_i14.CommitComment>.value(_FakeCommitComment_82(
+ returnValue: _i20.Future<_i13.CommitComment>.value(_FakeCommitComment_77(
this,
Invocation.method(
#createCommitComment,
@@ -8665,11 +7708,11 @@
},
),
)),
- ) as _i21.Future<_i14.CommitComment>);
+ ) as _i20.Future<_i13.CommitComment>);
@override
- _i21.Future<_i14.CommitComment> getCommitComment(
- _i14.RepositorySlug? slug, {
+ _i20.Future<_i13.CommitComment> getCommitComment(
+ _i13.RepositorySlug? slug, {
required int? id,
}) =>
(super.noSuchMethod(
@@ -8678,7 +7721,7 @@
[slug],
{#id: id},
),
- returnValue: _i21.Future<_i14.CommitComment>.value(_FakeCommitComment_82(
+ returnValue: _i20.Future<_i13.CommitComment>.value(_FakeCommitComment_77(
this,
Invocation.method(
#getCommitComment,
@@ -8686,11 +7729,11 @@
{#id: id},
),
)),
- ) as _i21.Future<_i14.CommitComment>);
+ ) as _i20.Future<_i13.CommitComment>);
@override
- _i21.Future<_i14.CommitComment> updateCommitComment(
- _i14.RepositorySlug? slug, {
+ _i20.Future<_i13.CommitComment> updateCommitComment(
+ _i13.RepositorySlug? slug, {
required int? id,
required String? body,
}) =>
@@ -8703,7 +7746,7 @@
#body: body,
},
),
- returnValue: _i21.Future<_i14.CommitComment>.value(_FakeCommitComment_82(
+ returnValue: _i20.Future<_i13.CommitComment>.value(_FakeCommitComment_77(
this,
Invocation.method(
#updateCommitComment,
@@ -8714,11 +7757,11 @@
},
),
)),
- ) as _i21.Future<_i14.CommitComment>);
+ ) as _i20.Future<_i13.CommitComment>);
@override
- _i21.Future<bool> deleteCommitComment(
- _i14.RepositorySlug? slug, {
+ _i20.Future<bool> deleteCommitComment(
+ _i13.RepositorySlug? slug, {
required int? id,
}) =>
(super.noSuchMethod(
@@ -8727,12 +7770,12 @@
[slug],
{#id: id},
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.RepositoryCommit> listCommits(
- _i14.RepositorySlug? slug, {
+ _i20.Stream<_i13.RepositoryCommit> listCommits(
+ _i13.RepositorySlug? slug, {
String? sha,
String? path,
String? author,
@@ -8753,12 +7796,12 @@
#until: until,
},
),
- returnValue: _i21.Stream<_i14.RepositoryCommit>.empty(),
- ) as _i21.Stream<_i14.RepositoryCommit>);
+ returnValue: _i20.Stream<_i13.RepositoryCommit>.empty(),
+ ) as _i20.Stream<_i13.RepositoryCommit>);
@override
- _i21.Future<_i14.RepositoryCommit> getCommit(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.RepositoryCommit> getCommit(
+ _i13.RepositorySlug? slug,
String? sha,
) =>
(super.noSuchMethod(
@@ -8769,7 +7812,7 @@
sha,
],
),
- returnValue: _i21.Future<_i14.RepositoryCommit>.value(_FakeRepositoryCommit_83(
+ returnValue: _i20.Future<_i13.RepositoryCommit>.value(_FakeRepositoryCommit_78(
this,
Invocation.method(
#getCommit,
@@ -8779,11 +7822,11 @@
],
),
)),
- ) as _i21.Future<_i14.RepositoryCommit>);
+ ) as _i20.Future<_i13.RepositoryCommit>);
@override
- _i21.Future<String> getCommitDiff(
- _i14.RepositorySlug? slug,
+ _i20.Future<String> getCommitDiff(
+ _i13.RepositorySlug? slug,
String? sha,
) =>
(super.noSuchMethod(
@@ -8794,7 +7837,7 @@
sha,
],
),
- returnValue: _i21.Future<String>.value(_i32.dummyValue<String>(
+ returnValue: _i20.Future<String>.value(_i30.dummyValue<String>(
this,
Invocation.method(
#getCommitDiff,
@@ -8804,11 +7847,11 @@
],
),
)),
- ) as _i21.Future<String>);
+ ) as _i20.Future<String>);
@override
- _i21.Future<_i14.GitHubComparison> compareCommits(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.GitHubComparison> compareCommits(
+ _i13.RepositorySlug? slug,
String? refBase,
String? refHead,
) =>
@@ -8821,7 +7864,7 @@
refHead,
],
),
- returnValue: _i21.Future<_i14.GitHubComparison>.value(_FakeGitHubComparison_84(
+ returnValue: _i20.Future<_i13.GitHubComparison>.value(_FakeGitHubComparison_79(
this,
Invocation.method(
#compareCommits,
@@ -8832,11 +7875,11 @@
],
),
)),
- ) as _i21.Future<_i14.GitHubComparison>);
+ ) as _i20.Future<_i13.GitHubComparison>);
@override
- _i21.Future<_i14.GitHubFile> getReadme(
- _i14.RepositorySlug? slug, {
+ _i20.Future<_i13.GitHubFile> getReadme(
+ _i13.RepositorySlug? slug, {
String? ref,
}) =>
(super.noSuchMethod(
@@ -8845,7 +7888,7 @@
[slug],
{#ref: ref},
),
- returnValue: _i21.Future<_i14.GitHubFile>.value(_FakeGitHubFile_85(
+ returnValue: _i20.Future<_i13.GitHubFile>.value(_FakeGitHubFile_80(
this,
Invocation.method(
#getReadme,
@@ -8853,11 +7896,11 @@
{#ref: ref},
),
)),
- ) as _i21.Future<_i14.GitHubFile>);
+ ) as _i20.Future<_i13.GitHubFile>);
@override
- _i21.Future<_i14.RepositoryContents> getContents(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.RepositoryContents> getContents(
+ _i13.RepositorySlug? slug,
String? path, {
String? ref,
}) =>
@@ -8870,7 +7913,7 @@
],
{#ref: ref},
),
- returnValue: _i21.Future<_i14.RepositoryContents>.value(_FakeRepositoryContents_86(
+ returnValue: _i20.Future<_i13.RepositoryContents>.value(_FakeRepositoryContents_81(
this,
Invocation.method(
#getContents,
@@ -8881,12 +7924,12 @@
{#ref: ref},
),
)),
- ) as _i21.Future<_i14.RepositoryContents>);
+ ) as _i20.Future<_i13.RepositoryContents>);
@override
- _i21.Future<_i14.ContentCreation> createFile(
- _i14.RepositorySlug? slug,
- _i14.CreateFile? file,
+ _i20.Future<_i13.ContentCreation> createFile(
+ _i13.RepositorySlug? slug,
+ _i13.CreateFile? file,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -8896,7 +7939,7 @@
file,
],
),
- returnValue: _i21.Future<_i14.ContentCreation>.value(_FakeContentCreation_87(
+ returnValue: _i20.Future<_i13.ContentCreation>.value(_FakeContentCreation_82(
this,
Invocation.method(
#createFile,
@@ -8906,11 +7949,11 @@
],
),
)),
- ) as _i21.Future<_i14.ContentCreation>);
+ ) as _i20.Future<_i13.ContentCreation>);
@override
- _i21.Future<_i14.ContentCreation> updateFile(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.ContentCreation> updateFile(
+ _i13.RepositorySlug? slug,
String? path,
String? message,
String? content,
@@ -8929,7 +7972,7 @@
],
{#branch: branch},
),
- returnValue: _i21.Future<_i14.ContentCreation>.value(_FakeContentCreation_87(
+ returnValue: _i20.Future<_i13.ContentCreation>.value(_FakeContentCreation_82(
this,
Invocation.method(
#updateFile,
@@ -8943,11 +7986,11 @@
{#branch: branch},
),
)),
- ) as _i21.Future<_i14.ContentCreation>);
+ ) as _i20.Future<_i13.ContentCreation>);
@override
- _i21.Future<_i14.ContentCreation> deleteFile(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.ContentCreation> deleteFile(
+ _i13.RepositorySlug? slug,
String? path,
String? message,
String? sha,
@@ -8964,7 +8007,7 @@
branch,
],
),
- returnValue: _i21.Future<_i14.ContentCreation>.value(_FakeContentCreation_87(
+ returnValue: _i20.Future<_i13.ContentCreation>.value(_FakeContentCreation_82(
this,
Invocation.method(
#deleteFile,
@@ -8977,11 +8020,11 @@
],
),
)),
- ) as _i21.Future<_i14.ContentCreation>);
+ ) as _i20.Future<_i13.ContentCreation>);
@override
- _i21.Future<String?> getArchiveLink(
- _i14.RepositorySlug? slug,
+ _i20.Future<String?> getArchiveLink(
+ _i13.RepositorySlug? slug,
String? ref, {
String? format = r'tarball',
}) =>
@@ -8994,22 +8037,22 @@
],
{#format: format},
),
- returnValue: _i21.Future<String?>.value(),
- ) as _i21.Future<String?>);
+ returnValue: _i20.Future<String?>.value(),
+ ) as _i20.Future<String?>);
@override
- _i21.Stream<_i14.Repository> listForks(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.Repository> listForks(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listForks,
[slug],
),
- returnValue: _i21.Stream<_i14.Repository>.empty(),
- ) as _i21.Stream<_i14.Repository>);
+ returnValue: _i20.Stream<_i13.Repository>.empty(),
+ ) as _i20.Stream<_i13.Repository>);
@override
- _i21.Future<_i14.Repository> createFork(
- _i14.RepositorySlug? slug, [
- _i14.CreateFork? fork,
+ _i20.Future<_i13.Repository> createFork(
+ _i13.RepositorySlug? slug, [
+ _i13.CreateFork? fork,
]) =>
(super.noSuchMethod(
Invocation.method(
@@ -9019,7 +8062,7 @@
fork,
],
),
- returnValue: _i21.Future<_i14.Repository>.value(_FakeRepository_78(
+ returnValue: _i20.Future<_i13.Repository>.value(_FakeRepository_73(
this,
Invocation.method(
#createFork,
@@ -9029,20 +8072,20 @@
],
),
)),
- ) as _i21.Future<_i14.Repository>);
+ ) as _i20.Future<_i13.Repository>);
@override
- _i21.Stream<_i14.Hook> listHooks(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.Hook> listHooks(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listHooks,
[slug],
),
- returnValue: _i21.Stream<_i14.Hook>.empty(),
- ) as _i21.Stream<_i14.Hook>);
+ returnValue: _i20.Stream<_i13.Hook>.empty(),
+ ) as _i20.Stream<_i13.Hook>);
@override
- _i21.Future<_i14.Hook> getHook(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.Hook> getHook(
+ _i13.RepositorySlug? slug,
int? id,
) =>
(super.noSuchMethod(
@@ -9053,7 +8096,7 @@
id,
],
),
- returnValue: _i21.Future<_i14.Hook>.value(_FakeHook_88(
+ returnValue: _i20.Future<_i13.Hook>.value(_FakeHook_83(
this,
Invocation.method(
#getHook,
@@ -9063,12 +8106,12 @@
],
),
)),
- ) as _i21.Future<_i14.Hook>);
+ ) as _i20.Future<_i13.Hook>);
@override
- _i21.Future<_i14.Hook> createHook(
- _i14.RepositorySlug? slug,
- _i14.CreateHook? hook,
+ _i20.Future<_i13.Hook> createHook(
+ _i13.RepositorySlug? slug,
+ _i13.CreateHook? hook,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -9078,7 +8121,7 @@
hook,
],
),
- returnValue: _i21.Future<_i14.Hook>.value(_FakeHook_88(
+ returnValue: _i20.Future<_i13.Hook>.value(_FakeHook_83(
this,
Invocation.method(
#createHook,
@@ -9088,12 +8131,12 @@
],
),
)),
- ) as _i21.Future<_i14.Hook>);
+ ) as _i20.Future<_i13.Hook>);
@override
- _i21.Future<_i14.Hook> editHook(
- _i14.RepositorySlug? slug,
- _i14.Hook? hookToEdit, {
+ _i20.Future<_i13.Hook> editHook(
+ _i13.RepositorySlug? slug,
+ _i13.Hook? hookToEdit, {
String? configUrl,
String? configContentType,
String? configSecret,
@@ -9121,7 +8164,7 @@
#active: active,
},
),
- returnValue: _i21.Future<_i14.Hook>.value(_FakeHook_88(
+ returnValue: _i20.Future<_i13.Hook>.value(_FakeHook_83(
this,
Invocation.method(
#editHook,
@@ -9141,11 +8184,11 @@
},
),
)),
- ) as _i21.Future<_i14.Hook>);
+ ) as _i20.Future<_i13.Hook>);
@override
- _i21.Future<bool> testPushHook(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> testPushHook(
+ _i13.RepositorySlug? slug,
int? id,
) =>
(super.noSuchMethod(
@@ -9156,12 +8199,12 @@
id,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<bool> pingHook(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> pingHook(
+ _i13.RepositorySlug? slug,
int? id,
) =>
(super.noSuchMethod(
@@ -9172,12 +8215,12 @@
id,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<bool> deleteHook(
- _i14.RepositorySlug? slug,
+ _i20.Future<bool> deleteHook(
+ _i13.RepositorySlug? slug,
int? id,
) =>
(super.noSuchMethod(
@@ -9188,21 +8231,21 @@
id,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.PublicKey> listDeployKeys(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.PublicKey> listDeployKeys(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listDeployKeys,
[slug],
),
- returnValue: _i21.Stream<_i14.PublicKey>.empty(),
- ) as _i21.Stream<_i14.PublicKey>);
+ returnValue: _i20.Stream<_i13.PublicKey>.empty(),
+ ) as _i20.Stream<_i13.PublicKey>);
@override
- _i21.Future<_i14.PublicKey> getDeployKey(
- _i14.RepositorySlug? slug, {
+ _i20.Future<_i13.PublicKey> getDeployKey(
+ _i13.RepositorySlug? slug, {
required int? id,
}) =>
(super.noSuchMethod(
@@ -9211,7 +8254,7 @@
[slug],
{#id: id},
),
- returnValue: _i21.Future<_i14.PublicKey>.value(_FakePublicKey_89(
+ returnValue: _i20.Future<_i13.PublicKey>.value(_FakePublicKey_84(
this,
Invocation.method(
#getDeployKey,
@@ -9219,12 +8262,12 @@
{#id: id},
),
)),
- ) as _i21.Future<_i14.PublicKey>);
+ ) as _i20.Future<_i13.PublicKey>);
@override
- _i21.Future<_i14.PublicKey> createDeployKey(
- _i14.RepositorySlug? slug,
- _i14.CreatePublicKey? key,
+ _i20.Future<_i13.PublicKey> createDeployKey(
+ _i13.RepositorySlug? slug,
+ _i13.CreatePublicKey? key,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -9234,7 +8277,7 @@
key,
],
),
- returnValue: _i21.Future<_i14.PublicKey>.value(_FakePublicKey_89(
+ returnValue: _i20.Future<_i13.PublicKey>.value(_FakePublicKey_84(
this,
Invocation.method(
#createDeployKey,
@@ -9244,12 +8287,12 @@
],
),
)),
- ) as _i21.Future<_i14.PublicKey>);
+ ) as _i20.Future<_i13.PublicKey>);
@override
- _i21.Future<bool> deleteDeployKey({
- required _i14.RepositorySlug? slug,
- required _i14.PublicKey? key,
+ _i20.Future<bool> deleteDeployKey({
+ required _i13.RepositorySlug? slug,
+ required _i13.PublicKey? key,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -9260,13 +8303,13 @@
#key: key,
},
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<_i14.RepositoryCommit> merge(
- _i14.RepositorySlug? slug,
- _i14.CreateMerge? merge,
+ _i20.Future<_i13.RepositoryCommit> merge(
+ _i13.RepositorySlug? slug,
+ _i13.CreateMerge? merge,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -9276,7 +8319,7 @@
merge,
],
),
- returnValue: _i21.Future<_i14.RepositoryCommit>.value(_FakeRepositoryCommit_83(
+ returnValue: _i20.Future<_i13.RepositoryCommit>.value(_FakeRepositoryCommit_78(
this,
Invocation.method(
#merge,
@@ -9286,74 +8329,74 @@
],
),
)),
- ) as _i21.Future<_i14.RepositoryCommit>);
+ ) as _i20.Future<_i13.RepositoryCommit>);
@override
- _i21.Future<_i14.RepositoryPages> getPagesInfo(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<_i13.RepositoryPages> getPagesInfo(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#getPagesInfo,
[slug],
),
- returnValue: _i21.Future<_i14.RepositoryPages>.value(_FakeRepositoryPages_90(
+ returnValue: _i20.Future<_i13.RepositoryPages>.value(_FakeRepositoryPages_85(
this,
Invocation.method(
#getPagesInfo,
[slug],
),
)),
- ) as _i21.Future<_i14.RepositoryPages>);
+ ) as _i20.Future<_i13.RepositoryPages>);
@override
- _i21.Stream<_i14.PageBuild> listPagesBuilds(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.PageBuild> listPagesBuilds(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listPagesBuilds,
[slug],
),
- returnValue: _i21.Stream<_i14.PageBuild>.empty(),
- ) as _i21.Stream<_i14.PageBuild>);
+ returnValue: _i20.Stream<_i13.PageBuild>.empty(),
+ ) as _i20.Stream<_i13.PageBuild>);
@override
- _i21.Future<_i14.PageBuild> getLatestPagesBuild(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<_i13.PageBuild> getLatestPagesBuild(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#getLatestPagesBuild,
[slug],
),
- returnValue: _i21.Future<_i14.PageBuild>.value(_FakePageBuild_91(
+ returnValue: _i20.Future<_i13.PageBuild>.value(_FakePageBuild_86(
this,
Invocation.method(
#getLatestPagesBuild,
[slug],
),
)),
- ) as _i21.Future<_i14.PageBuild>);
+ ) as _i20.Future<_i13.PageBuild>);
@override
- _i21.Stream<_i14.Release> listReleases(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.Release> listReleases(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listReleases,
[slug],
),
- returnValue: _i21.Stream<_i14.Release>.empty(),
- ) as _i21.Stream<_i14.Release>);
+ returnValue: _i20.Stream<_i13.Release>.empty(),
+ ) as _i20.Stream<_i13.Release>);
@override
- _i21.Future<_i14.Release> getLatestRelease(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<_i13.Release> getLatestRelease(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#getLatestRelease,
[slug],
),
- returnValue: _i21.Future<_i14.Release>.value(_FakeRelease_92(
+ returnValue: _i20.Future<_i13.Release>.value(_FakeRelease_87(
this,
Invocation.method(
#getLatestRelease,
[slug],
),
)),
- ) as _i21.Future<_i14.Release>);
+ ) as _i20.Future<_i13.Release>);
@override
- _i21.Future<_i14.Release> getReleaseById(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.Release> getReleaseById(
+ _i13.RepositorySlug? slug,
int? id,
) =>
(super.noSuchMethod(
@@ -9364,7 +8407,7 @@
id,
],
),
- returnValue: _i21.Future<_i14.Release>.value(_FakeRelease_92(
+ returnValue: _i20.Future<_i13.Release>.value(_FakeRelease_87(
this,
Invocation.method(
#getReleaseById,
@@ -9374,11 +8417,11 @@
],
),
)),
- ) as _i21.Future<_i14.Release>);
+ ) as _i20.Future<_i13.Release>);
@override
- _i21.Future<_i14.Release> getReleaseByTagName(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.Release> getReleaseByTagName(
+ _i13.RepositorySlug? slug,
String? tagName,
) =>
(super.noSuchMethod(
@@ -9389,7 +8432,7 @@
tagName,
],
),
- returnValue: _i21.Future<_i14.Release>.value(_FakeRelease_92(
+ returnValue: _i20.Future<_i13.Release>.value(_FakeRelease_87(
this,
Invocation.method(
#getReleaseByTagName,
@@ -9399,12 +8442,12 @@
],
),
)),
- ) as _i21.Future<_i14.Release>);
+ ) as _i20.Future<_i13.Release>);
@override
- _i21.Future<_i14.Release> createRelease(
- _i14.RepositorySlug? slug,
- _i14.CreateRelease? createRelease, {
+ _i20.Future<_i13.Release> createRelease(
+ _i13.RepositorySlug? slug,
+ _i13.CreateRelease? createRelease, {
bool? getIfExists = true,
}) =>
(super.noSuchMethod(
@@ -9416,7 +8459,7 @@
],
{#getIfExists: getIfExists},
),
- returnValue: _i21.Future<_i14.Release>.value(_FakeRelease_92(
+ returnValue: _i20.Future<_i13.Release>.value(_FakeRelease_87(
this,
Invocation.method(
#createRelease,
@@ -9427,12 +8470,12 @@
{#getIfExists: getIfExists},
),
)),
- ) as _i21.Future<_i14.Release>);
+ ) as _i20.Future<_i13.Release>);
@override
- _i21.Future<_i14.Release> editRelease(
- _i14.RepositorySlug? slug,
- _i14.Release? releaseToEdit, {
+ _i20.Future<_i13.Release> editRelease(
+ _i13.RepositorySlug? slug,
+ _i13.Release? releaseToEdit, {
String? tagName,
String? targetCommitish,
String? name,
@@ -9456,7 +8499,7 @@
#preRelease: preRelease,
},
),
- returnValue: _i21.Future<_i14.Release>.value(_FakeRelease_92(
+ returnValue: _i20.Future<_i13.Release>.value(_FakeRelease_87(
this,
Invocation.method(
#editRelease,
@@ -9474,12 +8517,12 @@
},
),
)),
- ) as _i21.Future<_i14.Release>);
+ ) as _i20.Future<_i13.Release>);
@override
- _i21.Future<bool> deleteRelease(
- _i14.RepositorySlug? slug,
- _i14.Release? release,
+ _i20.Future<bool> deleteRelease(
+ _i13.RepositorySlug? slug,
+ _i13.Release? release,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -9489,13 +8532,13 @@
release,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.ReleaseAsset> listReleaseAssets(
- _i14.RepositorySlug? slug,
- _i14.Release? release,
+ _i20.Stream<_i13.ReleaseAsset> listReleaseAssets(
+ _i13.RepositorySlug? slug,
+ _i13.Release? release,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -9505,13 +8548,13 @@
release,
],
),
- returnValue: _i21.Stream<_i14.ReleaseAsset>.empty(),
- ) as _i21.Stream<_i14.ReleaseAsset>);
+ returnValue: _i20.Stream<_i13.ReleaseAsset>.empty(),
+ ) as _i20.Stream<_i13.ReleaseAsset>);
@override
- _i21.Future<_i14.ReleaseAsset> getReleaseAsset(
- _i14.RepositorySlug? slug,
- _i14.Release? release, {
+ _i20.Future<_i13.ReleaseAsset> getReleaseAsset(
+ _i13.RepositorySlug? slug,
+ _i13.Release? release, {
required int? assetId,
}) =>
(super.noSuchMethod(
@@ -9523,7 +8566,7 @@
],
{#assetId: assetId},
),
- returnValue: _i21.Future<_i14.ReleaseAsset>.value(_FakeReleaseAsset_93(
+ returnValue: _i20.Future<_i13.ReleaseAsset>.value(_FakeReleaseAsset_88(
this,
Invocation.method(
#getReleaseAsset,
@@ -9534,12 +8577,12 @@
{#assetId: assetId},
),
)),
- ) as _i21.Future<_i14.ReleaseAsset>);
+ ) as _i20.Future<_i13.ReleaseAsset>);
@override
- _i21.Future<_i14.ReleaseAsset> editReleaseAsset(
- _i14.RepositorySlug? slug,
- _i14.ReleaseAsset? assetToEdit, {
+ _i20.Future<_i13.ReleaseAsset> editReleaseAsset(
+ _i13.RepositorySlug? slug,
+ _i13.ReleaseAsset? assetToEdit, {
String? name,
String? label,
}) =>
@@ -9555,7 +8598,7 @@
#label: label,
},
),
- returnValue: _i21.Future<_i14.ReleaseAsset>.value(_FakeReleaseAsset_93(
+ returnValue: _i20.Future<_i13.ReleaseAsset>.value(_FakeReleaseAsset_88(
this,
Invocation.method(
#editReleaseAsset,
@@ -9569,12 +8612,12 @@
},
),
)),
- ) as _i21.Future<_i14.ReleaseAsset>);
+ ) as _i20.Future<_i13.ReleaseAsset>);
@override
- _i21.Future<bool> deleteReleaseAsset(
- _i14.RepositorySlug? slug,
- _i14.ReleaseAsset? asset,
+ _i20.Future<bool> deleteReleaseAsset(
+ _i13.RepositorySlug? slug,
+ _i13.ReleaseAsset? asset,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -9584,13 +8627,13 @@
asset,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<List<_i14.ReleaseAsset>> uploadReleaseAssets(
- _i14.Release? release,
- Iterable<_i14.CreateReleaseAsset>? createReleaseAssets,
+ _i20.Future<List<_i13.ReleaseAsset>> uploadReleaseAssets(
+ _i13.Release? release,
+ Iterable<_i13.CreateReleaseAsset>? createReleaseAssets,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -9600,63 +8643,63 @@
createReleaseAssets,
],
),
- returnValue: _i21.Future<List<_i14.ReleaseAsset>>.value(<_i14.ReleaseAsset>[]),
- ) as _i21.Future<List<_i14.ReleaseAsset>>);
+ returnValue: _i20.Future<List<_i13.ReleaseAsset>>.value(<_i13.ReleaseAsset>[]),
+ ) as _i20.Future<List<_i13.ReleaseAsset>>);
@override
- _i21.Future<List<_i14.ContributorStatistics>> listContributorStats(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<List<_i13.ContributorStatistics>> listContributorStats(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listContributorStats,
[slug],
),
- returnValue: _i21.Future<List<_i14.ContributorStatistics>>.value(<_i14.ContributorStatistics>[]),
- ) as _i21.Future<List<_i14.ContributorStatistics>>);
+ returnValue: _i20.Future<List<_i13.ContributorStatistics>>.value(<_i13.ContributorStatistics>[]),
+ ) as _i20.Future<List<_i13.ContributorStatistics>>);
@override
- _i21.Stream<_i14.YearCommitCountWeek> listCommitActivity(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.YearCommitCountWeek> listCommitActivity(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listCommitActivity,
[slug],
),
- returnValue: _i21.Stream<_i14.YearCommitCountWeek>.empty(),
- ) as _i21.Stream<_i14.YearCommitCountWeek>);
+ returnValue: _i20.Stream<_i13.YearCommitCountWeek>.empty(),
+ ) as _i20.Stream<_i13.YearCommitCountWeek>);
@override
- _i21.Stream<_i14.WeeklyChangesCount> listCodeFrequency(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.WeeklyChangesCount> listCodeFrequency(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listCodeFrequency,
[slug],
),
- returnValue: _i21.Stream<_i14.WeeklyChangesCount>.empty(),
- ) as _i21.Stream<_i14.WeeklyChangesCount>);
+ returnValue: _i20.Stream<_i13.WeeklyChangesCount>.empty(),
+ ) as _i20.Stream<_i13.WeeklyChangesCount>);
@override
- _i21.Future<_i14.ContributorParticipation> getParticipation(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Future<_i13.ContributorParticipation> getParticipation(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#getParticipation,
[slug],
),
- returnValue: _i21.Future<_i14.ContributorParticipation>.value(_FakeContributorParticipation_94(
+ returnValue: _i20.Future<_i13.ContributorParticipation>.value(_FakeContributorParticipation_89(
this,
Invocation.method(
#getParticipation,
[slug],
),
)),
- ) as _i21.Future<_i14.ContributorParticipation>);
+ ) as _i20.Future<_i13.ContributorParticipation>);
@override
- _i21.Stream<_i14.PunchcardEntry> listPunchcard(_i14.RepositorySlug? slug) => (super.noSuchMethod(
+ _i20.Stream<_i13.PunchcardEntry> listPunchcard(_i13.RepositorySlug? slug) => (super.noSuchMethod(
Invocation.method(
#listPunchcard,
[slug],
),
- returnValue: _i21.Stream<_i14.PunchcardEntry>.empty(),
- ) as _i21.Stream<_i14.PunchcardEntry>);
+ returnValue: _i20.Stream<_i13.PunchcardEntry>.empty(),
+ ) as _i20.Stream<_i13.PunchcardEntry>);
@override
- _i21.Stream<_i14.RepositoryStatus> listStatuses(
- _i14.RepositorySlug? slug,
+ _i20.Stream<_i13.RepositoryStatus> listStatuses(
+ _i13.RepositorySlug? slug,
String? ref,
) =>
(super.noSuchMethod(
@@ -9667,14 +8710,14 @@
ref,
],
),
- returnValue: _i21.Stream<_i14.RepositoryStatus>.empty(),
- ) as _i21.Stream<_i14.RepositoryStatus>);
+ returnValue: _i20.Stream<_i13.RepositoryStatus>.empty(),
+ ) as _i20.Stream<_i13.RepositoryStatus>);
@override
- _i21.Future<_i14.RepositoryStatus> createStatus(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.RepositoryStatus> createStatus(
+ _i13.RepositorySlug? slug,
String? ref,
- _i14.CreateStatus? request,
+ _i13.CreateStatus? request,
) =>
(super.noSuchMethod(
Invocation.method(
@@ -9685,7 +8728,7 @@
request,
],
),
- returnValue: _i21.Future<_i14.RepositoryStatus>.value(_FakeRepositoryStatus_95(
+ returnValue: _i20.Future<_i13.RepositoryStatus>.value(_FakeRepositoryStatus_90(
this,
Invocation.method(
#createStatus,
@@ -9696,11 +8739,11 @@
],
),
)),
- ) as _i21.Future<_i14.RepositoryStatus>);
+ ) as _i20.Future<_i13.RepositoryStatus>);
@override
- _i21.Future<_i14.CombinedRepositoryStatus> getCombinedStatus(
- _i14.RepositorySlug? slug,
+ _i20.Future<_i13.CombinedRepositoryStatus> getCombinedStatus(
+ _i13.RepositorySlug? slug,
String? ref,
) =>
(super.noSuchMethod(
@@ -9711,7 +8754,7 @@
ref,
],
),
- returnValue: _i21.Future<_i14.CombinedRepositoryStatus>.value(_FakeCombinedRepositoryStatus_96(
+ returnValue: _i20.Future<_i13.CombinedRepositoryStatus>.value(_FakeCombinedRepositoryStatus_91(
this,
Invocation.method(
#getCombinedStatus,
@@ -9721,43 +8764,43 @@
],
),
)),
- ) as _i21.Future<_i14.CombinedRepositoryStatus>);
+ ) as _i20.Future<_i13.CombinedRepositoryStatus>);
@override
- _i21.Future<_i14.ReleaseNotes> generateReleaseNotes(_i14.CreateReleaseNotes? crn) => (super.noSuchMethod(
+ _i20.Future<_i13.ReleaseNotes> generateReleaseNotes(_i13.CreateReleaseNotes? crn) => (super.noSuchMethod(
Invocation.method(
#generateReleaseNotes,
[crn],
),
- returnValue: _i21.Future<_i14.ReleaseNotes>.value(_FakeReleaseNotes_97(
+ returnValue: _i20.Future<_i13.ReleaseNotes>.value(_FakeReleaseNotes_92(
this,
Invocation.method(
#generateReleaseNotes,
[crn],
),
)),
- ) as _i21.Future<_i14.ReleaseNotes>);
+ ) as _i20.Future<_i13.ReleaseNotes>);
}
/// A class which mocks [SearchService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockSearchService extends _i1.Mock implements _i14.SearchService {
+class MockSearchService extends _i1.Mock implements _i13.SearchService {
MockSearchService() {
_i1.throwOnMissingStub(this);
}
@override
- _i14.GitHub get github => (super.noSuchMethod(
+ _i13.GitHub get github => (super.noSuchMethod(
Invocation.getter(#github),
- returnValue: _FakeGitHub_20(
+ returnValue: _FakeGitHub_16(
this,
Invocation.getter(#github),
),
- ) as _i14.GitHub);
+ ) as _i13.GitHub);
@override
- _i21.Stream<_i14.Repository> repositories(
+ _i20.Stream<_i13.Repository> repositories(
String? query, {
String? sort,
int? pages = 2,
@@ -9771,11 +8814,11 @@
#pages: pages,
},
),
- returnValue: _i21.Stream<_i14.Repository>.empty(),
- ) as _i21.Stream<_i14.Repository>);
+ returnValue: _i20.Stream<_i13.Repository>.empty(),
+ ) as _i20.Stream<_i13.Repository>);
@override
- _i21.Stream<_i14.CodeSearchResults> code(
+ _i20.Stream<_i13.CodeSearchResults> code(
String? query, {
int? pages,
int? perPage,
@@ -9811,11 +8854,11 @@
#inPath: inPath,
},
),
- returnValue: _i21.Stream<_i14.CodeSearchResults>.empty(),
- ) as _i21.Stream<_i14.CodeSearchResults>);
+ returnValue: _i20.Stream<_i13.CodeSearchResults>.empty(),
+ ) as _i20.Stream<_i13.CodeSearchResults>);
@override
- _i21.Stream<_i14.Issue> issues(
+ _i20.Stream<_i13.Issue> issues(
String? query, {
String? sort,
int? pages = 2,
@@ -9829,11 +8872,11 @@
#pages: pages,
},
),
- returnValue: _i21.Stream<_i14.Issue>.empty(),
- ) as _i21.Stream<_i14.Issue>);
+ returnValue: _i20.Stream<_i13.Issue>.empty(),
+ ) as _i20.Stream<_i13.Issue>);
@override
- _i21.Stream<_i14.User> users(
+ _i20.Stream<_i13.User> users(
String? query, {
String? sort,
int? pages = 2,
@@ -9849,8 +8892,8 @@
#perPage: perPage,
},
),
- returnValue: _i21.Stream<_i14.User>.empty(),
- ) as _i21.Stream<_i14.User>);
+ returnValue: _i20.Stream<_i13.User>.empty(),
+ ) as _i20.Stream<_i13.User>);
}
/// A class which mocks [TabledataResource].
@@ -9862,7 +8905,7 @@
}
@override
- _i21.Future<_i6.TableDataInsertAllResponse> insertAll(
+ _i20.Future<_i6.TableDataInsertAllResponse> insertAll(
_i6.TableDataInsertAllRequest? request,
String? projectId,
String? datasetId,
@@ -9880,7 +8923,7 @@
],
{#$fields: $fields},
),
- returnValue: _i21.Future<_i6.TableDataInsertAllResponse>.value(_FakeTableDataInsertAllResponse_98(
+ returnValue: _i20.Future<_i6.TableDataInsertAllResponse>.value(_FakeTableDataInsertAllResponse_93(
this,
Invocation.method(
#insertAll,
@@ -9893,10 +8936,10 @@
{#$fields: $fields},
),
)),
- ) as _i21.Future<_i6.TableDataInsertAllResponse>);
+ ) as _i20.Future<_i6.TableDataInsertAllResponse>);
@override
- _i21.Future<_i6.TableDataList> list(
+ _i20.Future<_i6.TableDataList> list(
String? projectId,
String? datasetId,
String? tableId, {
@@ -9922,7 +8965,7 @@
#$fields: $fields,
},
),
- returnValue: _i21.Future<_i6.TableDataList>.value(_FakeTableDataList_99(
+ returnValue: _i20.Future<_i6.TableDataList>.value(_FakeTableDataList_94(
this,
Invocation.method(
#list,
@@ -9940,43 +8983,43 @@
},
),
)),
- ) as _i21.Future<_i6.TableDataList>);
+ ) as _i20.Future<_i6.TableDataList>);
}
/// A class which mocks [UsersService].
///
/// See the documentation for Mockito's code generation for more information.
-class MockUsersService extends _i1.Mock implements _i14.UsersService {
+class MockUsersService extends _i1.Mock implements _i13.UsersService {
MockUsersService() {
_i1.throwOnMissingStub(this);
}
@override
- _i14.GitHub get github => (super.noSuchMethod(
+ _i13.GitHub get github => (super.noSuchMethod(
Invocation.getter(#github),
- returnValue: _FakeGitHub_20(
+ returnValue: _FakeGitHub_16(
this,
Invocation.getter(#github),
),
- ) as _i14.GitHub);
+ ) as _i13.GitHub);
@override
- _i21.Future<_i14.User> getUser(String? name) => (super.noSuchMethod(
+ _i20.Future<_i13.User> getUser(String? name) => (super.noSuchMethod(
Invocation.method(
#getUser,
[name],
),
- returnValue: _i21.Future<_i14.User>.value(_FakeUser_100(
+ returnValue: _i20.Future<_i13.User>.value(_FakeUser_95(
this,
Invocation.method(
#getUser,
[name],
),
)),
- ) as _i21.Future<_i14.User>);
+ ) as _i20.Future<_i13.User>);
@override
- _i21.Future<_i14.CurrentUser> editCurrentUser({
+ _i20.Future<_i13.CurrentUser> editCurrentUser({
String? name,
String? email,
String? blog,
@@ -9999,7 +9042,7 @@
#bio: bio,
},
),
- returnValue: _i21.Future<_i14.CurrentUser>.value(_FakeCurrentUser_101(
+ returnValue: _i20.Future<_i13.CurrentUser>.value(_FakeCurrentUser_96(
this,
Invocation.method(
#editCurrentUser,
@@ -10015,10 +9058,10 @@
},
),
)),
- ) as _i21.Future<_i14.CurrentUser>);
+ ) as _i20.Future<_i13.CurrentUser>);
@override
- _i21.Stream<_i14.User> getUsers(
+ _i20.Stream<_i13.User> getUsers(
List<String>? names, {
int? pages,
}) =>
@@ -10028,35 +9071,35 @@
[names],
{#pages: pages},
),
- returnValue: _i21.Stream<_i14.User>.empty(),
- ) as _i21.Stream<_i14.User>);
+ returnValue: _i20.Stream<_i13.User>.empty(),
+ ) as _i20.Stream<_i13.User>);
@override
- _i21.Future<_i14.CurrentUser> getCurrentUser() => (super.noSuchMethod(
+ _i20.Future<_i13.CurrentUser> getCurrentUser() => (super.noSuchMethod(
Invocation.method(
#getCurrentUser,
[],
),
- returnValue: _i21.Future<_i14.CurrentUser>.value(_FakeCurrentUser_101(
+ returnValue: _i20.Future<_i13.CurrentUser>.value(_FakeCurrentUser_96(
this,
Invocation.method(
#getCurrentUser,
[],
),
)),
- ) as _i21.Future<_i14.CurrentUser>);
+ ) as _i20.Future<_i13.CurrentUser>);
@override
- _i21.Future<bool> isUser(String? name) => (super.noSuchMethod(
+ _i20.Future<bool> isUser(String? name) => (super.noSuchMethod(
Invocation.method(
#isUser,
[name],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.User> listUsers({
+ _i20.Stream<_i13.User> listUsers({
int? pages,
int? since,
}) =>
@@ -10069,56 +9112,56 @@
#since: since,
},
),
- returnValue: _i21.Stream<_i14.User>.empty(),
- ) as _i21.Stream<_i14.User>);
+ returnValue: _i20.Stream<_i13.User>.empty(),
+ ) as _i20.Stream<_i13.User>);
@override
- _i21.Stream<_i14.UserEmail> listEmails() => (super.noSuchMethod(
+ _i20.Stream<_i13.UserEmail> listEmails() => (super.noSuchMethod(
Invocation.method(
#listEmails,
[],
),
- returnValue: _i21.Stream<_i14.UserEmail>.empty(),
- ) as _i21.Stream<_i14.UserEmail>);
+ returnValue: _i20.Stream<_i13.UserEmail>.empty(),
+ ) as _i20.Stream<_i13.UserEmail>);
@override
- _i21.Stream<_i14.UserEmail> addEmails(List<String>? emails) => (super.noSuchMethod(
+ _i20.Stream<_i13.UserEmail> addEmails(List<String>? emails) => (super.noSuchMethod(
Invocation.method(
#addEmails,
[emails],
),
- returnValue: _i21.Stream<_i14.UserEmail>.empty(),
- ) as _i21.Stream<_i14.UserEmail>);
+ returnValue: _i20.Stream<_i13.UserEmail>.empty(),
+ ) as _i20.Stream<_i13.UserEmail>);
@override
- _i21.Future<bool> deleteEmails(List<String>? emails) => (super.noSuchMethod(
+ _i20.Future<bool> deleteEmails(List<String>? emails) => (super.noSuchMethod(
Invocation.method(
#deleteEmails,
[emails],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.User> listUserFollowers(String? user) => (super.noSuchMethod(
+ _i20.Stream<_i13.User> listUserFollowers(String? user) => (super.noSuchMethod(
Invocation.method(
#listUserFollowers,
[user],
),
- returnValue: _i21.Stream<_i14.User>.empty(),
- ) as _i21.Stream<_i14.User>);
+ returnValue: _i20.Stream<_i13.User>.empty(),
+ ) as _i20.Stream<_i13.User>);
@override
- _i21.Future<bool> isFollowingUser(String? user) => (super.noSuchMethod(
+ _i20.Future<bool> isFollowingUser(String? user) => (super.noSuchMethod(
Invocation.method(
#isFollowingUser,
[user],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<bool> isUserFollowing(
+ _i20.Future<bool> isUserFollowing(
String? user,
String? target,
) =>
@@ -10130,158 +9173,158 @@
target,
],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<bool> followUser(String? user) => (super.noSuchMethod(
+ _i20.Future<bool> followUser(String? user) => (super.noSuchMethod(
Invocation.method(
#followUser,
[user],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Future<bool> unfollowUser(String? user) => (super.noSuchMethod(
+ _i20.Future<bool> unfollowUser(String? user) => (super.noSuchMethod(
Invocation.method(
#unfollowUser,
[user],
),
- returnValue: _i21.Future<bool>.value(false),
- ) as _i21.Future<bool>);
+ returnValue: _i20.Future<bool>.value(false),
+ ) as _i20.Future<bool>);
@override
- _i21.Stream<_i14.User> listCurrentUserFollowers() => (super.noSuchMethod(
+ _i20.Stream<_i13.User> listCurrentUserFollowers() => (super.noSuchMethod(
Invocation.method(
#listCurrentUserFollowers,
[],
),
- returnValue: _i21.Stream<_i14.User>.empty(),
- ) as _i21.Stream<_i14.User>);
+ returnValue: _i20.Stream<_i13.User>.empty(),
+ ) as _i20.Stream<_i13.User>);
@override
- _i21.Stream<_i14.User> listCurrentUserFollowing() => (super.noSuchMethod(
+ _i20.Stream<_i13.User> listCurrentUserFollowing() => (super.noSuchMethod(
Invocation.method(
#listCurrentUserFollowing,
[],
),
- returnValue: _i21.Stream<_i14.User>.empty(),
- ) as _i21.Stream<_i14.User>);
+ returnValue: _i20.Stream<_i13.User>.empty(),
+ ) as _i20.Stream<_i13.User>);
@override
- _i21.Stream<_i14.PublicKey> listPublicKeys([String? userLogin]) => (super.noSuchMethod(
+ _i20.Stream<_i13.PublicKey> listPublicKeys([String? userLogin]) => (super.noSuchMethod(
Invocation.method(
#listPublicKeys,
[userLogin],
),
- returnValue: _i21.Stream<_i14.PublicKey>.empty(),
- ) as _i21.Stream<_i14.PublicKey>);
+ returnValue: _i20.Stream<_i13.PublicKey>.empty(),
+ ) as _i20.Stream<_i13.PublicKey>);
@override
- _i21.Future<_i14.PublicKey> createPublicKey(_i14.CreatePublicKey? key) => (super.noSuchMethod(
+ _i20.Future<_i13.PublicKey> createPublicKey(_i13.CreatePublicKey? key) => (super.noSuchMethod(
Invocation.method(
#createPublicKey,
[key],
),
- returnValue: _i21.Future<_i14.PublicKey>.value(_FakePublicKey_89(
+ returnValue: _i20.Future<_i13.PublicKey>.value(_FakePublicKey_84(
this,
Invocation.method(
#createPublicKey,
[key],
),
)),
- ) as _i21.Future<_i14.PublicKey>);
+ ) as _i20.Future<_i13.PublicKey>);
}
/// A class which mocks [Cache].
///
/// See the documentation for Mockito's code generation for more information.
-class MockCache extends _i1.Mock implements _i29.Cache<_i40.Uint8List> {
+class MockCache extends _i1.Mock implements _i27.Cache<_i38.Uint8List> {
MockCache() {
_i1.throwOnMissingStub(this);
}
@override
- _i29.Entry<_i40.Uint8List> operator [](String? key) => (super.noSuchMethod(
+ _i27.Entry<_i38.Uint8List> operator [](String? key) => (super.noSuchMethod(
Invocation.method(
#[],
[key],
),
- returnValue: _FakeEntry_102<_i40.Uint8List>(
+ returnValue: _FakeEntry_97<_i38.Uint8List>(
this,
Invocation.method(
#[],
[key],
),
),
- ) as _i29.Entry<_i40.Uint8List>);
+ ) as _i27.Entry<_i38.Uint8List>);
@override
- _i29.Cache<_i40.Uint8List> withPrefix(String? prefix) => (super.noSuchMethod(
+ _i27.Cache<_i38.Uint8List> withPrefix(String? prefix) => (super.noSuchMethod(
Invocation.method(
#withPrefix,
[prefix],
),
- returnValue: _FakeCache_103<_i40.Uint8List>(
+ returnValue: _FakeCache_98<_i38.Uint8List>(
this,
Invocation.method(
#withPrefix,
[prefix],
),
),
- ) as _i29.Cache<_i40.Uint8List>);
+ ) as _i27.Cache<_i38.Uint8List>);
@override
- _i29.Cache<S> withCodec<S>(_i27.Codec<S, _i40.Uint8List>? codec) => (super.noSuchMethod(
+ _i27.Cache<S> withCodec<S>(_i26.Codec<S, _i38.Uint8List>? codec) => (super.noSuchMethod(
Invocation.method(
#withCodec,
[codec],
),
- returnValue: _FakeCache_103<S>(
+ returnValue: _FakeCache_98<S>(
this,
Invocation.method(
#withCodec,
[codec],
),
),
- ) as _i29.Cache<S>);
+ ) as _i27.Cache<S>);
@override
- _i29.Cache<_i40.Uint8List> withTTL(Duration? ttl) => (super.noSuchMethod(
+ _i27.Cache<_i38.Uint8List> withTTL(Duration? ttl) => (super.noSuchMethod(
Invocation.method(
#withTTL,
[ttl],
),
- returnValue: _FakeCache_103<_i40.Uint8List>(
+ returnValue: _FakeCache_98<_i38.Uint8List>(
this,
Invocation.method(
#withTTL,
[ttl],
),
),
- ) as _i29.Cache<_i40.Uint8List>);
+ ) as _i27.Cache<_i38.Uint8List>);
}
/// A class which mocks [GitHub].
///
/// See the documentation for Mockito's code generation for more information.
-class MockGitHub extends _i1.Mock implements _i14.GitHub {
+class MockGitHub extends _i1.Mock implements _i13.GitHub {
MockGitHub() {
_i1.throwOnMissingStub(this);
}
@override
- _i14.Authentication get auth => (super.noSuchMethod(
+ _i13.Authentication get auth => (super.noSuchMethod(
Invocation.getter(#auth),
- returnValue: _FakeAuthentication_104(
+ returnValue: _FakeAuthentication_99(
this,
Invocation.getter(#auth),
),
- ) as _i14.Authentication);
+ ) as _i13.Authentication);
@override
- set auth(_i14.Authentication? _auth) => super.noSuchMethod(
+ set auth(_i13.Authentication? _auth) => super.noSuchMethod(
Invocation.setter(
#auth,
_auth,
@@ -10292,7 +9335,7 @@
@override
String get endpoint => (super.noSuchMethod(
Invocation.getter(#endpoint),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#endpoint),
),
@@ -10301,7 +9344,7 @@
@override
String get version => (super.noSuchMethod(
Invocation.getter(#version),
- returnValue: _i32.dummyValue<String>(
+ returnValue: _i30.dummyValue<String>(
this,
Invocation.getter(#version),
),
@@ -10317,130 +9360,130 @@
) as _i2.Client);
@override
- _i14.ActivityService get activity => (super.noSuchMethod(
+ _i13.ActivityService get activity => (super.noSuchMethod(
Invocation.getter(#activity),
- returnValue: _FakeActivityService_105(
+ returnValue: _FakeActivityService_100(
this,
Invocation.getter(#activity),
),
- ) as _i14.ActivityService);
+ ) as _i13.ActivityService);
@override
- _i14.AuthorizationsService get authorizations => (super.noSuchMethod(
+ _i13.AuthorizationsService get authorizations => (super.noSuchMethod(
Invocation.getter(#authorizations),
- returnValue: _FakeAuthorizationsService_106(
+ returnValue: _FakeAuthorizationsService_101(
this,
Invocation.getter(#authorizations),
),
- ) as _i14.AuthorizationsService);
+ ) as _i13.AuthorizationsService);
@override
- _i14.GistsService get gists => (super.noSuchMethod(
+ _i13.GistsService get gists => (super.noSuchMethod(
Invocation.getter(#gists),
- returnValue: _FakeGistsService_107(
+ returnValue: _FakeGistsService_102(
this,
Invocation.getter(#gists),
),
- ) as _i14.GistsService);
+ ) as _i13.GistsService);
@override
- _i14.GitService get git => (super.noSuchMethod(
+ _i13.GitService get git => (super.noSuchMethod(
Invocation.getter(#git),
- returnValue: _FakeGitService_108(
+ returnValue: _FakeGitService_103(
this,
Invocation.getter(#git),
),
- ) as _i14.GitService);
+ ) as _i13.GitService);
@override
- _i14.IssuesService get issues => (super.noSuchMethod(
+ _i13.IssuesService get issues => (super.noSuchMethod(
Invocation.getter(#issues),
- returnValue: _FakeIssuesService_109(
+ returnValue: _FakeIssuesService_104(
this,
Invocation.getter(#issues),
),
- ) as _i14.IssuesService);
+ ) as _i13.IssuesService);
@override
- _i14.MiscService get misc => (super.noSuchMethod(
+ _i13.MiscService get misc => (super.noSuchMethod(
Invocation.getter(#misc),
- returnValue: _FakeMiscService_110(
+ returnValue: _FakeMiscService_105(
this,
Invocation.getter(#misc),
),
- ) as _i14.MiscService);
+ ) as _i13.MiscService);
@override
- _i14.OrganizationsService get organizations => (super.noSuchMethod(
+ _i13.OrganizationsService get organizations => (super.noSuchMethod(
Invocation.getter(#organizations),
- returnValue: _FakeOrganizationsService_111(
+ returnValue: _FakeOrganizationsService_106(
this,
Invocation.getter(#organizations),
),
- ) as _i14.OrganizationsService);
+ ) as _i13.OrganizationsService);
@override
- _i14.PullRequestsService get pullRequests => (super.noSuchMethod(
+ _i13.PullRequestsService get pullRequests => (super.noSuchMethod(
Invocation.getter(#pullRequests),
- returnValue: _FakePullRequestsService_112(
+ returnValue: _FakePullRequestsService_107(
this,
Invocation.getter(#pullRequests),
),
- ) as _i14.PullRequestsService);
+ ) as _i13.PullRequestsService);
@override
- _i14.RepositoriesService get repositories => (super.noSuchMethod(
+ _i13.RepositoriesService get repositories => (super.noSuchMethod(
Invocation.getter(#repositories),
- returnValue: _FakeRepositoriesService_113(
+ returnValue: _FakeRepositoriesService_108(
this,
Invocation.getter(#repositories),
),
- ) as _i14.RepositoriesService);
+ ) as _i13.RepositoriesService);
@override
- _i14.SearchService get search => (super.noSuchMethod(
+ _i13.SearchService get search => (super.noSuchMethod(
Invocation.getter(#search),
- returnValue: _FakeSearchService_114(
+ returnValue: _FakeSearchService_109(
this,
Invocation.getter(#search),
),
- ) as _i14.SearchService);
+ ) as _i13.SearchService);
@override
- _i14.UrlShortenerService get urlShortener => (super.noSuchMethod(
+ _i13.UrlShortenerService get urlShortener => (super.noSuchMethod(
Invocation.getter(#urlShortener),
- returnValue: _FakeUrlShortenerService_115(
+ returnValue: _FakeUrlShortenerService_110(
this,
Invocation.getter(#urlShortener),
),
- ) as _i14.UrlShortenerService);
+ ) as _i13.UrlShortenerService);
@override
- _i14.UsersService get users => (super.noSuchMethod(
+ _i13.UsersService get users => (super.noSuchMethod(
Invocation.getter(#users),
- returnValue: _FakeUsersService_116(
+ returnValue: _FakeUsersService_111(
this,
Invocation.getter(#users),
),
- ) as _i14.UsersService);
+ ) as _i13.UsersService);
@override
- _i14.ChecksService get checks => (super.noSuchMethod(
+ _i13.ChecksService get checks => (super.noSuchMethod(
Invocation.getter(#checks),
- returnValue: _FakeChecksService_117(
+ returnValue: _FakeChecksService_112(
this,
Invocation.getter(#checks),
),
- ) as _i14.ChecksService);
+ ) as _i13.ChecksService);
@override
- _i21.Future<T> getJSON<S, T>(
+ _i20.Future<T> getJSON<S, T>(
String? path, {
int? statusCode,
void Function(_i2.Response)? fail,
Map<String, String>? headers,
Map<String, String>? params,
- _i14.JSONConverter<S, T>? convert,
+ _i13.JSONConverter<S, T>? convert,
String? preview,
}) =>
(super.noSuchMethod(
@@ -10456,8 +9499,8 @@
#preview: preview,
},
),
- returnValue: _i32.ifNotNull(
- _i32.dummyValueOrNull<T>(
+ returnValue: _i30.ifNotNull(
+ _i30.dummyValueOrNull<T>(
this,
Invocation.method(
#getJSON,
@@ -10472,9 +9515,9 @@
},
),
),
- (T v) => _i21.Future<T>.value(v),
+ (T v) => _i20.Future<T>.value(v),
) ??
- _FakeFuture_27<T>(
+ _FakeFuture_23<T>(
this,
Invocation.method(
#getJSON,
@@ -10489,16 +9532,16 @@
},
),
),
- ) as _i21.Future<T>);
+ ) as _i20.Future<T>);
@override
- _i21.Future<T> postJSON<S, T>(
+ _i20.Future<T> postJSON<S, T>(
String? path, {
int? statusCode,
void Function(_i2.Response)? fail,
Map<String, String>? headers,
Map<String, dynamic>? params,
- _i14.JSONConverter<S, T>? convert,
+ _i13.JSONConverter<S, T>? convert,
dynamic body,
String? preview,
}) =>
@@ -10516,7 +9559,7 @@
#preview: preview,
},
),
- returnValue: _i51.postJsonShim<S, T>(
+ returnValue: _i45.postJsonShim<S, T>(
path,
statusCode: statusCode,
fail: fail,
@@ -10526,16 +9569,16 @@
body: body,
preview: preview,
),
- ) as _i21.Future<T>);
+ ) as _i20.Future<T>);
@override
- _i21.Future<T> putJSON<S, T>(
+ _i20.Future<T> putJSON<S, T>(
String? path, {
int? statusCode,
void Function(_i2.Response)? fail,
Map<String, String>? headers,
Map<String, dynamic>? params,
- _i14.JSONConverter<S, T>? convert,
+ _i13.JSONConverter<S, T>? convert,
dynamic body,
String? preview,
}) =>
@@ -10553,8 +9596,8 @@
#preview: preview,
},
),
- returnValue: _i32.ifNotNull(
- _i32.dummyValueOrNull<T>(
+ returnValue: _i30.ifNotNull(
+ _i30.dummyValueOrNull<T>(
this,
Invocation.method(
#putJSON,
@@ -10570,9 +9613,9 @@
},
),
),
- (T v) => _i21.Future<T>.value(v),
+ (T v) => _i20.Future<T>.value(v),
) ??
- _FakeFuture_27<T>(
+ _FakeFuture_23<T>(
this,
Invocation.method(
#putJSON,
@@ -10588,16 +9631,16 @@
},
),
),
- ) as _i21.Future<T>);
+ ) as _i20.Future<T>);
@override
- _i21.Future<T> patchJSON<S, T>(
+ _i20.Future<T> patchJSON<S, T>(
String? path, {
int? statusCode,
void Function(_i2.Response)? fail,
Map<String, String>? headers,
Map<String, dynamic>? params,
- _i14.JSONConverter<S, T>? convert,
+ _i13.JSONConverter<S, T>? convert,
dynamic body,
String? preview,
}) =>
@@ -10615,8 +9658,8 @@
#preview: preview,
},
),
- returnValue: _i32.ifNotNull(
- _i32.dummyValueOrNull<T>(
+ returnValue: _i30.ifNotNull(
+ _i30.dummyValueOrNull<T>(
this,
Invocation.method(
#patchJSON,
@@ -10632,9 +9675,9 @@
},
),
),
- (T v) => _i21.Future<T>.value(v),
+ (T v) => _i20.Future<T>.value(v),
) ??
- _FakeFuture_27<T>(
+ _FakeFuture_23<T>(
this,
Invocation.method(
#patchJSON,
@@ -10650,17 +9693,17 @@
},
),
),
- ) as _i21.Future<T>);
+ ) as _i20.Future<T>);
@override
- _i21.Future<T> requestJson<S, T>(
+ _i20.Future<T> requestJson<S, T>(
String? method,
String? path, {
int? statusCode,
void Function(_i2.Response)? fail,
Map<String, String>? headers,
Map<String, dynamic>? params,
- _i14.JSONConverter<S, T?>? convert,
+ _i13.JSONConverter<S, T?>? convert,
dynamic body,
String? preview,
}) =>
@@ -10681,8 +9724,8 @@
#preview: preview,
},
),
- returnValue: _i32.ifNotNull(
- _i32.dummyValueOrNull<T>(
+ returnValue: _i30.ifNotNull(
+ _i30.dummyValueOrNull<T>(
this,
Invocation.method(
#requestJson,
@@ -10701,9 +9744,9 @@
},
),
),
- (T v) => _i21.Future<T>.value(v),
+ (T v) => _i20.Future<T>.value(v),
) ??
- _FakeFuture_27<T>(
+ _FakeFuture_23<T>(
this,
Invocation.method(
#requestJson,
@@ -10722,10 +9765,10 @@
},
),
),
- ) as _i21.Future<T>);
+ ) as _i20.Future<T>);
@override
- _i21.Future<_i2.Response> request(
+ _i20.Future<_i2.Response> request(
String? method,
String? path, {
Map<String, String>? headers,
@@ -10751,7 +9794,7 @@
#preview: preview,
},
),
- returnValue: _i21.Future<_i2.Response>.value(_FakeResponse_118(
+ returnValue: _i20.Future<_i2.Response>.value(_FakeResponse_113(
this,
Invocation.method(
#request,
@@ -10769,7 +9812,7 @@
},
),
)),
- ) as _i21.Future<_i2.Response>);
+ ) as _i20.Future<_i2.Response>);
@override
Never handleStatusCode(_i2.Response? response) => (super.noSuchMethod(
diff --git a/cron.yaml b/cron.yaml
index bfc4d19..bf1525e 100644
--- a/cron.yaml
+++ b/cron.yaml
@@ -7,10 +7,6 @@
url: /api/vacuum-github-commits
schedule: every 6 hours
-- description: retrieve missing commits v2
- url: /api/v2/vacuum-github-commits
- schedule: every 6 hours
-
# TODO(keyonghan): will delete if `In Progress` hanging issue is resolved:
# https://github.com/flutter/flutter/issues/120395#issuecomment-1444810718
- description: vacuum stale tasks
@@ -21,10 +17,6 @@
url: /api/scheduler/batch-backfiller
schedule: every 5 minutes
-- description: backfills builds via the build bucket v2 api
- url: /api/v2/scheduler/batch-backfiller
- schedule: every 5 minutes
-
- description: sends build status to GitHub to annotate flutter PRs and commits
url: /api/push-build-status-to-github?repo=flutter/flutter
schedule: every 1 minutes