| Index: webrtc/base/testclient.cc
|
| diff --git a/webrtc/base/testclient.cc b/webrtc/base/testclient.cc
|
| index 7ec70f40d1f5bf563594bcf29798f685fb2d8824..b6fd692350bb0ae68770111909aa72be50e9c4bf 100644
|
| --- a/webrtc/base/testclient.cc
|
| +++ b/webrtc/base/testclient.cc
|
| @@ -9,6 +9,8 @@
|
| */
|
|
|
| #include "webrtc/base/testclient.h"
|
| +
|
| +#include "webrtc/base/gunit.h"
|
| #include "webrtc/base/ptr_util.h"
|
| #include "webrtc/base/thread.h"
|
| #include "webrtc/base/timeutils.h"
|
| @@ -20,7 +22,13 @@ namespace rtc {
|
| // NextPacket.
|
|
|
| TestClient::TestClient(std::unique_ptr<AsyncPacketSocket> socket)
|
| - : socket_(std::move(socket)), prev_packet_timestamp_(-1) {
|
| + : TestClient(std::move(socket), nullptr) {}
|
| +
|
| +TestClient::TestClient(std::unique_ptr<AsyncPacketSocket> socket,
|
| + FakeClock* fake_clock)
|
| + : fake_clock_(fake_clock),
|
| + socket_(std::move(socket)),
|
| + prev_packet_timestamp_(-1) {
|
| socket_->SignalReadPacket.connect(this, &TestClient::OnPacket);
|
| socket_->SignalReadyToSend.connect(this, &TestClient::OnReadyToSend);
|
| }
|
| @@ -31,7 +39,7 @@ bool TestClient::CheckConnState(AsyncPacketSocket::State state) {
|
| // Wait for our timeout value until the socket reaches the desired state.
|
| int64_t end = TimeAfter(kTimeoutMs);
|
| while (socket_->GetState() != state && TimeUntil(end) > 0) {
|
| - Thread::Current()->ProcessMessages(1);
|
| + AdvanceTime(1);
|
| }
|
| return (socket_->GetState() == state);
|
| }
|
| @@ -67,7 +75,7 @@ std::unique_ptr<TestClient::Packet> TestClient::NextPacket(int timeout_ms) {
|
| break;
|
| }
|
| }
|
| - Thread::Current()->ProcessMessages(1);
|
| + AdvanceTime(1);
|
| }
|
|
|
| // Return the first packet placed in the queue.
|
| @@ -108,6 +116,16 @@ bool TestClient::CheckTimestamp(int64_t packet_timestamp) {
|
| return res;
|
| }
|
|
|
| +void TestClient::AdvanceTime(int ms) {
|
| + // If the test is using a fake clock, we must advance the fake clock to
|
| + // advance time. Otherwise, ProcessMessages will work.
|
| + if (fake_clock_) {
|
| + SIMULATED_WAIT(false, ms, *fake_clock_);
|
| + } else {
|
| + Thread::Current()->ProcessMessages(1);
|
| + }
|
| +}
|
| +
|
| bool TestClient::CheckNoPacket() {
|
| return NextPacket(kNoPacketTimeoutMs) == nullptr;
|
| }
|
|
|