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 |