@@ -17,6 +17,7 @@ import 'package:gcloud/storage.dart' show Bucket;
1717import 'package:googleapis/storage/v1.dart' show DetailedApiRequestError;
1818import 'package:indexed_blob/indexed_blob.dart' show BlobIndex, FileRange;
1919import 'package:logging/logging.dart' show Logger;
20+ import 'package:meta/meta.dart' ;
2021import 'package:pana/models.dart' show Summary;
2122import 'package:pool/pool.dart' show Pool;
2223import 'package:pub_dev/package/api_export/api_exporter.dart' ;
@@ -128,17 +129,17 @@ class TaskBackend {
128129 final scanLoop = _createLoop (
129130 name: 'scan-packages' ,
130131 aborted: aborted,
131- fn: _runOneScanPackagesUpdate ,
132+ fn: runOneScanPackagesUpdate ,
132133 );
133134 final deleteLoop = _createLoop (
134135 name: 'delete-instances' ,
135136 aborted: aborted,
136- fn: _runOneInstanceDeletion ,
137+ fn: runOneInstanceDeletion ,
137138 );
138139 final createLoop = _createLoop (
139140 name: 'create-instances' ,
140141 aborted: aborted,
141- fn: _runOneInstanceCreation ,
142+ fn: runOneInstanceCreation ,
142143 );
143144
144145 scheduleMicrotask (() async {
@@ -296,9 +297,8 @@ class TaskBackend {
296297 }
297298 }
298299
299- Future <Duration > _runOneScanPackagesUpdate (
300- bool Function () isAbortedFn,
301- ) async {
300+ @visibleForTesting
301+ Future <Duration > runOneScanPackagesUpdate (bool Function () isAbortedFn) async {
302302 final next = await runOneScanPackagesUpdatedCycle (
303303 _scanPackagesUpdatedState,
304304 _db.packages.listUpdatedSince (_scanPackagesUpdatedState.since),
@@ -317,7 +317,8 @@ class TaskBackend {
317317 return Duration (minutes: 10 ); // TODO: consider if we scan more frequently.
318318 }
319319
320- Future <Duration > _runOneInstanceDeletion (bool Function () isAbortedFn) async {
320+ @visibleForTesting
321+ Future <Duration > runOneInstanceDeletion (bool Function () isAbortedFn) async {
321322 _deleteInstancesState = await runOneDeleteInstancesCycle (
322323 _deleteInstancesState,
323324 taskWorkerCloudCompute,
@@ -327,7 +328,8 @@ class TaskBackend {
327328 return Duration (minutes: 10 ); // TODO: consider if this should be dynamic
328329 }
329330
330- Future <Duration > _runOneInstanceCreation (bool Function () isAbortedFn) async {
331+ @visibleForTesting
332+ Future <Duration > runOneInstanceCreation (bool Function () isAbortedFn) async {
331333 final result = await runOneCreateInstancesCycle (
332334 taskWorkerCloudCompute,
333335 _db,
@@ -337,6 +339,14 @@ class TaskBackend {
337339 return result.$2;
338340 }
339341
342+ @visibleForTesting
343+ Future <void > runOneLoopCycle () async {
344+ bool isAbortedFn () => false ;
345+ await runOneScanPackagesUpdate (isAbortedFn);
346+ await runOneInstanceDeletion (isAbortedFn);
347+ await runOneInstanceCreation (isAbortedFn);
348+ }
349+
340350 Future <void > trackPackage (
341351 String packageName, {
342352 bool updateDependents = false ,
0 commit comments