download_images_buildid_test.py revision f2a3ef46f75d2196a93d3ed27f4d1fcf22b54fbe
1#!/usr/bin/python 2# 3# Copyright 2014 Google Inc. All Rights Reserved 4 5import optparse 6import sys 7 8import download_images 9 10#On May 1, 2014: 11#latest : lumpy-release/R34-5500.132.0 12#latest-beta : lumpy-release/R35-5712.43.0 13#latest-official: lumpy-release/R36-5814.0.0 14#latest-dev : lumpy-release/R36-5814.0.0 15#latest-canary : lumpy-release/R36-5814.0.0 16 17 18class ImageDownloaderBuildIDTest(object): 19 20 def __init__(self): 21 parser = optparse.OptionParser() 22 parser.add_option('-c', 23 '--chromeos_root', 24 dest='chromeos_root', 25 help='Directory containing ChromeOS root.') 26 27 options = parser.parse_args(sys.argv[1:])[0] 28 if options.chromeos_root is None: 29 self._usage(parser, '--chromeos_root must be set') 30 self.chromeos_root = options.chromeos_root 31 self.tests_passed = 0 32 self.tests_run = 0 33 self.tests_failed = 0 34 35 def _usage(self, parser, message): 36 print 'ERROR: ' + message 37 parser.print_help() 38 sys.exit(0) 39 40 def print_test_status(self): 41 print '----------------------------------------\n' 42 print 'Tests attempted: %d' % self.tests_run 43 print 'Tests passed: %d' % self.tests_passed 44 print 'Tests failed: %d' % self.tests_failed 45 print '\n----------------------------------------' 46 47 def assert_failure(self, msg): 48 print 'Assert failure: %s' % msg 49 self.print_test_status() 50 sys.exit(1) 51 52 def assertIsNotNone(self, arg, arg_name): 53 if arg == None: 54 self.tests_failed = self.tests_failed + 1 55 self.assert_failure('%s is not None' % arg_name) 56 57 def assertNotEqual(self, arg1, arg2, arg1_name, arg2_name): 58 if arg1 == arg2: 59 self.tests_failed = self.tests_failed + 1 60 self.assert_failure('%s is not NotEqual to %s' % (arg1_name, arg2_name)) 61 62 def assertEqual(self, arg1, arg2, arg1_name, arg2_name): 63 if arg1 != arg2: 64 self.tests_failed = self.tests_failed + 1 65 self.assert_failure('%s is not Equal to %s' % (arg1_name, arg2_name)) 66 67 def test_one_id(self, downloader, test_id, result_string, exact_match): 68 print "Translating '%s'" % test_id 69 self.tests_run = self.tests_run + 1 70 71 result = downloader._GetBuildID(self.chromeos_root, test_id) 72 # Verify that we got a build id back. 73 self.assertIsNotNone(result, 'result') 74 75 # Verify that the result either contains or exactly matches the 76 # result_string, depending on the exact_match argument. 77 if exact_match: 78 self.assertEqual(result, result_string, 'result', result_string) 79 else: 80 self.assertNotEqual(result.find(result_string), -1, 'result.find', '-1') 81 self.tests_passed = self.tests_passed + 1 82 83 def test_get_build_id(self): 84 """Test that the actual translating of xbuddy names is working properly. 85 """ 86 downloader = download_images.ImageDownloader(log_level='quiet') 87 88 self.test_one_id(downloader, 'remote/lumpy/latest-dev', 'lumpy-release/R', 89 False) 90 self.test_one_id(downloader, 91 'remote/trybot-lumpy-release-afdo-use/R35-5672.0.0-b86', 92 'trybot-lumpy-release-afdo-use/R35-5672.0.0-b86', True) 93 self.test_one_id(downloader, 'remote/lumpy-release/R35-5672.0.0', 94 'lumpy-release/R35-5672.0.0', True) 95 self.test_one_id(downloader, 'remote/lumpy/latest-dev', 'lumpy-release/R', 96 False) 97 self.test_one_id(downloader, 'remote/lumpy/latest-official', 98 'lumpy-release/R', False) 99 self.test_one_id(downloader, 'remote/lumpy/latest-beta', 'lumpy-release/R', 100 False) 101 102 self.print_test_status() 103 104 105if __name__ == '__main__': 106 tester = ImageDownloaderBuildIDTest() 107 tester.test_get_build_id() 108