Chromium Code Reviews| Index: webrtc/p2p/base/turnport_unittest.cc |
| diff --git a/webrtc/p2p/base/turnport_unittest.cc b/webrtc/p2p/base/turnport_unittest.cc |
| index 916162575fee803093aff79ea89afde02cae5902..dd73ff7be3466c2d58b408e873694570eeebe4eb 100644 |
| --- a/webrtc/p2p/base/turnport_unittest.cc |
| +++ b/webrtc/p2p/base/turnport_unittest.cc |
| @@ -605,6 +605,39 @@ TEST_F(TurnPortTest, TestTurnAllocateBadPassword) { |
| ASSERT_EQ(0U, turn_port_->Candidates().size()); |
| } |
| +// Tests that TURN port NONCE will be reset when receiving an ALLOCATE MISMATCH |
|
pthatcher1
2016/01/29 17:37:46
NONCE => nonce, here and below
honghaiz3
2016/01/29 18:46:36
Done.
|
| +// error. |
| +TEST_F(TurnPortTest, TestTurnAllocateNonceResetAfterAllocateMismatch) { |
| + // Do a normal allocation first. |
| + CreateTurnPort(kTurnUsername, kTurnPassword, kTurnUdpProtoAddr); |
| + turn_port_->PrepareAddress(); |
| + EXPECT_TRUE_WAIT(turn_ready_, kTimeout); |
| + rtc::SocketAddress first_addr(turn_port_->socket()->GetLocalAddress()); |
| + // Destroy the turnport while keeping the drop probability to 1 to |
| + // suppress the release of the allocation at the server. |
| + ss_->set_drop_probability(1.0); |
| + turn_port_.reset(); |
| + rtc::Thread::Current()->ProcessMessages(0); |
| + ss_->set_drop_probability(0.0); |
|
pthatcher1
2016/01/29 17:37:46
What's the point of doing a normal allocation firs
honghaiz3
2016/01/29 18:46:36
The first allocation is needed to generate the mis
|
| + |
| + // Force the socket server to assign the same port. |
| + ss_->SetNextPortForTesting(first_addr.port()); |
| + turn_ready_ = false; |
| + CreateTurnPort(kTurnUsername, kTurnPassword, kTurnUdpProtoAddr); |
| + |
| + // It is expected that the turn port will first get a NONCE from the server |
| + // using timestamp |now| but then get an allocate mismatch error and receive |
| + // an even newer NONCE based on the system clock. |now| is chosen so that |
| + // the two NONCEs generated by the server will be different. |
| + uint32_t now = rtc::Time() - 1; |
|
pthatcher1
2016/01/29 17:37:46
Well it's not really "now", is it? Isn't it "befo
honghaiz3
2016/01/29 18:46:36
Done.
|
| + turn_server_.server()->SetTimestampForNextNonce(now); |
| + std::string next_nonce = turn_server_.server()->GenerateNonce(now); |
|
pthatcher1
2016/01/29 17:37:46
Wouldn't a better name be first_nonce?
honghaiz3
2016/01/29 18:46:36
Done.
|
| + turn_port_->PrepareAddress(); |
| + |
| + EXPECT_TRUE_WAIT(turn_ready_, kTimeout); |
| + EXPECT_NE(next_nonce, turn_port_->nonce()); |
| +} |
| + |
| // Tests that a new local address is created after |
| // STUN_ERROR_ALLOCATION_MISMATCH. |
| TEST_F(TurnPortTest, TestTurnAllocateMismatch) { |