summaryrefslogtreecommitdiff
diff options
authorPMR <pmr@pmr-lander>2020-09-16 01:56:13 +0000
committerPMR <pmr@pmr-lander>2020-09-16 01:56:13 +0000
commit18d34722547fd752ba6d4401a83ea6b147c59d76 (patch)
treeb8771a6889730281780272eec2e64842a47baae3
parent156dbdc09ac1fbeff078386d6a4bd071c7fd2cd0 (diff)
parentd559672d80bae1aded753dc568e232012151213e (diff)
Merge #386937 from ~stanley31/oem-qa-checkbox:oem_meta_version_check
-rwxr-xr-xbin/check-oem-package-source.py481
-rw-r--r--jobs/misc/misc-generic.txt44
-rw-r--r--jobs/somerville/somerville-oem-meta.pxu13
-rw-r--r--jobs/stella/stella-oem-meta.pxu14
-rw-r--r--jobs/sutton/sutton-oem-meta.pxu14
-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, 581 insertions, 23 deletions
diff --git a/bin/check-oem-package-source.py b/bin/check-oem-package-source.py
new file mode 100755
index 0000000..2f9714c
--- /dev/null
+++ b/bin/check-oem-package-source.py
@@ -0,0 +1,481 @@
+#!/usr/bin/env python3
+import os
+import sys
+import argparse
+import subprocess
+import re
+import json
+import copy
+
+DEFAULT_OEM_URL = r"http://\w*\.archive.canonical.com"
+DEFAULT_UBUNTU_URL = r"http://[\w.-]+/ubuntu"
+OEM_URL_PATTERN = {
+ "oem-somerville": "http://dell.archive.canonical.com",
+ "oem-sutton": "http://lenovo.archive.canonical.com",
+ "oem-stella": "http://hp.archive.canonical.com",
+ "default": r"http://\w*\.archive.canonical.com"
+}
+OEM_DELL_URL = "http://dell.archive.canonical.com"
+OEM_LENOVO_URL = "http://lenovo.archive.canonical.com"
+OEM_HP_URL = "http://hp.archive.canonical.com"
+DEFAULT_SOURCE_DIR = "/etc/apt/sources.list.d/"
+UNSUPPORTED_CODENAME = ["bionic", "xenial", "trusty"]
+OEM_KEY = "OEM_VersionInfo"
+UBUNTU_KEY = "Ubuntu_VersionInfo"
+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, meta_type):
+ project_code = platform_code = 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.
+ if platform.startswith("pc-"):
+ platform = platform[3:].rsplit("-", 2)
+ 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:
+ project_code = result.groups()[0]
+ platform_code = result.groups()[1]
+ break
+ elif project in ["oem-somerville"]:
+ # Replace "fossa-" for somerville
+ platform_code = platform.replace("fossa-", "")
+ project_code = project
+ else:
+ print("Unknown project name: ", project, file=sys.stderr)
+ sys.exit(1)
+
+ if platform_code:
+ if meta_type == "platform":
+ oem_metaname = "{}{}-{}-meta".format(
+ project_code, "-factory" if factory else "", platform_code)
+ elif meta_type == "project":
+ oem_metaname = "{}{}-meta".format(
+ project_code, "-factory" if factory else "")
+ else:
+ oem_metaname = None
+ else:
+ oem_metaname = None
+
+ if not oem_metaname:
+ print("Failed to generate oem-meta name", file=sys.stderr)
+ sys.exit(1)
+
+ 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+) "
+ r"(?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
+ ignore_content = ["priority", "platform"]
+ 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 ignore_content]
+ 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 ignore_content]
+ 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 and output:
+ # 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)
+ len_tmp = len(version_table_filter)
+ version_table = output[idx_pos+len_tmp:] 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_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 = OEM_DELL_URL
+ repo_comp = re.search(r"oem-([\w\d-]*)-meta",
+ meta_name).groups()[0]
+ elif meta_name.startswith("oem-sutton"):
+ uri = OEM_LENOVO_URL
+ repo_comp = meta_name.split("-")[1]
+ elif meta_name.startswith("oem-stella"):
+ uri = OEM_HP_URL
+ 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(package, version_infos, check_stock):
+ # OEM-Meta package should be named as
+ # "oem-${project_name}-${platform_name}-meta"
+
+ # list all available packages from apt repositories
+ # > apt-cache pkgnames
+
+ # Collect the version information for meta package
+ # > apt-cache policy $meta-package-name
+ #
+ # 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}
+ 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
+
+ cmp_result = False
+
+ oem_ver = version_infos.get(OEM_KEY, {}).get("version", "")
+ real_oem_url = version_infos.get(OEM_KEY, {}).get("url", "")
+ oem_url_mapping = [OEM_URL_PATTERN.get(key)
+ for key in OEM_URL_PATTERN.keys()
+ if package.startswith(key)]
+ oem_url_mapping = oem_url_mapping[0] if len(oem_url_mapping) > 0 else ""
+ current_ver = version_infos.get("Installed", "")
+
+ if current_ver == "" or re.search("[Nn]one", current_ver):
+ print("The {} package is not installed!".format(package),
+ file=sys.stderr)
+ else:
+ if oem_ver:
+ # The OEM-meta version in manifest should be less or
+ # equal to the version in OEM archive
+ oem_ver_check = _compare_version(current_ver, oem_ver, "eq")
+ print(("## Version in manifest equal to OEM archive:\t\t"
+ "{} ##").format("Passed" if oem_ver_check else "Failed"),
+ file=sys.stdout if oem_ver_check else sys.stderr)
+ oem_url_check = re.search(oem_url_mapping, real_oem_url) or False
+ print(("## Package comes from correct OEM archive:\t\t"
+ "{} ##").format("Passed" if oem_url_check else "Failed"),
+ file=sys.stdout if oem_url_check else sys.stderr)
+ else:
+ oem_ver_check = oem_url_check = False
+ print("## Package not available in OEM archive!", file=sys.stderr)
+
+ # The OEM-meta version in OEM archive should be great or
+ # equal to the version in Ubuntu archive
+ if check_stock:
+ ubuntu_ver = version_infos.get(UBUNTU_KEY, {}).get("version", "")
+ if ubuntu_ver:
+ ubuntu_check = _compare_version(ubuntu_ver, oem_ver, "le")
+ print(("## Version in Stock archive is less or equal to "
+ "OEM archive:\t\t{} ##").format(
+ "Passed" if oem_ver_check else "Failed"),
+ file=sys.stdout if ubuntu_check else sys.stderr)
+ else:
+ ubuntu_check = False
+ print("## Package not available in Ubuntu archive!",
+ file=sys.stderr)
+ else:
+ ubuntu_check = True
+
+ if oem_ver_check and oem_url_check and ubuntu_check:
+ cmp_result = True
+
+ 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(
+ "--meta",
+ type=str,
+ default="",
+ help=("OEM package name. If not specified, "
+ "generated OEM platform meta package from system."))
+ parser.add_argument("--gen-meta-type",
+ choices=["platform", "project"],
+ default="platform",
+ help="The OEM platform meta type.")
+ parser.add_argument("--factory-meta",
+ action="store_true",
+ default=False,
+ help="Check OEM Factory Platform meta package")
+ parser.add_argument("--no-check-version",
+ action="store_true",
+ default=False,
+ help="Not to check the package metadata.")
+ parser.add_argument("--check-stock",
+ action="store_false",
+ default=False,
+ help=("To check the package in stock archive is "
+ "less than OEM archive."))
+ parser.add_argument("--no-check-content",
+ action="store_true",
+ default=False,
+ help="Not to check the content in source list.")
+ parser.add_argument("--source-file",
+ type=str,
+ default="",
+ help=("Source List file. If not specified, "
+ "check OEM platform meta source list in "
+ "/etc/apt/sources.list.d/"))
+
+ 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.factory_meta,
+ args.gen_meta_type)
+ 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(oem_metaname,
+ meta_pkg_info,
+ args.check_stock)
+ 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()
diff --git a/jobs/misc/misc-generic.txt b/jobs/misc/misc-generic.txt
index 24568ca..98af1e4 100644
--- a/jobs/misc/misc-generic.txt
+++ b/jobs/misc/misc-generic.txt
@@ -17,10 +17,10 @@ command: sed -i 's/\#Storage=auto/Storage=persistent/' /etc/systemd/journald.con
_summary: Set journald to preserve logs during stress test
_description:
PURPOSE:
- 1. To make sure system will write journald log to disk during every boot.
+ 1. To make sure system will write journald log to disk during every boot.
STEPS:
1. Press enter key
- 2. Checkbox will modify /etc/systemd/journald.conf to set Storage=persistent
+ 2. Checkbox will modify /etc/systemd/journald.conf to set Storage=persistent
3. Then if any system hang occurs, the journald log will be preserved
VERIFICATION:
None
@@ -31,7 +31,7 @@ user: root
command: sed -i 's/\#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
_summary: Set journald to preserve logs during stress test
_description:
- To make sure system will write journald log to disk during every boot.
+ To make sure system will write journald log to disk during every boot.
plugin: shell
id: misc/generic/check-unwanted-packages
@@ -41,6 +41,44 @@ _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-project-meta
+imports: from com.canonical.certification import lsb
+requires: lsb.release >= "20.04"
+command: check-oem-package-source.py --gen-meta-type project --no-check-content
+_summary: Check OEM Project mata exists in manifest and OEM archive
+_description:
+ To validate the OEM project meta in manifest and the version same as in OEM archive.
+ This test cases only supported in focal and later.
+
+plugin: shell
+id: misc/generic/check-oem-project-factory-meta
+imports: from com.canonical.certification import lsb
+requires: lsb.release >= "20.04"
+command: check-oem-package-source.py --gen-meta-type project --factory-meta --no-check-content
+_summary: Check OEM Project factory mata exists in manifest and OEM archive
+_description:
+ To validate the OEM platform meta in manifest and the version same as in OEM archive.
+ This test cases only supported in focal and later.
+
+plugin: shell
+id: misc/generic/check-oem-platform-meta
+imports: from com.canonical.certification import lsb
+requires: lsb.release >= "20.04"
+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
+imports: from com.canonical.certification import lsb
+requires: lsb.release >= "20.04"
+command: check-oem-package-source.py --factory-meta --no-check-content
+_summary: Check OEM Platform factory mata exists in manifest and OEM archive
+_description:
+ To validate the OEM platform factory meta in manifest and the version same as in OEM archive.
+
id: misc/generic/stock_ubuntu_platform_meta
user: root
command:
diff --git a/jobs/somerville/somerville-oem-meta.pxu b/jobs/somerville/somerville-oem-meta.pxu
new file mode 100644
index 0000000..7714fc9
--- /dev/null
+++ b/jobs/somerville/somerville-oem-meta.pxu
@@ -0,0 +1,13 @@
+unit: test plan
+id: somerville-oem-meta
+category_overrides: apply "somerville" to .*
+_name: Somerville OEM meta test
+_description: Somerville OEM Meta file test
+include:
+ somerville/platform-meta-test
+ misc/generic/check-oem-project-meta
+ misc/generic/check-oem-project-factory-meta
+ misc/generic/check-oem-platform-meta
+ misc/generic/check-oem-platform-factory-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..6b07b1a
--- /dev/null
+++ b/jobs/stella/stella-oem-meta.pxu
@@ -0,0 +1,14 @@
+unit: test plan
+id: stella-oem-meta
+category_overrides: apply "stella" to .*
+_name: Stella OEM meta test
+_description: Stella OEM meta test
+include:
+ # Mark below test case first, but need to confirm is it needed for beaver
+ # stella/sourcelist/.*-repository$
+ misc/generic/check-oem-project-meta
+ misc/generic/check-oem-project-factory-meta
+ 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..5eb01a7
--- /dev/null
+++ b/jobs/sutton/sutton-oem-meta.pxu
@@ -0,0 +1,14 @@
+unit: test plan
+id: sutton-oem-meta
+category_overrides: apply "sutton" to .*
+_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-project-meta
+ misc/generic/check-oem-project-factory-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 b48ffc6..341238b 100644
--- a/units/somerville-audio.pxu
+++ b/units/somerville-audio.pxu
@@ -11,9 +11,9 @@ include:
somerville/phase-platform
somerville/dell-repository
somerville/installation
- 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 3661efa..7adc715 100644
--- a/units/somerville-auto.pxu
+++ b/units/somerville-auto.pxu
@@ -11,8 +11,8 @@ include:
somerville/phase-platform
somerville/dell-repository
somerville/installation
- 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 3764630..224ce0f 100644
--- a/units/somerville-bios-regression.pxu
+++ b/units/somerville-bios-regression.pxu
@@ -11,10 +11,10 @@ include:
somerville/phase-platform
somerville/dell-repository
somerville/installation
- somerville/platform-meta-test
somerville/desktop-kpi-dashboard
misc/generic/grub_boothole
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 2c2e64a..524468c 100644
--- a/units/somerville-cpu.pxu
+++ b/units/somerville-cpu.pxu
@@ -8,12 +8,12 @@ include:
com.canonical.certification::info/detect_dell_recovery
somerville/recovery/desktop-disk
somerville/phase-sku
- somerville/phase-platform
somerville/dell-repository
somerville/installation
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 0478c95..87c811d 100644
--- a/units/somerville-dock.pxu
+++ b/units/somerville-dock.pxu
@@ -11,8 +11,8 @@ include:
somerville/phase-platform
somerville/dell-repository
somerville/installation
- 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 babd3b0..e31ee65 100644
--- a/units/somerville-fv-regression.pxu
+++ b/units/somerville-fv-regression.pxu
@@ -11,12 +11,12 @@ include:
somerville/phase-platform
somerville/dell-repository
somerville/installation
- somerville/platform-meta-test
somerville/desktop-kpi-dashboard
com.canonical.certification::audio/channels
com.canonical.certification::audio/external-lineout
misc/generic/grub_boothole
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 9528f03..050bd6c 100644
--- a/units/somerville-graphic.pxu
+++ b/units/somerville-graphic.pxu
@@ -11,9 +11,9 @@ include:
somerville/phase-platform
somerville/dell-repository
somerville/installation
- 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 6e33a5f..077ad22 100644
--- a/units/somerville-iev-full-20-04.pxu
+++ b/units/somerville-iev-full-20-04.pxu
@@ -11,13 +11,13 @@ include:
somerville/phase-platform
somerville/dell-repository
somerville/installation
- somerville/platform-meta-test
somerville/desktop-kpi-dashboard
somerville/fingerprint-login
somerville/fingerprint-negative
somerville/fingerprint-positive
misc/generic/grub_boothole
nested_part:
+ somerville-oem-meta
oem-generic-full-20-04
power-management-s
# The following part MUST run last
diff --git a/units/somerville-iev-regression.pxu b/units/somerville-iev-regression.pxu
index 425a086..e21d488 100644
--- a/units/somerville-iev-regression.pxu
+++ b/units/somerville-iev-regression.pxu
@@ -11,10 +11,10 @@ include:
somerville/phase-platform
somerville/dell-repository
somerville/installation
- 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
# The following part MUST run last
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 d52923b..c991a2c 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 697a924..22fef07 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 e7d86c6..6e372ec 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,13 +6,13 @@ _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
misc/generic/grub_boothole
nested_part:
+ stella-oem-meta
oem-generic-full-20-04
power-management-stella
# The following part MUST run last
diff --git a/units/stella-regression.pxu b/units/stella-regression.pxu
index 922500f..288ebcc 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,10 +6,10 @@ _description: Stella Regression
include:
stella/hp-documents
stella/hp-wallpaper
- stella/sourcelist/.*-repository$
stella/desktop-kpi-dashboard
misc/generic/grub_boothole
nested_part:
+ stella-oem-meta
oem-generic-blocker
power-management-stella
# The following part MUST run last
diff --git a/units/sutton-full-20-04.pxu b/units/sutton-full-20-04.pxu
index 0fc4bfa..5064a17 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
@@ -16,6 +13,7 @@ include:
misc/generic/grub_boothole
nested_part:
oem-generic-full-20-04
+ sutton-oem-meta
# The following part MUST run last
# The platform meta package is removed/re-installed from Ubuntu archives.
stock-ubuntu-meta-package