diff options
author | stanley31 <stanley.huang@canonical.com> | 2020-08-04 11:44:19 +0800 |
---|---|---|
committer | stanley31 <stanley.huang@canonical.com> | 2020-08-04 11:44:19 +0800 |
commit | 0ed8419e98b821bb80abb5adfaf8db9640226c2a (patch) | |
tree | 5949afd737847654e51bc690dbbb4cd985230e37 | |
parent | 81593ad6526d3ac3c13db3c1a5830b69c2b10797 (diff) |
Add a test case to compare OEM meta version
- create a check-oem-package-source.py. - create check-oem-platform-meta and check-oem-platform-factory-meta. - create new meta test plan for somerville, stella and sutton.
-rwxr-xr-x | bin/check-oem-package-source.py | 382 | ||||
-rw-r--r-- | jobs/misc/misc-generic.txt | 15 | ||||
-rw-r--r-- | jobs/somerville/somerville-oem-meta.pxu | 9 | ||||
-rw-r--r-- | jobs/stella/stella-oem-meta.pxu | 10 | ||||
-rw-r--r-- | jobs/sutton/sutton-oem-meta.pxu | 11 | ||||
-rw-r--r-- | units/somerville-audio.pxu | 2 | ||||
-rw-r--r-- | units/somerville-auto.pxu | 2 | ||||
-rw-r--r-- | units/somerville-bios-regression.pxu | 2 | ||||
-rw-r--r-- | units/somerville-cpu.pxu | 2 | ||||
-rw-r--r-- | units/somerville-dock.pxu | 2 | ||||
-rw-r--r-- | units/somerville-fv-regression.pxu | 2 | ||||
-rw-r--r-- | units/somerville-graphic.pxu | 2 | ||||
-rw-r--r-- | units/somerville-iev-full-20-04.pxu | 2 | ||||
-rw-r--r-- | units/somerville-iev-regression.pxu | 2 | ||||
-rw-r--r-- | units/somerville-stress.pxu | 2 | ||||
-rw-r--r-- | units/somerville-touch-webcam.pxu | 2 | ||||
-rw-r--r-- | units/somerville-wireless.pxu | 2 | ||||
-rw-r--r-- | units/stella-full-20-04.pxu | 4 | ||||
-rw-r--r-- | units/stella-regression.pxu | 4 | ||||
-rw-r--r-- | units/sutton-full-20-04.pxu | 6 |
20 files changed, 445 insertions, 20 deletions
diff --git a/bin/check-oem-package-source.py b/bin/check-oem-package-source.py new file mode 100755 index 0000000..1a12944 --- /dev/null +++ b/bin/check-oem-package-source.py @@ -0,0 +1,382 @@ +#!/usr/bin/env python3 +import os, sys, argparse +import subprocess, re, json, copy + +DEFAULT_OEM_URL = r"http://\w*\.archive.canonical.com" +DEFAULT_UBUNTU_URL = r"http://\w*\.?archive.ubuntu.com" +DEFAULT_SOURCE_DIR = "/etc/apt/sources.list.d/" +UNSUPPORTED_CODENAME = ["bionic", "xenial", "trusty"] +OEM_KEY = "OEM_Version" +UBUNTU_KEY = "Ubuntu_Version" +SHELL_ENV = os.environ +SHELL_ENV.update({"LANG": "en_us.utf-8"}) + +def issue_cmd(cmd): + output = None; result = False + try: + process = subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=True, + env=SHELL_ENV + ) + output, stderr = process.communicate() + output = output.decode("utf-8") + stderr = stderr.decode("utf-8") + result = process.returncode + except Exception as err: + print(err) + + print("Command: {}\nResponse: {}".format(cmd, output)) + if process.returncode != 0: + print("Error Message: {}".format(stderr), file=sys.stderr) + + return result, output + +def _get_platform_name(): + platform_cmd = "ubuntu-report show | grep DCD" + platform_pattern = r"canonical-(\w*-\w*)-\S*\+([^+ ]*)\+\S*" + ret_code, dct_data = issue_cmd(platform_cmd) + if ret_code != 0: + print("Failed to get DCD data", file=sys.stderr) + sys.exit(1) + + filter_result = re.search(platform_pattern, dct_data) + if filter_result: + project, platform = filter_result.groups() + else: + print("Failed to filter out the project name or platform name", file=sys.stderr) + sys.exit(1) + + return project, platform + +def _get_code_name(): + codename_cmd = "lsb_release -cs" + ret_code, codename = issue_cmd(codename_cmd) + + if ret_code != 0: + print("Failed to get codename", file=sys.stderr) + sys.exit(1) + + return codename + +def gen_oem_meta_name(project, platform, factory): + oem_metaname = None + + if project in ["oem-sutton", "oem-stella"]: + # laptop platform format: sutton-newell-ace + # pc platform format: pc-stella-meric- + # need to trim if pc- is exists. + platform = platform[3:].rsplit("-", 2) if platform.startswith("pc-") else platform.rsplit("-", 2) + if len(platform) != 3: + print("Unexpected platform format: ", platform, file=sys.stderr) + sys.exit(1) + # Look into /etc/apt/sources.list.d/ + pattern = r"^(oem-{}-\S*)-meta)\.list$".format(platform[0].replace("-", ".", 1)) + files = os.listdir(DEFAULT_SOURCE_DIR) + for filename in files: + result = re.search(pattern, filename) + if result: + oem_metaname = result.groups()[0] + break + elif project in ["oem-somerville"]: + # Replace "fossa-" for somerville + platform = platform.replace("fossa-", "") + oem_metaname = "{}-{}".format(project, platform) + else: + print("Unknown project name: ", project, file=sys.stderr) + sys.exit(1) + + if not oem_metaname: + print("Failed to generate oem-meta name", file=sys.stderr) + sys.exit(1) + else: + if factory: + oem_metaname = oem_metaname.replace(project, project + "-factory") + oem_metaname += "-meta" + + return oem_metaname + +def check_pkg_in_repos(package_name): + + command = "apt-cache pkgnames | grep {}".format(package_name) + ret_code, output = issue_cmd(command) + return True if ret_code == 0 else False + +def get_package_info(package_name, oem_url=None, ubuntu_url=None): + main_pkg_name_filter = r"^(\S*):" + installed_ver_filter = r" Installed: (\S*)" + candidate_ver_filter = r" Candidate: (\S*)" + version_table_filter = "Version table:" + package_info = {} + + def _parse_version_table(data): + detail_version_filter = r"\n[ \*]{4} (\S+) [0-9]+\n" + archive_filter = r"[ ]+([0-9]+ [^\n]+)\n*" + detail_arch_filter = r"(?P<priority>[0-9]+) (?P<url>\S+) (?P<repo>\S+) (?P<platform>\S+ \S+)" + oem_url_filter = oem_url or DEFAULT_OEM_URL + ubuntu_url_filter = ubuntu_url or DEFAULT_UBUNTU_URL + version_map = {} + archive_map = {OEM_KEY: {}, UBUNTU_KEY: {}} + + # Split data from version table + versions = re.split(detail_version_filter, data) + tmp_version = "" + for _data in versions: + if _data and not _data.startswith(" "): + tmp_version = _data + elif _data and _data.startswith(" ") and tmp_version: + version_map.update({tmp_version: _data}) + + # To parse available archive for specific version + for version, data in version_map.items(): + archives = re.split(archive_filter, data) + archives = [archive for archive in archives if archive] + archive_detail = [] + + for archive in archives: + if archive.find("100 /var/lib/dpkg/status") != -1: + archive_detail.append({"priority": "100", "repo": "/var/lib/dpkg/status"}) + continue + + details = re.search(detail_arch_filter, archive) + if details: + ver_infos = details.groupdict() + archive_detail.append(copy.deepcopy(ver_infos)) + if not archive_map.get(OEM_KEY): + validate_oem = re.search(oem_url_filter, ver_infos.get("url", "")) + if validate_oem: + [ver_infos.pop(key) for key in ["priority", "platform"]] + ver_infos.update({"version": version}) + archive_map[OEM_KEY].update(ver_infos) + continue + if not archive_map.get(UBUNTU_KEY): + validate_ubuntu = re.search(ubuntu_url_filter, ver_infos.get("url", "")) + if validate_ubuntu: + [ver_infos.pop(key) for key in ["priority", "platform"]] + ver_infos.update({"version": version}) + archive_map[UBUNTU_KEY].update(ver_infos) + continue + version_map.update({version: archive_detail}) + + archive_map.update({"DetailedVersionInfo": version_map}) + return archive_map + + command = "apt-cache policy {}".format(package_name) + ret_code, output = issue_cmd(command) + + if ret_code == 0: + # To collect package name + result = re.search(main_pkg_name_filter, output) + pkg_name = result.groups()[0] if result else None + # To collect installed version + result = re.search(installed_ver_filter, output) + installed_ver = result.groups()[0] if result else None + # To collect candidate version + result = re.search(candidate_ver_filter, output) + candidate_ver = result.groups()[0] if result else None + # To collect detail version information + idx_pos = output.find(version_table_filter) + version_table = output[idx_pos+len(version_table_filter):] if idx_pos != -1 else None + version_data = _parse_version_table(version_table) + + if all([pkg_name, installed_ver, candidate_ver, version_data]): + version_data.update({"Installed": installed_ver, "Candidate": candidate_ver}) + package_info = {package_name: version_data} + else: + print("Unable to parse the detailed information of {} package.".format( + package_name), file=sys.stderr) + else: + print("apt-cache policy command failed for {} package.".format( + package_name), file=sys.stderr) + + return package_info + +def check_version_rule(_current_ver, _oem_ver, _ubuntu_ver): + + def _compare_version(ver_a, ver_b, operator): + command = "dpkg --compare-versions {ver1} {op} {ver2}".format( + ver1=ver_a, ver2=ver_b, op=operator) + ret_code, output = issue_cmd(command) + return True if ret_code == 0 else False + + if not _current_ver or re.search("[Nn]one", _current_ver) or not _oem_ver: + print("Unable to compare the version.\n\tInstalled version: {}\n\tOEM version: {}".format( + _current_ver, _oem_ver)) + oem_validate = False + else: + # The OEM-meta version in manifest should be less or equal to the version in OEM archive + oem_validate = _compare_version(_current_ver, _oem_ver, "le") + + if not _oem_ver or not _ubuntu_ver: + print("Unable to compare the version.\n\tOEM version: {}\n\tUbuntu version: {}".format( + _oem_ver, _ubuntu_ver)) + ubuntu_validate = False + else: + # The OEM-meta version in OEM archive should be great or equal to the version in Ubuntu archiver + ubuntu_validate = _compare_version(_oem_ver, _ubuntu_ver, "ge") + + return all([oem_validate, ubuntu_validate]) + +def check_source_list_content(source_list_file, meta_name, codename, uri=""): + result = False + + try: + # To defined correct uri for different project + # If meta_name start with unknown project name, uses default. + if meta_name.startswith("oem-somerville"): + uri = "http://dell.archive.canonical.com" + repo_comp = re.search(r"oem-([\w\d-]*)-meta", meta_name).groups()[0] + elif meta_name.startswith("oem-sutton"): + uri = "http://lenovo.archive.canonical.com" + repo_comp = meta_name.split("-")[1] + elif meta_name.startswith("oem-stella"): + uri = "http://hp.archive.canonical.com" + repo_comp = meta_name.split("-")[1] + else: + uri = uri or DEFAULT_OEM_URL + repo_comp = meta_name + + if not all([uri, repo_comp, codename]): + raise ValueError + except ValueError: + print("Unexpected arguments! URI: {}, DIST: {}, REPO: {}".format( + uri, codename, meta_name)) + return result + except AttributeError: + print(("Unable to filter out the repository components" + " for {} package.").format(meta_name)) + return result + + validate_source_cmd = 'grep "^deb {uri}/ {dist} {comp}$"'.format( + uri=uri, dist=codename, comp=repo_comp) + + + ret_code, output = issue_cmd(" ".join([validate_source_cmd, + source_list_file])) + if ret_code == 0: + result = True + else: + print("the content in {}.list is incorrect".format( + meta_name, file=sys.stderr)) + + print("\n## Compare Package Content:\t{} ##".format( + "Passed" if result else "Failed")) + + return result + +def _get_package_source_file(meta_name): + filename = None + file_pattern = r"(/etc/apt/sources.list.d/{}.list)\n".format(meta_name) + command = "dpkg -L " + meta_name + ret_code, output = issue_cmd(command) + + if ret_code == 0: + file_result = re.search(file_pattern, output) + if file_result: + filename = file_result.groups()[0] + else: + print("{} not in sources.list".format(meta_name, file=sys.stderr)) + else: + print("{} package not installed".format(meta_name, file=sys.stderr)) + + return filename + +def check_meta_version(version_infos): + # OEM-Meta package should be named as "oem-${project_name}-${platform_name}-meta" + + # list all available packages from apt repositories + # What meta packages should be list in ? + # > apt-cache pkgnames + # The OEM-Meta package should be available from apt repositories + + # Collect the version information for meta package + # > apt-cache policy $meta-package-name + # Output: Example + # oem-somerville-three-eyed-raven-meta: + # Installed: 20.04ubuntu4 + # Candidate: 20.04ubuntu4 + # *** 20.04ubuntu4 500 -> *** means installed versions + # 500 http://dell.archive.canonical.com focal/somerville-three-eyed-raven amd64 Packages + # 500 http://dell.archive.canonical.com focal/somerville-three-eyed-raven i386 Packages + # 100 /var/lib/dpkg/status + # 20.04ubuntu2 500 + # 500 http://us.archive.canonical.com focal/main amd64 Packages + # 500 http://us.archive.canonical.com focal/main i386 Packages + # + # This OEM-Meta package should be avaialble from OEM archive, stock ubuntu archive and current image + + # Compare the version between OEM archive, stock ubuntu archive and current image. + # Uses dpkg utitlity to compare version + # > dpkg --compare-versions ${a_version} ${b_version} + cmp_result = False + + oem_ver = version_infos.get(OEM_KEY, {}) + ubuntu_ver = version_infos.get(UBUNTU_KEY, {}) + current_ver = version_infos.get("Installed", "") + cmp_result = check_version_rule(current_ver, oem_ver.get("version", ""), + ubuntu_ver.get("version", "")) + + print("## Compare Version:\t\t{} ##".format( + "Passed" if cmp_result else "Failed")) + + return cmp_result + +def _register_arguments(): + + description = ("This utiltiy is uses to check the oem meta file " + "and validate the version between Ubuntu archive and OEM archive." + "\nFor focal and later.") + parser = argparse.ArgumentParser( + description=description, formatter_class=argparse.RawTextHelpFormatter) + parser.add_argument("--check-factory", action="store_true", default=False) + parser.add_argument("--meta", type=str, default="") + parser.add_argument("--no-check-version", action="store_true", default=False) + parser.add_argument("--no-check-content", action="store_true", default=False) + parser.add_argument("--source-file", type=str, default="") + + return parser.parse_args() + +def main(): + + args = _register_arguments() + codename = _get_code_name() + if args.meta == "": + project, platform = _get_platform_name() + oem_metaname = gen_oem_meta_name(project, platform, args.check_factory) + else: + # User need to provided a package name + oem_metaname = args.meta + + results = [] + if not args.no_check_content: + check_result = False + source_file = args.source_file or _get_package_source_file(oem_metaname) + + if source_file: + check_result = check_source_list_content( + source_file, oem_metaname, codename) + results.append(check_result) + + if not args.no_check_version and codename not in UNSUPPORTED_CODENAME: + cmp_result = False + if check_pkg_in_repos(oem_metaname): + pkg_info = get_package_info(oem_metaname) + print("## Detailed Information about the {} package ##\n{}\n\n".format( + oem_metaname, json.dumps(pkg_info, indent=4))) + meta_pkg_info = pkg_info.get(oem_metaname) + if not meta_pkg_info: + print("Unable to get OEM metadata: {}".format(oem_metaname), + file=sys.stderr) + else: + cmp_result = check_meta_version(meta_pkg_info) + else: + print("{} package is not exists.".format(oem_metaname), file=sys.stderr) + results.append(cmp_result) + + if results and not all(results): + sys.exit(1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/jobs/misc/misc-generic.txt b/jobs/misc/misc-generic.txt index 0f3f53b..dea1b8b 100644 --- a/jobs/misc/misc-generic.txt +++ b/jobs/misc/misc-generic.txt @@ -39,3 +39,18 @@ command: check_package.sh gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly lib _summary: Check if unwanted packages are installed _description: For some packages which may have license or patent issues, this case checks if they are installed. + +plugin: shell +id: misc/generic/check-oem-platform-meta +command: check-oem-package-source.py +_summary: Check OEM Platform mata exists in manifest, OEM and Ubuntu archive +_description: + To validate the OEM platform meta in manifest, OEM archive and Ubuntu archive. + This test cases only supported in focal and later. + +plugin: shell +id: misc/generic/check-oem-platform-factory-meta +command: check-oem-package-source.py --check-factory --no-check-version +_summary: Check OEM Platform factory mata exists in manifest, OEM and Ubuntu archive +_description: + To validate the OEM platform factory meta in manifest, OEM archive and Ubuntu archive. \ No newline at end of file diff --git a/jobs/somerville/somerville-oem-meta.pxu b/jobs/somerville/somerville-oem-meta.pxu new file mode 100644 index 0000000..903b17f --- /dev/null +++ b/jobs/somerville/somerville-oem-meta.pxu @@ -0,0 +1,9 @@ +unit: test plan +id: somerville-oem-meta +_name: Somerville OEM meta test +_description: Somerville OEM Meta file test +include: + somerville/platform-meta-test + misc/generic/check-oem-platform-meta +nested_part: + diff --git a/jobs/stella/stella-oem-meta.pxu b/jobs/stella/stella-oem-meta.pxu new file mode 100644 index 0000000..436fcf5 --- /dev/null +++ b/jobs/stella/stella-oem-meta.pxu @@ -0,0 +1,10 @@ +unit: test plan +id: stella-oem-meta +_name: Stella OEM meta test +_description: Stella OEM meta test +include: + stella/sourcelist/.*-repository$ + misc/generic/check-oem-platform-meta + misc/generic/check-oem-platform-factory-meta +nested_part: + diff --git a/jobs/sutton/sutton-oem-meta.pxu b/jobs/sutton/sutton-oem-meta.pxu new file mode 100644 index 0000000..5c1eb5e --- /dev/null +++ b/jobs/sutton/sutton-oem-meta.pxu @@ -0,0 +1,11 @@ +unit: test plan +id: sutton-oem-meta +_name: Sutton OEM meta test +_description: Sutton OEM meta test +include: + com.canonical.ce::sutton/sourceslist/focal-oem + com.canonical.ce::sutton/sourceslist/security + com.canonical.ce::sutton/sourceslist/meta + misc/generic/check-oem-platform-meta + misc/generic/check-oem-platform-factory-meta +nested_part: diff --git a/units/somerville-audio.pxu b/units/somerville-audio.pxu index 776d16d..ecc42a8 100644 --- a/units/somerville-audio.pxu +++ b/units/somerville-audio.pxu @@ -10,9 +10,9 @@ include: somerville/phase-sku somerville/phase-platform somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard nested_part: + somerville-oem-meta oem-generic-audio power-management-s com.canonical.certification::power-management-reboot-poweroff-cert diff --git a/units/somerville-auto.pxu b/units/somerville-auto.pxu index 32295db..c6e3156 100644 --- a/units/somerville-auto.pxu +++ b/units/somerville-auto.pxu @@ -10,8 +10,8 @@ include: somerville/phase-sku somerville/phase-platform somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard nested_part: + somerville-oem-meta oem-generic-auto com.canonical.certification::stress-suspend-30-cycles-with-reboots-automated diff --git a/units/somerville-bios-regression.pxu b/units/somerville-bios-regression.pxu index 2c6ecc5..e8be229 100644 --- a/units/somerville-bios-regression.pxu +++ b/units/somerville-bios-regression.pxu @@ -13,9 +13,9 @@ include: somerville/query-bto-version somerville/manifest_version somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard nested_part: + somerville-oem-meta com.canonical.certification::submission-cert-full com.canonical.certification::audio-cert-full oobe diff --git a/units/somerville-cpu.pxu b/units/somerville-cpu.pxu index 5458e20..1d90683 100644 --- a/units/somerville-cpu.pxu +++ b/units/somerville-cpu.pxu @@ -8,11 +8,11 @@ include: com.canonical.certification::info/detect_dell_recovery somerville/recovery/desktop-disk somerville/phase-sku - somerville/phase-platform somerville/dell-repository somerville/platform-meta-test somerville/desktop-kpi-dashboard nested_part: + somerville-oem-meta oem-generic-graphic power-management-s com.canonical.certification::cpu-cert-full diff --git a/units/somerville-dock.pxu b/units/somerville-dock.pxu index 8c1ba91..81944cf 100644 --- a/units/somerville-dock.pxu +++ b/units/somerville-dock.pxu @@ -10,8 +10,8 @@ include: somerville/phase-sku somerville/phase-platform somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard nested_part: + somerville-oem-meta oem-generic-docking mandatory_include: diff --git a/units/somerville-fv-regression.pxu b/units/somerville-fv-regression.pxu index c5e441a..c31fe3e 100644 --- a/units/somerville-fv-regression.pxu +++ b/units/somerville-fv-regression.pxu @@ -10,11 +10,11 @@ include: somerville/phase-sku somerville/phase-platform somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard com.canonical.certification::audio/channels com.canonical.certification::audio/external-lineout nested_part: + somerville-oem-meta oobe oem-generic-blocker power-management-s diff --git a/units/somerville-graphic.pxu b/units/somerville-graphic.pxu index 5f99d8d..4472de9 100644 --- a/units/somerville-graphic.pxu +++ b/units/somerville-graphic.pxu @@ -10,9 +10,9 @@ include: somerville/phase-sku somerville/phase-platform somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard nested_part: + somerville-oem-meta oem-generic-graphic power-management-s com.canonical.certification::power-management-reboot-poweroff-cert diff --git a/units/somerville-iev-full-20-04.pxu b/units/somerville-iev-full-20-04.pxu index 680aef4..ca51432 100644 --- a/units/somerville-iev-full-20-04.pxu +++ b/units/somerville-iev-full-20-04.pxu @@ -10,12 +10,12 @@ include: somerville/phase-sku somerville/phase-platform somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard somerville/fingerprint-login somerville/fingerprint-negative somerville/fingerprint-positive nested_part: + somerville-oem-meta oem-generic-full-20-04 power-management-s mandatory_include: diff --git a/units/somerville-iev-regression.pxu b/units/somerville-iev-regression.pxu index 3ddb36b..fd6ba9d 100644 --- a/units/somerville-iev-regression.pxu +++ b/units/somerville-iev-regression.pxu @@ -10,10 +10,10 @@ include: somerville/phase-sku somerville/phase-platform somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard com.canonical.certification::audio/external-lineout nested_part: + somerville-oem-meta oem-generic-blocker power-management-s mandatory_include: diff --git a/units/somerville-stress.pxu b/units/somerville-stress.pxu index bd1423e..75365fb 100644 --- a/units/somerville-stress.pxu +++ b/units/somerville-stress.pxu @@ -10,8 +10,8 @@ include: somerville/phase-sku somerville/phase-platform somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard nested_part: + somerville-oem-meta oem-generic-stress mandatory_include: diff --git a/units/somerville-touch-webcam.pxu b/units/somerville-touch-webcam.pxu index c1cf98a..1b76758 100644 --- a/units/somerville-touch-webcam.pxu +++ b/units/somerville-touch-webcam.pxu @@ -10,9 +10,9 @@ include: somerville/phase-sku somerville/phase-platform somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard nested_part: + somerville-oem-meta oem-generic-touch-webcam power-management-s com.canonical.certification::power-management-reboot-poweroff-cert diff --git a/units/somerville-wireless.pxu b/units/somerville-wireless.pxu index 7ac925e..88e4e9f 100644 --- a/units/somerville-wireless.pxu +++ b/units/somerville-wireless.pxu @@ -10,9 +10,9 @@ include: somerville/phase-sku somerville/phase-platform somerville/dell-repository - somerville/platform-meta-test somerville/desktop-kpi-dashboard nested_part: + somerville-oem-meta oem-generic-wireless power-management-s com.canonical.certification::power-management-reboot-poweroff-cert diff --git a/units/stella-full-20-04.pxu b/units/stella-full-20-04.pxu index c3f5666..26d3206 100644 --- a/units/stella-full-20-04.pxu +++ b/units/stella-full-20-04.pxu @@ -1,4 +1,4 @@ -# Version: 1.0.0 2020-04-23 +# Version: 1.0.1 2020-07-26 id: stella-full-20-04 _name: Stella Full Test 20.04 unit: test plan @@ -6,11 +6,11 @@ _description: Stella Full 20.04 include: stella/hp-documents stella/hp-wallpaper - stella/sourcelist/.*-repository$ stella/desktop-kpi-dashboard stella/fingerprint-login stella/fingerprint-negative stella/fingerprint-positive nested_part: + stella-oem-meta oem-generic-full-20-04 power-management-stella diff --git a/units/stella-regression.pxu b/units/stella-regression.pxu index c73141b..67d2178 100644 --- a/units/stella-regression.pxu +++ b/units/stella-regression.pxu @@ -1,4 +1,4 @@ -# Version: 1.1.1 2020-04-24 +# Version: 1.1.2 2020-07-26 id: stella-regression _name: Stella Regression Test unit: test plan @@ -6,9 +6,9 @@ _description: Stella Regression include: stella/hp-documents stella/hp-wallpaper - stella/sourcelist/.*-repository$ stella/desktop-kpi-dashboard nested_part: + stella-oem-meta oem-generic-blocker power-management-stella diff --git a/units/sutton-full-20-04.pxu b/units/sutton-full-20-04.pxu index 2deb2db..6a74ea4 100644 --- a/units/sutton-full-20-04.pxu +++ b/units/sutton-full-20-04.pxu @@ -1,13 +1,10 @@ -# Version: 1.0.0 2020-04-22 +# Version: 1.0.1 2020-07-28 id: sutton-full-20-04 _name: Sutton Full Test 20.04 unit: test plan _description: Suttion Full Tests for 20.04 include: com.canonical.certification::recovery_info_attachment - com.canonical.ce::sutton/sourceslist/focal-oem - com.canonical.ce::sutton/sourceslist/security - com.canonical.ce::sutton/sourceslist/meta com.canonical.ce::sutton/user-documents com.canonical.ce::sutton/desktop-kpi-dashboard com.canonical.ce::sutton/fingerprint-login @@ -15,5 +12,6 @@ include: com.canonical.ce::sutton/fingerprint-positive nested_part: oem-generic-full-20-04 + sutton-oem-meta mandatory_include: exclude: |