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

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

Issue 1556743002: Bind a socket to a network if the network handle is set. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix a compiling issue for Windows Created 4 years, 11 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
(...skipping 11 matching lines...) Expand all
22 #if defined(WEBRTC_WIN) 22 #if defined(WEBRTC_WIN)
23 #include "webrtc/base/logging.h" // For LOG_GLE 23 #include "webrtc/base/logging.h" // For LOG_GLE
24 #endif 24 #endif
25 25
26 namespace rtc { 26 namespace rtc {
27 27
28 namespace { 28 namespace {
29 29
30 class FakeNetworkMonitor : public NetworkMonitorBase { 30 class FakeNetworkMonitor : public NetworkMonitorBase {
31 public: 31 public:
32 void Start() override {} 32 void Start() override {
33 void Stop() override {} 33 NetworkMonitorBase::Start();
34 started_ = true;
35 }
36 void Stop() override { started_ = false; }
37 int BindSocketToNetwork(int socket_fd, const IPAddress& address) override {
38 return OK;
39 }
40 bool started_ = false;
34 }; 41 };
35 42
36 class FakeNetworkMonitorFactory : public NetworkMonitorFactory { 43 class FakeNetworkMonitorFactory : public NetworkMonitorFactory {
37 public: 44 public:
38 FakeNetworkMonitorFactory() {} 45 FakeNetworkMonitorFactory() {}
39 NetworkMonitorInterface* CreateNetworkMonitor() { 46 NetworkMonitorInterface* GetOrCreateNetworkMonitor() override {
40 return new FakeNetworkMonitor(); 47 if (!network_monitor_) {
48 network_monitor_.reset(new FakeNetworkMonitor());
49 }
50 return network_monitor_.get();
41 } 51 }
52
53 private:
54 scoped_ptr<FakeNetworkMonitor> network_monitor_;
42 }; 55 };
43 56
44 } // namespace 57 } // namespace
45 58
46 class NetworkTest : public testing::Test, public sigslot::has_slots<> { 59 class NetworkTest : public testing::Test, public sigslot::has_slots<> {
47 public: 60 public:
48 NetworkTest() : callback_called_(false) {} 61 NetworkTest() : callback_called_(false) {}
49 62
50 void OnNetworksChanged() { 63 void OnNetworksChanged() {
51 callback_called_ = true; 64 callback_called_ = true;
(...skipping 13 matching lines...) Expand all
65 return network_manager.IsIgnoredNetwork(network); 78 return network_manager.IsIgnoredNetwork(network);
66 } 79 }
67 80
68 NetworkManager::NetworkList GetNetworks( 81 NetworkManager::NetworkList GetNetworks(
69 const BasicNetworkManager& network_manager, bool include_ignored) { 82 const BasicNetworkManager& network_manager, bool include_ignored) {
70 NetworkManager::NetworkList list; 83 NetworkManager::NetworkList list;
71 network_manager.CreateNetworks(include_ignored, &list); 84 network_manager.CreateNetworks(include_ignored, &list);
72 return list; 85 return list;
73 } 86 }
74 87
75 NetworkMonitorInterface* GetNetworkMonitor( 88 FakeNetworkMonitor* GetNetworkMonitor(BasicNetworkManager& network_manager) {
76 BasicNetworkManager& network_manager) { 89 return static_cast<FakeNetworkMonitor*>(network_manager.network_monitor_);
77 return network_manager.network_monitor_.get();
78 } 90 }
79 void ClearNetworks(BasicNetworkManager& network_manager) { 91 void ClearNetworks(BasicNetworkManager& network_manager) {
80 for (const auto& kv : network_manager.networks_map_) { 92 for (const auto& kv : network_manager.networks_map_) {
81 delete kv.second; 93 delete kv.second;
82 } 94 }
83 network_manager.networks_.clear(); 95 network_manager.networks_.clear();
84 network_manager.networks_map_.clear(); 96 network_manager.networks_map_.clear();
85 } 97 }
86 98
87 #if defined(WEBRTC_POSIX) 99 #if defined(WEBRTC_POSIX)
(...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 EXPECT_EQ(ipv6_network.GetBestIP(), static_cast<IPAddress>(ip)); 926 EXPECT_EQ(ipv6_network.GetBestIP(), static_cast<IPAddress>(ip));
915 } 927 }
916 928
917 TEST_F(NetworkTest, TestNetworkMonitoring) { 929 TEST_F(NetworkTest, TestNetworkMonitoring) {
918 BasicNetworkManager manager; 930 BasicNetworkManager manager;
919 manager.SignalNetworksChanged.connect(static_cast<NetworkTest*>(this), 931 manager.SignalNetworksChanged.connect(static_cast<NetworkTest*>(this),
920 &NetworkTest::OnNetworksChanged); 932 &NetworkTest::OnNetworksChanged);
921 FakeNetworkMonitorFactory* factory = new FakeNetworkMonitorFactory(); 933 FakeNetworkMonitorFactory* factory = new FakeNetworkMonitorFactory();
922 NetworkMonitorFactory::SetFactory(factory); 934 NetworkMonitorFactory::SetFactory(factory);
923 manager.StartUpdating(); 935 manager.StartUpdating();
924 NetworkMonitorInterface* network_monitor = GetNetworkMonitor(manager); 936 FakeNetworkMonitor* network_monitor = GetNetworkMonitor(manager);
937 EXPECT_TRUE(network_monitor && network_monitor->started_);
925 EXPECT_TRUE_WAIT(callback_called_, 1000); 938 EXPECT_TRUE_WAIT(callback_called_, 1000);
926 callback_called_ = false; 939 callback_called_ = false;
927 940
928 // Clear the networks so that there will be network changes below. 941 // Clear the networks so that there will be network changes below.
929 ClearNetworks(manager); 942 ClearNetworks(manager);
930 // Network manager is started, so the callback is called when the network 943 // Network manager is started, so the callback is called when the network
931 // monitor fires the network-change event. 944 // monitor fires the network-change event.
932 network_monitor->OnNetworksChanged(); 945 network_monitor->OnNetworksChanged();
933 EXPECT_TRUE_WAIT(callback_called_, 1000); 946 EXPECT_TRUE_WAIT(callback_called_, 1000);
934 947
935 // Network manager is stopped; the network monitor is removed. 948 // Network manager is stopped.
936 manager.StopUpdating(); 949 manager.StopUpdating();
937 EXPECT_TRUE(GetNetworkMonitor(manager) == nullptr); 950 EXPECT_FALSE(GetNetworkMonitor(manager)->started_);
938 951
939 NetworkMonitorFactory::ReleaseFactory(factory); 952 NetworkMonitorFactory::ReleaseFactory(factory);
940 } 953 }
941 954
942 TEST_F(NetworkTest, DefaultLocalAddress) { 955 TEST_F(NetworkTest, DefaultLocalAddress) {
943 TestBasicNetworkManager manager; 956 TestBasicNetworkManager manager;
944 manager.StartUpdating(); 957 manager.StartUpdating();
945 IPAddress ip; 958 IPAddress ip;
946 959
947 // GetDefaultLocalAddress should return false when not set. 960 // GetDefaultLocalAddress should return false when not set.
(...skipping 16 matching lines...) Expand all
964 manager.set_default_local_addresses(GetLoopbackIP(AF_INET), 977 manager.set_default_local_addresses(GetLoopbackIP(AF_INET),
965 GetLoopbackIP(AF_INET6)); 978 GetLoopbackIP(AF_INET6));
966 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET, &ip)); 979 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET, &ip));
967 EXPECT_EQ(ip, GetLoopbackIP(AF_INET)); 980 EXPECT_EQ(ip, GetLoopbackIP(AF_INET));
968 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET6, &ip)); 981 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET6, &ip));
969 EXPECT_EQ(ip, GetLoopbackIP(AF_INET6)); 982 EXPECT_EQ(ip, GetLoopbackIP(AF_INET6));
970 manager.StopUpdating(); 983 manager.StopUpdating();
971 } 984 }
972 985
973 } // namespace rtc 986 } // namespace rtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698