| Index: webrtc/p2p/base/tcpport_unittest.cc
|
| diff --git a/webrtc/p2p/base/tcpport_unittest.cc b/webrtc/p2p/base/tcpport_unittest.cc
|
| index e33dd433a7dd8e09e61ebc5bab214e3672e30b2c..5a232021bb4e8750ce7e6d785310ea877cb85cdf 100644
|
| --- a/webrtc/p2p/base/tcpport_unittest.cc
|
| +++ b/webrtc/p2p/base/tcpport_unittest.cc
|
| @@ -85,3 +85,58 @@ TEST_F(TCPPortTest, TestTCPPortWithLocalhostAddress) {
|
| lport->CreateConnection(rport->Candidates()[0], Port::ORIGIN_MESSAGE);
|
| EXPECT_TRUE_WAIT(conn->connected(), kTimeout);
|
| }
|
| +
|
| +class SentPacketCounter : public sigslot::has_slots<> {
|
| + public:
|
| + SentPacketCounter(TCPPort* p) {
|
| + p->SignalSentPacket.connect(this, &SentPacketCounter::OnSentPacket);
|
| + }
|
| +
|
| + int sent_packets() const { return sent_packets_; }
|
| +
|
| + private:
|
| + void OnSentPacket(const rtc::SentPacket&) { ++sent_packets_; }
|
| +
|
| + int sent_packets_ = 0;
|
| +};
|
| +
|
| +// Test that SignalSentPacket is fired when a packet is successfully sent, for
|
| +// both TCP client and server sockets.
|
| +TEST_F(TCPPortTest, SignalSentPacket) {
|
| + std::unique_ptr<TCPPort> client(CreateTCPPort(kLocalAddr));
|
| + std::unique_ptr<TCPPort> server(CreateTCPPort(kRemoteAddr));
|
| + client->SetIceRole(cricket::ICEROLE_CONTROLLING);
|
| + server->SetIceRole(cricket::ICEROLE_CONTROLLED);
|
| + client->PrepareAddress();
|
| + server->PrepareAddress();
|
| +
|
| + Connection* client_conn =
|
| + client->CreateConnection(server->Candidates()[0], Port::ORIGIN_MESSAGE);
|
| + ASSERT_NE(nullptr, client_conn);
|
| + ASSERT_TRUE_WAIT(client_conn->connected(), kTimeout);
|
| +
|
| + // Need to get the port of the actual outgoing socket, not the server socket..
|
| + cricket::Candidate client_candidate = client->Candidates()[0];
|
| + client_candidate.set_address(static_cast<cricket::TCPConnection*>(client_conn)
|
| + ->socket()
|
| + ->GetLocalAddress());
|
| + Connection* server_conn =
|
| + server->CreateConnection(client_candidate, Port::ORIGIN_THIS_PORT);
|
| + ASSERT_NE(nullptr, server_conn);
|
| + ASSERT_TRUE_WAIT(server_conn->connected(), kTimeout);
|
| +
|
| + client_conn->Ping(rtc::TimeMillis());
|
| + server_conn->Ping(rtc::TimeMillis());
|
| + ASSERT_TRUE_WAIT(client_conn->writable(), kTimeout);
|
| + ASSERT_TRUE_WAIT(server_conn->writable(), kTimeout);
|
| +
|
| + SentPacketCounter client_counter(client.get());
|
| + SentPacketCounter server_counter(server.get());
|
| + static const char kData[] = "hello";
|
| + for (int i = 0; i < 10; ++i) {
|
| + client_conn->Send(&kData, sizeof(kData), rtc::PacketOptions());
|
| + server_conn->Send(&kData, sizeof(kData), rtc::PacketOptions());
|
| + }
|
| + EXPECT_EQ_WAIT(10, client_counter.sent_packets(), kTimeout);
|
| + EXPECT_EQ_WAIT(10, server_counter.sent_packets(), kTimeout);
|
| +}
|
|
|