| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 } // namespace | 60 } // namespace |
| 61 | 61 |
| 62 class NetworkTest : public testing::Test, public sigslot::has_slots<> { | 62 class NetworkTest : public testing::Test, public sigslot::has_slots<> { |
| 63 public: | 63 public: |
| 64 NetworkTest() : callback_called_(false) {} | 64 NetworkTest() : callback_called_(false) {} |
| 65 | 65 |
| 66 void OnNetworksChanged() { | 66 void OnNetworksChanged() { |
| 67 callback_called_ = true; | 67 callback_called_ = true; |
| 68 } | 68 } |
| 69 | 69 |
| 70 void listenToNetworkInactive(BasicNetworkManager& network_manager) { | |
| 71 BasicNetworkManager::NetworkList networks; | |
| 72 network_manager.GetNetworks(&networks); | |
| 73 for (Network* network : networks) { | |
| 74 network->SignalInactive.connect(this, &NetworkTest::OnNetworkInactive); | |
| 75 } | |
| 76 } | |
| 77 | |
| 78 void OnNetworkInactive(const Network* network) { num_networks_inactive_++; } | |
| 79 | |
| 80 NetworkManager::Stats MergeNetworkList( | 70 NetworkManager::Stats MergeNetworkList( |
| 81 BasicNetworkManager& network_manager, | 71 BasicNetworkManager& network_manager, |
| 82 const NetworkManager::NetworkList& list, | 72 const NetworkManager::NetworkList& list, |
| 83 bool* changed) { | 73 bool* changed) { |
| 84 NetworkManager::Stats stats; | 74 NetworkManager::Stats stats; |
| 85 network_manager.MergeNetworkList(list, changed, &stats); | 75 network_manager.MergeNetworkList(list, changed, &stats); |
| 86 return stats; | 76 return stats; |
| 87 } | 77 } |
| 88 | 78 |
| 89 bool IsIgnoredNetwork(BasicNetworkManager& network_manager, | 79 bool IsIgnoredNetwork(BasicNetworkManager& network_manager, |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 delete if_addr->ifa_addr; | 170 delete if_addr->ifa_addr; |
| 181 delete if_addr->ifa_netmask; | 171 delete if_addr->ifa_netmask; |
| 182 delete if_addr; | 172 delete if_addr; |
| 183 if_addr = next_addr; | 173 if_addr = next_addr; |
| 184 } | 174 } |
| 185 } | 175 } |
| 186 #endif // defined(WEBRTC_POSIX) | 176 #endif // defined(WEBRTC_POSIX) |
| 187 | 177 |
| 188 protected: | 178 protected: |
| 189 bool callback_called_; | 179 bool callback_called_; |
| 190 // Number of networks that become inactive. | |
| 191 int num_networks_inactive_ = 0; | |
| 192 }; | 180 }; |
| 193 | 181 |
| 194 class TestBasicNetworkManager : public BasicNetworkManager { | 182 class TestBasicNetworkManager : public BasicNetworkManager { |
| 195 public: | 183 public: |
| 196 using BasicNetworkManager::QueryDefaultLocalAddress; | 184 using BasicNetworkManager::QueryDefaultLocalAddress; |
| 197 using BasicNetworkManager::set_default_local_addresses; | 185 using BasicNetworkManager::set_default_local_addresses; |
| 198 }; | 186 }; |
| 199 | 187 |
| 200 // Test that the Network ctor works properly. | 188 // Test that the Network ctor works properly. |
| 201 TEST_F(NetworkTest, TestNetworkConstruct) { | 189 TEST_F(NetworkTest, TestNetworkConstruct) { |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 BasicNetworkManager manager; | 303 BasicNetworkManager manager; |
| 316 | 304 |
| 317 // Add ipv4_network1 to the list of networks. | 305 // Add ipv4_network1 to the list of networks. |
| 318 NetworkManager::NetworkList list; | 306 NetworkManager::NetworkList list; |
| 319 list.push_back(new Network(ipv4_network1)); | 307 list.push_back(new Network(ipv4_network1)); |
| 320 bool changed; | 308 bool changed; |
| 321 NetworkManager::Stats stats = MergeNetworkList(manager, list, &changed); | 309 NetworkManager::Stats stats = MergeNetworkList(manager, list, &changed); |
| 322 EXPECT_TRUE(changed); | 310 EXPECT_TRUE(changed); |
| 323 EXPECT_EQ(stats.ipv6_network_count, 0); | 311 EXPECT_EQ(stats.ipv6_network_count, 0); |
| 324 EXPECT_EQ(stats.ipv4_network_count, 1); | 312 EXPECT_EQ(stats.ipv4_network_count, 1); |
| 325 listenToNetworkInactive(manager); | |
| 326 list.clear(); | 313 list.clear(); |
| 327 | 314 |
| 328 manager.GetNetworks(&list); | 315 manager.GetNetworks(&list); |
| 329 EXPECT_EQ(1U, list.size()); | 316 EXPECT_EQ(1U, list.size()); |
| 330 EXPECT_EQ(ipv4_network1.ToString(), list[0]->ToString()); | 317 EXPECT_EQ(ipv4_network1.ToString(), list[0]->ToString()); |
| 331 Network* net1 = list[0]; | 318 Network* net1 = list[0]; |
| 332 uint16_t net_id1 = net1->id(); | 319 uint16_t net_id1 = net1->id(); |
| 333 EXPECT_EQ(1, net_id1); | 320 EXPECT_EQ(1, net_id1); |
| 334 list.clear(); | 321 list.clear(); |
| 335 | 322 |
| 336 // Replace ipv4_network1 with ipv4_network2. | 323 // Replace ipv4_network1 with ipv4_network2. |
| 337 list.push_back(new Network(ipv4_network2)); | 324 list.push_back(new Network(ipv4_network2)); |
| 338 stats = MergeNetworkList(manager, list, &changed); | 325 stats = MergeNetworkList(manager, list, &changed); |
| 339 EXPECT_TRUE(changed); | 326 EXPECT_TRUE(changed); |
| 340 EXPECT_EQ(stats.ipv6_network_count, 0); | 327 EXPECT_EQ(stats.ipv6_network_count, 0); |
| 341 EXPECT_EQ(stats.ipv4_network_count, 1); | 328 EXPECT_EQ(stats.ipv4_network_count, 1); |
| 342 EXPECT_EQ(1, num_networks_inactive_); | |
| 343 list.clear(); | 329 list.clear(); |
| 344 num_networks_inactive_ = 0; | |
| 345 | 330 |
| 346 manager.GetNetworks(&list); | 331 manager.GetNetworks(&list); |
| 347 EXPECT_EQ(1U, list.size()); | 332 EXPECT_EQ(1U, list.size()); |
| 348 EXPECT_EQ(ipv4_network2.ToString(), list[0]->ToString()); | 333 EXPECT_EQ(ipv4_network2.ToString(), list[0]->ToString()); |
| 349 Network* net2 = list[0]; | 334 Network* net2 = list[0]; |
| 350 uint16_t net_id2 = net2->id(); | 335 uint16_t net_id2 = net2->id(); |
| 351 // Network id will increase. | 336 // Network id will increase. |
| 352 EXPECT_LT(net_id1, net_id2); | 337 EXPECT_LT(net_id1, net_id2); |
| 353 list.clear(); | 338 list.clear(); |
| 354 | 339 |
| 355 // Add Network2 back. | 340 // Add Network2 back. |
| 356 list.push_back(new Network(ipv4_network1)); | 341 list.push_back(new Network(ipv4_network1)); |
| 357 list.push_back(new Network(ipv4_network2)); | 342 list.push_back(new Network(ipv4_network2)); |
| 358 stats = MergeNetworkList(manager, list, &changed); | 343 stats = MergeNetworkList(manager, list, &changed); |
| 359 EXPECT_TRUE(changed); | 344 EXPECT_TRUE(changed); |
| 360 EXPECT_EQ(stats.ipv6_network_count, 0); | 345 EXPECT_EQ(stats.ipv6_network_count, 0); |
| 361 EXPECT_EQ(stats.ipv4_network_count, 2); | 346 EXPECT_EQ(stats.ipv4_network_count, 2); |
| 362 EXPECT_EQ(0, num_networks_inactive_); | |
| 363 list.clear(); | 347 list.clear(); |
| 364 | 348 |
| 365 // Verify that we get previous instances of Network objects. | 349 // Verify that we get previous instances of Network objects. |
| 366 manager.GetNetworks(&list); | 350 manager.GetNetworks(&list); |
| 367 EXPECT_EQ(2U, list.size()); | 351 EXPECT_EQ(2U, list.size()); |
| 368 EXPECT_TRUE((net1 == list[0] && net2 == list[1]) || | 352 EXPECT_TRUE((net1 == list[0] && net2 == list[1]) || |
| 369 (net1 == list[1] && net2 == list[0])); | 353 (net1 == list[1] && net2 == list[0])); |
| 370 EXPECT_TRUE((net_id1 == list[0]->id() && net_id2 == list[1]->id()) || | 354 EXPECT_TRUE((net_id1 == list[0]->id() && net_id2 == list[1]->id()) || |
| 371 (net_id1 == list[1]->id() && net_id2 == list[0]->id())); | 355 (net_id1 == list[1]->id() && net_id2 == list[0]->id())); |
| 372 list.clear(); | 356 list.clear(); |
| 373 | 357 |
| 374 // Call MergeNetworkList() again and verify that we don't get update | 358 // Call MergeNetworkList() again and verify that we don't get update |
| 375 // notification. | 359 // notification. |
| 376 list.push_back(new Network(ipv4_network2)); | 360 list.push_back(new Network(ipv4_network2)); |
| 377 list.push_back(new Network(ipv4_network1)); | 361 list.push_back(new Network(ipv4_network1)); |
| 378 stats = MergeNetworkList(manager, list, &changed); | 362 stats = MergeNetworkList(manager, list, &changed); |
| 379 EXPECT_FALSE(changed); | 363 EXPECT_FALSE(changed); |
| 380 EXPECT_EQ(stats.ipv6_network_count, 0); | 364 EXPECT_EQ(stats.ipv6_network_count, 0); |
| 381 EXPECT_EQ(stats.ipv4_network_count, 2); | 365 EXPECT_EQ(stats.ipv4_network_count, 2); |
| 382 EXPECT_EQ(0, num_networks_inactive_); | |
| 383 list.clear(); | 366 list.clear(); |
| 384 | 367 |
| 385 // Verify that we get previous instances of Network objects. | 368 // Verify that we get previous instances of Network objects. |
| 386 manager.GetNetworks(&list); | 369 manager.GetNetworks(&list); |
| 387 EXPECT_EQ(2U, list.size()); | 370 EXPECT_EQ(2U, list.size()); |
| 388 EXPECT_TRUE((net1 == list[0] && net2 == list[1]) || | 371 EXPECT_TRUE((net1 == list[0] && net2 == list[1]) || |
| 389 (net1 == list[1] && net2 == list[0])); | 372 (net1 == list[1] && net2 == list[0])); |
| 390 EXPECT_TRUE((net_id1 == list[0]->id() && net_id2 == list[1]->id()) || | 373 EXPECT_TRUE((net_id1 == list[0]->id() && net_id2 == list[1]->id()) || |
| 391 (net_id1 == list[1]->id() && net_id2 == list[0]->id())); | 374 (net_id1 == list[1]->id() && net_id2 == list[0]->id())); |
| 392 list.clear(); | 375 list.clear(); |
| (...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1155 // If the set default address is in a network, GetDefaultLocalAddress will | 1138 // If the set default address is in a network, GetDefaultLocalAddress will |
| 1156 // return the best IP in that network. | 1139 // return the best IP in that network. |
| 1157 manager.set_default_local_addresses(GetLoopbackIP(AF_INET), ip2); | 1140 manager.set_default_local_addresses(GetLoopbackIP(AF_INET), ip2); |
| 1158 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET6, &ip)); | 1141 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET6, &ip)); |
| 1159 EXPECT_EQ(static_cast<IPAddress>(ip1), ip); | 1142 EXPECT_EQ(static_cast<IPAddress>(ip1), ip); |
| 1160 | 1143 |
| 1161 manager.StopUpdating(); | 1144 manager.StopUpdating(); |
| 1162 } | 1145 } |
| 1163 | 1146 |
| 1164 } // namespace rtc | 1147 } // namespace rtc |
| OLD | NEW |