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

Side by Side Diff: content/renderer/p2p/ipc_network_manager_unittest.cc

Issue 536133003: MergeNetworkList can't group address under the same interface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Change prefix from size_t to unsigned int per @wfh's feedback comment Created 6 years, 3 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
(Empty)
1 // Copyright 2014 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 "base/memory/scoped_ptr.h"
6 #include "content/renderer/p2p/ipc_network_manager.h"
7 #include "content/renderer/p2p/network_list_manager.h"
8 #include "net/base/net_util.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace content {
12
13 namespace {
14
15 class MockP2PSocketDispatcher : public NetworkListManager {
16 public:
17 virtual void AddNetworkListObserver(
18 NetworkListObserver* network_list_observer) OVERRIDE {}
19
20 virtual void RemoveNetworkListObserver(
21 NetworkListObserver* network_list_observer) OVERRIDE {}
22
23 virtual ~MockP2PSocketDispatcher() {}
24 };
25
26 } // namespace
27
28 // 2 IPv6 addresses with only last digit different.
29 static const char kIPv6PublicAddrString1[] =
30 "2401:fa00:4:1000:be30:5bff:fee5:c3";
31 static const char kIPv6PublicAddrString2[] =
32 "2401:fa00:4:1000:be30:5bff:fee5:c4";
33
34 class IpcNetworkManagerTest : public testing::Test {
35 public:
36 IpcNetworkManagerTest()
37 : network_list_manager_(new MockP2PSocketDispatcher()),
38 network_manager_(new IpcNetworkManager(network_list_manager_.get())) {}
39
40 protected:
41 scoped_ptr<MockP2PSocketDispatcher> network_list_manager_;
42 scoped_ptr<IpcNetworkManager> network_manager_;
43 };
44
45 // Test overall logic of IpcNetworkManager on OnNetworkListChanged
46 // that it should group addresses with the same network key under
47 // single Network class. This also tests the logic inside
48 // IpcNetworkManager in addition to MergeNetworkList.
49 // TODO(guoweis): disable this test case for now until fix for webrtc
50 // issue 19249005 integrated into chromium
51 TEST_F(IpcNetworkManagerTest, DISABLED_TestMergeNetworkList) {
52 net::NetworkInterfaceList list;
53 net::IPAddressNumber ip_number;
54 std::vector<rtc::Network*> networks;
55 rtc::IPAddress ip_address;
56
57 // Add 2 networks with the same prefix and prefix length.
58 EXPECT_TRUE(net::ParseIPLiteralToNumber(kIPv6PublicAddrString1, &ip_number));
59 list.push_back(
60 net::NetworkInterface("em1",
61 "em1",
62 0,
63 net::NetworkChangeNotifier::CONNECTION_UNKNOWN,
64 ip_number,
65 64));
66
67 EXPECT_TRUE(net::ParseIPLiteralToNumber(kIPv6PublicAddrString2, &ip_number));
68 list.push_back(
69 net::NetworkInterface("em1",
70 "em1",
71 0,
72 net::NetworkChangeNotifier::CONNECTION_UNKNOWN,
73 ip_number,
74 64));
75
76 network_manager_->OnNetworkListChanged(list);
77 network_manager_->GetNetworks(&networks);
78 EXPECT_EQ(1uL, networks.size());
79 EXPECT_EQ(2uL, networks[0]->GetIPs().size());
80
81 // Add another network with different prefix length, should result in
82 // a different network.
83 networks.clear();
84 list.push_back(
85 net::NetworkInterface("em1",
86 "em1",
87 0,
88 net::NetworkChangeNotifier::CONNECTION_UNKNOWN,
89 ip_number,
90 48));
91
92 network_manager_->OnNetworkListChanged(list);
93
94 network_manager_->GetNetworks(&networks);
95
96 // Verify we have 2 networks now.
97 EXPECT_EQ(2uL, networks.size());
98 // Verify the network with prefix length of 64 has 2 IP addresses.
99 EXPECT_EQ(64, networks[1]->prefix_length());
100 EXPECT_EQ(2uL, networks[1]->GetIPs().size());
101 EXPECT_TRUE(rtc::IPFromString(kIPv6PublicAddrString1, &ip_address));
102 EXPECT_EQ(networks[1]->GetIPs()[0], ip_address);
103 EXPECT_TRUE(rtc::IPFromString(kIPv6PublicAddrString2, &ip_address));
104 EXPECT_EQ(networks[1]->GetIPs()[1], ip_address);
105 // Verify the network with prefix length of 48 has 2 IP addresses.
106 EXPECT_EQ(48, networks[0]->prefix_length());
107 EXPECT_EQ(1uL, networks[0]->GetIPs().size());
108 EXPECT_TRUE(rtc::IPFromString(kIPv6PublicAddrString2, &ip_address));
109 EXPECT_EQ(networks[0]->GetIPs()[0], ip_address);
110 }
111
112 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698