Commit 5b3f21e7 authored by btolsch's avatar btolsch Committed by Commit Bot

Revise DiscoveryNetworkMonitor testing

This change lets other test files avoid using the
DiscoveryNetworkMonitor singleton and converts TestBrowserThreadBundle
to ScopedTaskEnvironment.

Bug: 698943
Change-Id: Ib69cd42901b739e651a87cafa2ca4a2e214c48e2
Reviewed-on: https://chromium-review.googlesource.com/595017
Commit-Queue: Brandon Tolsch <btolsch@chromium.org>
Reviewed-by: default avatarDerek Cheng <imcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491550}
parent 1e4eeb89
...@@ -52,13 +52,12 @@ DiscoveryNetworkMonitor* DiscoveryNetworkMonitor::GetInstance() { ...@@ -52,13 +52,12 @@ DiscoveryNetworkMonitor* DiscoveryNetworkMonitor::GetInstance() {
return g_discovery_monitor.Pointer(); return g_discovery_monitor.Pointer();
} }
void DiscoveryNetworkMonitor::RebindNetworkChangeObserverForTest() { // static
net::NetworkChangeNotifier::AddNetworkChangeObserver(this); std::unique_ptr<DiscoveryNetworkMonitor>
} DiscoveryNetworkMonitor::CreateInstanceForTest(NetworkInfoFunction strategy) {
auto* discovery_network_monitor = new DiscoveryNetworkMonitor();
void DiscoveryNetworkMonitor::SetNetworkInfoFunctionForTest( discovery_network_monitor->SetNetworkInfoFunctionForTest(std::move(strategy));
NetworkInfoFunction strategy) { return std::unique_ptr<DiscoveryNetworkMonitor>(discovery_network_monitor);
network_info_function_ = strategy;
} }
void DiscoveryNetworkMonitor::AddObserver(Observer* const observer) { void DiscoveryNetworkMonitor::AddObserver(Observer* const observer) {
...@@ -100,6 +99,11 @@ DiscoveryNetworkMonitor::~DiscoveryNetworkMonitor() { ...@@ -100,6 +99,11 @@ DiscoveryNetworkMonitor::~DiscoveryNetworkMonitor() {
net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this);
} }
void DiscoveryNetworkMonitor::SetNetworkInfoFunctionForTest(
NetworkInfoFunction strategy) {
network_info_function_ = strategy;
}
void DiscoveryNetworkMonitor::OnNetworkChanged( void DiscoveryNetworkMonitor::OnNetworkChanged(
net::NetworkChangeNotifier::ConnectionType) { net::NetworkChangeNotifier::ConnectionType) {
task_runner_->PostTask( task_runner_->PostTask(
......
...@@ -50,8 +50,8 @@ class DiscoveryNetworkMonitor ...@@ -50,8 +50,8 @@ class DiscoveryNetworkMonitor
static DiscoveryNetworkMonitor* GetInstance(); static DiscoveryNetworkMonitor* GetInstance();
void RebindNetworkChangeObserverForTest(); static std::unique_ptr<DiscoveryNetworkMonitor> CreateInstanceForTest(
void SetNetworkInfoFunctionForTest(NetworkInfoFunction); NetworkInfoFunction strategy);
void AddObserver(Observer* const observer); void AddObserver(Observer* const observer);
void RemoveObserver(Observer* const observer); void RemoveObserver(Observer* const observer);
...@@ -67,12 +67,14 @@ class DiscoveryNetworkMonitor ...@@ -67,12 +67,14 @@ class DiscoveryNetworkMonitor
void GetNetworkId(NetworkIdCallback callback); void GetNetworkId(NetworkIdCallback callback);
private: private:
friend class DiscoveryNetworkMonitorTest; friend struct std::default_delete<DiscoveryNetworkMonitor>;
friend struct base::LazyInstanceTraitsBase<DiscoveryNetworkMonitor>; friend struct base::LazyInstanceTraitsBase<DiscoveryNetworkMonitor>;
DiscoveryNetworkMonitor(); DiscoveryNetworkMonitor();
~DiscoveryNetworkMonitor() override; ~DiscoveryNetworkMonitor() override;
void SetNetworkInfoFunctionForTest(NetworkInfoFunction strategy);
// net::NetworkChangeNotifier::NetworkChangeObserver // net::NetworkChangeNotifier::NetworkChangeObserver
void OnNetworkChanged( void OnNetworkChanged(
net::NetworkChangeNotifier::ConnectionType type) override; net::NetworkChangeNotifier::ConnectionType type) override;
......
...@@ -6,18 +6,13 @@ ...@@ -6,18 +6,13 @@
#include <memory> #include <memory>
#include "base/run_loop.h"
#include "base/task_scheduler/task_scheduler.h" #include "base/task_scheduler/task_scheduler.h"
#include "content/public/browser/browser_thread.h" #include "base/test/scoped_task_environment.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "content/public/test/test_utils.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace { namespace {
using content::BrowserThread;
using testing::Invoke; using testing::Invoke;
using testing::_; using testing::_;
...@@ -30,19 +25,13 @@ class MockDiscoveryObserver : public DiscoveryNetworkMonitor::Observer { ...@@ -30,19 +25,13 @@ class MockDiscoveryObserver : public DiscoveryNetworkMonitor::Observer {
class DiscoveryNetworkMonitorTest : public testing::Test { class DiscoveryNetworkMonitorTest : public testing::Test {
protected: protected:
void SetUp() override { void SetUp() override { fake_network_info.clear(); }
fake_network_info.clear();
discovery_network_monitor->SetNetworkInfoFunctionForTest(
&FakeGetNetworkInfo);
}
void TearDown() override { delete discovery_network_monitor; }
static std::vector<DiscoveryNetworkInfo> FakeGetNetworkInfo() { static std::vector<DiscoveryNetworkInfo> FakeGetNetworkInfo() {
return fake_network_info; return fake_network_info;
} }
content::TestBrowserThreadBundle test_browser_thread_bundle; base::test::ScopedTaskEnvironment scoped_task_environment;
MockDiscoveryObserver mock_observer; MockDiscoveryObserver mock_observer;
std::vector<DiscoveryNetworkInfo> fake_ethernet_info{ std::vector<DiscoveryNetworkInfo> fake_ethernet_info{
...@@ -55,10 +44,8 @@ class DiscoveryNetworkMonitorTest : public testing::Test { ...@@ -55,10 +44,8 @@ class DiscoveryNetworkMonitorTest : public testing::Test {
base::WrapUnique(net::NetworkChangeNotifier::CreateMock()); base::WrapUnique(net::NetworkChangeNotifier::CreateMock());
static std::vector<DiscoveryNetworkInfo> fake_network_info; static std::vector<DiscoveryNetworkInfo> fake_network_info;
// A raw pointer is used here with the delete in TearDown to avoid making the std::unique_ptr<DiscoveryNetworkMonitor> discovery_network_monitor =
// destructor public. DiscoveryNetworkMonitor::CreateInstanceForTest(&FakeGetNetworkInfo);
DiscoveryNetworkMonitor* discovery_network_monitor =
new DiscoveryNetworkMonitor();
}; };
// static // static
...@@ -79,7 +66,7 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) { ...@@ -79,7 +66,7 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) {
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests( net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_ETHERNET); net::NetworkChangeNotifier::CONNECTION_ETHERNET);
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
std::string ethernet_network_id = current_network_id; std::string ethernet_network_id = current_network_id;
...@@ -89,7 +76,7 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) { ...@@ -89,7 +76,7 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) {
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests( net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_NONE); net::NetworkChangeNotifier::CONNECTION_NONE);
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
fake_network_info = fake_wifi_info; fake_network_info = fake_wifi_info;
EXPECT_CALL(mock_observer, OnNetworksChanged(_)) EXPECT_CALL(mock_observer, OnNetworksChanged(_))
...@@ -97,7 +84,7 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) { ...@@ -97,7 +84,7 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) {
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests( net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_WIFI); net::NetworkChangeNotifier::CONNECTION_WIFI);
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
std::string wifi_network_id = current_network_id; std::string wifi_network_id = current_network_id;
fake_network_info = fake_ethernet_info; fake_network_info = fake_ethernet_info;
...@@ -106,7 +93,7 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) { ...@@ -106,7 +93,7 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) {
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests( net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_ETHERNET); net::NetworkChangeNotifier::CONNECTION_ETHERNET);
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
EXPECT_EQ(ethernet_network_id, current_network_id); EXPECT_EQ(ethernet_network_id, current_network_id);
EXPECT_NE(ethernet_network_id, wifi_network_id); EXPECT_NE(ethernet_network_id, wifi_network_id);
...@@ -122,14 +109,14 @@ TEST_F(DiscoveryNetworkMonitorTest, RemoveObserverStopsNotifications) { ...@@ -122,14 +109,14 @@ TEST_F(DiscoveryNetworkMonitorTest, RemoveObserverStopsNotifications) {
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests( net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_ETHERNET); net::NetworkChangeNotifier::CONNECTION_ETHERNET);
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
discovery_network_monitor->RemoveObserver(&mock_observer); discovery_network_monitor->RemoveObserver(&mock_observer);
fake_network_info.clear(); fake_network_info.clear();
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests( net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_NONE); net::NetworkChangeNotifier::CONNECTION_NONE);
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
} }
TEST_F(DiscoveryNetworkMonitorTest, RefreshIndependentOfChangeObserver) { TEST_F(DiscoveryNetworkMonitorTest, RefreshIndependentOfChangeObserver) {
...@@ -145,7 +132,7 @@ TEST_F(DiscoveryNetworkMonitorTest, RefreshIndependentOfChangeObserver) { ...@@ -145,7 +132,7 @@ TEST_F(DiscoveryNetworkMonitorTest, RefreshIndependentOfChangeObserver) {
}; };
discovery_network_monitor->Refresh(base::BindOnce(force_refresh_callback)); discovery_network_monitor->Refresh(base::BindOnce(force_refresh_callback));
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
} }
TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithoutRefresh) { TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithoutRefresh) {
...@@ -155,7 +142,7 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithoutRefresh) { ...@@ -155,7 +142,7 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithoutRefresh) {
EXPECT_EQ(DiscoveryNetworkMonitor::kNetworkIdDisconnected, network_id); EXPECT_EQ(DiscoveryNetworkMonitor::kNetworkIdDisconnected, network_id);
}; };
discovery_network_monitor->GetNetworkId(base::BindOnce(check_network_id)); discovery_network_monitor->GetNetworkId(base::BindOnce(check_network_id));
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
} }
TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithRefresh) { TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithRefresh) {
...@@ -172,7 +159,7 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithRefresh) { ...@@ -172,7 +159,7 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithRefresh) {
}; };
discovery_network_monitor->Refresh( discovery_network_monitor->Refresh(
base::BindOnce(capture_network_id, &current_network_id)); base::BindOnce(capture_network_id, &current_network_id));
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
auto check_network_id = [](const std::string& refresh_network_id, auto check_network_id = [](const std::string& refresh_network_id,
const std::string& network_id) { const std::string& network_id) {
...@@ -180,7 +167,7 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithRefresh) { ...@@ -180,7 +167,7 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithRefresh) {
}; };
discovery_network_monitor->GetNetworkId( discovery_network_monitor->GetNetworkId(
base::BindOnce(check_network_id, base::ConstRef(current_network_id))); base::BindOnce(check_network_id, base::ConstRef(current_network_id)));
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
} }
TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithObserver) { TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithObserver) {
...@@ -191,7 +178,7 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithObserver) { ...@@ -191,7 +178,7 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithObserver) {
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests( net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_ETHERNET); net::NetworkChangeNotifier::CONNECTION_ETHERNET);
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
std::string current_network_id; std::string current_network_id;
auto check_network_id = [](const std::string& network_id) { auto check_network_id = [](const std::string& network_id) {
...@@ -201,5 +188,5 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithObserver) { ...@@ -201,5 +188,5 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithObserver) {
network_id); network_id);
}; };
discovery_network_monitor->GetNetworkId(base::BindOnce(check_network_id)); discovery_network_monitor->GetNetworkId(base::BindOnce(check_network_id));
content::RunAllBlockingPoolTasksUntilIdle(); scoped_task_environment.RunUntilIdle();
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment