Chromium Code Reviews| Index: webrtc/p2p/base/port_unittest.cc |
| diff --git a/webrtc/p2p/base/port_unittest.cc b/webrtc/p2p/base/port_unittest.cc |
| index 9714280b93cc648127b7ef1c9d8e2557007a2337..db117335d31c8db47a20c390ff2336c2eedb4fa0 100644 |
| --- a/webrtc/p2p/base/port_unittest.cc |
| +++ b/webrtc/p2p/base/port_unittest.cc |
| @@ -1788,6 +1788,63 @@ TEST_F(PortTest, TestSendStunMessage) { |
| EXPECT_EQ(2U, retransmit_attr->value()); |
| } |
| +TEST_F(PortTest, TestNomination) { |
| + std::unique_ptr<TestPort> lport( |
| + CreateTestPort(kLocalAddr1, "lfrag", "lpass")); |
| + std::unique_ptr<TestPort> rport( |
| + CreateTestPort(kLocalAddr2, "rfrag", "rpass")); |
| + lport->SetIceRole(cricket::ICEROLE_CONTROLLING); |
| + lport->SetIceTiebreaker(kTiebreaker1); |
| + rport->SetIceRole(cricket::ICEROLE_CONTROLLED); |
| + rport->SetIceTiebreaker(kTiebreaker2); |
| + |
| + lport->PrepareAddress(); |
| + rport->PrepareAddress(); |
| + ASSERT_FALSE(lport->Candidates().empty()); |
| + ASSERT_FALSE(rport->Candidates().empty()); |
| + Connection* lconn = lport->CreateConnection(rport->Candidates()[0], |
| + Port::ORIGIN_MESSAGE); |
| + Connection* rconn = rport->CreateConnection(lport->Candidates()[0], |
| + Port::ORIGIN_MESSAGE); |
| + |
| + // |lconn| is controlling, |rconn| is controlled. |
| + uint32_t nomination = 1234; |
| + lconn->set_nomination(nomination); |
| + |
| + ASSERT_FALSE(lconn->nominated()); |
| + ASSERT_FALSE(rconn->nominated()); |
| + ASSERT_EQ(lconn->nominated(), lconn->stats().nominated); |
| + ASSERT_EQ(rconn->nominated(), rconn->stats().nominated); |
|
Taylor Brandstetter
2017/02/24 05:38:31
These should probably be EXPECTs. Also in a few pl
hbos
2017/02/24 11:09:13
Done.
|
| + |
| + // Send ping (including the nomination value) from |lconn| to |rconn|. This |
| + // should set the remote nomination of |rconn|. |
| + lconn->Ping(0); |
| + ASSERT_TRUE_WAIT(lport->last_stun_msg() != NULL, kDefaultTimeout); |
| + rconn->OnReadPacket(lport->last_stun_buf()->data<char>(), |
| + lport->last_stun_buf()->size(), |
| + rtc::PacketTime()); |
| + ASSERT_TRUE_WAIT(rport->last_stun_msg() != NULL, kDefaultTimeout); |
| + ASSERT_EQ(nomination, rconn->remote_nomination()); |
| + |
| + ASSERT_FALSE(lconn->nominated()); |
| + ASSERT_TRUE(rconn->nominated()); |
| + ASSERT_EQ(lconn->nominated(), lconn->stats().nominated); |
| + ASSERT_EQ(rconn->nominated(), rconn->stats().nominated); |
| + |
| + // This should result in an acknowledgment sent back from |rconn| to |lconn|, |
| + // updating the acknowledged nomination of |lconn|. |
| + ASSERT_TRUE_WAIT(rport->last_stun_msg() != NULL, kDefaultTimeout); |
| + lconn->OnReadPacket(rport->last_stun_buf()->data<char>(), |
| + rport->last_stun_buf()->size(), |
| + rtc::PacketTime()); |
| + ASSERT_EQ(nomination, lconn->acked_nomination()); |
| + |
| + ASSERT_TRUE(lconn->nominated()); |
| + ASSERT_TRUE(rconn->nominated()); |
| + ASSERT_EQ(lconn->nominated(), lconn->stats().nominated); |
| + ASSERT_EQ(rconn->nominated(), rconn->stats().nominated); |
| +} |
| + |
| TEST_F(PortTest, TestUseCandidateAttribute) { |
| std::unique_ptr<TestPort> lport( |
| CreateTestPort(kLocalAddr1, "lfrag", "lpass")); |