Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chromeos/network/network_state_handler.h" | 5 #include "chromeos/network/network_state_handler.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 24 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
| 25 #include "third_party/cros_system_api/dbus/service_constants.h" | 25 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 26 | 26 |
| 27 namespace { | 27 namespace { |
| 28 | 28 |
| 29 void ErrorCallbackFunction(const std::string& error_name, | 29 void ErrorCallbackFunction(const std::string& error_name, |
| 30 const std::string& error_message) { | 30 const std::string& error_message) { |
| 31 LOG(ERROR) << "Shill Error: " << error_name << " : " << error_message; | 31 LOG(ERROR) << "Shill Error: " << error_name << " : " << error_message; |
| 32 } | 32 } |
| 33 | 33 |
| 34 const std::string kShillManagerClientStubDefaultService = "eth1"; | 34 const std::string kShillManagerClientStubDefaultService = "/service/eth1"; |
| 35 const std::string kShillManagerClientStubDefaultWifi = "wifi1"; | 35 const std::string kShillManagerClientStubDefaultWifi = "/service/wifi1"; |
| 36 const std::string kShillManagerClientStubWifi2 = "wifi2"; | 36 const std::string kShillManagerClientStubWifi2 = "/service/wifi2"; |
| 37 const std::string kShillManagerClientStubCellular = "cellular1"; | 37 const std::string kShillManagerClientStubCellular = "/service/cellular1"; |
| 38 | 38 |
| 39 using chromeos::NetworkState; | 39 using chromeos::NetworkState; |
| 40 using chromeos::NetworkStateHandler; | 40 using chromeos::NetworkStateHandler; |
| 41 | 41 |
| 42 class TestObserver : public chromeos::NetworkStateHandlerObserver { | 42 class TestObserver : public chromeos::NetworkStateHandlerObserver { |
| 43 public: | 43 public: |
| 44 explicit TestObserver(NetworkStateHandler* handler) | 44 explicit TestObserver(NetworkStateHandler* handler) |
| 45 : handler_(handler), | 45 : handler_(handler), |
| 46 device_list_changed_count_(0), | 46 device_list_changed_count_(0), |
| 47 device_count_(0), | |
|
pneubeck (no reviews)
2014/06/04 09:30:27
nit:
You could consider setting the absolute count
stevenjb
2014/06/04 19:49:58
We don't ever currently test for 0 entries, and pr
| |
| 47 network_count_(0), | 48 network_count_(0), |
| 48 default_network_change_count_(0), | 49 default_network_change_count_(0), |
| 49 favorite_count_(0) { | 50 favorite_count_(0) { |
| 50 } | 51 } |
| 51 | 52 |
| 52 virtual ~TestObserver() { | 53 virtual ~TestObserver() { |
| 53 } | 54 } |
| 54 | 55 |
| 55 virtual void DeviceListChanged() OVERRIDE { | 56 virtual void DeviceListChanged() OVERRIDE { |
| 57 NetworkStateHandler::DeviceStateList devices; | |
| 58 handler_->GetDeviceList(&devices); | |
| 59 device_count_ = devices.size(); | |
| 56 ++device_list_changed_count_; | 60 ++device_list_changed_count_; |
| 57 } | 61 } |
| 58 | 62 |
| 59 virtual void NetworkListChanged() OVERRIDE { | 63 virtual void NetworkListChanged() OVERRIDE { |
| 60 NetworkStateHandler::NetworkStateList networks; | 64 NetworkStateHandler::NetworkStateList networks; |
| 61 handler_->GetNetworkList(&networks); | 65 handler_->GetNetworkList(&networks); |
| 62 network_count_ = networks.size(); | 66 network_count_ = networks.size(); |
| 63 if (network_count_ == 0) { | 67 if (network_count_ == 0) { |
| 64 default_network_ = ""; | 68 default_network_ = ""; |
| 65 default_network_connection_state_ = ""; | 69 default_network_connection_state_ = ""; |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 83 network_connection_state_[network->path()] = network->connection_state(); | 87 network_connection_state_[network->path()] = network->connection_state(); |
| 84 connection_state_changes_[network->path()]++; | 88 connection_state_changes_[network->path()]++; |
| 85 } | 89 } |
| 86 | 90 |
| 87 virtual void NetworkPropertiesUpdated(const NetworkState* network) OVERRIDE { | 91 virtual void NetworkPropertiesUpdated(const NetworkState* network) OVERRIDE { |
| 88 DCHECK(network); | 92 DCHECK(network); |
| 89 property_updates_[network->path()]++; | 93 property_updates_[network->path()]++; |
| 90 } | 94 } |
| 91 | 95 |
| 92 size_t device_list_changed_count() { return device_list_changed_count_; } | 96 size_t device_list_changed_count() { return device_list_changed_count_; } |
| 97 size_t device_count() { return device_count_; } | |
| 93 size_t network_count() { return network_count_; } | 98 size_t network_count() { return network_count_; } |
| 94 size_t default_network_change_count() { | 99 size_t default_network_change_count() { |
| 95 return default_network_change_count_; | 100 return default_network_change_count_; |
| 96 } | 101 } |
| 97 void reset_network_change_count() { | 102 void reset_change_counts() { |
| 98 DVLOG(1) << "ResetNetworkChangeCount"; | 103 DVLOG(1) << "=== RESET CHANGE COUNTS ==="; |
| 99 default_network_change_count_ = 0; | 104 default_network_change_count_ = 0; |
| 105 device_list_changed_count_ = 0; | |
| 100 } | 106 } |
| 101 std::string default_network() { return default_network_; } | 107 std::string default_network() { return default_network_; } |
| 102 std::string default_network_connection_state() { | 108 std::string default_network_connection_state() { |
| 103 return default_network_connection_state_; | 109 return default_network_connection_state_; |
| 104 } | 110 } |
| 105 size_t favorite_count() { return favorite_count_; } | 111 size_t favorite_count() { return favorite_count_; } |
| 106 | 112 |
| 107 int PropertyUpdatesForService(const std::string& service_path) { | 113 int PropertyUpdatesForService(const std::string& service_path) { |
| 108 return property_updates_[service_path]; | 114 return property_updates_[service_path]; |
| 109 } | 115 } |
| 110 | 116 |
| 111 int ConnectionStateChangesForService(const std::string& service_path) { | 117 int ConnectionStateChangesForService(const std::string& service_path) { |
| 112 return connection_state_changes_[service_path]; | 118 return connection_state_changes_[service_path]; |
| 113 } | 119 } |
| 114 | 120 |
| 115 std::string NetworkConnectionStateForService( | 121 std::string NetworkConnectionStateForService( |
| 116 const std::string& service_path) { | 122 const std::string& service_path) { |
| 117 return network_connection_state_[service_path]; | 123 return network_connection_state_[service_path]; |
| 118 } | 124 } |
| 119 | 125 |
| 120 private: | 126 private: |
| 121 NetworkStateHandler* handler_; | 127 NetworkStateHandler* handler_; |
| 122 size_t device_list_changed_count_; | 128 size_t device_list_changed_count_; |
| 129 size_t device_count_; | |
| 123 size_t network_count_; | 130 size_t network_count_; |
| 124 size_t default_network_change_count_; | 131 size_t default_network_change_count_; |
| 125 std::string default_network_; | 132 std::string default_network_; |
| 126 std::string default_network_connection_state_; | 133 std::string default_network_connection_state_; |
| 127 size_t favorite_count_; | 134 size_t favorite_count_; |
| 128 std::map<std::string, int> property_updates_; | 135 std::map<std::string, int> property_updates_; |
| 129 std::map<std::string, int> connection_state_changes_; | 136 std::map<std::string, int> connection_state_changes_; |
| 130 std::map<std::string, std::string> network_connection_state_; | 137 std::map<std::string, std::string> network_connection_state_; |
| 131 | 138 |
| 132 DISALLOW_COPY_AND_ASSIGN(TestObserver); | 139 DISALLOW_COPY_AND_ASSIGN(TestObserver); |
| 133 }; | 140 }; |
| 134 | 141 |
| 135 } // namespace | 142 } // namespace |
| 136 | 143 |
| 137 namespace chromeos { | 144 namespace chromeos { |
| 138 | 145 |
| 139 class NetworkStateHandlerTest : public testing::Test { | 146 class NetworkStateHandlerTest : public testing::Test { |
| 140 public: | 147 public: |
| 141 NetworkStateHandlerTest() | 148 NetworkStateHandlerTest() |
| 142 : device_test_(NULL), | 149 : device_test_(NULL), |
| 143 manager_test_(NULL), | 150 manager_test_(NULL), |
| 144 profile_test_(NULL), | 151 profile_test_(NULL), |
| 145 service_test_(NULL) {} | 152 service_test_(NULL) {} |
| 146 virtual ~NetworkStateHandlerTest() {} | 153 virtual ~NetworkStateHandlerTest() {} |
| 147 | 154 |
| 148 virtual void SetUp() OVERRIDE { | 155 virtual void SetUp() OVERRIDE { |
| 149 // Initialize DBusThreadManager with a stub implementation. | 156 // Initialize DBusThreadManager with a stub implementation. |
| 150 DBusThreadManager::InitializeWithStub(); | 157 DBusThreadManager::InitializeWithStub(); |
| 151 SetupNetworkStateHandler(); | 158 SetupDefaultShillState(); |
| 159 network_state_handler_.reset(new NetworkStateHandler); | |
| 160 test_observer_.reset(new TestObserver(network_state_handler_.get())); | |
| 161 network_state_handler_->AddObserver(test_observer_.get(), FROM_HERE); | |
| 162 network_state_handler_->InitShillPropertyHandler(); | |
| 152 message_loop_.RunUntilIdle(); | 163 message_loop_.RunUntilIdle(); |
| 153 } | 164 } |
| 154 | 165 |
| 155 virtual void TearDown() OVERRIDE { | 166 virtual void TearDown() OVERRIDE { |
| 156 network_state_handler_->RemoveObserver(test_observer_.get(), FROM_HERE); | 167 network_state_handler_->RemoveObserver(test_observer_.get(), FROM_HERE); |
| 157 test_observer_.reset(); | 168 test_observer_.reset(); |
| 158 network_state_handler_.reset(); | 169 network_state_handler_.reset(); |
| 159 DBusThreadManager::Shutdown(); | 170 DBusThreadManager::Shutdown(); |
| 160 } | 171 } |
| 161 | 172 |
| 162 void SetupNetworkStateHandler() { | |
| 163 SetupDefaultShillState(); | |
| 164 network_state_handler_.reset(new NetworkStateHandler); | |
| 165 test_observer_.reset(new TestObserver(network_state_handler_.get())); | |
| 166 network_state_handler_->AddObserver(test_observer_.get(), FROM_HERE); | |
| 167 network_state_handler_->InitShillPropertyHandler(); | |
| 168 } | |
| 169 | |
| 170 protected: | 173 protected: |
| 171 void AddService(const std::string& service_path, | 174 void AddService(const std::string& service_path, |
| 172 const std::string& name, | 175 const std::string& name, |
| 173 const std::string& type, | 176 const std::string& type, |
| 174 const std::string& state) { | 177 const std::string& state) { |
| 175 service_test_->AddService(service_path, name, type, state, | 178 service_test_->AddService(service_path, name, type, state, |
| 176 true /* add_to_visible */, | 179 true /* add_to_visible */, |
| 177 true /* add_to_watchlist */); | 180 true /* add_to_watchlist */); |
| 178 } | 181 } |
| 179 | 182 |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 196 profile_test_ = | 199 profile_test_ = |
| 197 DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface(); | 200 DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface(); |
| 198 ASSERT_TRUE(profile_test_); | 201 ASSERT_TRUE(profile_test_); |
| 199 profile_test_->ClearProfiles(); | 202 profile_test_->ClearProfiles(); |
| 200 | 203 |
| 201 service_test_ = | 204 service_test_ = |
| 202 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); | 205 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); |
| 203 ASSERT_TRUE(service_test_); | 206 ASSERT_TRUE(service_test_); |
| 204 service_test_->ClearServices(); | 207 service_test_->ClearServices(); |
| 205 AddService(kShillManagerClientStubDefaultService, | 208 AddService(kShillManagerClientStubDefaultService, |
| 206 kShillManagerClientStubDefaultService, | 209 "eth1", |
| 207 shill::kTypeEthernet, | 210 shill::kTypeEthernet, |
| 208 shill::kStateOnline); | 211 shill::kStateOnline); |
| 209 AddService(kShillManagerClientStubDefaultWifi, | 212 AddService(kShillManagerClientStubDefaultWifi, |
| 210 kShillManagerClientStubDefaultWifi, | 213 "wifi1", |
| 211 shill::kTypeWifi, | 214 shill::kTypeWifi, |
| 212 shill::kStateOnline); | 215 shill::kStateOnline); |
| 213 AddService(kShillManagerClientStubWifi2, | 216 AddService(kShillManagerClientStubWifi2, |
| 214 kShillManagerClientStubWifi2, | 217 "wifi2", |
| 215 shill::kTypeWifi, | 218 shill::kTypeWifi, |
| 216 shill::kStateIdle); | 219 shill::kStateIdle); |
| 217 AddService(kShillManagerClientStubCellular, | 220 AddService(kShillManagerClientStubCellular, |
| 218 kShillManagerClientStubCellular, | 221 "cellular1", |
| 219 shill::kTypeCellular, | 222 shill::kTypeCellular, |
| 220 shill::kStateIdle); | 223 shill::kStateIdle); |
| 221 } | 224 } |
| 222 | 225 |
| 223 void UpdateManagerProperties() { | 226 void UpdateManagerProperties() { |
| 224 message_loop_.RunUntilIdle(); | 227 message_loop_.RunUntilIdle(); |
| 225 network_state_handler_->UpdateManagerProperties(); | 228 network_state_handler_->UpdateManagerProperties(); |
| 226 message_loop_.RunUntilIdle(); | 229 message_loop_.RunUntilIdle(); |
| 227 } | 230 } |
| 228 | 231 |
| 229 base::MessageLoopForUI message_loop_; | 232 base::MessageLoopForUI message_loop_; |
| 230 scoped_ptr<NetworkStateHandler> network_state_handler_; | 233 scoped_ptr<NetworkStateHandler> network_state_handler_; |
| 231 scoped_ptr<TestObserver> test_observer_; | 234 scoped_ptr<TestObserver> test_observer_; |
| 232 ShillDeviceClient::TestInterface* device_test_; | 235 ShillDeviceClient::TestInterface* device_test_; |
| 233 ShillManagerClient::TestInterface* manager_test_; | 236 ShillManagerClient::TestInterface* manager_test_; |
| 234 ShillProfileClient::TestInterface* profile_test_; | 237 ShillProfileClient::TestInterface* profile_test_; |
| 235 ShillServiceClient::TestInterface* service_test_; | 238 ShillServiceClient::TestInterface* service_test_; |
| 236 | 239 |
| 237 private: | 240 private: |
| 238 DISALLOW_COPY_AND_ASSIGN(NetworkStateHandlerTest); | 241 DISALLOW_COPY_AND_ASSIGN(NetworkStateHandlerTest); |
| 239 }; | 242 }; |
| 240 | 243 |
| 241 TEST_F(NetworkStateHandlerTest, NetworkStateHandlerStub) { | 244 TEST_F(NetworkStateHandlerTest, NetworkStateHandlerStub) { |
| 242 // Ensure that the network list is the expected size. | 245 // Ensure that the device and network list are the expected size. |
| 246 const size_t kNumShillManagerClientStubImplDevices = 2; | |
| 247 EXPECT_EQ(kNumShillManagerClientStubImplDevices, | |
| 248 test_observer_->device_count()); | |
| 243 const size_t kNumShillManagerClientStubImplServices = 4; | 249 const size_t kNumShillManagerClientStubImplServices = 4; |
| 244 EXPECT_EQ(kNumShillManagerClientStubImplServices, | 250 EXPECT_EQ(kNumShillManagerClientStubImplServices, |
| 245 test_observer_->network_count()); | 251 test_observer_->network_count()); |
| 246 // Ensure that the first stub network is the default network. | 252 // Ensure that the first stub network is the default network. |
| 247 EXPECT_EQ(kShillManagerClientStubDefaultService, | 253 EXPECT_EQ(kShillManagerClientStubDefaultService, |
| 248 test_observer_->default_network()); | 254 test_observer_->default_network()); |
| 255 ASSERT_TRUE(network_state_handler_->DefaultNetwork()); | |
| 249 EXPECT_EQ(kShillManagerClientStubDefaultService, | 256 EXPECT_EQ(kShillManagerClientStubDefaultService, |
| 250 network_state_handler_->ConnectedNetworkByType( | 257 network_state_handler_->DefaultNetwork()->path()); |
| 251 NetworkTypePattern::Default())->path()); | |
| 252 EXPECT_EQ(kShillManagerClientStubDefaultService, | 258 EXPECT_EQ(kShillManagerClientStubDefaultService, |
| 253 network_state_handler_->ConnectedNetworkByType( | 259 network_state_handler_->ConnectedNetworkByType( |
| 254 NetworkTypePattern::Ethernet())->path()); | 260 NetworkTypePattern::Ethernet())->path()); |
| 255 EXPECT_EQ(kShillManagerClientStubDefaultWifi, | 261 EXPECT_EQ(kShillManagerClientStubDefaultWifi, |
| 256 network_state_handler_->ConnectedNetworkByType( | 262 network_state_handler_->ConnectedNetworkByType( |
| 257 NetworkTypePattern::WiFi())->path()); | 263 NetworkTypePattern::WiFi())->path()); |
| 258 EXPECT_EQ(kShillManagerClientStubCellular, | 264 EXPECT_EQ(kShillManagerClientStubCellular, |
| 259 network_state_handler_->FirstNetworkByType( | 265 network_state_handler_->FirstNetworkByType( |
| 260 NetworkTypePattern::Mobile())->path()); | 266 NetworkTypePattern::Mobile())->path()); |
| 261 EXPECT_EQ( | 267 EXPECT_EQ( |
| 262 kShillManagerClientStubCellular, | 268 kShillManagerClientStubCellular, |
| 263 network_state_handler_->FirstNetworkByType(NetworkTypePattern::Cellular()) | 269 network_state_handler_->FirstNetworkByType(NetworkTypePattern::Cellular()) |
| 264 ->path()); | 270 ->path()); |
| 265 EXPECT_EQ(shill::kStateOnline, | 271 EXPECT_EQ(shill::kStateOnline, |
| 266 test_observer_->default_network_connection_state()); | 272 test_observer_->default_network_connection_state()); |
| 267 } | 273 } |
| 268 | 274 |
| 269 TEST_F(NetworkStateHandlerTest, TechnologyChanged) { | 275 TEST_F(NetworkStateHandlerTest, TechnologyChanged) { |
| 270 // There may be several manager changes during initialization. | 276 // Disable a technology. Will immediately set the state to AVAILABLE and |
| 271 size_t initial_changed_count = test_observer_->device_list_changed_count(); | 277 // notify observers. |
| 272 // Disable a technology. | 278 test_observer_->reset_change_counts(); |
|
pneubeck (no reviews)
2014/06/04 09:30:27
maybe move this to the end of SetUp() in the fixtu
stevenjb
2014/06/04 19:49:58
Done.
| |
| 273 network_state_handler_->SetTechnologyEnabled( | 279 network_state_handler_->SetTechnologyEnabled( |
| 274 NetworkTypePattern::Wimax(), false, network_handler::ErrorCallback()); | 280 NetworkTypePattern::WiFi(), false, network_handler::ErrorCallback()); |
| 275 EXPECT_NE( | 281 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
| 276 NetworkStateHandler::TECHNOLOGY_ENABLED, | 282 EXPECT_EQ( |
| 277 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); | 283 NetworkStateHandler::TECHNOLOGY_AVAILABLE, |
| 278 EXPECT_EQ(initial_changed_count + 1, | 284 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
| 279 test_observer_->device_list_changed_count()); | 285 |
| 280 // Enable a technology. | 286 // Run the message loop. An additional notification will be received when |
| 287 // Shill updates the enabled technologies. The state should remain AVAILABLE. | |
| 288 test_observer_->reset_change_counts(); | |
| 289 message_loop_.RunUntilIdle(); | |
| 290 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); | |
| 291 EXPECT_EQ( | |
| 292 NetworkStateHandler::TECHNOLOGY_AVAILABLE, | |
| 293 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); | |
| 294 | |
| 295 // Enable a technology. Will immediately set the state to ENABLING and | |
| 296 // notify observers. | |
| 297 test_observer_->reset_change_counts(); | |
| 281 network_state_handler_->SetTechnologyEnabled( | 298 network_state_handler_->SetTechnologyEnabled( |
| 282 NetworkTypePattern::Wimax(), true, network_handler::ErrorCallback()); | 299 NetworkTypePattern::WiFi(), true, network_handler::ErrorCallback()); |
| 283 // The technology state should immediately change to ENABLING and we should | 300 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
| 284 // receive a manager changed callback. | |
| 285 EXPECT_EQ(initial_changed_count + 2, | |
| 286 test_observer_->device_list_changed_count()); | |
| 287 EXPECT_EQ( | 301 EXPECT_EQ( |
| 288 NetworkStateHandler::TECHNOLOGY_ENABLING, | 302 NetworkStateHandler::TECHNOLOGY_ENABLING, |
| 289 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); | 303 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
| 304 | |
| 305 // Run the message loop. State should change to ENABLED. | |
| 306 test_observer_->reset_change_counts(); | |
| 290 message_loop_.RunUntilIdle(); | 307 message_loop_.RunUntilIdle(); |
| 291 // Ensure we receive 2 manager changed callbacks when the technology becomes | 308 EXPECT_EQ(1u, test_observer_->device_list_changed_count()); |
| 292 // avalable and enabled. | |
| 293 EXPECT_EQ(initial_changed_count + 4, | |
| 294 test_observer_->device_list_changed_count()); | |
| 295 EXPECT_EQ( | 309 EXPECT_EQ( |
| 296 NetworkStateHandler::TECHNOLOGY_ENABLED, | 310 NetworkStateHandler::TECHNOLOGY_ENABLED, |
| 297 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); | 311 network_state_handler_->GetTechnologyState(NetworkTypePattern::WiFi())); |
| 298 } | 312 } |
| 299 | 313 |
| 300 TEST_F(NetworkStateHandlerTest, TechnologyState) { | 314 TEST_F(NetworkStateHandlerTest, TechnologyState) { |
| 301 manager_test_->RemoveTechnology(shill::kTypeWimax); | 315 manager_test_->RemoveTechnology(shill::kTypeWimax); |
| 302 message_loop_.RunUntilIdle(); | 316 message_loop_.RunUntilIdle(); |
| 303 EXPECT_EQ( | 317 EXPECT_EQ( |
| 304 NetworkStateHandler::TECHNOLOGY_UNAVAILABLE, | 318 NetworkStateHandler::TECHNOLOGY_UNAVAILABLE, |
| 305 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); | 319 network_state_handler_->GetTechnologyState(NetworkTypePattern::Wimax())); |
| 306 | 320 |
| 307 manager_test_->AddTechnology(shill::kTypeWimax, false); | 321 manager_test_->AddTechnology(shill::kTypeWimax, false); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 407 connection_state_idle_value); | 421 connection_state_idle_value); |
| 408 message_loop_.RunUntilIdle(); | 422 message_loop_.RunUntilIdle(); |
| 409 EXPECT_EQ(2, test_observer_->ConnectionStateChangesForService(eth1)); | 423 EXPECT_EQ(2, test_observer_->ConnectionStateChangesForService(eth1)); |
| 410 } | 424 } |
| 411 | 425 |
| 412 TEST_F(NetworkStateHandlerTest, DefaultServiceDisconnected) { | 426 TEST_F(NetworkStateHandlerTest, DefaultServiceDisconnected) { |
| 413 const std::string eth1 = kShillManagerClientStubDefaultService; | 427 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 414 const std::string wifi1 = kShillManagerClientStubDefaultWifi; | 428 const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
| 415 | 429 |
| 416 // Disconnect ethernet. | 430 // Disconnect ethernet. |
| 417 test_observer_->reset_network_change_count(); | 431 test_observer_->reset_change_counts(); |
| 418 base::StringValue connection_state_idle_value(shill::kStateIdle); | 432 base::StringValue connection_state_idle_value(shill::kStateIdle); |
| 419 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 433 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 420 connection_state_idle_value); | 434 connection_state_idle_value); |
| 421 message_loop_.RunUntilIdle(); | 435 message_loop_.RunUntilIdle(); |
| 422 // Expect two changes: first when eth1 becomes disconnected, second when | 436 // Expect two changes: first when eth1 becomes disconnected, second when |
| 423 // wifi1 becomes the default. | 437 // wifi1 becomes the default. |
| 424 EXPECT_EQ(2u, test_observer_->default_network_change_count()); | 438 EXPECT_EQ(2u, test_observer_->default_network_change_count()); |
| 425 EXPECT_EQ(wifi1, test_observer_->default_network()); | 439 EXPECT_EQ(wifi1, test_observer_->default_network()); |
| 426 | 440 |
| 427 // Disconnect wifi. | 441 // Disconnect wifi. |
| 428 test_observer_->reset_network_change_count(); | 442 test_observer_->reset_change_counts(); |
| 429 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, | 443 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
| 430 connection_state_idle_value); | 444 connection_state_idle_value); |
| 431 message_loop_.RunUntilIdle(); | 445 message_loop_.RunUntilIdle(); |
| 432 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 446 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 433 EXPECT_EQ("", test_observer_->default_network()); | 447 EXPECT_EQ("", test_observer_->default_network()); |
| 434 } | 448 } |
| 435 | 449 |
| 436 TEST_F(NetworkStateHandlerTest, DefaultServiceConnected) { | 450 TEST_F(NetworkStateHandlerTest, DefaultServiceConnected) { |
| 437 const std::string eth1 = kShillManagerClientStubDefaultService; | 451 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 438 const std::string wifi1 = kShillManagerClientStubDefaultWifi; | 452 const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
| 439 | 453 |
| 440 // Disconnect ethernet and wifi. | 454 // Disconnect ethernet and wifi. |
| 441 base::StringValue connection_state_idle_value(shill::kStateIdle); | 455 base::StringValue connection_state_idle_value(shill::kStateIdle); |
| 442 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 456 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 443 connection_state_idle_value); | 457 connection_state_idle_value); |
| 444 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, | 458 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
| 445 connection_state_idle_value); | 459 connection_state_idle_value); |
| 446 message_loop_.RunUntilIdle(); | 460 message_loop_.RunUntilIdle(); |
| 447 EXPECT_EQ(std::string(), test_observer_->default_network()); | 461 EXPECT_EQ(std::string(), test_observer_->default_network()); |
| 448 | 462 |
| 449 // Connect ethernet, should become the default network. | 463 // Connect ethernet, should become the default network. |
| 450 test_observer_->reset_network_change_count(); | 464 test_observer_->reset_change_counts(); |
| 451 base::StringValue connection_state_ready_value(shill::kStateReady); | 465 base::StringValue connection_state_ready_value(shill::kStateReady); |
| 452 service_test_->SetServiceProperty(eth1, shill::kStateProperty, | 466 service_test_->SetServiceProperty(eth1, shill::kStateProperty, |
| 453 connection_state_ready_value); | 467 connection_state_ready_value); |
| 454 message_loop_.RunUntilIdle(); | 468 message_loop_.RunUntilIdle(); |
| 455 EXPECT_EQ(eth1, test_observer_->default_network()); | 469 EXPECT_EQ(eth1, test_observer_->default_network()); |
| 456 EXPECT_EQ(shill::kStateReady, | 470 EXPECT_EQ(shill::kStateReady, |
| 457 test_observer_->default_network_connection_state()); | 471 test_observer_->default_network_connection_state()); |
| 458 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 472 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 459 } | 473 } |
| 460 | 474 |
| 461 TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { | 475 TEST_F(NetworkStateHandlerTest, DefaultServiceChanged) { |
| 462 const std::string eth1 = kShillManagerClientStubDefaultService; | 476 const std::string eth1 = kShillManagerClientStubDefaultService; |
| 463 // The default service should be eth1. | 477 // The default service should be eth1. |
| 464 EXPECT_EQ(eth1, test_observer_->default_network()); | 478 EXPECT_EQ(eth1, test_observer_->default_network()); |
| 465 | 479 |
| 466 // Change the default network by changing Manager.DefaultService. | 480 // Change the default network by changing Manager.DefaultService. |
| 467 test_observer_->reset_network_change_count(); | 481 test_observer_->reset_change_counts(); |
| 468 const std::string wifi1 = kShillManagerClientStubDefaultWifi; | 482 const std::string wifi1 = kShillManagerClientStubDefaultWifi; |
| 469 base::StringValue wifi1_value(wifi1); | 483 base::StringValue wifi1_value(wifi1); |
| 470 manager_test_->SetManagerProperty( | 484 manager_test_->SetManagerProperty( |
| 471 shill::kDefaultServiceProperty, wifi1_value); | 485 shill::kDefaultServiceProperty, wifi1_value); |
| 472 message_loop_.RunUntilIdle(); | 486 message_loop_.RunUntilIdle(); |
| 473 EXPECT_EQ(wifi1, test_observer_->default_network()); | 487 EXPECT_EQ(wifi1, test_observer_->default_network()); |
| 474 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 488 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 475 | 489 |
| 476 // Change the state of the default network. | 490 // Change the state of the default network. |
| 477 test_observer_->reset_network_change_count(); | 491 test_observer_->reset_change_counts(); |
| 478 base::StringValue connection_state_ready_value(shill::kStateReady); | 492 base::StringValue connection_state_ready_value(shill::kStateReady); |
| 479 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, | 493 service_test_->SetServiceProperty(wifi1, shill::kStateProperty, |
| 480 connection_state_ready_value); | 494 connection_state_ready_value); |
| 481 message_loop_.RunUntilIdle(); | 495 message_loop_.RunUntilIdle(); |
| 482 EXPECT_EQ(shill::kStateReady, | 496 EXPECT_EQ(shill::kStateReady, |
| 483 test_observer_->default_network_connection_state()); | 497 test_observer_->default_network_connection_state()); |
| 484 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 498 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 485 | 499 |
| 486 // Updating a property on the default network should trigger | 500 // Updating a property on the default network should trigger |
| 487 // a default network change. | 501 // a default network change. |
| 488 test_observer_->reset_network_change_count(); | 502 test_observer_->reset_change_counts(); |
| 489 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( | 503 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( |
| 490 dbus::ObjectPath(wifi1), | 504 dbus::ObjectPath(wifi1), |
| 491 shill::kSecurityProperty, base::StringValue("TestSecurity"), | 505 shill::kSecurityProperty, base::StringValue("TestSecurity"), |
| 492 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); | 506 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); |
| 493 message_loop_.RunUntilIdle(); | 507 message_loop_.RunUntilIdle(); |
| 494 EXPECT_EQ(1u, test_observer_->default_network_change_count()); | 508 EXPECT_EQ(1u, test_observer_->default_network_change_count()); |
| 495 | 509 |
| 496 // No default network updates for signal strength changes. | 510 // No default network updates for signal strength changes. |
| 497 test_observer_->reset_network_change_count(); | 511 test_observer_->reset_change_counts(); |
| 498 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( | 512 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( |
| 499 dbus::ObjectPath(wifi1), | 513 dbus::ObjectPath(wifi1), |
| 500 shill::kSignalStrengthProperty, base::FundamentalValue(32), | 514 shill::kSignalStrengthProperty, base::FundamentalValue(32), |
| 501 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); | 515 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); |
| 502 message_loop_.RunUntilIdle(); | 516 message_loop_.RunUntilIdle(); |
| 503 EXPECT_EQ(0u, test_observer_->default_network_change_count()); | 517 EXPECT_EQ(0u, test_observer_->default_network_change_count()); |
| 504 } | 518 } |
| 505 | 519 |
| 506 TEST_F(NetworkStateHandlerTest, RequestUpdate) { | 520 TEST_F(NetworkStateHandlerTest, RequestUpdate) { |
| 507 // Request an update for kShillManagerClientStubDefaultWifi. | 521 // Request an update for kShillManagerClientStubDefaultWifi. |
| 508 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( | 522 EXPECT_EQ(1, test_observer_->PropertyUpdatesForService( |
| 509 kShillManagerClientStubDefaultWifi)); | 523 kShillManagerClientStubDefaultWifi)); |
| 510 network_state_handler_->RequestUpdateForNetwork( | 524 network_state_handler_->RequestUpdateForNetwork( |
| 511 kShillManagerClientStubDefaultWifi); | 525 kShillManagerClientStubDefaultWifi); |
| 512 message_loop_.RunUntilIdle(); | 526 message_loop_.RunUntilIdle(); |
| 513 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService( | 527 EXPECT_EQ(2, test_observer_->PropertyUpdatesForService( |
| 514 kShillManagerClientStubDefaultWifi)); | 528 kShillManagerClientStubDefaultWifi)); |
| 515 } | 529 } |
| 516 | 530 |
| 517 TEST_F(NetworkStateHandlerTest, NetworkGuidInProfile) { | 531 TEST_F(NetworkStateHandlerTest, NetworkGuidInProfile) { |
| 518 const std::string profile = "/profile/profile1"; | 532 const std::string profile = "/profile/profile1"; |
| 519 const std::string wifi_path = "wifi_with_guid"; | 533 const std::string wifi_path = "/service/wifi_with_guid"; |
| 520 const std::string wifi_guid = "WIFI_GUID"; | 534 const std::string wifi_guid = "WIFI_GUID"; |
| 521 const bool is_service_configured = true; | 535 const bool is_service_configured = true; |
| 522 | 536 |
| 523 // Add a network to the default Profile with a specified GUID. | 537 // Add a network to the default Profile with a specified GUID. |
| 524 service_test_->AddServiceWithIPConfig( | 538 service_test_->AddServiceWithIPConfig( |
| 525 wifi_path, | 539 wifi_path, |
| 526 wifi_guid, | 540 wifi_guid, |
| 527 wifi_path /* name */, | 541 wifi_path /* name */, |
| 528 shill::kTypeWifi, | 542 shill::kTypeWifi, |
| 529 shill::kStateOnline, | 543 shill::kStateOnline, |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 561 EXPECT_EQ(wifi_guid, network->guid()); | 575 EXPECT_EQ(wifi_guid, network->guid()); |
| 562 | 576 |
| 563 // Also verify FavoriteState (mostly to test the stub behavior). | 577 // Also verify FavoriteState (mostly to test the stub behavior). |
| 564 favorite = network_state_handler_->GetFavoriteStateFromServicePath( | 578 favorite = network_state_handler_->GetFavoriteStateFromServicePath( |
| 565 wifi_path, is_service_configured); | 579 wifi_path, is_service_configured); |
| 566 ASSERT_TRUE(favorite); | 580 ASSERT_TRUE(favorite); |
| 567 EXPECT_EQ(wifi_guid, favorite->guid()); | 581 EXPECT_EQ(wifi_guid, favorite->guid()); |
| 568 } | 582 } |
| 569 | 583 |
| 570 TEST_F(NetworkStateHandlerTest, NetworkGuidNotInProfile) { | 584 TEST_F(NetworkStateHandlerTest, NetworkGuidNotInProfile) { |
| 571 const std::string wifi_path = "wifi_with_guid"; | 585 const std::string wifi_path = "/service/wifi_with_guid"; |
| 572 const bool is_service_configured = false; | 586 const bool is_service_configured = false; |
| 573 | 587 |
| 574 // Add a network without adding it to a profile. | 588 // Add a network without adding it to a profile. |
| 575 AddService(wifi_path, wifi_path, shill::kTypeWifi, shill::kStateOnline); | 589 AddService(wifi_path, wifi_path, shill::kTypeWifi, shill::kStateOnline); |
| 576 UpdateManagerProperties(); | 590 UpdateManagerProperties(); |
| 577 | 591 |
| 578 // Verify that a FavoriteState exists with an assigned GUID. | 592 // Verify that a FavoriteState exists with an assigned GUID. |
| 579 const FavoriteState* favorite = | 593 const FavoriteState* favorite = |
| 580 network_state_handler_->GetFavoriteStateFromServicePath( | 594 network_state_handler_->GetFavoriteStateFromServicePath( |
| 581 wifi_path, is_service_configured); | 595 wifi_path, is_service_configured); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 603 EXPECT_EQ(wifi_guid, network->guid()); | 617 EXPECT_EQ(wifi_guid, network->guid()); |
| 604 | 618 |
| 605 // Also verify FavoriteState (mostly to test the stub behavior). | 619 // Also verify FavoriteState (mostly to test the stub behavior). |
| 606 favorite = network_state_handler_->GetFavoriteStateFromServicePath( | 620 favorite = network_state_handler_->GetFavoriteStateFromServicePath( |
| 607 wifi_path, is_service_configured); | 621 wifi_path, is_service_configured); |
| 608 ASSERT_TRUE(favorite); | 622 ASSERT_TRUE(favorite); |
| 609 EXPECT_EQ(wifi_guid, favorite->guid()); | 623 EXPECT_EQ(wifi_guid, favorite->guid()); |
| 610 } | 624 } |
| 611 | 625 |
| 612 } // namespace chromeos | 626 } // namespace chromeos |
| OLD | NEW |