diff options
author | Loys Ollivier <lollivier@baylibre.com> | 2018-01-03 15:56:12 +0100 |
---|---|---|
committer | Loys Ollivier <lollivier@baylibre.com> | 2018-01-10 15:31:32 +0100 |
commit | 927d952dae1faa84a747ccd5b9885ed21ccc69bd (patch) | |
tree | 9a63895686f5fcf78c005776feaeaf4c5bd55c4c | |
parent | 788b31a122c3823d5e756524187975a2ad14cac6 (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.py | 42 | ||||
-rwxr-xr-x | utils/create-jobs.py | 3 |
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, |