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