Update VirtualSocketServerTest to use a fake clock.
Since this is a test for a fake network, it's only natural that it uses a fake clock as well. This makes the tests much faster, less flaky, and lets them be moved out of "webrtc_nonparallel_tests", since they no longer have a dependency on any "real" thing (sockets, or time) and can be run in parallel as easily as any other tests. As part of this CL, added the fake clock as an argument to VirtualSocketServer's and TestClient's constructors, since these classes have methods that wait synchronously for something to occur, and if the test is using a fake clock, they need to advance it in order to make progress. Lastly, added a DCHECK in Thread::ProcessMessages. If called with a nonzero time while a fake clock is used, it will get stuck in an infinite loop; a DCHECK is easier to notice than an infinite loop. BUG=webrtc:7727, webrtc:2409 Review-Url: https://codereview.webrtc.org/2927413002 Cr-Commit-Position: refs/heads/master@{#18544}
This commit is contained in:
@ -471,6 +471,11 @@ void Thread::Clear(MessageHandler* phandler,
|
||||
// Note that these methods have a separate implementation for mac and ios
|
||||
// defined in webrtc/base/thread_darwin.mm.
|
||||
bool Thread::ProcessMessages(int cmsLoop) {
|
||||
// Using ProcessMessages with a custom clock for testing and a time greater
|
||||
// than 0 doesn't work, since it's not guaranteed to advance the custom
|
||||
// clock's time, and may get stuck in an infinite loop.
|
||||
RTC_DCHECK(GetClockForTesting() == nullptr || cmsLoop == 0 ||
|
||||
cmsLoop == kForever);
|
||||
int64_t msEnd = (kForever == cmsLoop) ? 0 : TimeAfter(cmsLoop);
|
||||
int cmsNext = cmsLoop;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user