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