Chromium Code Reviews| 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 619a284f62944b31c685c55aa6c30956f7493949..74c9b6de4a6689abaec1b0b06ef5b4020460b6ec 100644 |
| --- a/chromeos/network/network_state_handler_unittest.cc |
| +++ b/chromeos/network/network_state_handler_unittest.cc |
| @@ -14,9 +14,11 @@ |
| #include "base/values.h" |
| #include "chromeos/dbus/dbus_thread_manager.h" |
| #include "chromeos/dbus/shill_device_client.h" |
| +#include "chromeos/dbus/shill_ipconfig_client.h" |
| #include "chromeos/dbus/shill_manager_client.h" |
| #include "chromeos/dbus/shill_profile_client.h" |
| #include "chromeos/dbus/shill_service_client.h" |
| +#include "chromeos/network/device_state.h" |
| #include "chromeos/network/network_state.h" |
| #include "chromeos/network/network_state_handler.h" |
| #include "chromeos/network/network_state_handler_observer.h" |
| @@ -31,11 +33,16 @@ void ErrorCallbackFunction(const std::string& error_name, |
| LOG(ERROR) << "Shill Error: " << error_name << " : " << error_message; |
| } |
| +const std::string kShillManagerClientStubWifiDevice = |
| + "/device/stub_wifi_device1"; |
| +const std::string kShillManagerClientStubCellularDevice = |
| + "/device/stub_cellular_device1"; |
| 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::DeviceState; |
| using chromeos::NetworkState; |
| using chromeos::NetworkStateHandler; |
| @@ -95,6 +102,11 @@ class TestObserver : public chromeos::NetworkStateHandlerObserver { |
| property_updates_[network->path()]++; |
| } |
| + virtual void DevicePropertiesUpdated(const DeviceState* device) OVERRIDE { |
| + DCHECK(device); |
| + device_property_updates_[device->path()]++; |
| + } |
| + |
| size_t device_list_changed_count() { return device_list_changed_count_; } |
| size_t device_count() { return device_count_; } |
| size_t network_list_changed_count() { return network_list_changed_count_; } |
| @@ -107,6 +119,11 @@ class TestObserver : public chromeos::NetworkStateHandlerObserver { |
| default_network_change_count_ = 0; |
| device_list_changed_count_ = 0; |
| network_list_changed_count_ = 0; |
| + connection_state_changes_.clear(); |
| + } |
| + void reset_updates() { |
| + property_updates_.clear(); |
| + device_property_updates_.clear(); |
| } |
| std::string default_network() { return default_network_; } |
| std::string default_network_connection_state() { |
| @@ -117,6 +134,10 @@ class TestObserver : public chromeos::NetworkStateHandlerObserver { |
| return property_updates_[service_path]; |
| } |
| + int PropertyUpdatesForDevice(const std::string& device_path) { |
| + return device_property_updates_[device_path]; |
| + } |
| + |
| int ConnectionStateChangesForService(const std::string& service_path) { |
| return connection_state_changes_[service_path]; |
| } |
| @@ -136,6 +157,7 @@ class TestObserver : public chromeos::NetworkStateHandlerObserver { |
| std::string default_network_; |
| std::string default_network_connection_state_; |
| std::map<std::string, int> property_updates_; |
| + std::map<std::string, int> device_property_updates_; |
| std::map<std::string, int> connection_state_changes_; |
| std::map<std::string, std::string> network_connection_state_; |
| @@ -190,11 +212,10 @@ class NetworkStateHandlerTest : public testing::Test { |
| DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface(); |
| ASSERT_TRUE(device_test_); |
| device_test_->ClearDevices(); |
| - device_test_->AddDevice( |
| - "/device/stub_wifi_device1", shill::kTypeWifi, "stub_wifi_device1"); |
| - device_test_->AddDevice("/device/stub_cellular_device1", |
| - shill::kTypeCellular, |
| - "stub_cellular_device1"); |
| + device_test_->AddDevice(kShillManagerClientStubWifiDevice, |
| + shill::kTypeWifi, "stub_wifi_device1"); |
| + device_test_->AddDevice(kShillManagerClientStubCellularDevice, |
| + shill::kTypeCellular, "stub_cellular_device1"); |
| manager_test_ = |
| DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface(); |
| @@ -521,21 +542,23 @@ TEST_F(NetworkStateHandlerTest, GetState) { |
| } |
| TEST_F(NetworkStateHandlerTest, NetworkConnectionStateChanged) { |
| - // Change a network state. |
| const std::string eth1 = kShillManagerClientStubDefaultService; |
| + EXPECT_EQ(0, test_observer_->ConnectionStateChangesForService(eth1)); |
| + |
| + // Change a network state. |
| base::StringValue connection_state_idle_value(shill::kStateIdle); |
| service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| connection_state_idle_value); |
| message_loop_.RunUntilIdle(); |
| EXPECT_EQ(shill::kStateIdle, |
| test_observer_->NetworkConnectionStateForService(eth1)); |
| - EXPECT_EQ(2, test_observer_->ConnectionStateChangesForService(eth1)); |
| + EXPECT_EQ(1, test_observer_->ConnectionStateChangesForService(eth1)); |
|
pneubeck (no reviews)
2014/07/16 21:43:35
I'm confused, maybe because it's to late. Why did
stevenjb
2014/07/16 22:14:15
reset_change_counts() which gets called in SetUp()
|
| // Confirm that changing the connection state to the same value does *not* |
| // signal the observer. |
| service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| connection_state_idle_value); |
| message_loop_.RunUntilIdle(); |
| - EXPECT_EQ(2, test_observer_->ConnectionStateChangesForService(eth1)); |
| + EXPECT_EQ(1, test_observer_->ConnectionStateChangesForService(eth1)); |
| } |
| TEST_F(NetworkStateHandlerTest, DefaultServiceDisconnected) { |
| @@ -713,4 +736,48 @@ TEST_F(NetworkStateHandlerTest, NetworkGuidNotInProfile) { |
| EXPECT_EQ(wifi_guid, network->guid()); |
| } |
| +TEST_F(NetworkStateHandlerTest, DeviceListChanged) { |
| + size_t stub_device_count = test_observer_->device_count(); |
| + // Add an additional device. |
| + const std::string wifi_device = "/service/stub_wifi_device2"; |
| + device_test_->AddDevice(wifi_device, shill::kTypeWifi, "stub_wifi_device2"); |
| + UpdateManagerProperties(); |
| + // Expect a device list update. |
| + EXPECT_EQ(stub_device_count + 1, test_observer_->device_count()); |
| + EXPECT_EQ(0, test_observer_->PropertyUpdatesForDevice(wifi_device)); |
| + // Change a device property. |
| + device_test_->SetDeviceProperty( |
| + wifi_device, shill::kScanningProperty, base::FundamentalValue(true)); |
| + UpdateManagerProperties(); |
| + EXPECT_EQ(1, test_observer_->PropertyUpdatesForDevice(wifi_device)); |
| +} |
| + |
| +TEST_F(NetworkStateHandlerTest, IPConfigChanged) { |
| + test_observer_->reset_updates(); |
| + EXPECT_EQ(0, test_observer_->PropertyUpdatesForDevice( |
| + kShillManagerClientStubWifiDevice)); |
| + EXPECT_EQ(0, test_observer_->PropertyUpdatesForService( |
| + kShillManagerClientStubDefaultWifi)); |
| + |
| + // Change IPConfigs property. |
| + ShillIPConfigClient::TestInterface* ip_config_test = |
| + DBusThreadManager::Get()->GetShillIPConfigClient()->GetTestInterface(); |
| + const std::string kIPConfigPath = "test_ip_config"; |
| + base::DictionaryValue ip_config_properties; |
| + ip_config_test->AddIPConfig(kIPConfigPath, ip_config_properties); |
| + base::ListValue device_ip_configs; |
| + device_ip_configs.Append(new base::StringValue(kIPConfigPath)); |
| + device_test_->SetDeviceProperty( |
| + kShillManagerClientStubWifiDevice, shill::kIPConfigsProperty, |
| + device_ip_configs); |
| + service_test_->SetServiceProperty( |
| + kShillManagerClientStubDefaultWifi, shill::kIPConfigProperty, |
| + base::StringValue(kIPConfigPath)); |
| + UpdateManagerProperties(); |
| + EXPECT_EQ(1, test_observer_->PropertyUpdatesForDevice( |
| + kShillManagerClientStubWifiDevice)); |
| + EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( |
| + kShillManagerClientStubDefaultWifi)); |
| +} |
| + |
| } // namespace chromeos |