Skip to content

Commit 4954ffa

Browse files
committed
Ensure progress updates are all received.
1 parent f6d1bee commit 4954ffa

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

firestore/integration_test_internal/src/bundle_test.cc

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,20 @@ TEST_F(BundleTest, CanLoadBundlesWithProgressUpdates) {
133133
auto bundle = CreateTestBundle(db);
134134

135135
std::vector<LoadBundleTaskProgress> progresses;
136+
std::promise<void> final_update;
136137
Future<LoadBundleTaskProgress> result = db->LoadBundle(
137-
bundle, [&progresses](const LoadBundleTaskProgress& progress) {
138+
bundle, [&progresses, &final_update](const LoadBundleTaskProgress& progress) {
138139
progresses.push_back(progress);
140+
if(progress.state() == LoadBundleTaskProgress::State::kError || progress.state() == LoadBundleTaskProgress::State::kSuccess) {
141+
final_update.set_value();
142+
}
139143
});
140144

141145
auto final_progress = AwaitResult(result);
142146

143147
// 4 progresses will be reported: initial, document 1, document 2, final
144148
// success.
149+
final_update.get_future().wait();
145150
ASSERT_EQ(progresses.size(), 4);
146151
EXPECT_THAT(progresses[0], InProgressWithLoadedDocuments(0));
147152
EXPECT_THAT(progresses[1], InProgressWithLoadedDocuments(1));
@@ -195,12 +200,17 @@ TEST_F(BundleTest, LoadBundlesForASecondTimeSkips) {
195200
VerifySuccessProgress(first_load);
196201

197202
std::vector<LoadBundleTaskProgress> progresses;
203+
std::promise<void> final_update;
198204
LoadBundleTaskProgress second_load = AwaitResult(db->LoadBundle(
199-
bundle, [&progresses](const LoadBundleTaskProgress& progress) {
205+
bundle, [&progresses, &final_update](const LoadBundleTaskProgress& progress) {
200206
progresses.push_back(progress);
207+
if(progress.state() == LoadBundleTaskProgress::State::kError || progress.state() == LoadBundleTaskProgress::State::kSuccess) {
208+
final_update.set_value();
209+
}
201210
}));
202211

203212
// There will be 4 progress updates if it does not skip loading.
213+
final_update.get_future().wait();
204214
ASSERT_EQ(progresses.size(), 1);
205215
VerifySuccessProgress(progresses[0]);
206216
EXPECT_EQ(progresses[0], second_load);
@@ -220,13 +230,19 @@ TEST_F(BundleTest, LoadInvalidBundlesShouldFail) {
220230
};
221231
for (const auto& bundle : invalid_bundles) {
222232
std::vector<LoadBundleTaskProgress> progresses;
233+
std::promise<void> final_update;
223234
Future<LoadBundleTaskProgress> result = db->LoadBundle(
224-
bundle, [&progresses](const LoadBundleTaskProgress& progress) {
235+
bundle, [&progresses, &final_update](const LoadBundleTaskProgress& progress) {
225236
progresses.push_back(progress);
237+
if(progress.state() == LoadBundleTaskProgress::State::kError || progress.state() == LoadBundleTaskProgress::State::kSuccess) {
238+
final_update.set_value();
239+
}
226240
});
227-
Await(result);
228241

242+
Await(result);
229243
EXPECT_NE(result.error(), Error::kErrorOk);
244+
245+
final_update.get_future().wait();
230246
ASSERT_EQ(progresses.size(), 1);
231247
VerifyErrorProgress(progresses[0]);
232248
}
@@ -306,13 +322,18 @@ TEST_F(BundleTest, LoadDocumentsFromOtherProjectsShouldFail) {
306322
Firestore* db = TestFirestore();
307323
auto bundle = CreateBundle("other-project");
308324
std::vector<LoadBundleTaskProgress> progresses;
325+
std::promise<void> final_update;
309326
Future<LoadBundleTaskProgress> result = db->LoadBundle(
310-
bundle, [&progresses](const LoadBundleTaskProgress& progress) {
327+
bundle, [&progresses, &final_update](const LoadBundleTaskProgress& progress) {
311328
progresses.push_back(progress);
329+
if(progress.state() == LoadBundleTaskProgress::State::kError || progress.state() == LoadBundleTaskProgress::State::kSuccess) {
330+
final_update.set_value();
331+
}
312332
});
313333
Await(result);
314-
315334
EXPECT_NE(result.error(), Error::kErrorOk);
335+
336+
final_update.get_future().wait();
316337
ASSERT_EQ(progresses.size(), 2);
317338
EXPECT_THAT(progresses[0], InProgressWithLoadedDocuments(0));
318339
VerifyErrorProgress(progresses[1]);

0 commit comments

Comments
 (0)