test_push: fix the flaky get_default_build function
The get_default_build method is to get the lastest build to running
tests. However, it will fail 90% of the time because of the devserver
unreachable issue. Change the method to use gsutil to get the lastest
build.
BUG=chromium:641177
TEST=Unittest and test on the testing test_push master.
Change-Id: I33d1dfcf53a871809f4f0ecc1bfdb2febb923230
Reviewed-on: https://chromium-review.googlesource.com/379677
Tested-by: Shuqian Zhao <shuqianz@chromium.org>
Reviewed-by: Dan Shi <dshi@google.com>
Commit-Queue: Shuqian Zhao <shuqianz@chromium.org>
diff --git a/site_utils/test_push.py b/site_utils/test_push.py
index 5d3daf5..0b33794 100755
--- a/site_utils/test_push.py
+++ b/site_utils/test_push.py
@@ -44,19 +44,19 @@
from autotest_lib.site_utils import gmail_lib
from autotest_lib.site_utils.suite_scheduler import constants
+AUTOTEST_DIR='/usr/local/autotest'
CONFIG = global_config.global_config
AFE = frontend_wrappers.RetryingAFE(timeout_min=0.5, delay_sec=2)
MAIL_FROM = 'chromeos-test@google.com'
-DEVSERVERS = CONFIG.get_config_value('CROS', 'dev_server', type=list,
- default=[])
-BUILD_REGEX = '^R[\d]+-[\d]+\.[\d]+\.[\d]+$'
+BUILD_REGEX = 'R[\d]+-[\d]+\.[\d]+\.[\d]+'
RUN_SUITE_COMMAND = 'run_suite.py'
PUSH_TO_PROD_SUITE = 'push_to_prod'
DUMMY_SUITE = 'dummy'
AU_SUITE = 'paygen_au_canary'
DEFAULT_TIMEOUT_MIN_FOR_SUITE_JOB = 30
+IMAGE_BUCKET = CONFIG.get_config_value('CROS', 'image_storage_server')
SUITE_JOB_START_INFO_REGEX = ('^.*Created suite job:.*'
'tab_id=view_job&object_id=(\d+)$')
@@ -124,29 +124,24 @@
host.close()
-def get_default_build(devserver=None, board='gandof'):
+def get_default_build(board='gandof'):
"""Get the default build to be used for test.
- @param devserver: devserver used to look for latest staged build. If value
- is None, all devservers in config will be tried.
@param board: Name of board to be tested, default is gandof.
@return: Build to be tested, e.g., gandof-release/R36-5881.0.0
"""
- LATEST_BUILD_URL_PATTERN = '%s/latestbuild?target=%s-release'
build = None
- if not devserver:
- for server in DEVSERVERS:
- url = LATEST_BUILD_URL_PATTERN % (server, board)
- build = urllib2.urlopen(url).read()
- if build and re.match(BUILD_REGEX, build):
- return '%s-release/%s' % (board, build)
+ cmd = ('%s/cli/atest stable_version list --board=%s -w cautotest' %
+ (AUTOTEST_DIR, board))
+ result = subprocess.check_output(cmd, shell=True).strip()
+ build = re.search(BUILD_REGEX, result)
+ if build:
+ return '%s-release/%s' % (board, build.group(0))
- # If no devserver has any build staged for the given board, use the stable
- # build in config.
+ # If fail to get stable version from cautotest, use that defined in config
build = CONFIG.get_config_value('CROS', 'stable_cros_version')
return '%s-release/%s' % (board, build)
-
def parse_arguments():
"""Parse arguments for test_push tool.
@@ -173,9 +168,6 @@
parser.add_argument('-e', '--email', dest='email', default=None,
help='Email address for the notification to be sent to '
'after the script finished running.')
- parser.add_argument('-d', '--devserver', dest='devserver',
- default=None,
- help='devserver to find what\'s the latest build.')
parser.add_argument('-t', '--timeout_min', dest='timeout_min', type=int,
default=DEFAULT_TIMEOUT_MIN_FOR_SUITE_JOB,
help='Time in mins to wait before abort the jobs we '
@@ -186,11 +178,9 @@
# Get latest canary build as default build.
if not arguments.build:
- arguments.build = get_default_build(arguments.devserver,
- arguments.board)
+ arguments.build = get_default_build(arguments.board)
if not arguments.shard_build:
- arguments.shard_build = get_default_build(arguments.devserver,
- arguments.shard_board)
+ arguments.shard_build = get_default_build(arguments.shard_board)
return arguments
diff --git a/site_utils/test_push_unittest.py b/site_utils/test_push_unittest.py
index 8636a7a..5837a06 100755
--- a/site_utils/test_push_unittest.py
+++ b/site_utils/test_push_unittest.py
@@ -62,9 +62,9 @@
urllib2.urlopen(mox.IgnoreArg()).AndReturn(response)
self.mox.StubOutWithMock(test_push, 'get_default_build')
- test_push.get_default_build(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(
+ test_push.get_default_build(mox.IgnoreArg()).AndReturn(
'stumpy-release/R36-5881-0.0')
- test_push.get_default_build(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(
+ test_push.get_default_build(mox.IgnoreArg()).AndReturn(
'quawks-release/R36-5881-0.0')
self.mox.StubOutWithMock(test_push, 'check_dut_image')