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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 } // namespace | 51 } // namespace |
52 | 52 |
53 class NetworkTest : public testing::Test, public sigslot::has_slots<> { | 53 class NetworkTest : public testing::Test, public sigslot::has_slots<> { |
54 public: | 54 public: |
55 NetworkTest() : callback_called_(false) {} | 55 NetworkTest() : callback_called_(false) {} |
56 | 56 |
57 void OnNetworksChanged() { | 57 void OnNetworksChanged() { |
58 callback_called_ = true; | 58 callback_called_ = true; |
59 } | 59 } |
60 | 60 |
| 61 void listenToNetworkInactive(BasicNetworkManager& network_manager) { |
| 62 BasicNetworkManager::NetworkList networks; |
| 63 network_manager.GetNetworks(&networks); |
| 64 for (Network* network : networks) { |
| 65 network->SignalInactive.connect(this, &NetworkTest::OnNetworkInactive); |
| 66 } |
| 67 } |
| 68 |
| 69 void OnNetworkInactive(const Network* network) { num_networks_inactive_++; } |
| 70 |
61 NetworkManager::Stats MergeNetworkList( | 71 NetworkManager::Stats MergeNetworkList( |
62 BasicNetworkManager& network_manager, | 72 BasicNetworkManager& network_manager, |
63 const NetworkManager::NetworkList& list, | 73 const NetworkManager::NetworkList& list, |
64 bool* changed) { | 74 bool* changed) { |
65 NetworkManager::Stats stats; | 75 NetworkManager::Stats stats; |
66 network_manager.MergeNetworkList(list, changed, &stats); | 76 network_manager.MergeNetworkList(list, changed, &stats); |
67 return stats; | 77 return stats; |
68 } | 78 } |
69 | 79 |
70 bool IsIgnoredNetwork(BasicNetworkManager& network_manager, | 80 bool IsIgnoredNetwork(BasicNetworkManager& network_manager, |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 delete if_addr->ifa_addr; | 150 delete if_addr->ifa_addr; |
141 delete if_addr->ifa_netmask; | 151 delete if_addr->ifa_netmask; |
142 delete if_addr; | 152 delete if_addr; |
143 if_addr = next_addr; | 153 if_addr = next_addr; |
144 } | 154 } |
145 } | 155 } |
146 #endif // defined(WEBRTC_POSIX) | 156 #endif // defined(WEBRTC_POSIX) |
147 | 157 |
148 protected: | 158 protected: |
149 bool callback_called_; | 159 bool callback_called_; |
| 160 // Number of networks that become inactive. |
| 161 int num_networks_inactive_ = 0; |
150 }; | 162 }; |
151 | 163 |
152 class TestBasicNetworkManager : public BasicNetworkManager { | 164 class TestBasicNetworkManager : public BasicNetworkManager { |
153 public: | 165 public: |
154 using BasicNetworkManager::QueryDefaultLocalAddress; | 166 using BasicNetworkManager::QueryDefaultLocalAddress; |
155 using BasicNetworkManager::set_default_local_addresses; | 167 using BasicNetworkManager::set_default_local_addresses; |
156 }; | 168 }; |
157 | 169 |
158 // Test that the Network ctor works properly. | 170 // Test that the Network ctor works properly. |
159 TEST_F(NetworkTest, TestNetworkConstruct) { | 171 TEST_F(NetworkTest, TestNetworkConstruct) { |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 BasicNetworkManager manager; | 285 BasicNetworkManager manager; |
274 | 286 |
275 // Add ipv4_network1 to the list of networks. | 287 // Add ipv4_network1 to the list of networks. |
276 NetworkManager::NetworkList list; | 288 NetworkManager::NetworkList list; |
277 list.push_back(new Network(ipv4_network1)); | 289 list.push_back(new Network(ipv4_network1)); |
278 bool changed; | 290 bool changed; |
279 NetworkManager::Stats stats = MergeNetworkList(manager, list, &changed); | 291 NetworkManager::Stats stats = MergeNetworkList(manager, list, &changed); |
280 EXPECT_TRUE(changed); | 292 EXPECT_TRUE(changed); |
281 EXPECT_EQ(stats.ipv6_network_count, 0); | 293 EXPECT_EQ(stats.ipv6_network_count, 0); |
282 EXPECT_EQ(stats.ipv4_network_count, 1); | 294 EXPECT_EQ(stats.ipv4_network_count, 1); |
| 295 listenToNetworkInactive(manager); |
283 list.clear(); | 296 list.clear(); |
284 | 297 |
285 manager.GetNetworks(&list); | 298 manager.GetNetworks(&list); |
286 EXPECT_EQ(1U, list.size()); | 299 EXPECT_EQ(1U, list.size()); |
287 EXPECT_EQ(ipv4_network1.ToString(), list[0]->ToString()); | 300 EXPECT_EQ(ipv4_network1.ToString(), list[0]->ToString()); |
288 Network* net1 = list[0]; | 301 Network* net1 = list[0]; |
289 list.clear(); | 302 list.clear(); |
290 | 303 |
291 // Replace ipv4_network1 with ipv4_network2. | 304 // Replace ipv4_network1 with ipv4_network2. |
292 list.push_back(new Network(ipv4_network2)); | 305 list.push_back(new Network(ipv4_network2)); |
293 stats = MergeNetworkList(manager, list, &changed); | 306 stats = MergeNetworkList(manager, list, &changed); |
294 EXPECT_TRUE(changed); | 307 EXPECT_TRUE(changed); |
295 EXPECT_EQ(stats.ipv6_network_count, 0); | 308 EXPECT_EQ(stats.ipv6_network_count, 0); |
296 EXPECT_EQ(stats.ipv4_network_count, 1); | 309 EXPECT_EQ(stats.ipv4_network_count, 1); |
| 310 EXPECT_EQ(1, num_networks_inactive_); |
297 list.clear(); | 311 list.clear(); |
| 312 num_networks_inactive_ = 0; |
298 | 313 |
299 manager.GetNetworks(&list); | 314 manager.GetNetworks(&list); |
300 EXPECT_EQ(1U, list.size()); | 315 EXPECT_EQ(1U, list.size()); |
301 EXPECT_EQ(ipv4_network2.ToString(), list[0]->ToString()); | 316 EXPECT_EQ(ipv4_network2.ToString(), list[0]->ToString()); |
302 Network* net2 = list[0]; | 317 Network* net2 = list[0]; |
303 list.clear(); | 318 list.clear(); |
304 | 319 |
305 // Add Network2 back. | 320 // Add Network2 back. |
306 list.push_back(new Network(ipv4_network1)); | 321 list.push_back(new Network(ipv4_network1)); |
307 list.push_back(new Network(ipv4_network2)); | 322 list.push_back(new Network(ipv4_network2)); |
308 stats = MergeNetworkList(manager, list, &changed); | 323 stats = MergeNetworkList(manager, list, &changed); |
309 EXPECT_TRUE(changed); | 324 EXPECT_TRUE(changed); |
310 EXPECT_EQ(stats.ipv6_network_count, 0); | 325 EXPECT_EQ(stats.ipv6_network_count, 0); |
311 EXPECT_EQ(stats.ipv4_network_count, 2); | 326 EXPECT_EQ(stats.ipv4_network_count, 2); |
| 327 EXPECT_EQ(0, num_networks_inactive_); |
312 list.clear(); | 328 list.clear(); |
313 | 329 |
314 // Verify that we get previous instances of Network objects. | 330 // Verify that we get previous instances of Network objects. |
315 manager.GetNetworks(&list); | 331 manager.GetNetworks(&list); |
316 EXPECT_EQ(2U, list.size()); | 332 EXPECT_EQ(2U, list.size()); |
317 EXPECT_TRUE((net1 == list[0] && net2 == list[1]) || | 333 EXPECT_TRUE((net1 == list[0] && net2 == list[1]) || |
318 (net1 == list[1] && net2 == list[0])); | 334 (net1 == list[1] && net2 == list[0])); |
319 list.clear(); | 335 list.clear(); |
320 | 336 |
321 // Call MergeNetworkList() again and verify that we don't get update | 337 // Call MergeNetworkList() again and verify that we don't get update |
322 // notification. | 338 // notification. |
323 list.push_back(new Network(ipv4_network2)); | 339 list.push_back(new Network(ipv4_network2)); |
324 list.push_back(new Network(ipv4_network1)); | 340 list.push_back(new Network(ipv4_network1)); |
325 stats = MergeNetworkList(manager, list, &changed); | 341 stats = MergeNetworkList(manager, list, &changed); |
326 EXPECT_FALSE(changed); | 342 EXPECT_FALSE(changed); |
327 EXPECT_EQ(stats.ipv6_network_count, 0); | 343 EXPECT_EQ(stats.ipv6_network_count, 0); |
328 EXPECT_EQ(stats.ipv4_network_count, 2); | 344 EXPECT_EQ(stats.ipv4_network_count, 2); |
| 345 EXPECT_EQ(0, num_networks_inactive_); |
329 list.clear(); | 346 list.clear(); |
330 | 347 |
331 // Verify that we get previous instances of Network objects. | 348 // Verify that we get previous instances of Network objects. |
332 manager.GetNetworks(&list); | 349 manager.GetNetworks(&list); |
333 EXPECT_EQ(2U, list.size()); | 350 EXPECT_EQ(2U, list.size()); |
334 EXPECT_TRUE((net1 == list[0] && net2 == list[1]) || | 351 EXPECT_TRUE((net1 == list[0] && net2 == list[1]) || |
335 (net1 == list[1] && net2 == list[0])); | 352 (net1 == list[1] && net2 == list[0])); |
336 list.clear(); | 353 list.clear(); |
337 } | 354 } |
338 | 355 |
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
977 manager.set_default_local_addresses(GetLoopbackIP(AF_INET), | 994 manager.set_default_local_addresses(GetLoopbackIP(AF_INET), |
978 GetLoopbackIP(AF_INET6)); | 995 GetLoopbackIP(AF_INET6)); |
979 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET, &ip)); | 996 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET, &ip)); |
980 EXPECT_EQ(ip, GetLoopbackIP(AF_INET)); | 997 EXPECT_EQ(ip, GetLoopbackIP(AF_INET)); |
981 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET6, &ip)); | 998 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET6, &ip)); |
982 EXPECT_EQ(ip, GetLoopbackIP(AF_INET6)); | 999 EXPECT_EQ(ip, GetLoopbackIP(AF_INET6)); |
983 manager.StopUpdating(); | 1000 manager.StopUpdating(); |
984 } | 1001 } |
985 | 1002 |
986 } // namespace rtc | 1003 } // namespace rtc |
OLD | NEW |