summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoys Ollivier <lollivier@baylibre.com>2018-01-03 15:56:12 +0100
committerLoys Ollivier <lollivier@baylibre.com>2018-01-10 15:31:32 +0100
commit927d952dae1faa84a747ccd5b9885ed21ccc69bd (patch)
tree9a63895686f5fcf78c005776feaeaf4c5bd55c4c
parent788b31a122c3823d5e756524187975a2ad14cac6 (diff)
utils: define test-plans based on build-type
As the list of test is expending, we want to be able to specify test plans grouping several test definitions. These test plans are build type specific. Create a config file that specifies the test plans for each build type. If the user does not specify the tests to run then use the default ones for the build-type. Change-Id: Ied4e9f80d3e42787174189cd08499a2906e500ef Signed-off-by: Loys Ollivier <lollivier@baylibre.com>
-rw-r--r--templates/config/default.cfg (renamed from templates/URLs/default.cfg)4
-rw-r--r--utils/agljobtemplate.py42
-rwxr-xr-xutils/create-jobs.py3
3 files changed, 30 insertions, 19 deletions
diff --git a/templates/URLs/default.cfg b/templates/config/default.cfg
index 4c2adec..ba43270 100644
--- a/templates/URLs/default.cfg
+++ b/templates/config/default.cfg
@@ -2,10 +2,14 @@
style = AGL
[default]
urlbase = https://download.automotivelinux.org/AGL/release/dab/4.0.2/
+test_plan = ["health-test","smoke"]
[release]
urlbase = https://download.automotivelinux.org/AGL/release/
+test_plan = ["all"]
[weekly]
[daily]
urlbase = https://download.automotivelinux.org/AGL/snapshots/
+test_plan = ["health-test","smoke", "yocto-ptest"]
[ci]
urlbase = https://download.automotivelinux.org/AGL/upload/ci/
+test_plan = ["health-test","smoke"]
diff --git a/utils/agljobtemplate.py b/utils/agljobtemplate.py
index 25efab6..a392845 100644
--- a/utils/agljobtemplate.py
+++ b/utils/agljobtemplate.py
@@ -5,24 +5,20 @@ import os
import jinja2
import ConfigParser
import urlparse
+import ast
def get_extension(path):
return path.split('.')[-1]
-def parse_url_file(template_path, url_file, build_type):
- url_file_path = template_path + '/URLs/' + url_file
+def parse_cfg_file(template_path, cfg_file, build_type):
+ url_file_path = template_path + '/config/' + cfg_file
try:
with open(url_file_path):
cfg = ConfigParser.ConfigParser()
cfg.read(url_file_path)
- config = cfg.items(build_type)
- for section in config:
- if section[0] == "test_plan":
- print section[1]
- print build_type
- return cfg.get(build_type, 'urlbase'), cfg.get('infra', 'style')
+ return cfg.items(build_type), cfg.get('infra', 'style')
except IOError as err:
raise err
@@ -93,27 +89,25 @@ class Agljobtemplate(object):
rfs_image=None, kernel_image=None, dtb_image=None, modules_image=None,
build_type=None,
build_version=None):
- test_templates = []
if machine not in self.machines:
raise RuntimeError("{} is not a available machine".format(machine))
- for t in tests:
- if t in self.tests:
- test_templates.append(os.path.join(self.TESTS_DIR, t + '.jinja2'))
- else:
- raise RuntimeError("{} is not an available test".format(t))
-
# Populate jinja substitution dict
job = {}
job['name'] = job_name
job['yocto_machine'] = machine
job['priority'] = priority
+ defaults, infra = parse_cfg_file(self._template_path, 'default.cfg', build_type)
+
# If the user doesn't specify an URL, use the default one from the build-type
if url is None:
- url_base, infra = parse_url_file(self._template_path, 'default.cfg', build_type)
if infra == 'AGL':
+ url_base = ''
+ for section in defaults:
+ if section[0] == "urlbase":
+ url_base = section[1]
# If not set, create a build_version from other args
if (not build_version) and (url_branch) and (url_version):
build_version = 'AGL-' + build_type + '-' + url_branch + '-' + url_version
@@ -132,6 +126,22 @@ class Agljobtemplate(object):
url = urlparse.urljoin(url_base, url_fragment)
+ test_templates = []
+ # If the user doesn't specify tests, use the default ones from the build-type
+ if not tests:
+ if infra == 'AGL':
+ for section in defaults:
+ if section[0] == "test_plan":
+ tests = ast.literal_eval(section[1])
+
+ if 'all' in tests:
+ tests = self.tests
+ for t in tests:
+ if t in self.tests:
+ test_templates.append(os.path.join(self.TESTS_DIR, t + '.jinja2'))
+ else:
+ raise RuntimeError("{} is not an available test".format(t))
+
job['urlbase'] = url
job['test_templates'] = test_templates
diff --git a/utils/create-jobs.py b/utils/create-jobs.py
index 28fefa4..ad0c428 100755
--- a/utils/create-jobs.py
+++ b/utils/create-jobs.py
@@ -68,9 +68,6 @@ def main():
ajt = agljobtemplate.Agljobtemplate(templates_dir)
args = parse_cmdline(ajt.machines, ajt.tests, ajt.rfs_types)
- if args.tests is not None and 'all' in args.tests:
- args.tests = ajt.tests
-
job = ajt.render_job(url=args.url, url_branch=args.url_branch, url_version=args.url_version,
machine=args.machine, tests=args.tests, priority=args.priority,
rfs_type=args.rfs_type, job_name=args.job_name,