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

Unified Diff: net/base/address_tracker_linux_unittest.cc

Issue 571743002: Adding non-tracking mode support to AddressTracker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add one more test for Init() under non-tracking mode. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/base/address_tracker_linux.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/address_tracker_linux_unittest.cc
diff --git a/net/base/address_tracker_linux_unittest.cc b/net/base/address_tracker_linux_unittest.cc
index 1223d04f2eff09560e85942e979b46ebce02be9c..641220731b71bbbe43b54f4e8b564921494f5b64 100644
--- a/net/base/address_tracker_linux_unittest.cc
+++ b/net/base/address_tracker_linux_unittest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/memory/scoped_ptr.h"
#include "net/base/address_tracker_linux.h"
#include <linux/if.h>
@@ -33,12 +34,18 @@ typedef std::vector<char> Buffer;
class AddressTrackerLinuxTest : public testing::Test {
protected:
- AddressTrackerLinuxTest()
- : tracker_(base::Bind(&base::DoNothing),
- base::Bind(&base::DoNothing),
- base::Bind(&base::DoNothing)),
- original_get_interface_name_(tracker_.get_interface_name_) {
- tracker_.get_interface_name_ = TestGetInterfaceName;
+ AddressTrackerLinuxTest() {}
+
+ void InitializeAddressTracker(bool tracking) {
+ if (tracking) {
+ tracker_.reset(new AddressTrackerLinux(base::Bind(&base::DoNothing),
+ base::Bind(&base::DoNothing),
+ base::Bind(&base::DoNothing)));
+ } else {
+ tracker_.reset(new AddressTrackerLinux());
+ }
+ original_get_interface_name_ = tracker_->get_interface_name_;
+ tracker_->get_interface_name_ = TestGetInterfaceName;
}
bool HandleAddressMessage(const Buffer& buf) {
@@ -46,7 +53,7 @@ class AddressTrackerLinuxTest : public testing::Test {
bool address_changed = false;
bool link_changed = false;
bool tunnel_changed = false;
- tracker_.HandleMessage(&writable_buf[0], buf.size(),
+ tracker_->HandleMessage(&writable_buf[0], buf.size(),
&address_changed, &link_changed, &tunnel_changed);
EXPECT_FALSE(link_changed);
return address_changed;
@@ -57,7 +64,7 @@ class AddressTrackerLinuxTest : public testing::Test {
bool address_changed = false;
bool link_changed = false;
bool tunnel_changed = false;
- tracker_.HandleMessage(&writable_buf[0], buf.size(),
+ tracker_->HandleMessage(&writable_buf[0], buf.size(),
&address_changed, &link_changed, &tunnel_changed);
EXPECT_FALSE(address_changed);
return link_changed;
@@ -68,21 +75,21 @@ class AddressTrackerLinuxTest : public testing::Test {
bool address_changed = false;
bool link_changed = false;
bool tunnel_changed = false;
- tracker_.HandleMessage(&writable_buf[0], buf.size(),
+ tracker_->HandleMessage(&writable_buf[0], buf.size(),
&address_changed, &link_changed, &tunnel_changed);
EXPECT_FALSE(address_changed);
return tunnel_changed;
}
AddressTrackerLinux::AddressMap GetAddressMap() {
- return tracker_.GetAddressMap();
+ return tracker_->GetAddressMap();
}
- const base::hash_set<int>* GetOnlineLinks() const {
- return &tracker_.online_links_;
+ const base::hash_set<int> GetOnlineLinks() const {
+ return tracker_->GetOnlineLinks();
}
- AddressTrackerLinux tracker_;
+ scoped_ptr<AddressTrackerLinux> tracker_;
AddressTrackerLinux::GetInterfaceNameFunction original_get_interface_name_;
};
@@ -190,6 +197,8 @@ const unsigned char kAddress3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1 };
TEST_F(AddressTrackerLinuxTest, NewAddress) {
+ InitializeAddressTracker(true);
+
const IPAddressNumber kEmpty;
const IPAddressNumber kAddr0(kAddress0, kAddress0 + arraysize(kAddress0));
const IPAddressNumber kAddr1(kAddress1, kAddress1 + arraysize(kAddress1));
@@ -224,6 +233,8 @@ TEST_F(AddressTrackerLinuxTest, NewAddress) {
}
TEST_F(AddressTrackerLinuxTest, NewAddressChange) {
+ InitializeAddressTracker(true);
+
const IPAddressNumber kEmpty;
const IPAddressNumber kAddr0(kAddress0, kAddress0 + arraysize(kAddress0));
@@ -258,6 +269,8 @@ TEST_F(AddressTrackerLinuxTest, NewAddressChange) {
}
TEST_F(AddressTrackerLinuxTest, NewAddressDuplicate) {
+ InitializeAddressTracker(true);
+
const IPAddressNumber kAddr0(kAddress0, kAddress0 + arraysize(kAddress0));
Buffer buffer;
@@ -276,6 +289,8 @@ TEST_F(AddressTrackerLinuxTest, NewAddressDuplicate) {
}
TEST_F(AddressTrackerLinuxTest, DeleteAddress) {
+ InitializeAddressTracker(true);
+
const IPAddressNumber kEmpty;
const IPAddressNumber kAddr0(kAddress0, kAddress0 + arraysize(kAddress0));
const IPAddressNumber kAddr1(kAddress1, kAddress1 + arraysize(kAddress1));
@@ -311,6 +326,8 @@ TEST_F(AddressTrackerLinuxTest, DeleteAddress) {
}
TEST_F(AddressTrackerLinuxTest, DeprecatedLifetime) {
+ InitializeAddressTracker(true);
+
const IPAddressNumber kEmpty;
const IPAddressNumber kAddr3(kAddress3, kAddress3 + arraysize(kAddress3));
@@ -351,6 +368,8 @@ TEST_F(AddressTrackerLinuxTest, DeprecatedLifetime) {
}
TEST_F(AddressTrackerLinuxTest, IgnoredMessage) {
+ InitializeAddressTracker(true);
+
const IPAddressNumber kEmpty;
const IPAddressNumber kAddr0(kAddress0, kAddress0 + arraysize(kAddress0));
const IPAddressNumber kAddr3(kAddress3, kAddress3 + arraysize(kAddress3));
@@ -381,6 +400,8 @@ TEST_F(AddressTrackerLinuxTest, IgnoredMessage) {
}
TEST_F(AddressTrackerLinuxTest, AddInterface) {
+ InitializeAddressTracker(true);
+
Buffer buffer;
// Ignores loopback.
@@ -388,69 +409,73 @@ TEST_F(AddressTrackerLinuxTest, AddInterface) {
IFF_LOOPBACK | IFF_UP | IFF_LOWER_UP | IFF_RUNNING,
0, &buffer);
EXPECT_FALSE(HandleLinkMessage(buffer));
- EXPECT_TRUE(GetOnlineLinks()->empty());
+ EXPECT_TRUE(GetOnlineLinks().empty());
// Ignores not IFF_LOWER_UP.
MakeLinkMessage(RTM_NEWLINK, IFF_UP | IFF_RUNNING, 0, &buffer);
EXPECT_FALSE(HandleLinkMessage(buffer));
- EXPECT_TRUE(GetOnlineLinks()->empty());
+ EXPECT_TRUE(GetOnlineLinks().empty());
// Ignores deletion.
MakeLinkMessage(RTM_DELLINK, IFF_UP | IFF_LOWER_UP | IFF_RUNNING, 0, &buffer);
EXPECT_FALSE(HandleLinkMessage(buffer));
- EXPECT_TRUE(GetOnlineLinks()->empty());
+ EXPECT_TRUE(GetOnlineLinks().empty());
// Verify success.
MakeLinkMessage(RTM_NEWLINK, IFF_UP | IFF_LOWER_UP | IFF_RUNNING, 0, &buffer);
EXPECT_TRUE(HandleLinkMessage(buffer));
- EXPECT_EQ(1u, GetOnlineLinks()->count(0));
- EXPECT_EQ(1u, GetOnlineLinks()->size());
+ EXPECT_EQ(1u, GetOnlineLinks().count(0));
+ EXPECT_EQ(1u, GetOnlineLinks().size());
// Ignores redundant enables.
MakeLinkMessage(RTM_NEWLINK, IFF_UP | IFF_LOWER_UP | IFF_RUNNING, 0, &buffer);
EXPECT_FALSE(HandleLinkMessage(buffer));
- EXPECT_EQ(1u, GetOnlineLinks()->count(0));
- EXPECT_EQ(1u, GetOnlineLinks()->size());
+ EXPECT_EQ(1u, GetOnlineLinks().count(0));
+ EXPECT_EQ(1u, GetOnlineLinks().size());
// Verify adding another online device (e.g. VPN) is considered a change.
MakeLinkMessage(RTM_NEWLINK, IFF_UP | IFF_LOWER_UP | IFF_RUNNING, 1, &buffer);
EXPECT_TRUE(HandleLinkMessage(buffer));
- EXPECT_EQ(1u, GetOnlineLinks()->count(0));
- EXPECT_EQ(1u, GetOnlineLinks()->count(1));
- EXPECT_EQ(2u, GetOnlineLinks()->size());
+ EXPECT_EQ(1u, GetOnlineLinks().count(0));
+ EXPECT_EQ(1u, GetOnlineLinks().count(1));
+ EXPECT_EQ(2u, GetOnlineLinks().size());
}
TEST_F(AddressTrackerLinuxTest, RemoveInterface) {
+ InitializeAddressTracker(true);
+
Buffer buffer;
// Should disappear when not IFF_LOWER_UP.
MakeLinkMessage(RTM_NEWLINK, IFF_UP | IFF_LOWER_UP | IFF_RUNNING, 0, &buffer);
EXPECT_TRUE(HandleLinkMessage(buffer));
- EXPECT_FALSE(GetOnlineLinks()->empty());
+ EXPECT_FALSE(GetOnlineLinks().empty());
MakeLinkMessage(RTM_NEWLINK, IFF_UP | IFF_RUNNING, 0, &buffer);
EXPECT_TRUE(HandleLinkMessage(buffer));
- EXPECT_TRUE(GetOnlineLinks()->empty());
+ EXPECT_TRUE(GetOnlineLinks().empty());
// Ignores redundant disables.
MakeLinkMessage(RTM_NEWLINK, IFF_UP | IFF_RUNNING, 0, &buffer);
EXPECT_FALSE(HandleLinkMessage(buffer));
- EXPECT_TRUE(GetOnlineLinks()->empty());
+ EXPECT_TRUE(GetOnlineLinks().empty());
// Ignores deleting down interfaces.
MakeLinkMessage(RTM_DELLINK, IFF_UP | IFF_RUNNING, 0, &buffer);
EXPECT_FALSE(HandleLinkMessage(buffer));
- EXPECT_TRUE(GetOnlineLinks()->empty());
+ EXPECT_TRUE(GetOnlineLinks().empty());
// Should disappear when deleted.
MakeLinkMessage(RTM_NEWLINK, IFF_UP | IFF_LOWER_UP | IFF_RUNNING, 0, &buffer);
EXPECT_TRUE(HandleLinkMessage(buffer));
- EXPECT_FALSE(GetOnlineLinks()->empty());
+ EXPECT_FALSE(GetOnlineLinks().empty());
MakeLinkMessage(RTM_DELLINK, IFF_UP | IFF_LOWER_UP | IFF_RUNNING, 0, &buffer);
EXPECT_TRUE(HandleLinkMessage(buffer));
- EXPECT_TRUE(GetOnlineLinks()->empty());
+ EXPECT_TRUE(GetOnlineLinks().empty());
}
TEST_F(AddressTrackerLinuxTest, TunnelInterface) {
+ InitializeAddressTracker(true);
+
Buffer buffer;
// Ignores without "tun" prefixed name.
@@ -493,10 +518,38 @@ TEST_F(AddressTrackerLinuxTest, TunnelInterface) {
// Check AddressTrackerLinux::get_interface_name_ original implementation
// doesn't crash or return NULL.
TEST_F(AddressTrackerLinuxTest, GetInterfaceName) {
+ InitializeAddressTracker(true);
+
for (int i = 0; i < 10; i++)
EXPECT_NE((const char*)NULL, original_get_interface_name_(i));
}
+TEST_F(AddressTrackerLinuxTest, NonTrackingMode) {
+ InitializeAddressTracker(false);
+
+ const IPAddressNumber kEmpty;
+ const IPAddressNumber kAddr0(kAddress0, kAddress0 + arraysize(kAddress0));
+
+ Buffer buffer;
+ MakeAddrMessage(
+ RTM_NEWADDR, IFA_F_TEMPORARY, AF_INET, kAddr0, kEmpty, &buffer);
+ EXPECT_TRUE(HandleAddressMessage(buffer));
+ AddressTrackerLinux::AddressMap map = GetAddressMap();
+ EXPECT_EQ(1u, map.size());
+ EXPECT_EQ(1u, map.count(kAddr0));
+ EXPECT_EQ(IFA_F_TEMPORARY, map[kAddr0].ifa_flags);
+
+ MakeLinkMessage(RTM_NEWLINK, IFF_UP | IFF_LOWER_UP | IFF_RUNNING, 0, &buffer);
+ EXPECT_TRUE(HandleLinkMessage(buffer));
+ EXPECT_EQ(1u, GetOnlineLinks().count(0));
+ EXPECT_EQ(1u, GetOnlineLinks().size());
+}
+
+TEST_F(AddressTrackerLinuxTest, NonTrackingModeInit) {
+ AddressTrackerLinux tracker;
+ tracker.Init();
+}
+
} // namespace
} // namespace internal
« no previous file with comments | « net/base/address_tracker_linux.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698