Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[core] Fix flaky OnlineFileSource.LowHighPriorityRequests
Browse files Browse the repository at this point in the history
When network status is changed to online, all unqueued requests may
be processed in nondeterministic. Therefore, low-priority request may
be made active, while other are put to priority queue. This introduces
flakiness for the unit test.

Fixes: #13371
  • Loading branch information
alexshalamov committed Jan 11, 2019
1 parent d37918c commit f29aa05
Showing 1 changed file with 9 additions and 11 deletions.
20 changes: 9 additions & 11 deletions test/storage/online_file_source.test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -435,10 +435,15 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(LowHighPriorityRequests)) {

fs.setMaximumConcurrentRequests(1);

NetworkStatus::Set(NetworkStatus::Status::Offline);
// requesting regular resource
Resource regular1{ Resource::Unknown, "http://127.0.0.1:3000/load/1" };
std::unique_ptr<AsyncRequest> req_1 = fs.request(regular1, [&](Response) {
response_counter++;
req_1.reset();
});

// requesting a low priority resource
Resource low_prio{ Resource::Unknown, "http://127.0.0.1:3000/load/1" };
// Low priority request that will be queued with regular ones.
Resource low_prio{ Resource::Unknown, "http://127.0.0.1:3000/load/2" };
low_prio.setPriority(Resource::Priority::Low);
std::unique_ptr<AsyncRequest> req_0 = fs.request(low_prio, [&](Response) {
response_counter++;
Expand All @@ -447,20 +452,13 @@ TEST(OnlineFileSource, TEST_REQUIRES_SERVER(LowHighPriorityRequests)) {
loop.stop();
});

// requesting two "regular" resources
Resource regular1{ Resource::Unknown, "http://127.0.0.1:3000/load/2" };
std::unique_ptr<AsyncRequest> req_1 = fs.request(regular1, [&](Response) {
response_counter++;
req_1.reset();
});
// Request that should be scheduled before low priority one.
Resource regular2{ Resource::Unknown, "http://127.0.0.1:3000/load/3" };
std::unique_ptr<AsyncRequest> req_2 = fs.request(regular2, [&](Response) {
response_counter++;
req_2.reset();
});

NetworkStatus::Set(NetworkStatus::Status::Online);

loop.run();
}

Expand Down

0 comments on commit f29aa05

Please sign in to comment.