OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "content/renderer/p2p/ipc_network_manager.h" | |
6 #include "net/base/net_util.h" | |
7 #include "testing/gtest/include/gtest/gtest.h" | |
8 | |
9 namespace content { | |
10 | |
11 namespace { | |
12 | |
13 class MockP2PSocketDispatcher : public NetworkListObserverManager { | |
14 public: | |
15 virtual void AddNetworkListObserver( | |
16 NetworkListObserver* network_list_observer) OVERRIDE {} | |
17 | |
18 virtual void RemoveNetworkListObserver( | |
19 NetworkListObserver* network_list_observer) OVERRIDE {} | |
20 | |
21 virtual ~MockP2PSocketDispatcher() {} | |
22 }; | |
23 | |
24 } // namespace | |
25 | |
26 // 2 IPv6 addresses with only last digit different. | |
27 static const std::string kIPv6PublicAddrString1 = | |
28 "2401:fa00:4:1000:be30:5bff:fee5:c3"; | |
29 static const std::string kIPv6PublicAddrString2 = | |
30 "2401:fa00:4:1000:be30:5bff:fee5:c4"; | |
31 | |
32 class IpcNetworkManagerTest : public testing::Test { | |
33 public: | |
34 IpcNetworkManagerTest() { | |
35 socket_dispatcher_ = new MockP2PSocketDispatcher(); | |
36 mgr_ = new IpcNetworkManager(socket_dispatcher_); | |
37 } | |
38 | |
39 virtual ~IpcNetworkManagerTest() { | |
40 delete mgr_; | |
Sergey Ulanov
2014/09/10 22:28:25
please use scoped_ptr<> to store owned objects. Th
guoweis_webrtc
2014/09/10 23:22:25
Done.
| |
41 delete socket_dispatcher_; | |
42 } | |
43 | |
44 protected: | |
45 IpcNetworkManager* mgr_; | |
Sergey Ulanov
2014/09/10 22:28:25
this is not a good name. http://google-styleguide.
guoweis_webrtc
2014/09/10 23:22:25
Done.
| |
46 MockP2PSocketDispatcher* socket_dispatcher_; | |
47 | |
48 }; | |
49 | |
50 // Test overall logic of IpcNetworkManager on OnNetworkListChanged | |
51 // that it should group addresses with the same network key under | |
52 // single Network class. This also tests the logic inside | |
53 // IpcNetworkManager in addition to MergeNetworkList. | |
54 // TODO(guoweis): disable this test case for now until fix for webrtc | |
55 // issue 19249005 integrated into chromium | |
56 TEST_F(IpcNetworkManagerTest, DISABLED_TestMergeNetworkList) { | |
57 net::NetworkInterfaceList list; | |
58 net::IPAddressNumber ip_number; | |
59 std::vector<rtc::Network*> networks; | |
60 rtc::IPAddress ip_address; | |
61 | |
62 // Add 2 networks with the same prefix and prefix length. | |
63 EXPECT_TRUE(net::ParseIPLiteralToNumber(kIPv6PublicAddrString1, &ip_number)); | |
64 list.push_back( | |
65 net::NetworkInterface("em1", "em1", 0, | |
66 net::NetworkChangeNotifier::CONNECTION_UNKNOWN, | |
67 ip_number, 64)); | |
68 | |
69 EXPECT_TRUE(net::ParseIPLiteralToNumber(kIPv6PublicAddrString2, &ip_number)); | |
70 list.push_back( | |
71 net::NetworkInterface("em1", "em1", 0, | |
72 net::NetworkChangeNotifier::CONNECTION_UNKNOWN, | |
73 ip_number, 64)); | |
74 | |
75 mgr_->OnNetworkListChanged(list); | |
76 mgr_->GetNetworks(&networks); | |
77 EXPECT_EQ(1uL, networks.size()); | |
78 EXPECT_EQ(2uL, networks[0]->GetIPs().size()); | |
79 | |
80 // Add another network with different prefix length, should result in | |
81 // a different network. | |
82 networks.clear(); | |
83 list.push_back( | |
84 net::NetworkInterface("em1", "em1", 0, | |
85 net::NetworkChangeNotifier::CONNECTION_UNKNOWN, | |
86 ip_number, 48)); | |
87 | |
88 mgr_->OnNetworkListChanged(list); | |
89 | |
90 mgr_->GetNetworks(&networks); | |
91 | |
92 // Verify we have 2 networks now. | |
93 EXPECT_EQ(2uL, networks.size()); | |
94 // Verify the network with prefix length of 64 has 2 IP addresses. | |
95 EXPECT_EQ(64, networks[1]->prefix_length()); | |
96 EXPECT_EQ(2uL, networks[1]->GetIPs().size()); | |
97 EXPECT_TRUE(rtc::IPFromString(kIPv6PublicAddrString1, &ip_address)); | |
98 EXPECT_EQ(networks[1]->GetIPs()[0], ip_address); | |
99 EXPECT_TRUE(rtc::IPFromString(kIPv6PublicAddrString2, &ip_address)); | |
100 EXPECT_EQ(networks[1]->GetIPs()[1], ip_address); | |
101 // Verify the network with prefix length of 48 has 2 IP addresses. | |
102 EXPECT_EQ(48, networks[0]->prefix_length()); | |
103 EXPECT_EQ(1uL, networks[0]->GetIPs().size()); | |
104 EXPECT_TRUE(rtc::IPFromString(kIPv6PublicAddrString2, &ip_address)); | |
105 EXPECT_EQ(networks[0]->GetIPs()[0], ip_address); | |
106 } | |
107 | |
108 } // namespace content | |
OLD | NEW |