Index: chromeos/network/network_state_handler_unittest.cc |
diff --git a/chromeos/network/network_state_handler_unittest.cc b/chromeos/network/network_state_handler_unittest.cc |
index 669af30176b1089cfe667ef96c3cc5b83bf1b100..3f95116dfabe2b254e7db3de2d4559f57f31eb54 100644 |
--- a/chromeos/network/network_state_handler_unittest.cc |
+++ b/chromeos/network/network_state_handler_unittest.cc |
@@ -31,10 +31,10 @@ void ErrorCallbackFunction(const std::string& error_name, |
LOG(ERROR) << "Shill Error: " << error_name << " : " << error_message; |
} |
-const std::string kShillManagerClientStubDefaultService = "eth1"; |
-const std::string kShillManagerClientStubDefaultWifi = "wifi1"; |
-const std::string kShillManagerClientStubWifi2 = "wifi2"; |
-const std::string kShillManagerClientStubCellular = "cellular1"; |
+const std::string kShillManagerClientStubDefaultService = "/service/eth1"; |
+const std::string kShillManagerClientStubDefaultWifi = "/service/wifi1"; |
+const std::string kShillManagerClientStubWifi2 = "/service/wifi2"; |
+const std::string kShillManagerClientStubCellular = "/service/cellular1"; |
using chromeos::NetworkState; |
using chromeos::NetworkStateHandler; |
@@ -44,6 +44,7 @@ class TestObserver : public chromeos::NetworkStateHandlerObserver { |
explicit TestObserver(NetworkStateHandler* handler) |
: handler_(handler), |
device_list_changed_count_(0), |
+ device_count_(0), |
network_count_(0), |
default_network_change_count_(0), |
favorite_count_(0) { |
@@ -53,6 +54,9 @@ class TestObserver : public chromeos::NetworkStateHandlerObserver { |
} |
virtual void DeviceListChanged() OVERRIDE { |
+ NetworkStateHandler::DeviceStateList devices; |
+ handler_->GetDeviceList(&devices); |
+ device_count_ = devices.size(); |
++device_list_changed_count_; |
} |
@@ -90,13 +94,15 @@ class TestObserver : public chromeos::NetworkStateHandlerObserver { |
} |
size_t device_list_changed_count() { return device_list_changed_count_; } |
+ size_t device_count() { return device_count_; } |
size_t network_count() { return network_count_; } |
size_t default_network_change_count() { |
return default_network_change_count_; |
} |
- void reset_network_change_count() { |
- DVLOG(1) << "ResetNetworkChangeCount"; |
+ void reset_change_counts() { |
+ DVLOG(1) << "=== RESET CHANGE COUNTS ==="; |
default_network_change_count_ = 0; |
+ device_list_changed_count_ = 0; |
} |
std::string default_network() { return default_network_; } |
std::string default_network_connection_state() { |
@@ -120,6 +126,7 @@ class TestObserver : public chromeos::NetworkStateHandlerObserver { |
private: |
NetworkStateHandler* handler_; |
size_t device_list_changed_count_; |
+ size_t device_count_; |
size_t network_count_; |
size_t default_network_change_count_; |
std::string default_network_; |
@@ -148,8 +155,13 @@ class NetworkStateHandlerTest : public testing::Test { |
virtual void SetUp() OVERRIDE { |
// Initialize DBusThreadManager with a stub implementation. |
DBusThreadManager::InitializeWithStub(); |
- SetupNetworkStateHandler(); |
+ SetupDefaultShillState(); |
+ network_state_handler_.reset(new NetworkStateHandler); |
+ test_observer_.reset(new TestObserver(network_state_handler_.get())); |
+ network_state_handler_->AddObserver(test_observer_.get(), FROM_HERE); |
+ network_state_handler_->InitShillPropertyHandler(); |
message_loop_.RunUntilIdle(); |
+ test_observer_->reset_change_counts(); |
} |
virtual void TearDown() OVERRIDE { |
@@ -159,22 +171,13 @@ class NetworkStateHandlerTest : public testing::Test { |
DBusThreadManager::Shutdown(); |
} |
- void SetupNetworkStateHandler() { |
- SetupDefaultShillState(); |
- network_state_handler_.reset(new NetworkStateHandler); |
- test_observer_.reset(new TestObserver(network_state_handler_.get())); |
- network_state_handler_->AddObserver(test_observer_.get(), FROM_HERE); |
- network_state_handler_->InitShillPropertyHandler(); |
- } |
- |
protected: |
void AddService(const std::string& service_path, |
const std::string& name, |
const std::string& type, |
const std::string& state) { |
service_test_->AddService(service_path, name, type, state, |
- true /* add_to_visible */, |
- true /* add_to_watchlist */); |
+ true /* add_to_visible */); |
} |
void SetupDefaultShillState() { |
@@ -203,19 +206,19 @@ class NetworkStateHandlerTest : public testing::Test { |
ASSERT_TRUE(service_test_); |
service_test_->ClearServices(); |
AddService(kShillManagerClientStubDefaultService, |
- kShillManagerClientStubDefaultService, |
+ "eth1", |
shill::kTypeEthernet, |
shill::kStateOnline); |
AddService(kShillManagerClientStubDefaultWifi, |
- kShillManagerClientStubDefaultWifi, |
+ "wifi1", |
shill::kTypeWifi, |
shill::kStateOnline); |
AddService(kShillManagerClientStubWifi2, |
- kShillManagerClientStubWifi2, |
+ "wifi2", |
shill::kTypeWifi, |
shill::kStateIdle); |
AddService(kShillManagerClientStubCellular, |
- kShillManagerClientStubCellular, |
+ "cellular1", |
shill::kTypeCellular, |
shill::kStateIdle); |
} |
@@ -239,16 +242,19 @@ class NetworkStateHandlerTest : public testing::Test { |
}; |
TEST_F(NetworkStateHandlerTest, NetworkStateHandlerStub) { |
- // Ensure that the network list is the expected size. |
+ // Ensure that the device and network list are the expected size. |
+ const size_t kNumShillManagerClientStubImplDevices = 2; |
+ EXPECT_EQ(kNumShillManagerClientStubImplDevices, |
+ test_observer_->device_count()); |
const size_t kNumShillManagerClientStubImplServices = 4; |
EXPECT_EQ(kNumShillManagerClientStubImplServices, |
test_observer_->network_count()); |
// Ensure that the first stub network is the default network. |
EXPECT_EQ(kShillManagerClientStubDefaultService, |
test_observer_->default_network()); |
+ ASSERT_TRUE(network_state_handler_->DefaultNetwork()); |
EXPECT_EQ(kShillManagerClientStubDefaultService, |
- network_state_handler_->ConnectedNetworkByType( |
- NetworkTypePattern::Default())->path()); |
+ network_state_handler_->DefaultNetwork()->path()); |
EXPECT_EQ(kShillManagerClientStubDefaultService, |
network_state_handler_->ConnectedNetworkByType( |
NetworkTypePattern::Ethernet())->path()); |
@@ -267,34 +273,41 @@ TEST_F(NetworkStateHandlerTest, NetworkStateHandlerStub) { |
} |
TEST_F(NetworkStateHandlerTest, TechnologyChanged) { |
- // There may be several manager changes during initialization. |
- size_t initial_changed_count = test_observer_->device_list_changed_count(); |
- // Disable a technology. |
+ // Disable a technology. Will immediately set the state to AVAILABLE and |
+ // notify observers. |
network_state_handler_->SetTechnologyEnabled( |
- NetworkTypePattern::Wimax(), false, network_handler::ErrorCallback()); |
- EXPECT_NE( |
- NetworkStateHandler::TECHNOLOGY_ENABLED, |
- network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); |
- EXPECT_EQ(initial_changed_count + 1, |
- test_observer_->device_list_changed_count()); |
- // Enable a technology. |
+ NetworkTypePattern::WiFi(), false, network_handler::ErrorCallback()); |
+ EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
+ EXPECT_EQ( |
+ NetworkStateHandler::TECHNOLOGY_AVAILABLE, |
+ network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
+ |
+ // Run the message loop. An additional notification will be received when |
+ // Shill updates the enabled technologies. The state should remain AVAILABLE. |
+ test_observer_->reset_change_counts(); |
+ message_loop_.RunUntilIdle(); |
+ EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
+ EXPECT_EQ( |
+ NetworkStateHandler::TECHNOLOGY_AVAILABLE, |
+ network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
+ |
+ // Enable a technology. Will immediately set the state to ENABLING and |
+ // notify observers. |
+ test_observer_->reset_change_counts(); |
network_state_handler_->SetTechnologyEnabled( |
- NetworkTypePattern::Wimax(), true, network_handler::ErrorCallback()); |
- // The technology state should immediately change to ENABLING and we should |
- // receive a manager changed callback. |
- EXPECT_EQ(initial_changed_count + 2, |
- test_observer_->device_list_changed_count()); |
+ NetworkTypePattern::WiFi(), true, network_handler::ErrorCallback()); |
+ EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
EXPECT_EQ( |
NetworkStateHandler::TECHNOLOGY_ENABLING, |
- network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); |
+ network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
+ |
+ // Run the message loop. State should change to ENABLED. |
+ test_observer_->reset_change_counts(); |
message_loop_.RunUntilIdle(); |
- // Ensure we receive 2 manager changed callbacks when the technology becomes |
- // avalable and enabled. |
- EXPECT_EQ(initial_changed_count + 4, |
- test_observer_->device_list_changed_count()); |
+ EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
EXPECT_EQ( |
NetworkStateHandler::TECHNOLOGY_ENABLED, |
- network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); |
+ network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
} |
TEST_F(NetworkStateHandlerTest, TechnologyState) { |
@@ -414,7 +427,6 @@ TEST_F(NetworkStateHandlerTest, DefaultServiceDisconnected) { |
const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
// Disconnect ethernet. |
- test_observer_->reset_network_change_count(); |
base::StringValue connection_state_idle_value(shill::kStateIdle); |
service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
connection_state_idle_value); |
@@ -425,7 +437,7 @@ TEST_F(NetworkStateHandlerTest, DefaultServiceDisconnected) { |
EXPECT_EQ(wifi1, test_observer_->default_network()); |
// Disconnect wifi. |
- test_observer_->reset_network_change_count(); |
+ test_observer_->reset_change_counts(); |
service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
connection_state_idle_value); |
message_loop_.RunUntilIdle(); |
@@ -447,7 +459,7 @@ TEST_F(NetworkStateHandlerTest, DefaultServiceConnected) { |
EXPECT_EQ(std::string(), test_observer_->default_network()); |
// Connect ethernet, should become the default network. |
- test_observer_->reset_network_change_count(); |
+ test_observer_->reset_change_counts(); |
base::StringValue connection_state_ready_value(shill::kStateReady); |
service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
connection_state_ready_value); |
@@ -464,7 +476,6 @@ TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { |
EXPECT_EQ(eth1, test_observer_->default_network()); |
// Change the default network by changing Manager.DefaultService. |
- test_observer_->reset_network_change_count(); |
const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
base::StringValue wifi1_value(wifi1); |
manager_test_->SetManagerProperty( |
@@ -474,7 +485,7 @@ TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { |
EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
// Change the state of the default network. |
- test_observer_->reset_network_change_count(); |
+ test_observer_->reset_change_counts(); |
base::StringValue connection_state_ready_value(shill::kStateReady); |
service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
connection_state_ready_value); |
@@ -485,7 +496,7 @@ TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { |
// Updating a property on the default network should trigger |
// a default network change. |
- test_observer_->reset_network_change_count(); |
+ test_observer_->reset_change_counts(); |
DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( |
dbus::ObjectPath(wifi1), |
shill::kSecurityProperty, base::StringValue("TestSecurity"), |
@@ -494,7 +505,7 @@ TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { |
EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
// No default network updates for signal strength changes. |
- test_observer_->reset_network_change_count(); |
+ test_observer_->reset_change_counts(); |
DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( |
dbus::ObjectPath(wifi1), |
shill::kSignalStrengthProperty, base::FundamentalValue(32), |
@@ -516,7 +527,7 @@ TEST_F(NetworkStateHandlerTest, RequestUpdate) { |
TEST_F(NetworkStateHandlerTest, NetworkGuidInProfile) { |
const std::string profile = "/profile/profile1"; |
- const std::string wifi_path = "wifi_with_guid"; |
+ const std::string wifi_path = "/service/wifi_with_guid"; |
const std::string wifi_guid = "WIFI_GUID"; |
const bool is_service_configured = true; |
@@ -528,8 +539,7 @@ TEST_F(NetworkStateHandlerTest, NetworkGuidInProfile) { |
shill::kTypeWifi, |
shill::kStateOnline, |
"" /* ipconfig_path */, |
- true /* add_to_visible */, |
- true /* add_to_watchlist */); |
+ true /* add_to_visible */); |
profile_test_->AddProfile(profile, "" /* userhash */); |
EXPECT_TRUE(profile_test_->AddService(profile, wifi_path)); |
UpdateManagerProperties(); |
@@ -568,7 +578,7 @@ TEST_F(NetworkStateHandlerTest, NetworkGuidInProfile) { |
} |
TEST_F(NetworkStateHandlerTest, NetworkGuidNotInProfile) { |
- const std::string wifi_path = "wifi_with_guid"; |
+ const std::string wifi_path = "/service/wifi_with_guid"; |
const bool is_service_configured = false; |
// Add a network without adding it to a profile. |