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