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 1200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1211 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", | 1211 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", |
1212 kClientAddr); | 1212 kClientAddr); |
1213 EXPECT_PRED5(CheckCandidate, candidates_[2], | 1213 EXPECT_PRED5(CheckCandidate, candidates_[2], |
1214 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "tcp", | 1214 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "tcp", |
1215 kClientIPv6Addr); | 1215 kClientIPv6Addr); |
1216 EXPECT_PRED5(CheckCandidate, candidates_[3], | 1216 EXPECT_PRED5(CheckCandidate, candidates_[3], |
1217 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "tcp", | 1217 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "tcp", |
1218 kClientAddr); | 1218 kClientAddr); |
1219 EXPECT_EQ(4U, candidates_.size()); | 1219 EXPECT_EQ(4U, candidates_.size()); |
1220 } | 1220 } |
1221 | |
1222 // Test that the httpportallocator correctly maintains its lists of stun and | |
1223 // relay servers, by never allowing an empty list. | |
1224 TEST(HttpPortAllocatorTest, TestHttpPortAllocatorHostLists) { | |
1225 rtc::FakeNetworkManager network_manager; | |
1226 cricket::HttpPortAllocator alloc(&network_manager, "unit test agent"); | |
1227 EXPECT_EQ(1U, alloc.relay_hosts().size()); | |
1228 EXPECT_EQ(1U, alloc.stun_hosts().size()); | |
1229 | |
1230 std::vector<std::string> relay_servers; | |
1231 std::vector<rtc::SocketAddress> stun_servers; | |
1232 | |
1233 alloc.SetRelayHosts(relay_servers); | |
1234 alloc.SetStunHosts(stun_servers); | |
1235 EXPECT_EQ(1U, alloc.relay_hosts().size()); | |
1236 EXPECT_EQ(1U, alloc.stun_hosts().size()); | |
1237 | |
1238 relay_servers.push_back("1.unittest.corp.google.com"); | |
1239 relay_servers.push_back("2.unittest.corp.google.com"); | |
1240 stun_servers.push_back( | |
1241 rtc::SocketAddress("1.unittest.corp.google.com", 0)); | |
1242 stun_servers.push_back( | |
1243 rtc::SocketAddress("2.unittest.corp.google.com", 0)); | |
1244 | |
1245 alloc.SetRelayHosts(relay_servers); | |
1246 alloc.SetStunHosts(stun_servers); | |
1247 EXPECT_EQ(2U, alloc.relay_hosts().size()); | |
1248 EXPECT_EQ(2U, alloc.stun_hosts().size()); | |
1249 } | |
1250 | |
1251 // Test that the HttpPortAllocator uses correct URL to create sessions. | |
1252 TEST(HttpPortAllocatorTest, TestSessionRequestUrl) { | |
1253 rtc::FakeNetworkManager network_manager; | |
1254 cricket::HttpPortAllocator alloc(&network_manager, "unit test agent"); | |
1255 | |
1256 rtc::scoped_ptr<cricket::HttpPortAllocatorSessionBase> session( | |
1257 static_cast<cricket::HttpPortAllocatorSession*>( | |
1258 alloc.CreateSessionInternal( | |
1259 "test content", 0, kIceUfrag0, kIcePwd0))); | |
1260 std::string url = session->GetSessionRequestUrl(); | |
1261 LOG(LS_INFO) << "url: " << url; | |
1262 std::vector<std::string> parts; | |
1263 rtc::split(url, '?', &parts); | |
1264 ASSERT_EQ(2U, parts.size()); | |
1265 | |
1266 std::vector<std::string> args_parts; | |
1267 rtc::split(parts[1], '&', &args_parts); | |
1268 | |
1269 std::map<std::string, std::string> args; | |
1270 for (std::vector<std::string>::iterator it = args_parts.begin(); | |
1271 it != args_parts.end(); ++it) { | |
1272 std::vector<std::string> parts; | |
1273 rtc::split(*it, '=', &parts); | |
1274 ASSERT_EQ(2U, parts.size()); | |
1275 args[rtc::s_url_decode(parts[0])] = rtc::s_url_decode(parts[1]); | |
1276 } | |
1277 | |
1278 EXPECT_EQ(kIceUfrag0, args["username"]); | |
1279 EXPECT_EQ(kIcePwd0, args["password"]); | |
1280 } | |
1281 | |
1282 // Tests that destroying ports with non-shared sockets does not crash. | |
1283 // b/19074679. | |
1284 TEST_F(PortAllocatorTest, TestDestroyPortsNonSharedSockets) { | |
1285 AddInterface(kClientAddr); | |
1286 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | |
1287 session_->StartGettingPorts(); | |
1288 ASSERT_EQ_WAIT(7U, candidates_.size(), kDefaultAllocationTimeout); | |
1289 EXPECT_EQ(4U, ports_.size()); | |
1290 | |
1291 auto it = ports_.begin(); | |
1292 for (; it != ports_.end(); ++it) { | |
1293 (reinterpret_cast<cricket::Port*>(*it))->Destroy(); | |
1294 } | |
1295 } | |
1296 | |
1297 class AllocationSequenceForTest : public cricket::AllocationSequence { | |
1298 public: | |
1299 AllocationSequenceForTest(cricket::BasicPortAllocatorSession* session, | |
1300 rtc::Network* network, | |
1301 cricket::PortConfiguration* config, | |
1302 uint32 flags) | |
1303 : cricket::AllocationSequence(session, network, config, flags) {} | |
1304 using cricket::AllocationSequence::CreateTurnPort; | |
1305 }; | |
1306 | |
1307 TEST_F(PortAllocatorTest, TestCreateTurnPortWithNullSocket) { | |
1308 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | |
1309 session_->StartGettingPorts(); | |
1310 | |
1311 cricket::ServerAddresses stun_servers; | |
1312 stun_servers.insert(kStunAddr); | |
1313 cricket::PortConfiguration config(stun_servers, kIceUfrag0, kIcePwd0); | |
1314 rtc::Network network1("test_eth0", "Test Network Adapter 1", | |
1315 rtc::IPAddress(0x12345600U), 24); | |
1316 uint32 flag = cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET; | |
1317 AllocationSequenceForTest alloc_sequence( | |
1318 static_cast<cricket::BasicPortAllocatorSession*>(session_.get()), | |
1319 &network1, &config, flag); | |
1320 // This simply tests it will not crash if udp_socket_ in the | |
1321 // AllocationSequence is null, which is chosen in the constructor. | |
1322 cricket::RelayServerConfig relay_server(cricket::RELAY_TURN); | |
1323 relay_server.ports.push_back( | |
1324 cricket::ProtocolAddress(kTurnUdpIntAddr, cricket::PROTO_UDP, false)); | |
1325 alloc_sequence.CreateTurnPort(relay_server); | |
1326 } | |
OLD | NEW |