Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(457)

Side by Side Diff: webrtc/base/network_unittest.cc

Issue 1391703003: Create network change notifier. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
11 #include "webrtc/base/network.h" 11 #include "webrtc/base/network.h"
12 12
13 #include "webrtc/base/networkmonitor.h"
13 #include <vector> 14 #include <vector>
14 #if defined(WEBRTC_POSIX) 15 #if defined(WEBRTC_POSIX)
15 #include <sys/types.h> 16 #include <sys/types.h>
16 #if !defined(WEBRTC_ANDROID) 17 #if !defined(WEBRTC_ANDROID)
17 #include <ifaddrs.h> 18 #include <ifaddrs.h>
18 #else 19 #else
19 #include "webrtc/base/ifaddrs-android.h" 20 #include "webrtc/base/ifaddrs-android.h"
20 #endif 21 #endif
21 #endif 22 #endif
22 #include "webrtc/base/gunit.h" 23 #include "webrtc/base/gunit.h"
23 #if defined(WEBRTC_WIN) 24 #if defined(WEBRTC_WIN)
24 #include "webrtc/base/logging.h" // For LOG_GLE 25 #include "webrtc/base/logging.h" // For LOG_GLE
25 #endif 26 #endif
26 27
27 namespace rtc { 28 namespace rtc {
28 29
30 class FakeNetworkMonitor : public NetworkMonitor {
31 public:
32 void StartMonitoring() override {}
33 void StopMonitoring() override {}
34 };
35
36 class FakeNetworkMonitorFactory : public NetworkMonitorFactory {
37 public:
38 NetworkMonitor* CreateNetworkMonitor() { return new FakeNetworkMonitor(); }
39 static FakeNetworkMonitorFactory* CreateFactory() {
40 FakeNetworkMonitorFactory* factory = new FakeNetworkMonitorFactory();
41 NetworkMonitorFactory::SetFactory(factory);
42 return factory;
43 }
44 };
45
29 class NetworkTest : public testing::Test, public sigslot::has_slots<> { 46 class NetworkTest : public testing::Test, public sigslot::has_slots<> {
30 public: 47 public:
31 NetworkTest() : callback_called_(false) {} 48 NetworkTest() : callback_called_(false) {}
32 49
33 void OnNetworksChanged() { 50 void OnNetworksChanged() {
34 callback_called_ = true; 51 callback_called_ = true;
35 } 52 }
36 53
37 NetworkManager::Stats MergeNetworkList( 54 NetworkManager::Stats MergeNetworkList(
38 BasicNetworkManager& network_manager, 55 BasicNetworkManager& network_manager,
39 const NetworkManager::NetworkList& list, 56 const NetworkManager::NetworkList& list,
40 bool* changed) { 57 bool* changed) {
41 NetworkManager::Stats stats; 58 NetworkManager::Stats stats;
42 network_manager.MergeNetworkList(list, changed, &stats); 59 network_manager.MergeNetworkList(list, changed, &stats);
43 return stats; 60 return stats;
44 } 61 }
45 62
46 bool IsIgnoredNetwork(BasicNetworkManager& network_manager, 63 bool IsIgnoredNetwork(BasicNetworkManager& network_manager,
47 const Network& network) { 64 const Network& network) {
48 return network_manager.IsIgnoredNetwork(network); 65 return network_manager.IsIgnoredNetwork(network);
49 } 66 }
50 67
51 NetworkManager::NetworkList GetNetworks( 68 NetworkManager::NetworkList GetNetworks(
52 const BasicNetworkManager& network_manager, bool include_ignored) { 69 const BasicNetworkManager& network_manager, bool include_ignored) {
53 NetworkManager::NetworkList list; 70 NetworkManager::NetworkList list;
54 network_manager.CreateNetworks(include_ignored, &list); 71 network_manager.CreateNetworks(include_ignored, &list);
55 return list; 72 return list;
56 } 73 }
57 74
75 NetworkMonitor* GetNetworkMonitor(BasicNetworkManager& network_manager) {
76 return network_manager.network_monitor_.get();
77 }
78
58 #if defined(WEBRTC_POSIX) 79 #if defined(WEBRTC_POSIX)
59 // Separated from CreateNetworks for tests. 80 // Separated from CreateNetworks for tests.
60 static void CallConvertIfAddrs(const BasicNetworkManager& network_manager, 81 static void CallConvertIfAddrs(const BasicNetworkManager& network_manager,
61 struct ifaddrs* interfaces, 82 struct ifaddrs* interfaces,
62 bool include_ignored, 83 bool include_ignored,
63 NetworkManager::NetworkList* networks) { 84 NetworkManager::NetworkList* networks) {
64 network_manager.ConvertIfAddrs(interfaces, include_ignored, networks); 85 network_manager.ConvertIfAddrs(interfaces, include_ignored, networks);
65 } 86 }
66 #endif // defined(WEBRTC_POSIX) 87 #endif // defined(WEBRTC_POSIX)
67 88
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 ipv6_network.AddIP(ip); 804 ipv6_network.AddIP(ip);
784 EXPECT_EQ(ipv6_network.GetBestIP(), static_cast<IPAddress>(ip)); 805 EXPECT_EQ(ipv6_network.GetBestIP(), static_cast<IPAddress>(ip));
785 806
786 // Add global dynamic temporary one. 807 // Add global dynamic temporary one.
787 ipstr = "2401:fa00:4:1000:be30:5bff:fee5:c6"; 808 ipstr = "2401:fa00:4:1000:be30:5bff:fee5:c6";
788 ASSERT_TRUE(IPFromString(ipstr, IPV6_ADDRESS_FLAG_TEMPORARY, &ip)); 809 ASSERT_TRUE(IPFromString(ipstr, IPV6_ADDRESS_FLAG_TEMPORARY, &ip));
789 ipv6_network.AddIP(ip); 810 ipv6_network.AddIP(ip);
790 EXPECT_EQ(ipv6_network.GetBestIP(), static_cast<IPAddress>(ip)); 811 EXPECT_EQ(ipv6_network.GetBestIP(), static_cast<IPAddress>(ip));
791 } 812 }
792 813
814 TEST_F(NetworkTest, TestNetworkMonitoring) {
815 BasicNetworkManager manager;
816 manager.SignalNetworksChanged.connect(static_cast<NetworkTest*>(this),
817 &NetworkTest::OnNetworksChanged);
818 FakeNetworkMonitorFactory::CreateFactory();
819 manager.StartUpdating();
820 NetworkMonitor* network_monitor = GetNetworkMonitor(manager);
821 Thread::Current()->ProcessMessages(0);
822 EXPECT_TRUE(callback_called_);
823 callback_called_ = false;
824
825 // Network manager is started, so the callback is called when the network
826 // monitor fires the network-change event.
827 network_monitor->OnNetworksChanged();
828 Thread::Current()->ProcessMessages(0);
829 EXPECT_TRUE(callback_called_);
830
831 // Network manager is stopped; the network monitor is removed.
832 manager.StopUpdating();
833 EXPECT_TRUE(GetNetworkMonitor(manager) == nullptr);
834
835 NetworkMonitorFactory::SetFactory(nullptr);
836 }
837
793 } // namespace rtc 838 } // namespace rtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698