[autotest] Fix test name parsing logic for Launch Control builds
BUG=chromium:609956
TEST=unittest
Change-Id: I2707715c2d1c4e34846c713e018527410d28b5b0
Reviewed-on: https://chromium-review.googlesource.com/344752
Commit-Ready: Dan Shi <dshi@google.com>
Tested-by: Dan Shi <dshi@google.com>
Reviewed-by: Kevin Cheng <kevcheng@chromium.org>
diff --git a/server/site_utils.py b/server/site_utils.py
index 330c6f9..a040edf 100644
--- a/server/site_utils.py
+++ b/server/site_utils.py
@@ -14,7 +14,7 @@
import urllib2
import common
-from autotest_lib.client.common_lib import base_utils
+from autotest_lib.client.common_lib import utils
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib import global_config
from autotest_lib.client.common_lib import host_queue_entry_states
@@ -176,7 +176,7 @@
for sheriff_js in sheriff_js_list:
try:
- url_content = base_utils.urlopen('%s%s'% (
+ url_content = utils.urlopen('%s%s'% (
_CHROMIUM_BUILD_URL, sheriff_js)).read()
except (ValueError, IOError) as e:
logging.warning('could not parse sheriff from url %s%s: %s',
@@ -205,7 +205,7 @@
"""
wget_cmd = ("wget -O - %s | %s 'cat >%s'" %
(source_url, ssh_cmd, dest_path))
- base_utils.run(wget_cmd)
+ utils.run(wget_cmd)
_MAX_LAB_STATUS_ATTEMPTS = 5
@@ -589,6 +589,8 @@
Note that pgo and chrome-perf builds will fail the method. Since lab does
not run test for these builds, they can be ignored.
+ Also, tests for Launch Control builds have different naming convention.
+ The build ID will be used as build_version.
@param name: Name of the job.
@@ -600,8 +602,8 @@
"""
info = {}
- suite_job_regex = '([^/]*/[^/]*)-test_suites/control\.(.*)'
- test_job_regex = '([^/]*/[^/]*)/([^/]+)/.*'
+ suite_job_regex = '([^/]*/[^/]*(?:/\d+)?)-test_suites/control\.(.*)'
+ test_job_regex = '([^/]*/[^/]*(?:/\d+)?)/([^/]+)/.*'
match = re.match(suite_job_regex, name)
if not match:
match = re.match(test_job_regex, name)
@@ -612,7 +614,18 @@
try:
info['board'], _, _, _ = ParseBuildName(info['build'])
except ParseBuildNameException:
- pass
+ # Try to parse it as Launch Control build
+ # Launch Control builds have name format:
+ # branch/build_target-build_type/build_id.
+ try:
+ _, target, build_id = utils.parse_launch_control_build(
+ info['build'])
+ build_target, _ = utils.parse_launch_control_target(target)
+ if build_target:
+ info['board'] = build_target
+ info['build_version'] = build_id
+ except ValueError:
+ pass
return info
diff --git a/server/site_utils_unittest.py b/server/site_utils_unittest.py
index 80901c1..57cc534 100644
--- a/server/site_utils_unittest.py
+++ b/server/site_utils_unittest.py
@@ -22,17 +22,22 @@
trybot_release_build = 'trybot-lumpy-release/R27-3837.0.0-b456'
release_build = 'lumpy-release/R27-3837.0.0'
paladin_build = 'lumpy-paladin/R27-3878.0.0-rc7'
+ brillo_build = 'git_mnc-brillo-dev/lumpy-eng/1234'
builds = [trybot_paladin_build, trybot_release_build, release_build,
- paladin_build]
+ paladin_build, brillo_build]
test_name = 'login_LoginSuccess'
board = 'lumpy'
suite = 'bvt'
for build in builds:
expected_info = {'board': board,
'suite': suite,
- 'build': build,
- 'build_version': build.split('/')[1]}
+ 'build': build}
+ build_parts = build.split('/')
+ if len(build_parts) == 2:
+ expected_info['build_version'] = build_parts[1]
+ else:
+ expected_info['build_version'] = build_parts[2]
suite_job_name = ('%s-%s' %
(build, site_rpc_interface.canonicalize_suite_name(suite)))
info = site_utils.parse_job_name(suite_job_name)