Skip to content

Commit b8326ec

Browse files
committed
Tests for garbage collection of package archives in exported API
1 parent 9071b4c commit b8326ec

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

app/test/package/api_export/exported_api_test.dart

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,53 @@ void main() {
9696
);
9797
}
9898
});
99+
100+
testWithFakeTime('ExportedApi.garbageCollect()', (fakeTime) async {
101+
await storageService.createBucket('exported-api');
102+
final bucket = storageService.bucket('exported-api');
103+
final exportedApi = ExportedApi(storageService, bucket);
104+
105+
await exportedApi.package('retry').tarball('1.2.3').write([1, 2, 3]);
106+
107+
await exportedApi.package('retry').tarball('1.2.4').copyFrom(
108+
bucket,
109+
'latest/api/archives/retry-1.2.3.tar.gz',
110+
);
111+
112+
// Files are present
113+
expect(
114+
await bucket.readBytes('latest/api/archives/retry-1.2.3.tar.gz'),
115+
[1, 2, 3],
116+
);
117+
expect(
118+
await bucket.readBytes('latest/api/archives/retry-1.2.4.tar.gz'),
119+
[1, 2, 3],
120+
);
121+
122+
// Nothing is GC'ed after 10 mins
123+
fakeTime.elapseSync(minutes: 10);
124+
await exportedApi.package('retry').garbageCollect({'1.2.3'});
125+
expect(
126+
await bucket.readBytes('latest/api/archives/retry-1.2.3.tar.gz'),
127+
[1, 2, 3],
128+
);
129+
expect(
130+
await bucket.readBytes('latest/api/archives/retry-1.2.4.tar.gz'),
131+
[1, 2, 3],
132+
);
133+
134+
// Something is GC'ed after 2 days
135+
fakeTime.elapseSync(days: 2);
136+
await exportedApi.package('retry').garbageCollect({'1.2.3'});
137+
expect(
138+
await bucket.readBytes('latest/api/archives/retry-1.2.3.tar.gz'),
139+
[1, 2, 3],
140+
);
141+
expect(
142+
await bucket.readBytes('latest/api/archives/retry-1.2.4.tar.gz'),
143+
isNull,
144+
);
145+
});
99146
}
100147

101148
extension on Bucket {

0 commit comments

Comments
 (0)