OLD | NEW |
---|---|
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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/components/tether/host_scan_cache.h" | 5 #include "chromeos/components/tether/host_scan_cache.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <unordered_map> | 8 #include <unordered_map> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
50 const int kTetherBatteryPercentage0 = 20; | 50 const int kTetherBatteryPercentage0 = 20; |
51 const int kTetherBatteryPercentage1 = 40; | 51 const int kTetherBatteryPercentage1 = 40; |
52 const int kTetherBatteryPercentage2 = 60; | 52 const int kTetherBatteryPercentage2 = 60; |
53 const int kTetherBatteryPercentage3 = 80; | 53 const int kTetherBatteryPercentage3 = 80; |
54 | 54 |
55 const int kTetherSignalStrength0 = 25; | 55 const int kTetherSignalStrength0 = 25; |
56 const int kTetherSignalStrength1 = 50; | 56 const int kTetherSignalStrength1 = 50; |
57 const int kTetherSignalStrength2 = 75; | 57 const int kTetherSignalStrength2 = 75; |
58 const int kTetherSignalStrength3 = 100; | 58 const int kTetherSignalStrength3 = 100; |
59 | 59 |
60 const bool kTetherSetupRequired0 = true; | |
61 const bool kTetherSetupRequired1 = false; | |
62 const bool kTetherSetupRequired2 = true; | |
63 const bool kTetherSetupRequired3 = false; | |
64 | |
60 // MockTimer which invokes a callback in its destructor. | 65 // MockTimer which invokes a callback in its destructor. |
61 class ExtendedMockTimer : public base::MockTimer { | 66 class ExtendedMockTimer : public base::MockTimer { |
62 public: | 67 public: |
63 explicit ExtendedMockTimer(const base::Closure& destructor_callback) | 68 explicit ExtendedMockTimer(const base::Closure& destructor_callback) |
64 : base::MockTimer(true /* retain_user_task */, false /* is_repeating */), | 69 : base::MockTimer(true /* retain_user_task */, false /* is_repeating */), |
65 destructor_callback_(destructor_callback) {} | 70 destructor_callback_(destructor_callback) {} |
66 | 71 |
67 ~ExtendedMockTimer() override { destructor_callback_.Run(); } | 72 ~ExtendedMockTimer() override { destructor_callback_.Run(); } |
68 | 73 |
69 private: | 74 private: |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
197 // at the top of this test file. | 202 // at the top of this test file. |
198 void SetCacheScanResultForDeviceIndex(int32_t index) { | 203 void SetCacheScanResultForDeviceIndex(int32_t index) { |
199 // There are 4 sets of test constants. | 204 // There are 4 sets of test constants. |
200 ASSERT_TRUE(index >= 0 && index <= 3); | 205 ASSERT_TRUE(index >= 0 && index <= 3); |
201 | 206 |
202 std::string tether_network_guid; | 207 std::string tether_network_guid; |
203 std::string device_name; | 208 std::string device_name; |
204 std::string carrier; | 209 std::string carrier; |
205 int battery_percentage; | 210 int battery_percentage; |
206 int signal_strength; | 211 int signal_strength; |
212 bool setup_required; | |
207 | 213 |
208 switch (index) { | 214 switch (index) { |
209 case 0: | 215 case 0: |
210 tether_network_guid = kTetherGuid0; | 216 tether_network_guid = kTetherGuid0; |
211 device_name = kTetherDeviceName0; | 217 device_name = kTetherDeviceName0; |
212 carrier = kTetherCarrier0; | 218 carrier = kTetherCarrier0; |
213 battery_percentage = kTetherBatteryPercentage0; | 219 battery_percentage = kTetherBatteryPercentage0; |
214 signal_strength = kTetherSignalStrength0; | 220 signal_strength = kTetherSignalStrength0; |
221 setup_required = kTetherSetupRequired0; | |
215 break; | 222 break; |
216 case 1: | 223 case 1: |
217 tether_network_guid = kTetherGuid1; | 224 tether_network_guid = kTetherGuid1; |
218 device_name = kTetherDeviceName1; | 225 device_name = kTetherDeviceName1; |
219 carrier = kTetherCarrier1; | 226 carrier = kTetherCarrier1; |
220 battery_percentage = kTetherBatteryPercentage1; | 227 battery_percentage = kTetherBatteryPercentage1; |
221 signal_strength = kTetherSignalStrength1; | 228 signal_strength = kTetherSignalStrength1; |
229 setup_required = kTetherSetupRequired1; | |
222 break; | 230 break; |
223 case 2: | 231 case 2: |
224 tether_network_guid = kTetherGuid2; | 232 tether_network_guid = kTetherGuid2; |
225 device_name = kTetherDeviceName2; | 233 device_name = kTetherDeviceName2; |
226 carrier = kTetherCarrier2; | 234 carrier = kTetherCarrier2; |
227 battery_percentage = kTetherBatteryPercentage2; | 235 battery_percentage = kTetherBatteryPercentage2; |
228 signal_strength = kTetherSignalStrength2; | 236 signal_strength = kTetherSignalStrength2; |
237 setup_required = kTetherSetupRequired2; | |
229 break; | 238 break; |
230 case 3: | 239 case 3: |
231 tether_network_guid = kTetherGuid3; | 240 tether_network_guid = kTetherGuid3; |
232 device_name = kTetherDeviceName3; | 241 device_name = kTetherDeviceName3; |
233 carrier = kTetherCarrier3; | 242 carrier = kTetherCarrier3; |
234 battery_percentage = kTetherBatteryPercentage3; | 243 battery_percentage = kTetherBatteryPercentage3; |
235 signal_strength = kTetherSignalStrength3; | 244 signal_strength = kTetherSignalStrength3; |
245 setup_required = kTetherSetupRequired3; | |
236 break; | 246 break; |
237 default: | 247 default: |
238 NOTREACHED(); | 248 NOTREACHED(); |
239 // Set values for |battery_percentage| and |signal_strength| here to | 249 // Set values for |battery_percentage|, |signal_strength| and |
240 // prevent a compiler warning which says that they may be unset at this | 250 // setup_required here to prevent a compiler warning which says that |
Kyle Horimoto
2017/05/31 23:01:19
|setup_required|
Ryan Hansberry
2017/06/01 01:07:51
Done.
| |
241 // point. | 251 // they may be unset at this point. |
242 battery_percentage = 0; | 252 battery_percentage = 0; |
243 signal_strength = 0; | 253 signal_strength = 0; |
254 setup_required = false; | |
244 break; | 255 break; |
245 } | 256 } |
246 | 257 |
247 SetHostScanResult(tether_network_guid, device_name, carrier, | 258 SetHostScanResult(tether_network_guid, device_name, carrier, |
248 battery_percentage, signal_strength); | 259 battery_percentage, signal_strength, setup_required); |
249 } | 260 } |
250 | 261 |
251 void SetHostScanResult(const std::string& tether_network_guid, | 262 void SetHostScanResult(const std::string& tether_network_guid, |
252 const std::string& device_name, | 263 const std::string& device_name, |
253 const std::string& carrier, | 264 const std::string& carrier, |
254 int battery_percentage, | 265 int battery_percentage, |
255 int signal_strength) { | 266 int signal_strength, |
267 bool setup_required) { | |
256 test_timer_factory_->set_tether_network_guid_for_next_timer( | 268 test_timer_factory_->set_tether_network_guid_for_next_timer( |
257 tether_network_guid); | 269 tether_network_guid); |
258 host_scan_cache_->SetHostScanResult(tether_network_guid, device_name, | 270 host_scan_cache_->SetHostScanResult(tether_network_guid, device_name, |
259 carrier, battery_percentage, | 271 carrier, battery_percentage, |
260 signal_strength); | 272 signal_strength, setup_required); |
261 expected_cache_->SetHostScanResult(tether_network_guid, device_name, | 273 expected_cache_->SetHostScanResult(tether_network_guid, device_name, |
262 carrier, battery_percentage, | 274 carrier, battery_percentage, |
263 signal_strength); | 275 signal_strength, setup_required); |
264 } | 276 } |
265 | 277 |
266 void RemoveHostScanResult(const std::string& tether_network_guid) { | 278 void RemoveHostScanResult(const std::string& tether_network_guid) { |
267 host_scan_cache_->RemoveHostScanResult(tether_network_guid); | 279 host_scan_cache_->RemoveHostScanResult(tether_network_guid); |
268 expected_cache_->RemoveHostScanResult(tether_network_guid); | 280 expected_cache_->RemoveHostScanResult(tether_network_guid); |
269 } | 281 } |
270 | 282 |
271 void ClearCacheExceptForActiveHost() { | 283 void ClearCacheExceptForActiveHost() { |
272 host_scan_cache_->ClearCacheExceptForActiveHost(); | 284 host_scan_cache_->ClearCacheExceptForActiveHost(); |
273 expected_cache_->ClearCacheExceptForActiveHost(); | 285 expected_cache_->ClearCacheExceptForActiveHost(); |
(...skipping 18 matching lines...) Expand all Loading... | |
292 // corresponding entry in NetworkStateHandler. | 304 // corresponding entry in NetworkStateHandler. |
293 const NetworkState* tether_network_state = | 305 const NetworkState* tether_network_state = |
294 network_state_handler()->GetNetworkStateFromGuid(tether_network_guid); | 306 network_state_handler()->GetNetworkStateFromGuid(tether_network_guid); |
295 ASSERT_TRUE(tether_network_state); | 307 ASSERT_TRUE(tether_network_state); |
296 EXPECT_EQ(cache_entry.device_name, tether_network_state->name()); | 308 EXPECT_EQ(cache_entry.device_name, tether_network_state->name()); |
297 EXPECT_EQ(cache_entry.carrier, tether_network_state->carrier()); | 309 EXPECT_EQ(cache_entry.carrier, tether_network_state->carrier()); |
298 EXPECT_EQ(cache_entry.battery_percentage, | 310 EXPECT_EQ(cache_entry.battery_percentage, |
299 tether_network_state->battery_percentage()); | 311 tether_network_state->battery_percentage()); |
300 EXPECT_EQ(cache_entry.signal_strength, | 312 EXPECT_EQ(cache_entry.signal_strength, |
301 tether_network_state->signal_strength()); | 313 tether_network_state->signal_strength()); |
314 EXPECT_EQ(cache_entry.setup_required, | |
315 host_scan_cache_->DoesHostRequireSetup(tether_network_guid)); | |
302 EXPECT_EQ(HasConnectedToHost(tether_network_guid), | 316 EXPECT_EQ(HasConnectedToHost(tether_network_guid), |
303 tether_network_state->tether_has_connected_to_host()); | 317 tether_network_state->tether_has_connected_to_host()); |
304 | 318 |
305 // Ensure that each entry has an actively-running Timer. | 319 // Ensure that each entry has an actively-running Timer. |
306 auto timer_map_it = | 320 auto timer_map_it = |
307 test_timer_factory_->tether_network_guid_to_timer_map().begin(); | 321 test_timer_factory_->tether_network_guid_to_timer_map().begin(); |
308 EXPECT_NE(timer_map_it, | 322 EXPECT_NE(timer_map_it, |
309 test_timer_factory_->tether_network_guid_to_timer_map().end()); | 323 test_timer_factory_->tether_network_guid_to_timer_map().end()); |
310 EXPECT_TRUE(timer_map_it->second->IsRunning()); | 324 EXPECT_TRUE(timer_map_it->second->IsRunning()); |
311 } | 325 } |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
365 } | 379 } |
366 | 380 |
367 TEST_F(HostScanCacheTest, TestSetScanResultThenUpdateAndRemove) { | 381 TEST_F(HostScanCacheTest, TestSetScanResultThenUpdateAndRemove) { |
368 SetCacheScanResultForDeviceIndex(0); | 382 SetCacheScanResultForDeviceIndex(0); |
369 EXPECT_EQ(1u, expected_cache_->size()); | 383 EXPECT_EQ(1u, expected_cache_->size()); |
370 VerifyCacheMatchesNetworkStack(); | 384 VerifyCacheMatchesNetworkStack(); |
371 | 385 |
372 // Change the fields for tether network with GUID |kTetherGuid0| to the | 386 // Change the fields for tether network with GUID |kTetherGuid0| to the |
373 // fields corresponding to |kTetherGuid1|. | 387 // fields corresponding to |kTetherGuid1|. |
374 SetHostScanResult(kTetherGuid0, kTetherDeviceName0, kTetherCarrier1, | 388 SetHostScanResult(kTetherGuid0, kTetherDeviceName0, kTetherCarrier1, |
375 kTetherBatteryPercentage1, kTetherSignalStrength1); | 389 kTetherBatteryPercentage1, kTetherSignalStrength1, |
390 kTetherSetupRequired1); | |
376 EXPECT_EQ(1u, expected_cache_->size()); | 391 EXPECT_EQ(1u, expected_cache_->size()); |
377 VerifyCacheMatchesNetworkStack(); | 392 VerifyCacheMatchesNetworkStack(); |
378 | 393 |
379 // Now, remove that result. | 394 // Now, remove that result. |
380 RemoveHostScanResult(kTetherGuid0); | 395 RemoveHostScanResult(kTetherGuid0); |
381 EXPECT_TRUE(expected_cache_->empty()); | 396 EXPECT_TRUE(expected_cache_->empty()); |
382 VerifyCacheMatchesNetworkStack(); | 397 VerifyCacheMatchesNetworkStack(); |
383 } | 398 } |
384 | 399 |
385 TEST_F(HostScanCacheTest, TestSetScanResult_SetActiveHost_ThenClear) { | 400 TEST_F(HostScanCacheTest, TestSetScanResult_SetActiveHost_ThenClear) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
438 | 453 |
439 // Simulate a connection to device 1. | 454 // Simulate a connection to device 1. |
440 SetActiveHost(kTetherGuid1); | 455 SetActiveHost(kTetherGuid1); |
441 SetHasConnectedToHost(kTetherGuid1); | 456 SetHasConnectedToHost(kTetherGuid1); |
442 VerifyCacheMatchesNetworkStack(); | 457 VerifyCacheMatchesNetworkStack(); |
443 } | 458 } |
444 | 459 |
445 } // namespace tether | 460 } // namespace tether |
446 | 461 |
447 } // namespace chromeos | 462 } // namespace chromeos |
OLD | NEW |