xref: /aosp_15_r20/external/toolchain-utils/crosperf/download_images_buildid_test.py (revision 760c253c1ed00ce9abd48f8546f08516e57485fe)
1*760c253cSXin Li#!/usr/bin/env python3
2*760c253cSXin Li# -*- coding: utf-8 -*-
3*760c253cSXin Li# Copyright 2014 The ChromiumOS Authors
4*760c253cSXin Li# Use of this source code is governed by a BSD-style license that can be
5*760c253cSXin Li# found in the LICENSE file.
6*760c253cSXin Li
7*760c253cSXin Li"""Test translation of xbuddy names."""
8*760c253cSXin Li
9*760c253cSXin Li
10*760c253cSXin Liimport argparse
11*760c253cSXin Liimport sys
12*760c253cSXin Li
13*760c253cSXin Liimport download_images
14*760c253cSXin Li
15*760c253cSXin Li
16*760c253cSXin Li# On May 1, 2014:
17*760c253cSXin Li# latest         : lumpy-release/R34-5500.132.0
18*760c253cSXin Li# latest-beta    : lumpy-release/R35-5712.43.0
19*760c253cSXin Li# latest-official: lumpy-release/R36-5814.0.0
20*760c253cSXin Li# latest-dev     : lumpy-release/R36-5814.0.0
21*760c253cSXin Li# latest-canary  : lumpy-release/R36-5814.0.0
22*760c253cSXin Li
23*760c253cSXin Li
24*760c253cSXin Liclass ImageDownloaderBuildIDTest(object):
25*760c253cSXin Li    """Test translation of xbuddy names."""
26*760c253cSXin Li
27*760c253cSXin Li    def __init__(self):
28*760c253cSXin Li        parser = argparse.ArgumentParser()
29*760c253cSXin Li        parser.add_argument(
30*760c253cSXin Li            "-c",
31*760c253cSXin Li            "--chromeos_root",
32*760c253cSXin Li            dest="chromeos_root",
33*760c253cSXin Li            help="Directory containing ChromeOS root.",
34*760c253cSXin Li        )
35*760c253cSXin Li
36*760c253cSXin Li        options = parser.parse_known_args(sys.argv[1:])[0]
37*760c253cSXin Li        if options.chromeos_root is None:
38*760c253cSXin Li            self._usage(parser, "--chromeos_root must be set")
39*760c253cSXin Li        self.chromeos_root = options.chromeos_root
40*760c253cSXin Li        self.tests_passed = 0
41*760c253cSXin Li        self.tests_run = 0
42*760c253cSXin Li        self.tests_failed = 0
43*760c253cSXin Li
44*760c253cSXin Li    def _usage(self, parser, message):
45*760c253cSXin Li        print("ERROR: " + message)
46*760c253cSXin Li        parser.print_help()
47*760c253cSXin Li        sys.exit(0)
48*760c253cSXin Li
49*760c253cSXin Li    def print_test_status(self):
50*760c253cSXin Li        print("----------------------------------------\n")
51*760c253cSXin Li        print("Tests attempted: %d" % self.tests_run)
52*760c253cSXin Li        print("Tests passed:    %d" % self.tests_passed)
53*760c253cSXin Li        print("Tests failed:    %d" % self.tests_failed)
54*760c253cSXin Li        print("\n----------------------------------------")
55*760c253cSXin Li
56*760c253cSXin Li    def assert_failure(self, msg):
57*760c253cSXin Li        print("Assert failure: %s" % msg)
58*760c253cSXin Li        self.print_test_status()
59*760c253cSXin Li        sys.exit(1)
60*760c253cSXin Li
61*760c253cSXin Li    def assertIsNotNone(self, arg, arg_name):
62*760c253cSXin Li        if arg is None:
63*760c253cSXin Li            self.tests_failed = self.tests_failed + 1
64*760c253cSXin Li            self.assert_failure("%s is not None" % arg_name)
65*760c253cSXin Li
66*760c253cSXin Li    def assertNotEqual(self, arg1, arg2, arg1_name, arg2_name):
67*760c253cSXin Li        if arg1 == arg2:
68*760c253cSXin Li            self.tests_failed = self.tests_failed + 1
69*760c253cSXin Li            self.assert_failure(
70*760c253cSXin Li                "%s is not NotEqual to %s" % (arg1_name, arg2_name)
71*760c253cSXin Li            )
72*760c253cSXin Li
73*760c253cSXin Li    def assertEqual(self, arg1, arg2, arg1_name, arg2_name):
74*760c253cSXin Li        if arg1 != arg2:
75*760c253cSXin Li            self.tests_failed = self.tests_failed + 1
76*760c253cSXin Li            self.assert_failure(
77*760c253cSXin Li                "%s is not Equal to %s" % (arg1_name, arg2_name)
78*760c253cSXin Li            )
79*760c253cSXin Li
80*760c253cSXin Li    def test_one_id(self, downloader, test_id, result_string, exact_match):
81*760c253cSXin Li        print("Translating '%s'" % test_id)
82*760c253cSXin Li        self.tests_run = self.tests_run + 1
83*760c253cSXin Li
84*760c253cSXin Li        result = downloader.GetBuildID(self.chromeos_root, test_id)
85*760c253cSXin Li        # Verify that we got a build id back.
86*760c253cSXin Li        self.assertIsNotNone(result, "result")
87*760c253cSXin Li
88*760c253cSXin Li        # Verify that the result either contains or exactly matches the
89*760c253cSXin Li        # result_string, depending on the exact_match argument.
90*760c253cSXin Li        if exact_match:
91*760c253cSXin Li            self.assertEqual(result, result_string, "result", result_string)
92*760c253cSXin Li        else:
93*760c253cSXin Li            self.assertNotEqual(
94*760c253cSXin Li                result.find(result_string), -1, "result.find", "-1"
95*760c253cSXin Li            )
96*760c253cSXin Li        self.tests_passed = self.tests_passed + 1
97*760c253cSXin Li
98*760c253cSXin Li    def test_get_build_id(self):
99*760c253cSXin Li        """Test that the actual translating of xbuddy names is working properly."""
100*760c253cSXin Li        downloader = download_images.ImageDownloader(log_level="quiet")
101*760c253cSXin Li
102*760c253cSXin Li        self.test_one_id(
103*760c253cSXin Li            downloader, "remote/lumpy/latest-dev", "lumpy-release/R", False
104*760c253cSXin Li        )
105*760c253cSXin Li        self.test_one_id(
106*760c253cSXin Li            downloader,
107*760c253cSXin Li            "remote/trybot-lumpy-release-afdo-use/R35-5672.0.0-b86",
108*760c253cSXin Li            "trybot-lumpy-release-afdo-use/R35-5672.0.0-b86",
109*760c253cSXin Li            True,
110*760c253cSXin Li        )
111*760c253cSXin Li        self.test_one_id(
112*760c253cSXin Li            downloader,
113*760c253cSXin Li            "remote/lumpy-release/R35-5672.0.0",
114*760c253cSXin Li            "lumpy-release/R35-5672.0.0",
115*760c253cSXin Li            True,
116*760c253cSXin Li        )
117*760c253cSXin Li        self.test_one_id(
118*760c253cSXin Li            downloader, "remote/lumpy/latest-dev", "lumpy-release/R", False
119*760c253cSXin Li        )
120*760c253cSXin Li        self.test_one_id(
121*760c253cSXin Li            downloader, "remote/lumpy/latest-official", "lumpy-release/R", False
122*760c253cSXin Li        )
123*760c253cSXin Li        self.test_one_id(
124*760c253cSXin Li            downloader, "remote/lumpy/latest-beta", "lumpy-release/R", False
125*760c253cSXin Li        )
126*760c253cSXin Li
127*760c253cSXin Li        self.print_test_status()
128*760c253cSXin Li
129*760c253cSXin Li
130*760c253cSXin Liif __name__ == "__main__":
131*760c253cSXin Li    tester = ImageDownloaderBuildIDTest()
132*760c253cSXin Li    tester.test_get_build_id()
133