summaryrefslogtreecommitdiff
diff options
authorstanley31 <stanley.huang@canonical.com>2020-08-04 11:44:19 +0800
committerstanley31 <stanley.huang@canonical.com>2020-08-04 11:44:19 +0800
commit0ed8419e98b821bb80abb5adfaf8db9640226c2a (patch)
tree5949afd737847654e51bc690dbbb4cd985230e37
parent81593ad6526d3ac3c13db3c1a5830b69c2b10797 (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-xbin/check-oem-package-source.py382
-rw-r--r--jobs/misc/misc-generic.txt15
-rw-r--r--jobs/somerville/somerville-oem-meta.pxu9
-rw-r--r--jobs/stella/stella-oem-meta.pxu10
-rw-r--r--jobs/sutton/sutton-oem-meta.pxu11
-rw-r--r--units/somerville-audio.pxu2
-rw-r--r--units/somerville-auto.pxu2
-rw-r--r--units/somerville-bios-regression.pxu2
-rw-r--r--units/somerville-cpu.pxu2
-rw-r--r--units/somerville-dock.pxu2
-rw-r--r--units/somerville-fv-regression.pxu2
-rw-r--r--units/somerville-graphic.pxu2
-rw-r--r--units/somerville-iev-full-20-04.pxu2
-rw-r--r--units/somerville-iev-regression.pxu2
-rw-r--r--units/somerville-stress.pxu2
-rw-r--r--units/somerville-touch-webcam.pxu2
-rw-r--r--units/somerville-wireless.pxu2
-rw-r--r--units/stella-full-20-04.pxu4
-rw-r--r--units/stella-regression.pxu4
-rw-r--r--units/sutton-full-20-04.pxu6
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: