Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(355)

Side by Side Diff: build/android/pylib/device/device_utils_test.py

Issue 1234153004: Cache device apk checksums in device_utils.py (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gtest-fast
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved. 2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """ 6 """
7 Unit tests for the contents of device_utils.py (mostly DeviceUtils). 7 Unit tests for the contents of device_utils.py (mostly DeviceUtils).
8 """ 8 """
9 9
10 # pylint: disable=C0321 10 # pylint: disable=C0321
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 @mock.patch('time.sleep', mock.Mock()) 359 @mock.patch('time.sleep', mock.Mock())
360 class DeviceUtilsWaitUntilFullyBootedTest(DeviceUtilsTest): 360 class DeviceUtilsWaitUntilFullyBootedTest(DeviceUtilsTest):
361 361
362 def testWaitUntilFullyBooted_succeedsNoWifi(self): 362 def testWaitUntilFullyBooted_succeedsNoWifi(self):
363 with self.assertCalls( 363 with self.assertCalls(
364 self.call.adb.WaitForDevice(), 364 self.call.adb.WaitForDevice(),
365 # sd_card_ready 365 # sd_card_ready
366 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), 366 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'),
367 (self.call.adb.Shell('test -d /fake/storage/path'), ''), 367 (self.call.adb.Shell('test -d /fake/storage/path'), ''),
368 # pm_ready 368 # pm_ready
369 (self.call.device.GetApplicationPaths('android'), 369 (self.call.device.GetApplicationPaths('android', skip_cache=True),
370 ['package:/some/fake/path']), 370 ['package:/some/fake/path']),
371 # boot_completed 371 # boot_completed
372 (self.call.device.GetProp('sys.boot_completed'), '1')): 372 (self.call.device.GetProp('sys.boot_completed'), '1')):
373 self.device.WaitUntilFullyBooted(wifi=False) 373 self.device.WaitUntilFullyBooted(wifi=False)
374 374
375 def testWaitUntilFullyBooted_succeedsWithWifi(self): 375 def testWaitUntilFullyBooted_succeedsWithWifi(self):
376 with self.assertCalls( 376 with self.assertCalls(
377 self.call.adb.WaitForDevice(), 377 self.call.adb.WaitForDevice(),
378 # sd_card_ready 378 # sd_card_ready
379 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), 379 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'),
380 (self.call.adb.Shell('test -d /fake/storage/path'), ''), 380 (self.call.adb.Shell('test -d /fake/storage/path'), ''),
381 # pm_ready 381 # pm_ready
382 (self.call.device.GetApplicationPaths('android'), 382 (self.call.device.GetApplicationPaths('android', skip_cache=True),
383 ['package:/some/fake/path']), 383 ['package:/some/fake/path']),
384 # boot_completed 384 # boot_completed
385 (self.call.device.GetProp('sys.boot_completed'), '1'), 385 (self.call.device.GetProp('sys.boot_completed'), '1'),
386 # wifi_enabled 386 # wifi_enabled
387 (self.call.adb.Shell('dumpsys wifi'), 387 (self.call.adb.Shell('dumpsys wifi'),
388 'stuff\nWi-Fi is enabled\nmore stuff\n')): 388 'stuff\nWi-Fi is enabled\nmore stuff\n')):
389 self.device.WaitUntilFullyBooted(wifi=True) 389 self.device.WaitUntilFullyBooted(wifi=True)
390 390
391 def testWaitUntilFullyBooted_deviceNotInitiallyAvailable(self): 391 def testWaitUntilFullyBooted_deviceNotInitiallyAvailable(self):
392 with self.assertCalls( 392 with self.assertCalls(
393 self.call.adb.WaitForDevice(), 393 self.call.adb.WaitForDevice(),
394 # sd_card_ready 394 # sd_card_ready
395 (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), 395 (self.call.device.GetExternalStoragePath(), self.AdbCommandError()),
396 # sd_card_ready 396 # sd_card_ready
397 (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), 397 (self.call.device.GetExternalStoragePath(), self.AdbCommandError()),
398 # sd_card_ready 398 # sd_card_ready
399 (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), 399 (self.call.device.GetExternalStoragePath(), self.AdbCommandError()),
400 # sd_card_ready 400 # sd_card_ready
401 (self.call.device.GetExternalStoragePath(), self.AdbCommandError()), 401 (self.call.device.GetExternalStoragePath(), self.AdbCommandError()),
402 # sd_card_ready 402 # sd_card_ready
403 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), 403 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'),
404 (self.call.adb.Shell('test -d /fake/storage/path'), ''), 404 (self.call.adb.Shell('test -d /fake/storage/path'), ''),
405 # pm_ready 405 # pm_ready
406 (self.call.device.GetApplicationPaths('android'), 406 (self.call.device.GetApplicationPaths('android', skip_cache=True),
407 ['package:/some/fake/path']), 407 ['package:/some/fake/path']),
408 # boot_completed 408 # boot_completed
409 (self.call.device.GetProp('sys.boot_completed'), '1')): 409 (self.call.device.GetProp('sys.boot_completed'), '1')):
410 self.device.WaitUntilFullyBooted(wifi=False) 410 self.device.WaitUntilFullyBooted(wifi=False)
411 411
412 def testWaitUntilFullyBooted_sdCardReadyFails_noPath(self): 412 def testWaitUntilFullyBooted_sdCardReadyFails_noPath(self):
413 with self.assertCalls( 413 with self.assertCalls(
414 self.call.adb.WaitForDevice(), 414 self.call.adb.WaitForDevice(),
415 # sd_card_ready 415 # sd_card_ready
416 (self.call.device.GetExternalStoragePath(), self.CommandError())): 416 (self.call.device.GetExternalStoragePath(), self.CommandError())):
(...skipping 16 matching lines...) Expand all
433 with self.assertRaises(device_errors.CommandTimeoutError): 433 with self.assertRaises(device_errors.CommandTimeoutError):
434 self.device.WaitUntilFullyBooted(wifi=False) 434 self.device.WaitUntilFullyBooted(wifi=False)
435 435
436 def testWaitUntilFullyBooted_devicePmFails(self): 436 def testWaitUntilFullyBooted_devicePmFails(self):
437 with self.assertCalls( 437 with self.assertCalls(
438 self.call.adb.WaitForDevice(), 438 self.call.adb.WaitForDevice(),
439 # sd_card_ready 439 # sd_card_ready
440 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), 440 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'),
441 (self.call.adb.Shell('test -d /fake/storage/path'), ''), 441 (self.call.adb.Shell('test -d /fake/storage/path'), ''),
442 # pm_ready 442 # pm_ready
443 (self.call.device.GetApplicationPaths('android'), self.CommandError()), 443 (self.call.device.GetApplicationPaths('android', skip_cache=True),
444 self.CommandError()),
444 # pm_ready 445 # pm_ready
445 (self.call.device.GetApplicationPaths('android'), self.CommandError()), 446 (self.call.device.GetApplicationPaths('android', skip_cache=True),
447 self.CommandError()),
446 # pm_ready 448 # pm_ready
447 (self.call.device.GetApplicationPaths('android'), self.TimeoutError())): 449 (self.call.device.GetApplicationPaths('android', skip_cache=True),
450 self.TimeoutError())):
448 with self.assertRaises(device_errors.CommandTimeoutError): 451 with self.assertRaises(device_errors.CommandTimeoutError):
449 self.device.WaitUntilFullyBooted(wifi=False) 452 self.device.WaitUntilFullyBooted(wifi=False)
450 453
451 def testWaitUntilFullyBooted_bootFails(self): 454 def testWaitUntilFullyBooted_bootFails(self):
452 with self.assertCalls( 455 with self.assertCalls(
453 self.call.adb.WaitForDevice(), 456 self.call.adb.WaitForDevice(),
454 # sd_card_ready 457 # sd_card_ready
455 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), 458 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'),
456 (self.call.adb.Shell('test -d /fake/storage/path'), ''), 459 (self.call.adb.Shell('test -d /fake/storage/path'), ''),
457 # pm_ready 460 # pm_ready
458 (self.call.device.GetApplicationPaths('android'), 461 (self.call.device.GetApplicationPaths('android', skip_cache=True),
459 ['package:/some/fake/path']), 462 ['package:/some/fake/path']),
460 # boot_completed 463 # boot_completed
461 (self.call.device.GetProp('sys.boot_completed'), '0'), 464 (self.call.device.GetProp('sys.boot_completed'), '0'),
462 # boot_completed 465 # boot_completed
463 (self.call.device.GetProp('sys.boot_completed'), '0'), 466 (self.call.device.GetProp('sys.boot_completed'), '0'),
464 # boot_completed 467 # boot_completed
465 (self.call.device.GetProp('sys.boot_completed'), self.TimeoutError())): 468 (self.call.device.GetProp('sys.boot_completed'), self.TimeoutError())):
466 with self.assertRaises(device_errors.CommandTimeoutError): 469 with self.assertRaises(device_errors.CommandTimeoutError):
467 self.device.WaitUntilFullyBooted(wifi=False) 470 self.device.WaitUntilFullyBooted(wifi=False)
468 471
469 def testWaitUntilFullyBooted_wifiFails(self): 472 def testWaitUntilFullyBooted_wifiFails(self):
470 with self.assertCalls( 473 with self.assertCalls(
471 self.call.adb.WaitForDevice(), 474 self.call.adb.WaitForDevice(),
472 # sd_card_ready 475 # sd_card_ready
473 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'), 476 (self.call.device.GetExternalStoragePath(), '/fake/storage/path'),
474 (self.call.adb.Shell('test -d /fake/storage/path'), ''), 477 (self.call.adb.Shell('test -d /fake/storage/path'), ''),
475 # pm_ready 478 # pm_ready
476 (self.call.device.GetApplicationPaths('android'), 479 (self.call.device.GetApplicationPaths('android', skip_cache=True),
477 ['package:/some/fake/path']), 480 ['package:/some/fake/path']),
478 # boot_completed 481 # boot_completed
479 (self.call.device.GetProp('sys.boot_completed'), '1'), 482 (self.call.device.GetProp('sys.boot_completed'), '1'),
480 # wifi_enabled 483 # wifi_enabled
481 (self.call.adb.Shell('dumpsys wifi'), 'stuff\nmore stuff\n'), 484 (self.call.adb.Shell('dumpsys wifi'), 'stuff\nmore stuff\n'),
482 # wifi_enabled 485 # wifi_enabled
483 (self.call.adb.Shell('dumpsys wifi'), 'stuff\nmore stuff\n'), 486 (self.call.adb.Shell('dumpsys wifi'), 'stuff\nmore stuff\n'),
484 # wifi_enabled 487 # wifi_enabled
485 (self.call.adb.Shell('dumpsys wifi'), self.TimeoutError())): 488 (self.call.adb.Shell('dumpsys wifi'), self.TimeoutError())):
486 with self.assertRaises(device_errors.CommandTimeoutError): 489 with self.assertRaises(device_errors.CommandTimeoutError):
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 (self.call.device.GetApplicationPaths('this.is.a.test.package'), []), 526 (self.call.device.GetApplicationPaths('this.is.a.test.package'), []),
524 self.call.adb.Install('/fake/test/app.apk', reinstall=False)): 527 self.call.adb.Install('/fake/test/app.apk', reinstall=False)):
525 self.device.Install('/fake/test/app.apk', retries=0) 528 self.device.Install('/fake/test/app.apk', retries=0)
526 529
527 def testInstall_differentPriorInstall(self): 530 def testInstall_differentPriorInstall(self):
528 with self.assertCalls( 531 with self.assertCalls(
529 (mock.call.pylib.utils.apk_helper.GetPackageName('/fake/test/app.apk'), 532 (mock.call.pylib.utils.apk_helper.GetPackageName('/fake/test/app.apk'),
530 'this.is.a.test.package'), 533 'this.is.a.test.package'),
531 (self.call.device.GetApplicationPaths('this.is.a.test.package'), 534 (self.call.device.GetApplicationPaths('this.is.a.test.package'),
532 ['/fake/data/app/this.is.a.test.package.apk']), 535 ['/fake/data/app/this.is.a.test.package.apk']),
533 (self.call.device._GetChangedAndStaleFiles( 536 (self.call.device._ComputeStaleApks('this.is.a.test.package',
534 '/fake/test/app.apk', '/fake/data/app/this.is.a.test.package.apk'), 537 ['/fake/test/app.apk']),
535 ([('/fake/test/app.apk', '/fake/data/app/this.is.a.test.package.apk')], 538 (['/fake/test/app.apk'], None)),
536 [])),
537 self.call.adb.Uninstall('this.is.a.test.package'), 539 self.call.adb.Uninstall('this.is.a.test.package'),
538 self.call.adb.Install('/fake/test/app.apk', reinstall=False)): 540 self.call.adb.Install('/fake/test/app.apk', reinstall=False)):
539 self.device.Install('/fake/test/app.apk', retries=0) 541 self.device.Install('/fake/test/app.apk', retries=0)
540 542
541 def testInstall_differentPriorInstall_reinstall(self): 543 def testInstall_differentPriorInstall_reinstall(self):
542 with self.assertCalls( 544 with self.assertCalls(
543 (mock.call.pylib.utils.apk_helper.GetPackageName('/fake/test/app.apk'), 545 (mock.call.pylib.utils.apk_helper.GetPackageName('/fake/test/app.apk'),
544 'this.is.a.test.package'), 546 'this.is.a.test.package'),
545 (self.call.device.GetApplicationPaths('this.is.a.test.package'), 547 (self.call.device.GetApplicationPaths('this.is.a.test.package'),
546 ['/fake/data/app/this.is.a.test.package.apk']), 548 ['/fake/data/app/this.is.a.test.package.apk']),
547 (self.call.device._GetChangedAndStaleFiles( 549 (self.call.device._ComputeStaleApks('this.is.a.test.package',
548 '/fake/test/app.apk', '/fake/data/app/this.is.a.test.package.apk'), 550 ['/fake/test/app.apk']),
549 ([('/fake/test/app.apk', '/fake/data/app/this.is.a.test.package.apk')], 551 (['/fake/test/app.apk'], None)),
550 [])),
551 self.call.adb.Install('/fake/test/app.apk', reinstall=True)): 552 self.call.adb.Install('/fake/test/app.apk', reinstall=True)):
552 self.device.Install('/fake/test/app.apk', reinstall=True, retries=0) 553 self.device.Install('/fake/test/app.apk', reinstall=True, retries=0)
553 554
554 def testInstall_identicalPriorInstall(self): 555 def testInstall_identicalPriorInstall(self):
555 with self.assertCalls( 556 with self.assertCalls(
556 (mock.call.pylib.utils.apk_helper.GetPackageName('/fake/test/app.apk'), 557 (mock.call.pylib.utils.apk_helper.GetPackageName('/fake/test/app.apk'),
557 'this.is.a.test.package'), 558 'this.is.a.test.package'),
558 (self.call.device.GetApplicationPaths('this.is.a.test.package'), 559 (self.call.device.GetApplicationPaths('this.is.a.test.package'),
559 ['/fake/data/app/this.is.a.test.package.apk']), 560 ['/fake/data/app/this.is.a.test.package.apk']),
560 (self.call.device._GetChangedAndStaleFiles( 561 (self.call.device._ComputeStaleApks('this.is.a.test.package',
561 '/fake/test/app.apk', '/fake/data/app/this.is.a.test.package.apk'), 562 ['/fake/test/app.apk']),
562 ([], []))): 563 ([], None))):
563 self.device.Install('/fake/test/app.apk', retries=0) 564 self.device.Install('/fake/test/app.apk', retries=0)
564 565
565 def testInstall_fails(self): 566 def testInstall_fails(self):
566 with self.assertCalls( 567 with self.assertCalls(
567 (mock.call.pylib.utils.apk_helper.GetPackageName('/fake/test/app.apk'), 568 (mock.call.pylib.utils.apk_helper.GetPackageName('/fake/test/app.apk'),
568 'this.is.a.test.package'), 569 'this.is.a.test.package'),
569 (self.call.device.GetApplicationPaths('this.is.a.test.package'), []), 570 (self.call.device.GetApplicationPaths('this.is.a.test.package'), []),
570 (self.call.adb.Install('/fake/test/app.apk', reinstall=False), 571 (self.call.adb.Install('/fake/test/app.apk', reinstall=False),
571 self.CommandError('Failure\r\n'))): 572 self.CommandError('Failure\r\n'))):
572 with self.assertRaises(device_errors.CommandFailedError): 573 with self.assertRaises(device_errors.CommandFailedError):
(...skipping 20 matching lines...) Expand all
593 with self.assertCalls( 594 with self.assertCalls(
594 (self.call.device._CheckSdkLevel(21)), 595 (self.call.device._CheckSdkLevel(21)),
595 (mock.call.pylib.sdk.split_select.SelectSplits( 596 (mock.call.pylib.sdk.split_select.SelectSplits(
596 self.device, 'base.apk', 597 self.device, 'base.apk',
597 ['split1.apk', 'split2.apk', 'split3.apk']), 598 ['split1.apk', 'split2.apk', 'split3.apk']),
598 ['split2.apk']), 599 ['split2.apk']),
599 (mock.call.pylib.utils.apk_helper.GetPackageName('base.apk'), 600 (mock.call.pylib.utils.apk_helper.GetPackageName('base.apk'),
600 'test.package'), 601 'test.package'),
601 (self.call.device.GetApplicationPaths('test.package'), 602 (self.call.device.GetApplicationPaths('test.package'),
602 ['base-on-device.apk', 'split2-on-device.apk']), 603 ['base-on-device.apk', 'split2-on-device.apk']),
603 (mock.call.pylib.utils.md5sum.CalculateDeviceMd5Sums( 604 (self.call.device._ComputeStaleApks('test.package',
604 ['base-on-device.apk', 'split2-on-device.apk'], self.device), 605 ['base.apk', 'split2.apk']),
605 {'base-on-device.apk': 'AAA', 'split2-on-device.apk': 'BBB'}), 606 (['split2.apk'], None)),
606 (mock.call.pylib.utils.md5sum.CalculateHostMd5Sums(
607 ['base.apk', 'split2.apk']),
608 {'base.apk': 'AAA', 'split2.apk': 'CCC'}),
609 (self.call.adb.InstallMultiple( 607 (self.call.adb.InstallMultiple(
610 ['split2.apk'], partial='test.package', reinstall=True))): 608 ['split2.apk'], partial='test.package', reinstall=True))):
611 self.device.InstallSplitApk('base.apk', 609 self.device.InstallSplitApk('base.apk',
612 ['split1.apk', 'split2.apk', 'split3.apk'], reinstall=True, retries=0) 610 ['split1.apk', 'split2.apk', 'split3.apk'], reinstall=True, retries=0)
613 611
614 612
615 class DeviceUtilsRunShellCommandTest(DeviceUtilsTest): 613 class DeviceUtilsRunShellCommandTest(DeviceUtilsTest):
616 614
617 def setUp(self): 615 def setUp(self):
618 super(DeviceUtilsRunShellCommandTest, self).setUp() 616 super(DeviceUtilsRunShellCommandTest, self).setUp()
(...skipping 1217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1836 devices = device_utils.DeviceUtils.HealthyDevices() 1834 devices = device_utils.DeviceUtils.HealthyDevices()
1837 self.assertEquals(1, len(devices)) 1835 self.assertEquals(1, len(devices))
1838 self.assertTrue(isinstance(devices[0], device_utils.DeviceUtils)) 1836 self.assertTrue(isinstance(devices[0], device_utils.DeviceUtils))
1839 self.assertEquals('0123456789abcdef', devices[0].adb.GetDeviceSerial()) 1837 self.assertEquals('0123456789abcdef', devices[0].adb.GetDeviceSerial())
1840 1838
1841 1839
1842 if __name__ == '__main__': 1840 if __name__ == '__main__':
1843 logging.getLogger().setLevel(logging.DEBUG) 1841 logging.getLogger().setLevel(logging.DEBUG)
1844 unittest.main(verbosity=2) 1842 unittest.main(verbosity=2)
1845 1843
OLDNEW
« build/android/pylib/device/device_utils.py ('K') | « build/android/pylib/device/device_utils.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698