OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2009 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2009 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 1175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1186 | 1186 |
1187 // Test that we properly create a connection on a STUN ping from unknown address | 1187 // Test that we properly create a connection on a STUN ping from unknown address |
1188 // when the signaling is slow. | 1188 // when the signaling is slow. |
1189 TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignaling) { | 1189 TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignaling) { |
1190 ConfigureEndpoints(OPEN, OPEN, kDefaultPortAllocatorFlags, | 1190 ConfigureEndpoints(OPEN, OPEN, kDefaultPortAllocatorFlags, |
1191 kDefaultPortAllocatorFlags); | 1191 kDefaultPortAllocatorFlags); |
1192 // Emulate no remote credentials coming in. | 1192 // Emulate no remote credentials coming in. |
1193 set_clear_remote_candidates_ufrag_pwd(false); | 1193 set_clear_remote_candidates_ufrag_pwd(false); |
1194 CreateChannels(1); | 1194 CreateChannels(1); |
1195 // Only have remote credentials come in for ep2, not ep1. | 1195 // Only have remote credentials come in for ep2, not ep1. |
1196 ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); | 1196 ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[0], kIcePwd[0]); |
Taylor Brandstetter
2016/04/09 01:12:57
I think "3" was just a typo here. This test doesn'
| |
1197 | 1197 |
1198 // Pause sending ep2's candidates to ep1 until ep1 receives the peer reflexive | 1198 // Pause sending ep2's candidates to ep1 until ep1 receives the peer reflexive |
1199 // candidate. | 1199 // candidate. |
1200 PauseCandidates(1); | 1200 PauseCandidates(1); |
1201 | 1201 |
1202 // The caller should have the best connection connected to the peer reflexive | 1202 // The caller should have the best connection connected to the peer reflexive |
1203 // candidate. | 1203 // candidate. |
1204 const cricket::Connection* best_connection = NULL; | 1204 const cricket::Connection* best_connection = NULL; |
1205 WAIT((best_connection = ep1_ch1()->best_connection()) != NULL, 2000); | 1205 WAIT((best_connection = ep1_ch1()->best_connection()) != NULL, 2000); |
1206 EXPECT_EQ("prflx", ep1_ch1()->best_connection()->remote_candidate().type()); | 1206 EXPECT_EQ("prflx", ep1_ch1()->best_connection()->remote_candidate().type()); |
1207 | 1207 |
1208 // Because we don't have a remote pwd, we don't ping yet. | 1208 // Because we don't have a remote pwd, we don't ping yet. |
1209 EXPECT_EQ(kIceUfrag[1], | 1209 EXPECT_EQ(kIceUfrag[1], |
1210 ep1_ch1()->best_connection()->remote_candidate().username()); | 1210 ep1_ch1()->best_connection()->remote_candidate().username()); |
1211 EXPECT_EQ("", ep1_ch1()->best_connection()->remote_candidate().password()); | 1211 EXPECT_EQ("", ep1_ch1()->best_connection()->remote_candidate().password()); |
1212 // Because we don't have ICE credentials yet, we don't know the generation. | |
1213 EXPECT_EQ(0u, ep1_ch1()->best_connection()->remote_candidate().generation()); | |
1212 EXPECT_TRUE(nullptr == ep1_ch1()->FindNextPingableConnection()); | 1214 EXPECT_TRUE(nullptr == ep1_ch1()->FindNextPingableConnection()); |
1213 | 1215 |
1216 // Add two sets of remote ICE credentials, so that the ones used by the | |
1217 // candidate will be generation 1 instead of 0. | |
1218 ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); | |
1214 ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[1], kIcePwd[1]); | 1219 ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[1], kIcePwd[1]); |
1215 ResumeCandidates(1); | 1220 // After setting the remote ICE credentials, the password and generation |
1216 | 1221 // of the peer reflexive candidate should be updated. |
1217 EXPECT_EQ(kIcePwd[1], | 1222 EXPECT_EQ(kIcePwd[1], |
1218 ep1_ch1()->best_connection()->remote_candidate().password()); | 1223 ep1_ch1()->best_connection()->remote_candidate().password()); |
1224 EXPECT_EQ(1u, ep1_ch1()->best_connection()->remote_candidate().generation()); | |
1219 EXPECT_TRUE(nullptr != ep1_ch1()->FindNextPingableConnection()); | 1225 EXPECT_TRUE(nullptr != ep1_ch1()->FindNextPingableConnection()); |
1220 | 1226 |
1227 ResumeCandidates(1); | |
1228 | |
1221 WAIT(ep2_ch1()->best_connection() != NULL, 2000); | 1229 WAIT(ep2_ch1()->best_connection() != NULL, 2000); |
1222 // Verify ep1's best connection is updated to use the 'local' candidate. | 1230 // Verify ep1's best connection is updated to use the 'local' candidate. |
1223 EXPECT_EQ_WAIT( | 1231 EXPECT_EQ_WAIT( |
1224 "local", | 1232 "local", |
1225 ep1_ch1()->best_connection()->remote_candidate().type(), | 1233 ep1_ch1()->best_connection()->remote_candidate().type(), |
1226 2000); | 1234 2000); |
1227 EXPECT_EQ(best_connection, ep1_ch1()->best_connection()); | 1235 EXPECT_EQ(best_connection, ep1_ch1()->best_connection()); |
1228 DestroyChannels(); | 1236 DestroyChannels(); |
1229 } | 1237 } |
1230 | 1238 |
1231 // Test that we properly create a connection on a STUN ping from unknown address | 1239 // Test that we properly create a connection on a STUN ping from unknown address |
1232 // when the signaling is slow and the end points are behind NAT. | 1240 // when the signaling is slow and the end points are behind NAT. |
1233 TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignalingWithNAT) { | 1241 TEST_F(P2PTransportChannelTest, PeerReflexiveCandidateBeforeSignalingWithNAT) { |
1234 ConfigureEndpoints(OPEN, NAT_SYMMETRIC, kDefaultPortAllocatorFlags, | 1242 ConfigureEndpoints(OPEN, NAT_SYMMETRIC, kDefaultPortAllocatorFlags, |
1235 kDefaultPortAllocatorFlags); | 1243 kDefaultPortAllocatorFlags); |
1236 // Emulate no remote credentials coming in. | 1244 // Emulate no remote credentials coming in. |
1237 set_clear_remote_candidates_ufrag_pwd(false); | 1245 set_clear_remote_candidates_ufrag_pwd(false); |
1238 CreateChannels(1); | 1246 CreateChannels(1); |
1239 // Only have remote credentials come in for ep2, not ep1. | 1247 // Only have remote credentials come in for ep2, not ep1. |
1240 ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); | 1248 ep2_ch1()->SetRemoteIceCredentials(kIceUfrag[0], kIcePwd[0]); |
1241 // Pause sending ep2's candidates to ep1 until ep1 receives the peer reflexive | 1249 // Pause sending ep2's candidates to ep1 until ep1 receives the peer reflexive |
1242 // candidate. | 1250 // candidate. |
1243 PauseCandidates(1); | 1251 PauseCandidates(1); |
1244 | 1252 |
1245 // The caller should have the best connection connected to the peer reflexive | 1253 // The caller should have the best connection connected to the peer reflexive |
1246 // candidate. | 1254 // candidate. |
1247 WAIT(ep1_ch1()->best_connection() != NULL, 2000); | 1255 WAIT(ep1_ch1()->best_connection() != NULL, 2000); |
1248 EXPECT_EQ("prflx", ep1_ch1()->best_connection()->remote_candidate().type()); | 1256 EXPECT_EQ("prflx", ep1_ch1()->best_connection()->remote_candidate().type()); |
1249 | 1257 |
1250 // Because we don't have a remote pwd, we don't ping yet. | 1258 // Because we don't have a remote pwd, we don't ping yet. |
1251 EXPECT_EQ(kIceUfrag[1], | 1259 EXPECT_EQ(kIceUfrag[1], |
1252 ep1_ch1()->best_connection()->remote_candidate().username()); | 1260 ep1_ch1()->best_connection()->remote_candidate().username()); |
1253 EXPECT_EQ("", ep1_ch1()->best_connection()->remote_candidate().password()); | 1261 EXPECT_EQ("", ep1_ch1()->best_connection()->remote_candidate().password()); |
1262 // Because we don't have ICE credentials yet, we don't know the generation. | |
1263 EXPECT_EQ(0u, ep1_ch1()->best_connection()->remote_candidate().generation()); | |
1254 EXPECT_TRUE(nullptr == ep1_ch1()->FindNextPingableConnection()); | 1264 EXPECT_TRUE(nullptr == ep1_ch1()->FindNextPingableConnection()); |
1255 | 1265 |
1266 // Add two sets of remote ICE credentials, so that the ones used by the | |
1267 // candidate will be generation 1 instead of 0. | |
1268 ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[3], kIcePwd[3]); | |
1256 ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[1], kIcePwd[1]); | 1269 ep1_ch1()->SetRemoteIceCredentials(kIceUfrag[1], kIcePwd[1]); |
1257 ResumeCandidates(1); | 1270 // After setting the remote ICE credentials, the password and generation |
1258 | 1271 // of the peer reflexive candidate should be updated. |
1259 EXPECT_EQ(kIcePwd[1], | 1272 EXPECT_EQ(kIcePwd[1], |
1260 ep1_ch1()->best_connection()->remote_candidate().password()); | 1273 ep1_ch1()->best_connection()->remote_candidate().password()); |
1261 EXPECT_TRUE(nullptr != ep1_ch1()->FindNextPingableConnection()); | 1274 EXPECT_EQ(1u, ep1_ch1()->best_connection()->remote_candidate().generation()); |
1275 | |
1276 ResumeCandidates(1); | |
1262 | 1277 |
1263 const cricket::Connection* best_connection = NULL; | 1278 const cricket::Connection* best_connection = NULL; |
1264 WAIT((best_connection = ep2_ch1()->best_connection()) != NULL, 2000); | 1279 WAIT((best_connection = ep2_ch1()->best_connection()) != NULL, 2000); |
1265 | 1280 |
1266 // Wait to verify the connection is not culled. | 1281 // Wait to verify the connection is not culled. |
1267 WAIT(ep1_ch1()->writable(), 2000); | 1282 WAIT(ep1_ch1()->writable(), 2000); |
1268 EXPECT_EQ(ep2_ch1()->best_connection(), best_connection); | 1283 EXPECT_EQ(ep2_ch1()->best_connection(), best_connection); |
1269 EXPECT_EQ("prflx", ep1_ch1()->best_connection()->remote_candidate().type()); | 1284 EXPECT_EQ("prflx", ep1_ch1()->best_connection()->remote_candidate().type()); |
1270 DestroyChannels(); | 1285 DestroyChannels(); |
1271 } | 1286 } |
(...skipping 1508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2780 | 2795 |
2781 // TCP Relay/Relay is the next. | 2796 // TCP Relay/Relay is the next. |
2782 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, | 2797 VerifyNextPingableConnection(cricket::RELAY_PORT_TYPE, |
2783 cricket::RELAY_PORT_TYPE, | 2798 cricket::RELAY_PORT_TYPE, |
2784 cricket::TCP_PROTOCOL_NAME); | 2799 cricket::TCP_PROTOCOL_NAME); |
2785 | 2800 |
2786 // Finally, Local/Relay will be pinged. | 2801 // Finally, Local/Relay will be pinged. |
2787 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, | 2802 VerifyNextPingableConnection(cricket::LOCAL_PORT_TYPE, |
2788 cricket::RELAY_PORT_TYPE); | 2803 cricket::RELAY_PORT_TYPE); |
2789 } | 2804 } |
OLD | NEW |