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