diff --git a/.codespellrc b/.codespellrc index bc16334e79..a6de476b3a 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + [codespell] exclude-file = .codespellx ignore-words-list = "FPT,FTP,fpt,ftp,checkin,Checkin" diff --git a/.codespellx b/.codespellx index b52f223499..d11bcdf3ad 100644 --- a/.codespellx +++ b/.codespellx @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + -device hda-duplex,audiodev=hda \ -audiodev pa,id=hda,server=${PULSE_SERVER},out.frequency=44100 \ ${DEVICE_AUDIO1}= HDA Intel PCH diff --git a/.conform.yaml b/.conform.yaml index f96e4e0940..9021b9a5fc 100644 --- a/.conform.yaml +++ b/.conform.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + --- policies: - type: commit diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index f36e3e34d6..3162d564cf 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + name: Bug report description: Report a problem in existing functionality, including documentation and infrastructure. labels: ["bug"] diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 3ba13e0cec..72dc275e4e 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1 +1,5 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + blank_issues_enabled: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index bd6ec126ad..9b9386b067 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + name: Feature request description: Suggest a new feature or an improvement of existing functionality. labels: ["enhancement"] diff --git a/.github/ISSUE_TEMPLATE/question-or-support-request.md b/.github/ISSUE_TEMPLATE/question-or-support-request.md index ea6a1b5a47..81fe3bce37 100644 --- a/.github/ISSUE_TEMPLATE/question-or-support-request.md +++ b/.github/ISSUE_TEMPLATE/question-or-support-request.md @@ -1,3 +1,11 @@ + + + + --- name: Question or Support Request about: Ask a question or request support. diff --git a/.github/ISSUE_TEMPLATE/task.md b/.github/ISSUE_TEMPLATE/task.md index 7c0b775e92..a63d5efc87 100644 --- a/.github/ISSUE_TEMPLATE/task.md +++ b/.github/ISSUE_TEMPLATE/task.md @@ -1,3 +1,11 @@ + + + + --- name: Task about: Anything actionable that doesn't qualify as a bug or feature. diff --git a/.github/workflows/auto-docs.yml b/.github/workflows/auto-docs.yml index 269faa1850..3a95e69f73 100644 --- a/.github/workflows/auto-docs.yml +++ b/.github/workflows/auto-docs.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + name: Auto Docs on: diff --git a/.github/workflows/qemu-self-test.yml b/.github/workflows/qemu-self-test.yml index d53ee6fca1..7b676c0166 100644 --- a/.github/workflows/qemu-self-test.yml +++ b/.github/workflows/qemu-self-test.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + name: Keywords self-tests with QEMU on: [push, pull_request] diff --git a/.github/workflows/smoke.yml b/.github/workflows/smoke.yml index 0e2b859f4a..4f3c0bcc8f 100644 --- a/.github/workflows/smoke.yml +++ b/.github/workflows/smoke.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + name: Smoke tests on selected platforms on: [push, pull_request] diff --git a/.gitignore b/.gitignore index 32306612ea..29188558ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + robot-venv robotframework minicom.cap diff --git a/.gitmodules b/.gitmodules index b2e81909c3..c344bbd414 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + [submodule "rtectrl-rest-api"] path = rtectrl-rest-api url = https://github.com/3mdeb/rtectrl-rest-api.git @@ -13,3 +17,6 @@ [submodule "dcu"] path = dcu url = https://github.com/Dasharo/dcu.git +[submodule "osfv-test-data"] + path = osfv-test-data + url = https://github.com/Dasharo/osfv-test-data.git diff --git a/.markdownlint.yaml b/.markdownlint.yaml index a17a36bbda..433e92e3ac 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + --- # Documentation: # https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7b05282a3c..0ec924a577 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + --- default_stages: [pre-commit] @@ -42,7 +46,7 @@ repos: - repo: https://github.com/koalaman/shellcheck-precommit rev: v0.10.0 hooks: - - id: shellcheck + - id: shellcheck args: ["--severity=warning"] - repo: https://github.com/pycqa/isort @@ -54,7 +58,7 @@ repos: - repo: https://github.com/psf/black rev: 24.10.0 hooks: - - id: black + - id: black - repo: https://github.com/MarketSquare/robotframework-tidy rev: 4.14.0 @@ -66,6 +70,11 @@ repos: hooks: - id: robocop + - repo: https://github.com/fsfe/reuse-tool + rev: v5.0.2 + hooks: + - id: reuse-lint-file + - repo: local hooks: - id: platform-configs-var-check diff --git a/.robocop b/.robocop index 17e5dea329..9df290144e 100644 --- a/.robocop +++ b/.robocop @@ -1 +1,5 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + --config robocop.toml diff --git a/.robotidy b/.robotidy index 18764accd8..f494c2f5d1 100644 --- a/.robotidy +++ b/.robotidy @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + spacecount = 4 indent = 4 continuation-indent = 4 diff --git a/.yamllint b/.yamllint index 1a23bc1c9b..e9e6644ccd 100644 --- a/.yamllint +++ b/.yamllint @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + --- extends: default diff --git a/CHANGELOG.md b/CHANGELOG.md index 32e7cff944..1a5ae27528 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ + + # Changelog All notable changes to this project will be documented in this file. diff --git a/FUNDING.yml b/FUNDING.yml index 4e77cf822a..4e87310597 100644 --- a/FUNDING.yml +++ b/FUNDING.yml @@ -1,2 +1,5 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 open_collective: 3mdeb_com diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt new file mode 100644 index 0000000000..137069b823 --- /dev/null +++ b/LICENSES/Apache-2.0.txt @@ -0,0 +1,73 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/NOTICE b/NOTICE index 6aa797a27e..28e7cdb082 100644 --- a/NOTICE +++ b/NOTICE @@ -1,3 +1,6 @@ +SPDX-FileCopyrightText: 2023 3mdeb +SPDX-License-Identifier: Apache-2.0 + Open Source Firmware Validation Copyright 2023 3mdeb diff --git a/README.md b/README.md index 94d42caadf..739540cf8d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ + + # Open Source Firmware Remote Test Environment The following repository contains set of tests and other features to conduct @@ -121,7 +127,8 @@ The osfv uses the ```bash git clone https://github.com/Dasharo/open-source-firmware-validation cd open-source-firmware-validation -git submodule update --init --checkout +git checkout develop +git submodule update --init --checkout --recursive --remote python3 -m virtualenv venv source venv/bin/activate ``` @@ -246,6 +253,10 @@ SONOFF_IP=$SONOFF_IP PIKVM_IP=$PIKVM_IP Mind that `SNIPEIT_NO`, only need to be set, meaning that whatever value it has, it will be treated as true. +You may also specify a DIR_PREFIX when executing this wrapper script. +The given prefix will be added to the beginning of the test results +directory name. + ### Running tests with additional arguments Any additional parameters to `robot` can be passed using the wrapper by giving @@ -279,6 +290,17 @@ Example: running only minimal regression tests with given test ID and reduced ve FW_FILE=$FW_FILE DEVICE_IP=$DEVICE_IP RTE_IP=$RTE_IP CONFIG=$CONFIG ./scripts/regression.sh -- --include "minimal-regression" -t "BMM*" --quiet ``` +### Basic Platform Setup + +The test suite at `util/basic-platform-setup.robot` is supposed to check, or +if possible ensure, that the platform is prepared for performing tests. +The suite should be run at least once to make sure the platform is good to go, +and can be used to verify if everything works fine. + +The `scripts/regression.sh` wrapper script runs this test suite automatically +before the Dasharo test modules. This behavior can be turned off by setting +the `NO_SETUP` environment variable to any value. + ## Useful refactoring tools * [sherlock](https://github.com/MarketSquare/robotframework-sherlock) @@ -287,9 +309,126 @@ FW_FILE=$FW_FILE DEVICE_IP=$DEVICE_IP RTE_IP=$RTE_IP CONFIG=$CONFIG ./scripts/re * [Renaming Test Cases](https://robotidy.readthedocs.io/en/stable/transformers/RenameTestCases.html) * [Renaming Variables](https://robotidy.readthedocs.io/en/stable/transformers/RenameVariables.html) +## git-cliff - Automating changelog generation + +The OSFV uses `git-cliff` to automate the generation of changelogs based on +commit messages, following the [Conventional +Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification. +`git-cliff` helps maintain a clear history of changes by categorizing them into +sections. + +`git-cliff` is already included in the project's dependencies, so it will be +installed automatically [when setting up the +environment](#initializing-environment). + +The configuration file `cliff.toml` is located in the repository and defines the +rules for how commit messages are grouped in the changelog. + +### Generating changelogs + +To generate a changelog for a specific tag (e.g., v0.2.0), run the following +command: + +```bash +git cliff --tag v0.2.0 > CHANGELOG_NAME.md +``` + +This command generates a changelog for all commits from the previous tag to +v0.2.0 and saves it to a `CHANGELOG_NAME.md` file. + +### Example usage + +You are also able to generate a changelog for a specific range of commits +between two tags. For example: + +```bash +git cliff --range v0.1.0..v0.2.0 > CHANGELOG_v0.2.0.md +``` + +### Customizing change categories + +Commit messages are grouped based on the rules defined in the cliff.toml file. +To adjust these rules, you can modify the file to add custom commit categories +or tweak existing patterns. + +## reuse - Automating license compliance + +To ensure the project complies with licensing requirements, OSFV uses the reuse +tool. This tool helps automate the process of adding license headers and ensures +all files in the repository are compliant with SPDX license standards. + +reuse is already included in the project’s dependencies, so it will be +automatically installed [when setting up the +environment](#initializing-environment). + +### Adding license headers + +After adding new files to the repository, ensure they have proper license +headers. You can do this manually or automate the process using reuse. + +Some files already have rules inside `REUSE.toml`, therefore, there is no need +to add a license for them. You can check whether your files need a license to be +specified by running `reuse lint`. + +If your file needs a custom license, but it is already included in some rule in +`REUSE.toml` - you can still add a separate `.license` file or a license header +for it. Just make sure that the rule that your file is subject to has a +`precedence` field set to `closest`. + +Here are some examples: + +1. **For files that support comments (e.g., .py, .sh):** + + To add license headers to files like Python scripts, use the following + command: + + ```bash + reuse annotate --copyright="3mdeb " --license="Apache-2.0" + ``` + +2. **For files that don’t support comments (e.g., binary files):** + + For files that cannot contain comment-based license headers (such as `.pem` + or `.bin` files), add a `.license` file next to them: + + ```bash + reuse annotate --force-dot-license + ``` + +3. **Adding license headers in bulk:** + + If you want to add license headers to multiple files at once, you can use + the `find` command. For example, to add headers to all `.sh` files: + + ```bash + find . -type f -name "*.sh" -exec reuse annotate --copyright="3mdeb " --license="Apache-2.0" {} \; + ``` + +### Checking license compliance + +After adding or modifying files, before releasing a new version of the project, +run the reuse lint tool to check if all files are compliant with the license +requirements: + +```bash +reuse lint +``` + +This command will generate a report indicating any files missing proper license +headers or other licensing issues. Based on this report, you can make the +necessary corrections. Example workflow: + +1. Add new files or make changes to existing ones. +2. use `reuse annotate` to add license headers to the new files. +3. Run `reuse lint` to ensure the project complyes with licensing + requirements. +4. Address any issues reported by the tool. +5. Commit the changes and prepare the release. + ## Generating documentation -Keywords documentation (Develop) deploy status: ![Build Status](https://github.com/Dasharo/open-source-firmware-validation/actions/workflows/pages/pages-build-deployment/badge.svg) +Keywords documentation (Develop) deploy status: ![Build +Status](https://github.com/Dasharo/open-source-firmware-validation/actions/workflows/pages/pages-build-deployment/badge.svg) Documentation in the form of auto-generated html documents can be created using `libdoc` and `testdoc`. @@ -346,8 +485,8 @@ $ firefox test.html [This website](https://dasharo.github.io/open-source-firmware-validation/) shows the current state of all keywords from all libraries as they appear right now on the `develop` branch. It works by utilizing a workflow, so remember that local -changes that are made won't show up there, until they are pushed to the `develop` -branch. +changes that are made won't show up there, until they are pushed to the +`develop` branch. ## Additional documents diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 0000000000..0ee1a454bd --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +version = 1 + +[[annotations]] +path = ["**/*.robot", "**/*.png", "**/*.svg", "**/*.pem", "**/*.json"] +precedence = "closest" +SPDX-FileCopyrightText = "2024 3mdeb " +SPDX-License-Identifier = "Apache-2.0" diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000000..391575326b --- /dev/null +++ b/cliff.toml @@ -0,0 +1,92 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +[changelog] +# template for header +header = """ +# Firmware Validation Changelog\n +All notable changes to this project will be documented in this file.\n +""" +# template for body +body = """ +{% if version %}\ + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} +{% else %}\ + ## [unreleased] +{% endif %}\ +{% if previous %}\ + {% if previous.commit_id %} + {{ previous.commit_id | truncate(length=7, end="") }}...\ + {{ commit_id | truncate(length=7, end="") }} + {% endif %}\ +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | upper_first }} + {% for commit in commits %} + - {{ commit.message | upper_first }} ({{ commit.id | truncate(length=7, end="") }})\ + {% endfor %} +{% endfor %}\n +""" +# template for footer +footer = """ +{% for release in releases -%} + {% if release.version -%} + {% if release.previous.version -%} + [{{ release.version | trim_start_matches(pat="v") }}]: \ + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}\ + /compare/{{ release.previous.version }}..{{ release.version }} + {% endif -%} + {% else -%} + [unreleased]: https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}\ + /compare/{{ release.previous.version }}..HEAD + {% endif -%} +{% endfor %} + +""" + +trim = true + +[git] +# This specifies a list of patterns that preprocesses commit messages before they are categorized. +commit_preprocessors = [ + { pattern = ']*>', replace = "$1"} +] +# Parse the commits based on https://www.conventionalcommits.org. This means the tool expects commit messages to follow the Conventional Commits specification. +conventional_commits = true +# This filters out commits that do not follow the conventional commit format, ensuring only structured commit messages are processed. +filter_unconventional = true +# The entire commit message is treated as a single unit. +split_commits = false +# Defines regular expressions used to match and categorize commit messages. Each parser looks for specific patterns in the commit messages and assigns the message to a particular group. +commit_parsers = [ + { message = "^fix", group = "Fixed" }, + { message = "^.*: add", group = "Added" }, + { message = "^.*: support", group = "Added" }, + { message = "^.*: remove", group = "Removed" }, + { message = "^.*: delete", group = "Removed" }, + { message = "^test", group = "Fixed" }, + { message = "^.*: fix", group = "Fixed" }, + { message = "^.*", group = "Changed" }, + { message = "^config", group = "Configuration" }, + { message = "^update", group = "Updated" }, + { message = "^refactor", group = "Refactoring" }, + { message = "^doc|readme", group = "Documentation" }, +] +# This protects commits that introduce breaking changes from being filtered out by the parsers. +protect_breaking_commits = false +# This will exclude any commit that doesn't match the defined parsers, ensuring only grouped commits are included in the changelog. +filter_commits = false +# Regex pattern that defines how to match Git tags. +tag_pattern = "v[0-9].*" +# These define tags to skip / ignore during changelog generation. +skip_tags = "v0.1.0-beta.1" +ignore_tags = "" +# The tool sorts the tags chronologically. +topo_order = false +# Defines the order in which commits within section are displayed. +sort_commits = "oldest" + +[remote.github] +owner="Dasharo" +repo="open-source-firmware-validation" diff --git a/dasharo-compatibility/acpi-driver.robot b/dasharo-compatibility/acpi-driver.robot new file mode 100644 index 0000000000..c25cc12aef --- /dev/null +++ b/dasharo-compatibility/acpi-driver.robot @@ -0,0 +1,90 @@ +*** Settings *** +Library Collections +Library OperatingSystem +Library Process +Library String +Library Telnet timeout=20 seconds connection_timeout=120 seconds +Library SSHLibrary timeout=90 seconds +Library RequestsLibrary +# TODO: maybe have a single file to include if we need to include the same +# stuff in all test cases +Resource ../variables.robot +Resource ../keywords.robot +Resource ../keys.robot + +# TODO: +# - document which setup/teardown keywords to use and what are they doing +# - go threough them and make sure they are doing what the name suggest (not +# exactly the case right now) +Suite Setup Run Keywords +... Prepare Test Suite +... AND +... Skip If not ${ACPI_DRIVER_SUPPORT} ACPI driver tests not supported +... AND +... Import Variables ${CURDIR}/../platform-configs/${SENSORS_CONFIG_FILE} +Suite Teardown Run Keyword +... Log Out And Close Connection + + +*** Variables *** +@{EXPECTED_OUTPUT}= +... dasharo_acpi-acpi-0 +... Adapter: ACPI interface +@{SUCCESS_OUTPUT}= +... Complete! +... already installed +... 0 newly installed +... Upgrading: 0, Installing: 0, Removing: 0 + + +*** Test Cases *** +ACPI001.201 ACPI driver test (Ubuntu) + [Documentation] Tests if ACPI drivers can be recognised + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ACP001.001 not supported + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + ${out}= Execute Command In Terminal dpkg -s dasharo-acpi-dkms + IF "Status: install ok installed" not in """${out}""" + ${out}= Execute Command In Terminal + ... wget https://github.com/Dasharo/osfv-test-data/raw/refs/heads/master/dasharo-driver/dasharo-acpi-dkms_0.0.1-1_amd64.deb -P /home/ubuntu + ... timeout=60s + Should Contain ${out} saved + ${out}= Execute Command In Terminal apt install /home/ubuntu/dasharo-acpi-dkms_*.deb -y + ... timeout=60s + Should Contain Any ${out} @{SUCCESS_OUTPUT} + END + Detect Or Install Package dkms + ${out}= Execute Command In Terminal modprobe dasharo-acpi + Should Be Empty ${out} + Detect Or Install Package lm-sensors + ${out}= Execute Command In Terminal sensors + Should Contain All ${out} @{EXPECTED_OUTPUT} + +ACPI001.202 ACPI driver test (Fedora) + [Documentation] Tests if ACPI drivers can be recognised + # Skip If not ${TEST_IN_FE} or ACP001.002 not supported + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + ${out}= Execute Command In Terminal rpm -q dasharo-acpi-dkms + # Should Contain ${out} + IF "dasharo-acpi-dkms-0.0.1-1.x86_64" not in """${out}""" + ${out}= Execute Command In Terminal + ... wget https://github.com/Dasharo/osfv-test-data/raw/refs/heads/master/dasharo-driver/dasharo-acpi-dkms_0.0.1-1.x86_64.rpm -P /home/linux + ... timeout=60s + Should Contain ${out} Errors: 0 + ${out}= Execute Command In Terminal sudo dnf install /home/linux/dasharo-acpi-dkms_*.rpm -y + ... timeout=60s + Should Contain Any ${out} @{SUCCESS_OUTPUT} + END + ${out}= Execute Command In Terminal sudo dnf install dkms -y + ... timeout=60s + Should Contain Any ${out} @{SUCCESS_OUTPUT} + ${out}= Execute Command In Terminal modprobe dasharo-acpi + Should Be Empty ${out} + ${out}= Execute Command In Terminal sudo dnf install lm_sensors -y + ... timeout=60s + Should Contain Any ${out} @{SUCCESS_OUTPUT} + ${out}= Execute Command In Terminal sensors + Should Contain All ${out} @{EXPECTED_OUTPUT} diff --git a/dasharo-compatibility/apu-configuration-menu.robot b/dasharo-compatibility/apu-configuration-menu.robot index e2e2fe0bb9..ee6365b5e1 100644 --- a/dasharo-compatibility/apu-configuration-menu.robot +++ b/dasharo-compatibility/apu-configuration-menu.robot @@ -102,7 +102,7 @@ APU005.001 Check if disabling CPB decreases performance ${apu_menu}= Enter Dasharo Submenu ${setup_menu} Dasharo APU Configuration Set Option State ${apu_menu} Core Performance Boost ${FALSE} Save Changes And Reset - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Execute Command In Terminal @@ -114,7 +114,7 @@ APU005.001 Check if disabling CPB decreases performance ${apu_menu}= Enter Dasharo Submenu ${setup_menu} Dasharo APU Configuration Set Option State ${apu_menu} Core Performance Boost ${TRUE} Save Changes And Reset - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Execute Command In Terminal @@ -131,10 +131,10 @@ APU006.001 Check whether disabling "Enable PCIe power management features" disab ${apu_menu}= Enter Dasharo Submenu ${setup_menu} Dasharo APU Configuration Set Option State ${apu_menu} Enable PCI Express power ${FALSE} Save Changes And Reset - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package pciutils + ${aspm_check}= Execute Command In Terminal ... echo -n `lspci -s 00:02 -vv | grep "ASPM Disabled" | wc -l` Should Be True 3 <= ${aspm_check} <= 5 @@ -145,10 +145,10 @@ APU006.002 Check whether enabling "Enable PCIe power management features" enable ${apu_menu}= Enter Dasharo Submenu ${setup_menu} Dasharo APU Configuration Set Option State ${apu_menu} Enable PCI Express power ${TRUE} Save Changes And Reset - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package pciutils + ${aspm_check}= Execute Command In Terminal ... echo -n `lspci -s 00:02 -vv | grep "ASPM L1 Enabled" | wc -l` Should Be True 3 <= ${aspm_check} <= 5 diff --git a/dasharo-compatibility/audio-subsystem.robot b/dasharo-compatibility/audio-subsystem.robot index 7d4020c89b..db77fb7ae1 100644 --- a/dasharo-compatibility/audio-subsystem.robot +++ b/dasharo-compatibility/audio-subsystem.robot @@ -12,89 +12,358 @@ Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -# TODO: -# - document which setup/teardown keywords to use and what are they doing -# - go threough them and make sure they are doing what the name suggest (not -# exactly the case right now) -Suite Setup Run Keyword -... Prepare Test Suite -Suite Teardown Run Keyword -... Log Out And Close Connection +Suite Setup Prepare Audio Subsystem Test Suite +Suite Teardown Log Out And Close Connection + + +*** Variables *** +# Pactl names are uniform for all devices, and in theory +# across multiple Linux distributions +${PACTL_STR_INTERNAL_OUT}= analog-output-speaker +${PACTL_STR_INTERNAL_IN}= analog-input-internal-mic +${PACTL_STR_HEADSET_OUT}= analog-output-headphones +${PACTL_STR_HEADSET_IN}= analog-input-headset-mic +${PACTL_STR_HDMI_OUT}= hdmi-output-0 +# The same is not a guarantee for Windows +${POWERSHELL_STR_INTERNAL_OUT}= Speakers (Realtek(R) Audio) +${POWERSHELL_STR_INTERNAL_IN}= Microphone Array (Realtek(R) Audio) +# Since Realtek driver shows the same device for Headset and Internal audio +# for now we just copy the value, and will need better solution in future. +${POWERSHELL_STR_HEADSET_OUT}= ${POWERSHELL_STR_INTERNAL_OUT} +${POWERSHELL_STR_HEADSET_IN}= Microphone (Realtek(R) Audio) +${POWERSHELL_STR_HDMI_OUT}= Audio Driver for Display Audio *** Test Cases *** -AUD001.001 Audio subsystem detection (Ubuntu) +AUD001.201 Audio subsystem detection [Documentation] Check whether the audio subsystem is initialized correctly - ... and can be detected in Linux OS. - Skip If not ${AUDIO_SUBSYSTEM_SUPPORT} AUD001.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} AUD001.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Detect Or Install Package alsa-utils - ${out}= Execute Linux Command cat /sys/class/sound/card0/hwC0D*/chip_name - Should Not Be Empty - ... ${DEVICE_AUDIO1} - ... msg=At least DEVICE_AUDIO01 must be defined in platform config if audio suite is enabled - Should Contain ${out} ${DEVICE_AUDIO1} - Should Contain ${out} ${DEVICE_AUDIO2} - Exit From Root User - -AUD001.002 Audio subsystem detection (Windows) + ... and can be detected in Ubuntu OS. To do so, we first try to detect + ... audio devices in sysfs. Then, we verify no dummy output is present. + ... Dummy output only appears when no other sound device is available, + ... therefore, presence of it indicate failure to initialize audio for userspace + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ${TEST_NAME} not supported + Boot Into Ubuntu And Ensure Audio Subsystem Is Detected + ${out}= Execute Command In Terminal pactl list sinks + ${result}= Run Keyword And Ignore Error + ... Should Not Contain ${out} device.description = "Dummy Output" + IF '${result}[0]' == 'FAIL' + Log \nSound Card was found, but PulseAudio did not found any device\n WARN + END + +AUD001.301 Audio subsystem detection [Documentation] Check whether the audio subsystem is initialized correctly - ... and can be detected in Windows 11. - Skip If not ${AUDIO_SUBSYSTEM_SUPPORT} AUD001.002 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} AUD001.002 not supported + ... and can be detected in Windows 11. To do so, we attemptt detection + ... of the Audio Service, and verify it is in Running state. + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ${TEST_NAME} not supported + Power On + Login To Windows + ${out}= Execute Command Get-Service | Where-Object { $_.Name -eq "Audiosrv" } + Should Contain ${out} Running + +AUD002.201 Internal Audio playback + [Documentation] Check whether the audio subsystem in Ubuntu is able + ... toplayback audio recordings. To do so, first determine presence + ... of audio sink. Audio sink must not be a dummy. After it was + ... verified, we verify that sound is not malformed. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ${TEST_NAME} not supported + Skip If not ${INTERNAL_AUDIO_SUPPORT} ${TEST_NAME} not supported + Boot Into Ubuntu And Ensure Audio Subsystem Is Detected + Switch Active Sink Port Using Pactl internal + Verify Active Sink Port Using Pactl internal + # TODO: Test playback and waveforms + # We probably can do it using alsa monitoring device, and capture + # the sound to check if it was malformed in a way. + Log \Internal speakers detected, check validity of sound playback manually\n + +AUD002.301 Internal Audio playback + [Documentation] Check whether the audio subsystem is able to playback + ... audio recordings. To do so, first determine presence of audio sink. + ... After that, we verify that sound is not malformed. + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ${TEST_NAME} not supported + Skip If not ${INTERNAL_AUDIO_SUPPORT} ${TEST_NAME} not supported + Power On + Login To Windows + ${out}= Get Sound Devices In Windows speakers + Should Not Be Empty ${out} + Should Contain ${out} ${POWERSHELL_STR_INTERNAL_OUT} + Should Contain ${out} OK + + # TODO: Somehow verify that sound played is proper, no ideas on how to do it + # for windows, besides claiming this test as semi-auto. + Log \Internal speakers detected, check validity of sound playback manually\n + +AUD003.201 Internal Audio capture + [Documentation] Check whether the audio subsystem is able to capture + ... audio on Ubuntu. To do so, we first determine presence of internal + ... capture device. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ${TEST_NAME} not supported + Skip If not ${INTERNAL_AUDIO_SUPPORT} ${TEST_NAME} requires internal Microphone + Boot Into Ubuntu And Ensure Audio Subsystem Is Detected + Switch Active Source Port Using Pactl internal + Verify Active Source Port Using Pactl internal + # TODO: Somehow capture sound and confirm it is not malformed. + Log \Internal microphone detected, check validity of sound capture manually\n + +AUD003.301 Internal Audio capture + [Documentation] Check whether the audio subsystem is able to capture + ... audio on Windows. To do so, we first determine presence of internal + ... capture device. + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ${TEST_NAME} not supported + Skip If not ${INTERNAL_AUDIO_SUPPORT} ${TEST_NAME} requires internal Microphone + Power On + Login To Windows + ${out}= Get Sound Devices In Windows microphone + Should Not Be Empty ${out} + Should Contain ${out} ${POWERSHELL_STR_INTERNAL_IN} + Should Contain ${out} OK + # TODO: Somehow capture sound and confirm it is not malformed. + Log \Internal microphone detected, check validity of sound capture manually\n + +AUD004.201 External headset recognition + [Documentation] Check whether Ubuntu has recognized external headset, + ... after plugging in micro jack into slot. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ${TEST_NAME} not supported + Skip If not ${EXTERNAL_HEADSET_SUPPORT} ${TEST_NAME} not supported + Boot Into Ubuntu And Ensure Audio Subsystem Is Detected + Verify External Headset Is Plugged In + Switch Active Sink Port Using Pactl headphones + Verify Active Sink Port Using Pactl headphones + +AUD004.301 External headset recognition + [Documentation] Check whether Windows has recognized external headset, + ... after plugging in micro jack into slot. + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ${TEST_NAME} not supported + Skip If not ${EXTERNAL_HEADSET_SUPPORT} ${TEST_NAME} not supported + Power On + Login To Windows + ${out}= Get Sound Devices In Windows speakers + Should Not Be Empty ${out} + Should Contain ${out} ${POWERSHELL_STR_HEADSET_OUT} + Should Contain ${out} OK + +AUD005.201 External headset audio playback + [Documentation] Check whether Ubuntu has capability to playback + ... sounds via external headset. + Skip If not ${EXTERNAL_HEADSET_SUPPORT} ${TEST_NAME} not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ${TEST_NAME} not supported + Boot Into Ubuntu And Ensure Audio Subsystem Is Detected + Verify External Headset Is Plugged In + Switch Active Sink Port Using Pactl headphones + Verify Active Sink Port Using Pactl headphones + # TODO: Use pulseaudio to record back the audio and maybe do simple + # waveform analysis. We could use modified headphones, in which + # the microphone is physically attached to the speaker. + Log \nHeadset speakers detected, please verify validity of playback manually\n + +AUD005.301 External headset audio playback + [Documentation] Check whether Windows has capability to playback + ... sounds via external headset. + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ${TEST_NAME} not supported + Skip If not ${EXTERNAL_HEADSET_SUPPORT} ${TEST_NAME} not supported Power On Login To Windows - ${out}= Get Sound Devices Windows - Should Contain ${out} ${DEVICE_AUDIO1_WIN} + ${out}= Get Sound Devices In Windows speakers + Should Not Be Empty ${out} + Should Contain ${out} ${POWERSHELL_STR_HEADSET_OUT} Should Contain ${out} OK + # TODO: Use some software to record back. We could use modified headphones, + # in which the microphone is physically attached to the speaker. + Log \nHeadset speakers detected, please verify validity of playback manually\n -# PI-KVM necessary -# AUD002.001 Audio playback (Ubuntu) -# [Documentation] Check whether the audio subsystem is able to playback -# ... audio recordings. -# Execute Linux command pactl set-sink-mute alsa_output.pci-0000_00_1f.3.analog-stereo 0 -# Telnet.Read Until Prompt -# Execute Linux command pactl set-sink-volume alsa_output.pci-0000_00_1f.3.analog-stereo 65535 -# Telnet.Read Until Prompt -# Execute Linux command speaker-test -# Telnet.Read Until Prompt -# ${out}= Execute Linux command arecord -qd 1 volt && sox volt -n stat &> volt.d && sed '4q;d' volt.d -# Should Contain ${out} #TODO the output - -# in fact tested in AUD002.001 -# AUD003.001 Audio capture (Ubuntu 20.04) -# [Documentation] Check whether the audio subsystem is able to capture -# ... audio. - -AUD004.001 External headset recognition (Ubuntu) +AUD006.201 External headset audio capture + [Documentation] Check whether Ubuntu has capability to capture sound + ... via external headset. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ${TEST_NAME} not supported + Skip If not ${EXTERNAL_HEADSET_SUPPORT} ${TEST_NAME} not supported + Boot Into Ubuntu And Ensure Audio Subsystem Is Detected + Verify External Headset Is Plugged In + Switch Active Source Port Using Pactl headphones + Verify Active Source Port Using Pactl headphones + # TODO: Use pulseaudio to record back the audio and maybe do simple + # waveform analysis. We could use modified headphones, in which + # the microphone is physically attached to the speaker. + Log \n Headset microphone detected, check validity of sound capture manually\n + +AUD006.301 External headset audio capture [Documentation] Check whether the external headset is recognized ... properly after plugging in micro jack into slot. - Skip If not ${AUDIO_SUBSYSTEM_SUPPORT} AUD004.001 not supported - Skip If not ${EXTERNAL_HEADSET_SUPPORT} AUD004.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} AUD004.001 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ${TEST_NAME} not supported + Skip If not ${EXTERNAL_HEADSET_SUPPORT} ${TEST_NAME} not supported Power On - Boot System Or From Connected Disk ubuntu + Login To Windows + ${out}= Get Sound Devices In Windows microphone + Should Not Be Empty ${out} + Should Contain ${out} ${POWERSHELL_STR_HEADSET_IN} + Should Contain ${out} OK + # TODO: If possible, use some software to capture sound, and compare + # waveforms with original audio, to verify it was not malformed. + Log \n Headset microphone detected, check validity of sound capture manually\n + +AUD007.201 HDMI Audio recognition + [Documentation] Check whether the HDMI audio is recognized + ... properly in Ubuntu after connecting HDMI display. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ${TEST_NAME} not supported + Skip If not ${HDMI_AUDIO_SUPPORT} ${TEST_NAME} not supported + Boot Into Ubuntu And Ensure Audio Subsystem Is Detected + Switch Active Sink Port Using Pactl hdmi + Verify Active Sink Port Using Pactl hdmi + +AUD007.301 HDMI Audio recognition + [Documentation] Check whether the HDMI audio is recognized + ... properly in Windows 11 after connecting HDMI display. + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ${TEST_NAME} not supported + Skip If not ${HDMI_AUDIO_SUPPORT} ${TEST_NAME} not supported + Power On + Login To Windows + ${out}= Get Sound Devices In Windows display + Should Not Be Empty ${out} + Should Contain ${out} ${POWERSHELL_STR_HDMI_OUT} + Should Contain ${out} OK + + +*** Keywords *** +Prepare Audio Subsystem Test Suite + [Documentation] Run preparation steps for Audio Suite. + ... This includes regular importing platform config, + ... and package installation, separate for each system + [Tags] robot:private + Prepare Test Suite + Skip If not ${AUDIO_SUBSYSTEM_SUPPORT} Audio subsystem tests not supported + + IF ${TESTS_IN_UBUNTU_SUPPORT} + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Detect Or Install Package alsa-utils + Detect Or Install Package pulseaudio-utils + Exit From Root User + END + + # Disclaimer: Support for Fedora OS in future + # IF ${TESTS_IN_FEDORA_SUPPORT} + # Power On + # Boot System Or From Connected Disk ${ENV_ID_FEDORA} + # Login To Linux + # Switch To Root User + # Detect Or Install Package alsa-utils + # Detect Or Install Package pulseaudio-utils + # Exit From Root User + # END + +Boot Into Ubuntu And Ensure Audio Subsystem Is Detected + [Documentation] Ensures Ubuntu is currently active and that the + ... audio chip was detected. + [Tags] robot:private + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux - Switch To Root User - ${out}= Execute Linux Command amixer -c 0 contents | grep -A 2 'Headphone' | cat - ${headset_string}= Set Variable values=on - Should Contain ${out} ${headset_string} - Exit From Root User - -# Work in progress -# AUD004.002 External headset recognition (Windows) -# [Documentation] Check whether the external headset is recognized -# ... properly after plugging in micro jack into slot. -# Skip If not ${audio_subsystem_support} AUD004.002 not supported -# Skip If not ${tests_in_windows_support} AUD004.002 not supported -# Power On -# Login to Windows -# Execute Command In Terminal Install-PackageProvider -Name NuGet -Force -# Execute Command In Terminal Install-Module -Name AudioDeviceCmdlets -Force -# ${out}= Execute Command In Terminal Get-AudioDevice -list | ft Index, Default, Type, Name -# Should Contain ${out} ${headset_string} -# Exit from root user + ${out}= Execute Command In Terminal cat /sys/class/sound/card0/hwC0D*/chip_name + Should Not Contain ${out} No such file or directory + +Get Sound Devices In Windows + [Documentation] Get and return sound devices via PowerShell + ... filtered as all devices, audio-sink only, or microphones only + [Tags] robot:private + [Arguments] ${class}=all + IF '${class}' == 'all' + ${filter_condition}= Set Variable + ... {$_.Class -match "Audio"} + ELSE IF '${class}' == 'speakers' + ${filter_condition}= Set Variable + ... {$_.Class -match "Audio" -and ($_.Name -match "Speaker" -or $_.Name -match "Output")} + ELSE IF '${class}' == 'microphone' + ${filter_condition}= Set Variable + ... {$_.Class -match "Audio" -and $_.Name -match "Microphone"} + ELSE IF '${class}' == 'display' + ${filter_condition}= Set Variable + ... {$_.Class -match "Audio" -and ($_.Name -match "Display" -or $_.Name -match "HDMI")} + END + + ${ps_command}= Evaluate + ... 'Get-PnpDevice -PresentOnly | Where-Object ${filter_condition} | Select-Object Name, Status' + ${out}= Execute Command In Terminal ${ps_command} + RETURN ${out} + +Switch Active Sink Port Using Pactl + [Documentation] Using Pulse Audio Controller (pactl), attempt to switch + ... to specified sink port. + [Tags] robot:private + [Arguments] ${class} + ${sink}= Execute Command In Terminal + ... pactl list short sinks | awk '{print $1}' + ${cmd}= Set Variable pactl set-sink-port ${sink} + + IF '${class}' == 'internal' + ${cmd}= Catenate ${cmd} ${PACTL_STR_INTERNAL_OUT} + ELSE IF '${class}' == 'headphones' + ${cmd}= Catenate ${cmd} ${PACTL_STR_HEADSET_OUT} + ELSE IF '${class}' == 'hdmi' + ${cmd}= Catenate ${cmd} ${PACTL_STR_HDMI_OUT} + ELSE + Fail Invalid audio class. Use: headphones, internal, or hdmi. + END + Execute Command In Terminal ${cmd} + +Switch Active Source Port Using Pactl + [Documentation] Using Pulse Audio Controller (pactl), attempt to switch + ... to specified source port. Due to limitations of audio subsystems, + ... to set a source port, we need to specify device by full name, + ... so we filter it with "grep alsa_input", in contrast to sink change + ... which only requires a numeric ID. + [Tags] robot:private + [Arguments] ${class} + ${source}= Execute Command In Terminal + ... pactl list sources | grep alsa_input | awk 'NR==1 {print $2}' + ${cmd}= Set Variable pactl set-source-port ${source} + + IF '${class}' == 'internal' + ${cmd}= Catenate ${cmd} ${PACTL_STR_INTERNAL_IN} + ELSE IF '${class}' == 'headphones' + ${cmd}= Catenate ${cmd} ${PACTL_STR_HEADSET_IN} + ELSE + Fail Invalid audio class. Use: headphones or internal. + END + Execute Command In Terminal ${cmd} + +Verify Active Sink Port Using Pactl + [Documentation] Using Pulse Audio Controller (pactl), verify that specified + ... class of sink ports aka audio output is available + [Tags] robot:private + [Arguments] ${class} + ${sinks}= Execute Command In Terminal pactl list sinks | grep "Active Port" + Should Not Be Empty ${sinks} + + IF '${class}' == 'internal' + Should Contain ${sinks} ${PACTL_STR_INTERNAL_OUT} + ELSE IF '${class}' == 'hdmi' + Should Contain ${sinks} ${PACTL_STR_HDMI_OUT} + ELSE IF '${class}' == 'headphones' + Should Contain ${sinks} ${PACTL_STR_HEADSET_OUT} + ELSE + Fail Invalid audio class. Use: headphones, internal, or hdmi. + END + +Verify Active Source Port Using Pactl + [Documentation] Using Pulse Audio Controller (pactl), verify that specified + ... class of source ports is available + [Tags] robot:private + [Arguments] ${class} + ${sources}= Execute Command In Terminal pactl list sources | grep "Active Port" + Should Not Be Empty ${sources} + + IF '${class}' == 'internal' + Should Contain ${sources} ${PACTL_STR_INTERNAL_IN} + ELSE IF '${class}' == 'headphones' + Should Contain ${sources} ${PACTL_STR_HEADSET_IN} + ELSE + Fail Invalid audio source class. Use: headphones or internal. + END + +Verify External Headset Is Plugged In + [Documentation] Using Pulse Audio Controller (pactl), verify that + ... external headset is plugged in. + [Tags] robot:private + ${result}= Execute Command In Terminal + ... pactl list sinks | grep analog-output-headphones | awk 'NR==1' + Should Not Contain ${result} not available diff --git a/dasharo-compatibility/auto-boot-time-out.robot b/dasharo-compatibility/auto-boot-time-out.robot index f2f45aca6a..b531e6e560 100644 --- a/dasharo-compatibility/auto-boot-time-out.robot +++ b/dasharo-compatibility/auto-boot-time-out.robot @@ -88,3 +88,27 @@ BMM003.001 Check Auto Boot Time-out option not accept non-numeric values ... ${setup_menu} ... Boot Maintenance Manager Try To Insert Non-numeric Values Into Numeric Option ${boot_mgr_menu} Auto Boot Time-out + + +*** Keywords *** +Try To Insert Non-numeric Values Into Numeric Option + [Documentation] Check whether accepts only numeric values. + [Tags] robot:private + [Arguments] ${menu} ${option} + + ${non_numeric_characters}= Set Variable + ... abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()`~<>,./?;:'\|""[]{}=+-_ + ${current_state}= Get Option State ${menu} ${option} + ${type}= Get Option Type ${current_state} + Enter Submenu From Snapshot ${menu} ${option} + IF '${type}' == 'numeric' + @{characters}= Split String To Characters ${non_numeric_characters} + FOR ${char} IN @{characters} + Log ${char} + Write Bare Into Terminal ${char} + Set DUT Response Timeout 3 + Read From Terminal Until !! + END + ELSE + Fail Wrong option type (not accept numeric value) + END diff --git a/dasharo-compatibility/check-ethernet-ports-order.robot b/dasharo-compatibility/check-ethernet-ports-order.robot index 0875268f5d..b6b1036720 100644 --- a/dasharo-compatibility/check-ethernet-ports-order.robot +++ b/dasharo-compatibility/check-ethernet-ports-order.robot @@ -7,7 +7,6 @@ Library String Library Telnet timeout=20 seconds Library SSHLibrary timeout=90 seconds Library RequestsLibrary -Resource ../rtectrl-rest-api/rtectrl.robot Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot @@ -22,8 +21,9 @@ Suite Teardown Run Keyword SPS001.001 Ethernet ports are in order [Documentation] This test automates the verification of port order based ... on PCIe bus numbers and checks PCIe switching. + Skip If '''${ETH_PORTS}''' == '' not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${pci_devices}= Get MACs diff --git a/dasharo-compatibility/coreboot-fan-control.robot b/dasharo-compatibility/coreboot-fan-control.robot index 23982fa11a..68ab778931 100644 --- a/dasharo-compatibility/coreboot-fan-control.robot +++ b/dasharo-compatibility/coreboot-fan-control.robot @@ -11,6 +11,7 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot +Resource ../lib/sensors/sensors.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -28,42 +29,49 @@ Suite Teardown Run Keyword CFN001.001 CPU temperature and fan speed can be read (Debian) [Documentation] Check whether the data of CPU temperature and CPU fan ... is available and can be read. - Skip If not ${TESTS_IN_DEBIAN_SUPPORT} CFN001.001 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CFN001.001 not supported Power On - Boot From USB - Serial Root Login Linux debian - ${rpm} ${temperature}= Get CPU Temperature And CPU Fan Speed + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + ${rpm}= Get Fan RPM + ${temperature}= Get CPU Temperature IF ${rpm}==${0} FAIL Fan speed not measured IF ${temperature}==${0} FAIL Temperature not measured CFN002.001 CPU fan speed increases if the temperature rises (Debian) [Documentation] Check whether CPU fan speed increases if the CPU ... temperature rises. - Skip If not ${TESTS_IN_DEBIAN_SUPPORT} CFN002.001 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CFN002.001 not supported Power On - Boot From USB - Serial Root Login Linux debian + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User # Colling procedure: sometimes before starting the test case, CPU # temperature or CPU's fan speed might be too high. To prevent test case # from failing a cooling procedure is used. This procedure is to delay the # start of the test case while waiting for the temperature and fan speed # drop. FOR ${iteration} IN RANGE 0 ${COOLING_PROCEDURE_ITERATIONS} - ${rpm} ${temperature}= Get CPU Temperature And CPU Fan Speed + ${rpm}= Get Fan RPM + ${temperature}= Get CPU Temperature IF ${rpm}>=3000 or ${temperature}>=40 Sleep 60s ELSE BREAK END END - ${rpm_1} ${temperature_1}= Get CPU Temperature And CPU Fan Speed - Telnet.Execute Command stress-ng --cpu 16 --io 8 --vm 4 --vm-bytes 4G --timeout 60s --metrics + ${rpm_1}= Get Fan RPM + ${temperature_1}= Get CPU Temperature + Execute Command In Terminal stress-ng --cpu 16 --io 8 --vm 4 --vm-bytes 4G --timeout 60s --metrics # Due to the stress test CPU temperature should increase. - ${rpm_2} ${temperature_2}= Get CPU Temperature And CPU Fan Speed + ${rpm_2}= Get Fan RPM + ${temperature_2}= Get CPU Temperature Sleep 240s # Due to the temperature increasing fan speed should rise. - ${rpm_3} ${temperature_3}= Get CPU Temperature And CPU Fan Speed + ${rpm_3}= Get Fan RPM + ${temperature_3}= Get CPU Temperature IF ${temperature_1}>=${temperature_2} - FAIL Temperature not increased + FAIL Temperature did not increase END IF ${rpm_2}>=${rpm_3} FAIL Fan speed not increased diff --git a/dasharo-compatibility/cpu-cores-count.robot b/dasharo-compatibility/cpu-cores-count.robot index 1e508d618f..99dad87c1b 100644 --- a/dasharo-compatibility/cpu-cores-count.robot +++ b/dasharo-compatibility/cpu-cores-count.robot @@ -34,10 +34,10 @@ CCC001.001 Check core count with HT disabled (Ubuntu) [Documentation] Disable HT and check the number of cores as seen by the OS. Depends On ${HYPER_THREADING_SUPPORT} Set UEFI Option HyperThreading ${FALSE} - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package util-linux + ${out}= Get Threads Per Core Should Contain ${out} 1 @@ -45,10 +45,10 @@ CCC002.001 Check core count with HT enabled [Documentation] Enable HT and check the number of cores as seen by the OS. Depends On ${HYPER_THREADING_SUPPORT} Set UEFI Option HyperThreading ${TRUE} - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package util-linux + ${out}= Get Threads Per Core Should Contain ${out} ${DEF_THREADS_PER_CORE} @@ -59,10 +59,10 @@ CCC003.001 Check core count (HT Enabled, P: All, E: 0) (Ubuntu) Reset To Defaults Tianocore Save Changes And Reset Set UEFI Option ActiveECores 0 - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package cpuid + ${p_cores}= Get P Cores Count ${e_cores}= Get E Cores Count ${expected_p_cores}= Evaluate ${DEF_THREADS_PER_CORE} * ${CPU_P_CORES_MAX} @@ -76,10 +76,10 @@ CCC004.001 Check core count (HT Enabled, P: All, E: All) (Ubuntu) Reset To Defaults Tianocore Save Changes And Reset Set UEFI Option ActiveECores All active - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package cpuid + ${p_cores}= Get P Cores Count ${e_cores}= Get E Cores Count ${expected_p_cores}= Evaluate ${DEF_THREADS_PER_CORE} * ${CPU_P_CORES_MAX} @@ -94,10 +94,10 @@ CCC005.001 Check core count (HT Disabled, P: All, E: 0) (Ubuntu) Save Changes And Reset Set UEFI Option HyperThreading ${FALSE} Set UEFI Option ActiveECores 0 - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package cpuid + ${p_cores}= Get P Cores Count ${e_cores}= Get E Cores Count Should Be Equal As Integers ${p_cores} ${CPU_P_CORES_MAX} @@ -111,10 +111,10 @@ CCC006.001 Check core count (HT Disabled, P: All, E: 0) (Ubuntu) Save Changes And Reset Set UEFI Option ActiveECores 0 Set UEFI Option HyperThreading ${FALSE} - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package cpuid + ${p_cores}= Get P Cores Count ${e_cores}= Get E Cores Count Should Be Equal As Integers ${p_cores} ${CPU_P_CORES_MAX} @@ -127,10 +127,10 @@ CCC007.001 Check core count (HT Enabled, P: 1, E: A) (Ubuntu) Reset To Defaults Tianocore Save Changes And Reset Set UEFI Option ActivePCores 1 - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package cpuid + ${p_cores}= Get P Cores Count ${e_cores}= Get E Cores Count ${expected_p_cores}= Evaluate ${DEF_THREADS_PER_CORE} * 1 @@ -145,10 +145,10 @@ CCC008.001 Check core count (HT Disabled, P: 1, E: A) (Ubuntu) Save Changes And Reset Set UEFI Option HyperThreading ${FALSE} Set UEFI Option ActivePCores 1 - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package cpuid + ${p_cores}= Get P Cores Count ${e_cores}= Get E Cores Count Should Be Equal As Integers ${p_cores} 1 @@ -163,10 +163,10 @@ CCC009.001 Check core count (HT Enabled, P: 1, E: 1) (Ubuntu) Set UEFI Option HyperThreading ${TRUE} Set UEFI Option ActivePCores 1 Set UEFI Option ActiveECores 1 - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package cpuid + ${p_cores}= Get P Cores Count ${e_cores}= Get E Cores Count ${expected_p_cores}= Evaluate ${DEF_THREADS_PER_CORE} * 1 @@ -182,10 +182,10 @@ CCC010.001 Check core count (HT Disabled, P: 1, E: 1) (Ubuntu) Set UEFI Option HyperThreading ${FALSE} Set UEFI Option ActivePCores 1 Set UEFI Option ActiveECores 1 - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package cpuid + ${p_cores}= Get P Cores Count ${e_cores}= Get E Cores Count Should Be Equal As Integers ${p_cores} 1 @@ -199,10 +199,10 @@ CCC011.001 Check core count (HT Enabled, P: A, E: 1) (Ubuntu) Save Changes And Reset Set UEFI Option HyperThreading ${TRUE} Set UEFI Option ActiveECores 1 - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package cpuid + ${p_cores}= Get P Cores Count ${e_cores}= Get E Cores Count ${expected_p_cores}= Evaluate ${DEF_THREADS_PER_CORE} * ${CPU_P_CORES_MAX} @@ -217,10 +217,10 @@ CCC012.001 Check core count (HT Disabled, P: A, E: 1) (Ubuntu) Save Changes And Reset Set UEFI Option HyperThreading ${FALSE} Set UEFI Option ActiveECores 1 - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package cpuid + ${p_cores}= Get P Cores Count ${e_cores}= Get E Cores Count ${expected_p_cores}= Evaluate ${CPU_P_CORES_MAX} diff --git a/dasharo-compatibility/cpu-fan-speed-measure.robot b/dasharo-compatibility/cpu-fan-speed-measure.robot index 185bf5cc21..2d1093a9ec 100644 --- a/dasharo-compatibility/cpu-fan-speed-measure.robot +++ b/dasharo-compatibility/cpu-fan-speed-measure.robot @@ -16,22 +16,97 @@ Resource ../keys.robot # - document which setup/teardown keywords to use and what are they doing # - go threough them and make sure they are doing what the name suggest (not # exactly the case right now) -Suite Setup Run Keyword -... Prepare Test Suite -Suite Teardown Run Keyword -... Log Out And Close Connection +Suite Setup Prepare CPU Fan Speed Measure Suite +Suite Teardown Log Out And Close Connection *** Test Cases *** -FAN001.001 CPU fan speed measure +FAN001.201 CPU fan speed measure [Documentation] Check whether there's a possibility to measure CPU fan ... current speed. - Skip If not ${FAN_SPEED_MEASURE_SUPPORT} FAN001.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} FAN001.001 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} FAN001.201 not supported + Skip If not ${FAN_SPEED_MEASURE_SUPPORT} FAN001.201 not supported Power On Login To Linux + ${output}= Execute Linux Command + ... sensors | grep "CPU 0:" | awk 'NR==1 {print $3}' + Should Not Be Empty ${output} + Should Not Be Equal ${output} 0 + +FAN002.201 All available fans are running + [Documentation] Check if all available fans are running + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} FAN002.201 not supported + Skip If not ${FAN_SPEED_MEASURE_SUPPORT} FAN002.201 not supported + Power On + Login To Linux + Switch To Root User + Stress Test + Exit From Root User + ${output}= Execute Linux Command + ... sensors | grep -E 'GPU|CPU' | grep -E 'RPM$' | awk '{print $3}' + Should Not Be Empty ${output} + @{rpm_values}= Split To Lines ${output} + FOR ${element} IN @{rpm_values} + Should Not Be Equal ${output} 0 + END + +FAN003.201 Fans are turning off during suspend mode with ME Enabled + [Documentation] Check for correct behavior + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} FAN003.201 not supported + Skip If not ${FAN_SPEED_MEASURE_SUPPORT} FAN003.201 not supported + Power On + Set UEFI Option MeMode Enabled + Login To Linux + Switch To Root User + Log To Console \nFan test started, please check fan state manually + Execute Command In Terminal fwts s3 -f -r /tmp/suspend_test_log.log 90 + Log To Console \nFan state test ended, please note the result + +FAN004.201 Fans are turning off during suspend mode with ME Soft disabled + [Documentation] Check for correct behavior + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} FAN004.201 not supported + Skip If not ${FAN_SPEED_MEASURE_SUPPORT} FAN004.201 not supported + Power On + Set UEFI Option MeMode Disabled (Soft) + Login To Linux Switch To Root User - Prepare Lm-sensors - ${output}= Get RPM Value From System76 Acpi + Log To Console \nFan test started, please check fan state manually + Execute Command In Terminal fwts s3 -f -r /tmp/suspend_test_log.log 90 + Log To Console \nFan state test ended, please note the result + +FAN005.201 Fans are turning off during suspend mode with ME HAP disabled + [Documentation] Check for correct behavior + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} FAN005.201 not supported + Skip If not ${FAN_SPEED_MEASURE_SUPPORT} FAN005.201 not supported + Power On + Set UEFI Option MeMode Disabled (HAP) + Login To Linux + Switch To Root User + Log To Console \nFan test started, please check fan state manually + Execute Command In Terminal fwts s3 -f -r /tmp/suspend_test_log.log 90 + Log To Console \nFan state test ended, please note the result + +FAN006.201 GPU fan speed measure + [Documentation] The fan has been configured to follow a custom curve. + ... This test aims to verify that the fan curve is configured correctly + ... and the fan spins up and down according to the defined values. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} FAN006.201 not supported + Skip If not ${FAN_SPEED_MEASURE_SUPPORT} FAN006.201 not supported + Skip If not ${NVIDIA_GRAPHICS_CARD_SUPPORT} FAN006.201 not supported + Power On + Login To Linux + ${output}= Execute Linux Command + ... sensors | grep "GPU 0:" | awk 'NR==1 {print $3}' Should Not Be Empty ${output} Should Not Be Equal ${output} 0 + + +*** Keywords *** +Prepare CPU Fan Speed Measure Suite + [Documentation] Prepare packages for testing CPU fans + Prepare Test Suite + Power On + Login To Linux + Switch To Root User + Detect Or Install FWTS + Prepare Sensors diff --git a/dasharo-compatibility/cpu-status.robot b/dasharo-compatibility/cpu-status.robot index 682cd5f320..9aebc3a13c 100644 --- a/dasharo-compatibility/cpu-status.robot +++ b/dasharo-compatibility/cpu-status.robot @@ -21,45 +21,96 @@ Suite Setup Run Keywords ... AND ... Skip If not ${CPU_TESTS_SUPPORT} CPU tests not supported ... AND -... Run Keyword If ${TESTS_IN_UBUNTU_SUPPORT} Reset UEFI Options To Defaults +... Reset UEFI Options To Defaults Suite Teardown Run Keyword ... Log Out And Close Connection *** Test Cases *** -CPU001.001 CPU works (Ubuntu) +CPU001.201 CPU works (Ubuntu) [Documentation] Check whether the CPU mounted on the DUT works. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPU001.001 not supported + ... Previous IDs: CPU001.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPU001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPU001.201 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux -CPU001.002 CPU works (Windows) +CPU002.201 CPU cache enabled (Ubuntu) + [Documentation] Check whether the all declared for the DUT cache levels + ... are enabled. + ... Previous IDs: CPU002.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPU002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPU001.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + CPU Cache Enabled Linux + +CPU003.201 Multiple CPU support (Ubuntu) + [Documentation] Check whether the DUT has multiple CPU support. + ... Previous IDs: CPU003.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPU003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPU003.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Multiple CPU Support Linux + +CPU004.201 Multiple-core support (Ubuntu) + [Documentation] Check whether the DUT has multi-core support. + ... Previous IDs: CPU004.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPU004.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPU004.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Multiple-Core Support Linux + +CPU001.202 CPU works (Fedora) [Documentation] Check whether the CPU mounted on the DUT works. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPU001.002 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPU001.202 not supported Power On - Login To Windows + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux -CPU002.001 CPU cache enabled (Ubuntu) +CPU002.202 CPU cache enabled (Fedora) [Documentation] Check whether the all declared for the DUT cache levels ... are enabled. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPU002.001 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPU001.202 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_FEDORA} Login To Linux - ${mem_info}= Execute Linux Command getconf -a | grep CACHE - Check Cache Support ${mem_info} LEVEL1 - Pass Execution If not ${L2_CACHE_SUPPORT} DUT supports only L1 cache - Check Cache Support ${mem_info} LEVEL2 - Pass Execution If not ${L3_CACHE_SUPPORT} DUT supports only L1 and L2 cache - Check Cache Support ${mem_info} LEVEL3 - Pass Execution If not ${L4_CACHE_SUPPORT} DUT supports only L1, L2 and L3 cache - Check Cache Support ${mem_info} LEVEL4 + CPU Cache Enabled Linux -CPU002.002 CPU cache enabled (Windows) +CPU003.202 Multiple CPU support (Fedora) + [Documentation] Check whether the DUT has multiple CPU support. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPU003.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Multiple CPU Support Linux + +CPU004.202 Multiple-core support (Fedora) + [Documentation] Check whether the DUT has multi-core support. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPU004.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Multiple-Core Support Linux + +CPU001.301 CPU works (Windows) + [Documentation] Check whether the CPU mounted on the DUT works. + ... Previous IDs: CPU001.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPU001.301 not supported + Power On + Login To Windows + +CPU002.301 CPU cache enabled (Windows) [Documentation] Check whether the all declared for the DUT cache levels ... are enabled. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPU002.002 not supported + ... Previous IDs: CPU002.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPU002.301 not supported Power On Login To Windows ${mem_info}= Execute Command In Terminal @@ -72,22 +123,10 @@ CPU002.002 CPU cache enabled (Windows) Pass Execution If not ${L4_CACHE_SUPPORT} DUT supports only L1, L2 and L3 cache Should Contain ${mem_info} CACHE4 -CPU003.001 Multiple CPU support (Ubuntu) - [Documentation] Check whether the DUT has multiple CPU support. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPU003.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - ${cpu_info}= Execute Linux Command lscpu - Set Suite Variable ${CPU_INFO} - ${cpu}= Get Lines Matching Regexp ${CPU_INFO} ^CPU\\(s\\):\\s+\\d+$ flags=MULTILINE - Should Contain ${cpu} ${DEF_THREADS_TOTAL} Different number of CPU's than ${DEF_THREADS_TOTAL} - ${online}= Execute Linux Command cat /sys/devices/system/cpu/online - Should Contain ${online} ${DEF_ONLINE_CPU} There are more than ${DEF_ONLINE_CPU[2]} on-line CPU's - -CPU003.002 Multiple CPU support (Windows) +CPU003.301 Multiple CPU support (Windows) [Documentation] Check whether the DUT has multiple CPU support. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPU003.002 not supported + ... Previous IDs: CPU003.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPU003.301 not supported Power On Login To Windows ${cpu_info}= Execute Command In Terminal WMIC CPU Get NumberOfCores @@ -95,29 +134,10 @@ CPU003.002 Multiple CPU support (Windows) ${cpu_count}= Convert To Number ${cpu_count} Should Be True ${cpu_count} > 1 -CPU004.001 Multiple-core support (Ubuntu) - [Documentation] Check whether the DUT has multi-core support. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPU004.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - ${cpu_info}= Execute Linux Command lscpu - ${sockets}= Get Lines Containing String ${cpu_info} Socket(s): - Should Contain ${sockets} ${DEF_SOCKETS} Different number of sockets than ${DEF_SOCKETS} - ${cores}= Get Lines Containing String ${cpu_info} Core(s) per socket: - Should Contain - ... ${cores} - ... ${DEF_CORES_PER_SOCKET} - ... Different number of cores per socket than ${DEF_CORES_PER_SOCKET} - ${threads}= Get Lines Containing String ${cpu_info} Thread(s) per core: - Should Contain - ... ${threads} - ... ${DEF_THREADS_PER_CORE} - ... Different number of threads per core than ${DEF_THREADS_PER_CORE} - -CPU004.002 Multiple-core support (Windows) +CPU004.301 Multiple-core support (Windows) [Documentation] Check whether the DUT has multi-core support. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPU004.002 not supported + ... Previous IDs: CPU004.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPU004.301 not supported Power On Login To Windows ${cpu_info}= Execute Command In Terminal WMIC CPU Get NumberOfCores @@ -143,3 +163,44 @@ Check Cache Support ${mem}= Convert To Integer ${cache_size} IF '${mem}'=='0' Fail ${line} ELSE Log ${line} END + +CPU Cache Enabled Linux + [Documentation] Check whether the all declared for the DUT cache levels + ... are enabled. + [Tags] robot:private + ${mem_info}= Execute Linux Command getconf -a | grep CACHE + Check Cache Support ${mem_info} LEVEL1 + Pass Execution If not ${L2_CACHE_SUPPORT} DUT supports only L1 cache + Check Cache Support ${mem_info} LEVEL2 + Pass Execution If not ${L3_CACHE_SUPPORT} DUT supports only L1 and L2 cache + Check Cache Support ${mem_info} LEVEL3 + Pass Execution If not ${L4_CACHE_SUPPORT} DUT supports only L1, L2 and L3 cache + Check Cache Support ${mem_info} LEVEL4 + +Multiple CPU Support Linux + [Documentation] Check whether the DUT has multiple CPU support. + [Tags] robot:private + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPU003.001 not supported + ${cpu_info}= Execute Linux Command lscpu + Set Suite Variable ${CPU_INFO} + ${cpu}= Get Lines Matching Regexp ${CPU_INFO} ^CPU\\(s\\):\\s+\\d+$ flags=MULTILINE + Should Contain ${cpu} ${DEF_THREADS_TOTAL} Different number of CPU's than ${DEF_THREADS_TOTAL} + ${online}= Execute Linux Command cat /sys/devices/system/cpu/online + Should Contain ${online} ${DEF_ONLINE_CPU} There are more than ${DEF_ONLINE_CPU[2]} on-line CPU's + +Multiple-Core Support Linux + [Documentation] Check whether the DUT has multi-core support. + [Tags] robot:private + ${cpu_info}= Execute Linux Command lscpu + ${sockets}= Get Lines Containing String ${cpu_info} Socket(s): + Should Contain ${sockets} ${DEF_SOCKETS} Different number of sockets than ${DEF_SOCKETS} + ${cores}= Get Lines Containing String ${cpu_info} Core(s) per socket: + Should Contain + ... ${cores} + ... ${DEF_CORES_PER_SOCKET} + ... Different number of cores per socket than ${DEF_CORES_PER_SOCKET} + ${threads}= Get Lines Containing String ${cpu_info} Thread(s) per core: + Should Contain + ... ${threads} + ... ${DEF_THREADS_PER_CORE} + ... Different number of threads per core than ${DEF_THREADS_PER_CORE} diff --git a/dasharo-compatibility/cpu-throttling.robot b/dasharo-compatibility/cpu-throttling.robot index 32a8120ea3..8f88902536 100644 --- a/dasharo-compatibility/cpu-throttling.robot +++ b/dasharo-compatibility/cpu-throttling.robot @@ -8,6 +8,7 @@ Library SSHLibrary timeout=300 seconds Library RequestsLibrary # TODO: maybe have a single file to include if we need to include the same # stuff in all test cases +Resource ../lib/performance/cpu.robot Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot @@ -26,7 +27,7 @@ Suite Teardown Run Keyword THR001.001 Try to enter a threshold value that's above the limit [Documentation] Verify that a threshold value that's above the limit ... will get rejected with a proper prompt - Skip If not "${OPTIONS_LIB}" == "uefi-setup-menu" + Skip If not "${OPTIONS_LIB}" == "options-lib_uefi-setup-menu" # According to Intel datasheets, the throttling temperature must be within # {TjMax; TjMax - 63} Set UEFI Option CpuThrottlingThreshold 200 @@ -38,7 +39,7 @@ THR001.001 Try to enter a threshold value that's above the limit THR001.002 Try to enter a threshold value that's below the limit [Documentation] Verify that a threshold value that's below the limit ... will get rejected with a proper prompt - Skip If not "${OPTIONS_LIB}" == "uefi-setup-menu" + Skip If not "${OPTIONS_LIB}" == "options-lib_uefi-setup-menu" Set UEFI Option CpuThrottlingThreshold 10 Save Changes Read From Terminal Until error @@ -50,11 +51,11 @@ THR002.001 Try to enter a threshold value within the limits and verify in Ubuntu ... take effect in Ubuntu Skip If not ${TESTS_IN_UBUNTU_SUPPORT} THR002.001 not supported Set UEFI Option CpuThrottlingThreshold 70 - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Stress Test # Wait until the stress load gets to "heat up" the CPU Sleep 10 ${out}= Execute Command In Terminal sensors - ${temperature}= Get CPU Temperature CURRENT + ${temperature}= Get CPU Temperature Should Be True ${temperature} < 73 # needs a bit of a margin diff --git a/dasharo-compatibility/custom-boot-menu-key.robot b/dasharo-compatibility/custom-boot-menu-key.robot index 402b8b076a..26b6b90de9 100644 --- a/dasharo-compatibility/custom-boot-menu-key.robot +++ b/dasharo-compatibility/custom-boot-menu-key.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing diff --git a/dasharo-compatibility/custom-boot-order.robot b/dasharo-compatibility/custom-boot-order.robot new file mode 100644 index 0000000000..9d40c9f8c4 --- /dev/null +++ b/dasharo-compatibility/custom-boot-order.robot @@ -0,0 +1,21 @@ +*** Settings *** +Resource ../lib/platform/power.robot +Resource ../lib/platform/boot.robot + +Suite Setup Prepare Test Suite +Suite Teardown Log Out And Close Connection + + +*** Test Cases *** +CBO001.101 Custom Boot Order (EDK2) + [Documentation] Check if customization of Boot Order persists and + ... correct OS boots. + Depends On ${TESTS_IN_FIRMWARE_SUPPORT} + + Power Cycle Into Firmware Setup + Set Selected OS As First In Boot Order Via EDK2 ${ENV_ID_UBUNTU} + Verify Selected OS As First In Boot Order Via EDK2 ${ENV_ID_UBUNTU} + + Power Cycle Into Firmware Setup + Set Selected OS As First In Boot Order Via EDK2 ${ENV_ID_WINDOWS} + Verify Selected OS As First In Boot Order Via EDK2 ${ENV_ID_WINDOWS} diff --git a/dasharo-compatibility/custom-network-boot-entries.robot b/dasharo-compatibility/custom-network-boot-entries.robot index e307e7fa7d..507b0f0639 100644 --- a/dasharo-compatibility/custom-network-boot-entries.robot +++ b/dasharo-compatibility/custom-network-boot-entries.robot @@ -23,11 +23,24 @@ Suite Teardown Run Keyword *** Test Cases *** -CNB001.001 Only one iPXE in boot menu +CNB001.201 Only one iPXE in boot menu [Documentation] Check whether the network boot option with iPXE appears ... only once in the boot option list. - Skip If not ${CUSTOM_NETWORK_BOOT_ENTRIES_SUPPORT} CNB001.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CNB001.001 not supported + ... Previous IDs: CNB001.001 + Skip If not ${CUSTOM_NETWORK_BOOT_ENTRIES_SUPPORT} CNB001.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CNB001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CNB001.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + ${boot_menu}= Get UEFI Boot Manager Entries + Should Contain X Times ${boot_menu} ${IPXE_BOOT_ENTRY} 1 +CNB001.202 Only one iPXE in boot menu + [Documentation] Check whether the network boot option with iPXE appears + ... only once in the boot option list. + Skip If not ${CUSTOM_NETWORK_BOOT_ENTRIES_SUPPORT} CNB001.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CNB001.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} ${boot_menu}= Get UEFI Boot Manager Entries Should Contain X Times ${boot_menu} ${IPXE_BOOT_ENTRY} 1 diff --git a/dasharo-compatibility/dasharo-tools-suite.robot b/dasharo-compatibility/dasharo-tools-suite.robot index 1a009d73e5..1482c8b3f0 100644 --- a/dasharo-compatibility/dasharo-tools-suite.robot +++ b/dasharo-compatibility/dasharo-tools-suite.robot @@ -29,13 +29,7 @@ DTS001.001 Booting DTS from USB works correctly [Documentation] This test aims to verify that DTS is properly booting ... from USB. Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} DTS001.001 not supported - # FIXME: Only supported on PiKVM based setups right now - Skip If "${DUT_CONNECTION_METHOD}" != "pikvm" DTS001.001 not supported - Skip This test will fail. You cannot use SSH when using DTS via PiKVM, as it is read-only and SSH fails. - Download ISO And Mount As USB - ... ${DL_CACHE_DIR}/dts-base-image-v1.2.8.iso - ... ${DTS_URL} - ... f42b59633dbcc16ecbd7c98a880c582c5235c22626d7204202c922f3a7fa231b + Mount USB Disk Image ${TEST_DATA_DIR}/dts/dts-base-image-v2.1.3.wic Power On Boot Dasharo Tools Suite USB @@ -45,7 +39,7 @@ DTS002.001 DTS option Creating Dasharo HCL report works correctly Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} DTS002.001 not supported Power On Boot Dasharo Tools Suite iPXE - Write Into Terminal 1 + Write Bare Into Terminal 1 Read From Terminal Until ... Do you want to support Dasharo development by sending us logs with your hardware configuration? [N/y] Write Into Terminal N @@ -58,7 +52,7 @@ DTS003.001 DTS option reboot DUT works correctly Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} DTS004.001 not supported Power On Boot Dasharo Tools Suite iPXE - Write Into Terminal R + Write Bare Into Terminal R # Switch back to serial on PiKVM devices Restore Initial DUT Connection Method Enter Setup Menu Tianocore @@ -69,7 +63,7 @@ DTS004.001 DTS accessing shell works correctly Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} DTS005.001 not supported Power On Boot Dasharo Tools Suite iPXE - Write Into Terminal S + Write Bare Into Terminal S Read From Terminal Until Regexp bash-\\d\\.\\d# DTS005.001 Flash device from DTS shell by using flashrom works correctly @@ -126,7 +120,68 @@ DTS008.001 DTS option power-off DUT works correctly Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} DTS003.001 not supported Power On Boot Dasharo Tools Suite iPXE - Write Into Terminal P + Write Bare Into Terminal P Set DUT Response Timeout 30s ${status}= Run Keyword And Return Status Enter Setup Menu Tianocore Should Not Be True ${status} + +DTS009.001 Update Dasharo firmware by using DTS via USB works correctly + [Documentation] This test aims to verify that updating Dasharo by using + ... DTS built-in script works correctly when booting DTS via USB. + ... Test expects FW_FILE variable to contain path to Dasharo firmware. + ... If DPP_EMAIL and DPP_PASSWORD are defined then test will load DPP + ... credentials before trying to update. + Depends On ${TESTS_IN_FIRMWARE_SUPPORT} + Depends On Variable \${FW_FILE} + # Flash earlier version so update can proceed. Firmware should have serial + # redirection enabled + Flash Firmware ${FW_FILE} + Make Sure That Flash Locks Are Disabled + IF "${DASHARO_INTEL_ME_MENU_SUPPORT}" == "${TRUE}" + Set UEFI Option MeMode Disabled (HAP) + END + Boot Dasharo Tools Suite USB + # To refresh screen as next keyword expects DTS checkpoint + Press Key N Times 1 ${ESC} + ${dpp_keys_defined}= Are DPP Keys Defined + IF ${dpp_keys_defined} == ${TRUE} Provide DPP Credentials + Go Through Update skip_me=${TRUE} + Restore Initial DUT Connection Method + Set DUT Response Timeout 5m + Enter Setup Menu Tianocore + +DTS009.002 Update Dasharo firmware by using DTS via iPXE works correctly + [Documentation] This test aims to verify that updating Dasharo by using + ... DTS built-in script works correctly when booting DTS via iPXE. + ... Test expects FW_FILE variable to contain path to Dasharo firmware. + ... If DPP_EMAIL and DPP_PASSWORD are defined then test will load DPP + ... credentials before trying to update. + Depends On ${TESTS_IN_FIRMWARE_SUPPORT} + Depends On Variable \${FW_FILE} + # Flash earlier version so update can proceed. Firmware should have serial + # redirection enabled + Flash Firmware ${FW_FILE} + Make Sure That Flash Locks Are Disabled + IF "${DASHARO_INTEL_ME_MENU_SUPPORT}" == "${TRUE}" + Set UEFI Option MeMode Disabled (HAP) + END + Boot Dasharo Tools Suite iPXE + # To refresh screen as next keyword expects DTS checkpoint + Press Key N Times 1 ${ESC} + ${dpp_keys_defined}= Are DPP Keys Defined + IF ${dpp_keys_defined} == ${TRUE} Provide DPP Credentials + Go Through Update skip_me=${TRUE} + Restore Initial DUT Connection Method + Set DUT Response Timeout 5m + Enter Setup Menu Tianocore + + +*** Keywords *** +Are DPP Keys Defined + ${email}= Run Keyword And Return Status + ... Variable Should Exist $DPP_EMAIL + ${password}= Run Keyword And Return Status + ... Variable Should Exist $DPP_PASSWORD + ${status}= Run Keyword And Return Status Should Be True + ... ${email} and ${password} + RETURN ${status} diff --git a/dasharo-compatibility/dcu.robot b/dasharo-compatibility/dcu.robot index 08a6ce8994..5b5b782cbd 100644 --- a/dasharo-compatibility/dcu.robot +++ b/dasharo-compatibility/dcu.robot @@ -12,7 +12,6 @@ Library FakerLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot Resource ../lib/dcu.robot # TODO: @@ -32,69 +31,69 @@ ${FW_COPY}= coreboot.rom *** Test Cases *** -DCU001.001 Change the UUID +DCU001.201 Change the UUID [Documentation] This test case verifies that the UUID encoded in the DMI ... table of an image can be changed using DCU. - Skip If not ${DCU_UUID_SUPPORT} DCU001.001 not supported + ... Previous IDs: DCU001.001 + Skip If not ${DCU_UUID_SUPPORT} DCU001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DCU001.201 not supported + Change The UUID ${ENV_ID_UBUNTU} - ${uuid}= Uuid 4 - DCU Smbios Set UUID In File ${FW_COPY} ${uuid} - Flash Firmware ${FW_COPY} - Make Sure New Firmware Is Booted After Flashing - - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${uuid_read}= Get Firmware UUID - Should Be Equal As Strings '${uuid}' '${uuid_read}' - -DCU002.001 Change the serial number +DCU002.201 Change the serial number [Documentation] This test case verifies that the serial number encoded ... in the DMI table of an image can be changed using DCU. - Skip If not ${DCU_SERIAL_SUPPORT} DCU002.001 not supported - - ${serial_no}= Random Int min=10000000 max=99999999 - DCU Smbios Set Serial In File ${FW_COPY} ${serial_no} - Flash Firmware ${FW_COPY} - Make Sure New Firmware Is Booted After Flashing + ... Previous IDs: DCU002.001 + Skip If not ${DCU_SERIAL_SUPPORT} DCU002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DCU002.201 not supported + Change The Serial Number ${ENV_ID_UBUNTU} - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${serial_no_read}= Get Firmware Serial Number - Should Be Equal As Strings '${serial_no}' '${serial_no_read}' - -DCU003.001 Change the bootsplash logo +DCU003.201 Change the bootsplash logo [Documentation] This test case verifies that the bootsplash logo encoded ... into an image can be changed using DCU. ... PLEASE NOTE that a display device needs to be physically connected ... to the DUT for this test to work. - Skip If not ${CUSTOM_LOGO_SUPPORT} DCU003.001 not supported + ... Previous IDs: DCU003.001 + Skip If not ${CUSTOM_LOGO_SUPPORT} DCU003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DCU003.201 not supported + Change The Bootsplash Logo ${ENV_ID_UBUNTU} - ${img_sum}= Set Variable f91fe017bef1f98ce292bde1c2c7c61edf7b51e9c96d25c33bfac90f50de4513 - ${logo_path}= Join Path ${DL_CACHE_DIR} logo.bmp - DCU Logo Set In File ${FW_COPY} ${logo_path} - Flash Firmware ${FW_COPY} - Make Sure New Firmware Is Booted After Flashing +DCU004.201 Verify SMMSTORE changes + [Documentation] This test case verifies that changes made to the + ... SMMSTORE via DCU are properly applied and visible in Setup menu. + ... Verified using Setup menu where possible. When tested on a device + ... which uses DCU for accessing Setup variables the results might not + ... be trustworthy. + ... Previous IDs: DCU004.001 + Skip If + ... '''${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE}''' == '''${EMPTY}''' + ... DCU004.201 Verify SMMSTORE changes not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DCU004.201 not supported + Verify SMMSTORE Changes ${ENV_ID_UBUNTU} - Power On - Boot System Or From Connected Disk ubuntu - Set Global Variable ${DUT_CONNECTION_METHOD} SSH - Login To Linux - Switch To Root User +DCU001.202 Change the UUID + [Documentation] This test case verifies that the UUID encoded in the DMI + ... table of an image can be changed using DCU. + Skip If not ${DCU_UUID_SUPPORT} DCU001.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DCU001.202 not supported + Change The UUID ${ENV_ID_FEDORA} - ${out}= Execute Command In Terminal - ... sha256sum /sys/firmware/acpi/bgrt/image - ${unplugged}= Run Keyword And Return Status - ... Should Contain ${out} No such file - IF ${unplugged} == ${TRUE} - Fail Please make sure that a display device is connected to the DUT - END - Should Contain ${out} ${img_sum} +DCU002.202 Change the serial number + [Documentation] This test case verifies that the serial number encoded + ... in the DMI table of an image can be changed using DCU. + Skip If not ${DCU_SERIAL_SUPPORT} DCU002.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DCU002.202 not supported + Change The Serial Number ${ENV_ID_FEDORA} + +DCU003.202 Change the bootsplash logo + [Documentation] This test case verifies that the bootsplash logo encoded + ... into an image can be changed using DCU. + ... PLEASE NOTE that a display device needs to be physically connected + ... to the DUT for this test to work. + Skip If not ${CUSTOM_LOGO_SUPPORT} DCU003.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DCU003.202 not supported + Change The Bootsplash Logo ${ENV_ID_FEDORA} -DCU004.001 Verify SMMSTORE changes +DCU004.202 Verify SMMSTORE changes [Documentation] This test case verifies that changes made to the ... SMMSTORE via DCU are properly applied and visible in Setup menu. ... Verified using Setup menu where possible. When tested on a device @@ -102,38 +101,25 @@ DCU004.001 Verify SMMSTORE changes ... be trustworthy. Skip If ... '''${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE}''' == '''${EMPTY}''' - ... DCU004.001 Verify SMMSTORE changes not supported - IF "${OPTIONS_LIB}"=="uefi-setup-menu" - Verify SMMSTORE Changes (Setup Menu) - ELSE IF "${OPTIONS_LIB}"=="dcu" - Log To Console - ... Verifying DCU possible only using on this device DCU. The test may not be trustworthy. - ... WARN - Verify SMMSTORE Changes (DCU) - ELSE - Fail Unsupported $OPTIONS_LIB: ${OPTIONS_LIB} - END + ... DCU004.202 Verify SMMSTORE changes not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DCU004.202 not supported + Verify SMMSTORE Changes ${ENV_ID_FEDORA} *** Keywords *** Prepare DCU Test Environment - Download To Host Cache - ... logo.bmp - ... https://cloud.3mdeb.com/index.php/s/rsjCdz4wSNesLio/download - ... 6e5a6722955e4f78d947654630f27ff833703fbc04776ffed963c96617f6bb2a - - Run cp ${FW_FILE} ${FW_COPY} + Read Firmware ${FW_COPY} Run chmod -R a+rw dcu Verify SMMSTORE Changes (Setup Menu) [Documentation] This keyword verifies that changes made to the ... SMMSTORE via DCU are properly applied and visible in Setup menu. - + [Arguments] ${os_id} ${initial_value}= Get UEFI Option ${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE} ${new_value}= Evaluate not ${initial_value} Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User DCU Variable Set UEFI Option In DUT ${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE} ${new_value} @@ -142,7 +128,7 @@ Verify SMMSTORE Changes (Setup Menu) Should Be Equal ${value} ${new_value} Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User DCU Variable Set UEFI Option In DUT ${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE} ${initial_value} @@ -153,23 +139,23 @@ Verify SMMSTORE Changes (Setup Menu) Verify SMMSTORE Changes (DCU) [Documentation] This keyword verifies that changes made to the ... SMMSTORE via DCU are properly applied and visible in DCU. - + [Tags] robot:private + [Arguments] ${os_id} # Initial value cannot be checked and restored using DCU because the # variable store may not be initialized yet. ${initial_value}= Set Variable ${FALSE} ${new_value}= Set Variable ${TRUE} - Boot System Or From Connected Disk ubuntu Login To Linux Switch To Root User DCU Variable Set UEFI Option In DUT ${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE} ${new_value} - + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${value}= DCU Variable Get UEFI Option From DUT ${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE} Should Be Equal ${value} ${new_value} DCU Variable Set UEFI Option In Dut ${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE} ${initial_value} - + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${value}= DCU Variable Get UEFI Option From DUT ${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE} @@ -180,10 +166,102 @@ Make Sure New Firmware Is Booted After Flashing ... Platforms without POWER_CTRL typically do nothing ... as an implementation of Power On etc. and they need a reboot after ... flashing - IF '''${POWER_CTRL}''' == '''NONE''' + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} + IF '''${POWER_CTRL}''' == '''none''' Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User Execute Reboot Command END + +Change The UUID + [Documentation] This test case verifies that the UUID encoded in the DMI + ... table of an image can be changed using DCU. + [Tags] robot:private + [Arguments] ${os_id} + Power On + Boot System Or From Connected Disk ${os_id} + + ${uuid}= Uuid 4 + DCU Smbios Set UUID In File ${FW_COPY} ${uuid} + Flash Firmware ${FW_COPY} + Make Sure New Firmware Is Booted After Flashing ${os_id} + + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + ${uuid_read}= Get Firmware UUID + Should Be Equal As Strings '${uuid}' '${uuid_read}' + +Change The Serial Number + [Documentation] This test case verifies that the serial number encoded + ... in the DMI table of an image can be changed using DCU. + [Tags] robot:private + [Arguments] ${os_id} + Power On + Boot System Or From Connected Disk ${os_id} + ${serial_no}= Random Int min=10000000 max=99999999 + Read Firmware ${FW_COPY} + DCU Smbios Set Serial In File ${FW_COPY} ${serial_no} + Flash Firmware ${FW_COPY} + Make Sure New Firmware Is Booted After Flashing ${os_id} + + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + ${serial_no_read}= Get Firmware Serial Number + Should Be Equal As Strings '${serial_no}' '${serial_no_read}' + +Change The Bootsplash Logo + [Documentation] This test case verifies that the bootsplash logo encoded + ... into an image can be changed using DCU. + ... PLEASE NOTE that a display device needs to be physically connected + ... to the DUT for this test to work. + [Tags] robot:private + [Arguments] ${os_id} + Power On + Boot System Or From Connected Disk ${os_id} + ${img_sum}= Set Variable f91fe017bef1f98ce292bde1c2c7c61edf7b51e9c96d25c33bfac90f50de4513 + ${logo_path}= Join Path ${TEST_DATA_DIR}/dcu logo.bmp + Read Firmware ${FW_COPY} + DCU Logo Set In File ${FW_COPY} ${logo_path} + Flash Firmware ${FW_COPY} + Make Sure New Firmware Is Booted After Flashing + + Power On + Boot System Or From Connected Disk ${os_id} + Set Global Variable ${DUT_CONNECTION_METHOD} SSH + Login To Linux + Switch To Root User + + ${out}= Execute Command In Terminal + ... sha256sum /sys/firmware/acpi/bgrt/image + ${unplugged}= Run Keyword And Return Status + ... Should Contain ${out} No such file + IF ${unplugged} == ${TRUE} + Fail Please make sure that a display device is connected to the DUT + END + Should Contain ${out} ${img_sum} + +Verify SMMSTORE Changes + [Documentation] This test case verifies that changes made to the + ... SMMSTORE via DCU are properly applied and visible in Setup menu. + ... Verified using Setup menu where possible. When tested on a device + ... which uses DCU for accessing Setup variables the results might not + ... be trustworthy. + [Tags] robot:private + [Arguments] ${os_id} + IF "${OPTIONS_LIB}"=="options-lib_uefi-setup-menu" + Verify SMMSTORE Changes (Setup Menu) ${os_id} + ELSE IF "${OPTIONS_LIB}"=="options-lib_dcu" + Log To Console + ... Verifying DCU possible only using on this device DCU. The test may not be trustworthy. + ... WARN + Verify SMMSTORE Changes (DCU) ${os_id} + ELSE + Fail Unsupported $OPTIONS_LIB: ${OPTIONS_LIB} + END diff --git a/dasharo-compatibility/device-detection.robot b/dasharo-compatibility/device-detection.robot index 4b39abc05f..14365566c1 100644 --- a/dasharo-compatibility/device-detection.robot +++ b/dasharo-compatibility/device-detection.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing diff --git a/dasharo-compatibility/display-ports-and-lcd-support.robot b/dasharo-compatibility/display-ports-and-lcd-support.robot index 59caa409f2..e89a9d2ef7 100644 --- a/dasharo-compatibility/display-ports-and-lcd-support.robot +++ b/dasharo-compatibility/display-ports-and-lcd-support.robot @@ -22,69 +22,125 @@ Suite Teardown Log Out And Close Connection *** Test Cases *** -DSP001.002 - Internal display in OS (Ubuntu) +DSP001.201 - Internal display in OS (Ubuntu) [Documentation] Check whether an internal display is visible in ... Ubuntu. - Skip If not ${INTERNAL_LCD_DISPLAY_SUPPORT} DSP001.002 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} DSP001.002 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Check Internal LCD Linux - Exit From Root User + ... Previous IDs: DSP001.002 + Skip If not ${INTERNAL_LCD_DISPLAY_SUPPORT} DSP001.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} DSP001.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in "${TESTED_LINUX_DISTROS}" DSP001.201 not supported + Internal Display In OS ${ENV_ID_UBUNTU} -DSP001.003 - Internal display in OS (Windows) +DSP001.202 - Internal display in OS (Fedora) + [Documentation] Check whether an internal display is visible in + ... Ubuntu. + Skip If not ${INTERNAL_LCD_DISPLAY_SUPPORT} DSP001.202 not supported + Skip If "${ENV_ID_FEDORA}" not in "${TESTED_LINUX_DISTROS}" DSP003.202 not supported + Internal Display In OS ${ENV_ID_FEDORA} + +DSP001.301 - Internal display in OS (Windows) [Documentation] Check whether an internal display is visible in ... Windows OS. + ... Previous IDs: DSP001.003 Skip If not ${INTERNAL_LCD_DISPLAY_SUPPORT} DSP001.002 not supported Skip If not ${TESTS_IN_WINDOWS_SUPPORT} DSP001.002 not supported Power On Login To Windows Check Internal LCD Windows -DSP002.001 - External HDMI display in OS (Ubuntu) +DSP002.201 - External HDMI display in OS (Ubuntu) [Documentation] Check whether an external HDMI display is visible in ... Linux OS. An external HDMI display must be provided in ... the platform config. - Skip If not ${EXTERNAL_HDMI_DISPLAY_SUPPORT} DSP003.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} DSP003.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Check External HDMI In Linux - Exit From Root User + ... Previous IDs: DSP002.002 + Skip If not ${EXTERNAL_HDMI_DISPLAY_SUPPORT} DSP002.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} DSP002.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in "${TESTED_LINUX_DISTROS}" DSP001.201 not supported + External HDMI Display ${ENV_ID_UBUNTU} -DSP002.002 - External HDMI display in OS (Windows) +DSP002.202 - External HDMI display in OS (Fedora) [Documentation] Check whether an external HDMI display is visible in - ... Windows OS. An external HDMI display must be provided in + ... Fedora OS. An external HDMI display must be provided in ... the platform config. Skip If not ${EXTERNAL_HDMI_DISPLAY_SUPPORT} DSP002.002 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} DSP002.002 not supported + Skip If "${ENV_ID_FEDORA}" not in "${TESTED_LINUX_DISTROS}" DSP003.202 not supported + External HDMI Display ${ENV_ID_FEDORA} + +DSP002.301 - External HDMI display in OS (Windows) + [Documentation] Check whether an external HDMI display is visible in + ... Windows OS. An external HDMI display must be provided in + ... the platform config. + ... Previous IDs: DSP002.003 + Skip If not ${EXTERNAL_HDMI_DISPLAY_SUPPORT} DSP002.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} DSP002.301 not supported Power On Login To Windows Check HDMI Windows -DSP003.001 - External DP display in OS (Ubuntu) +DSP003.201 - External DP display in OS (Ubuntu) [Documentation] Check whether an external Display Port is visible in ... Linux OS. An external Display Port must be provided in ... the platform config. - Skip If not ${EXTERNAL_DISPLAY_PORT_SUPPORT} DSP003.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} DSP003.001 not supported + ... Previous IDs: DSP003.001 + Skip If not ${EXTERNAL_DISPLAY_PORT_SUPPORT} DSP003.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} DSP003.201 supported + Skip If "${ENV_ID_UBUNTU}" not in "${TESTED_LINUX_DISTROS}" DSP001.201 not supported + External DP Display In OS ${ENV_ID_UBUNTU} + +DSP003.202 - External DP display in OS (Fedora) + [Documentation] Check whether an external Display Port is visible in + ... Linux OS. An external Display Port must be provided in + ... the platform config. + Skip If not ${EXTERNAL_DISPLAY_PORT_SUPPORT} DSP003.202 not supported + Skip If "${ENV_ID_FEDORA}" not in "${TESTED_LINUX_DISTROS}" DSP003.202 not supported + External DP Display In OS ${ENV_ID_FEDORA} + +DSP003.301 - External DP display in OS (Windows) + [Documentation] Check whether an external Display Port is visible in + ... Windows OS. An external Display Port must be provided in + ... the platform config. + ... Previous IDs: DSP003.002 + Skip If not ${EXTERNAL_DISPLAY_PORT_SUPPORT} DSP003.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} 301.002 not supported Power On - Boot System Or From Connected Disk ubuntu + Login To Windows + Check DP Windows + + +*** Keywords *** +External HDMI Display + [Documentation] Check whether an external HDMI display is visible in + ... Linux OS. An external HDMI display must be provided in + ... the platform config. + [Tags] robot:private + [Arguments] ${os_id} + Power On + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User - Check External DP In Linux + Check External HDMI In Linux Exit From Root User -DSP003.002 - External DP display in OS (Windows) +Internal Display In OS + [Documentation] Check whether an internal display is visible + [Tags] robot:private + [Arguments] ${os_id} + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + Check Internal LCD Linux + Exit From Root User + +External DP Display In OS [Documentation] Check whether an external Display Port is visible in - ... Windows OS. An external Display Port must be provided in + ... Linux OS. An external Display Port must be provided in ... the platform config. - Skip If not ${EXTERNAL_DISPLAY_PORT_SUPPORT} DSP003.002 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} DSP003.002 not supported + [Tags] robot:private + [Arguments] ${os_id} Power On - Login To Windows - Check DP Windows + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + Check External DP In Linux + Exit From Root User diff --git a/dasharo-compatibility/dmidecode.robot b/dasharo-compatibility/dmidecode.robot index 3061762845..7421c2a0a6 100644 --- a/dasharo-compatibility/dmidecode.robot +++ b/dasharo-compatibility/dmidecode.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -28,57 +27,150 @@ Suite Teardown Run Keyword *** Test Cases *** -DMI001.001 Verify the device serial number +DMI001.201 Verify the device serial number [Documentation] Check whether the DUT serial number is the same as it is ... expected. - Skip If not ${SERIAL_NUMBER_VERIFICATION} DMI001.001 not supported + ... Previous IDs: DMI001.001 + Skip If not ${SERIAL_NUMBER_VERIFICATION} DMI001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DMI001.201 not supported + Get SMBIOS Values ${ENV_ID_UBUNTU} Should Contain ${DMI_SYSTEM} Serial Number: ${DMIDECODE_SERIAL_NUMBER} IF ${SERIAL_FROM_MAC} Compare Serial Number From MAC ${DMI_SYSTEM} -DMI002.001 Verify the firmware version +DMI002.201 Verify the firmware version [Documentation] Check whether the firmware version on the DUT is the ... same as it is expected. + ... Previous IDs: DMI002.001 [Tags] minimal-regression - Skip If not ${FIRMWARE_NUMBER_VERIFICATION} DMI002.001 not supported + Skip If not ${FIRMWARE_NUMBER_VERIFICATION} DMI002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DMI002.201 not supported + Get SMBIOS Values ${ENV_ID_UBUNTU} Should Contain ${DMI_BIOS} Version: ${DMIDECODE_FIRMWARE_VERSION} IF ${FIRMWARE_FROM_BINARY} Firmware Version Verification From Binary -DMI003.001 Verify the firmware product name +DMI003.201 Verify the firmware product name [Documentation] Check whether the DUT product name is the same as it is ... expected. + ... Previous IDs: DMI003.001 [Tags] minimal-regression - Skip If not ${PRODUCT_NAME_VERIFICATION} DMI003.001 not supported + Skip If not ${PRODUCT_NAME_VERIFICATION} DMI003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DMI003.201 not supported + Get SMBIOS Values ${ENV_ID_UBUNTU} Should Contain ${DMI_SYSTEM} Product Name: ${DMIDECODE_PRODUCT_NAME} -DMI004.001 Verify the firmware release date +DMI004.201 Verify the firmware release date [Documentation] Check whether the firmware release date on the DUT is ... the same as it is expected. - Skip If not ${RELEASE_DATE_VERIFICATION} DMI004.001 not supported + ... Previous IDs: DMI004.001 + Skip If not ${RELEASE_DATE_VERIFICATION} DMI004.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DMI004.201 not supported + Get SMBIOS Values ${ENV_ID_UBUNTU} Should Contain ${DMI_BIOS} Release Date: ${DMIDECODE_RELEASE_DATE} -DMI005.001 Verify the firmware manufacturer +DMI005.201 Verify the firmware manufacturer [Documentation] Check whether the firmware manufacturer on the DUT is ... the same as it is expected. - Skip If not ${MANUFACTURER_VERIFICATION} DMI005.001 not supported + ... Previous IDs: DMI005.001 + Skip If not ${MANUFACTURER_VERIFICATION} DMI005.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DMI005.201 not supported + Get SMBIOS Values ${ENV_ID_UBUNTU} Should Contain ${DMI_SYSTEM} Manufacturer: ${DMIDECODE_MANUFACTURER} Should Contain ${DMI_BASEBOARD} Manufacturer: ${DMIDECODE_MANUFACTURER} -DMI006.001 Verify the firmware vendor +DMI006.201 Verify the firmware vendor [Documentation] Check whether the firmware vendor on the DUT is the same ... as it is expected. - Skip If not ${VENDOR_VERIFICATION} DMI006.001 not supported + ... Previous IDs: DMI006.001 + Skip If not ${VENDOR_VERIFICATION} DMI006.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DMI006.201 not supported + Get SMBIOS Values ${ENV_ID_UBUNTU} Should Contain ${DMI_BIOS} Vendor: ${DMIDECODE_VENDOR} -DMI007.001 Verify the firmware family +DMI007.201 Verify the firmware family [Documentation] Check whether the firmware family on the DUT is the same ... as it is expected. - Skip If not ${FAMILY_VERIFICATION} DMI007.001 not supported + ... Previous IDs: DMI007.001 + Skip If not ${FAMILY_VERIFICATION} DMI007.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DMI007.201 not supported + Get SMBIOS Values ${ENV_ID_UBUNTU} Should Contain ${DMI_SYSTEM} Family: ${DMIDECODE_FAMILY} -DMI008.001 Verify the firmware type +DMI008.201 Verify the firmware type [Documentation] Check whether the firmware type on the DUT is the same ... as it is expected. - Skip If not ${TYPE_VERIFICATION} DMI008.001 not supported + ... Previous IDs: DMI008.001 + Skip If not ${TYPE_VERIFICATION} DMI008.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} DMI008.201 not supported + Get SMBIOS Values ${ENV_ID_UBUNTU} + Should Contain ${DMI_CHASSIS} Type: ${DMIDECODE_TYPE} + +DMI001.202 Verify the device serial number + [Documentation] Check whether the DUT serial number is the same as it is + ... expected. + Skip If not ${SERIAL_NUMBER_VERIFICATION} DMI001.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DMI001.202 not supported + Get SMBIOS Values ${ENV_ID_FEDORA} + Should Contain ${DMI_SYSTEM} Serial Number: ${DMIDECODE_SERIAL_NUMBER} + IF ${SERIAL_FROM_MAC} Compare Serial Number From MAC ${DMI_SYSTEM} + +DMI002.202 Verify the firmware version + [Documentation] Check whether the firmware version on the DUT is the + ... same as it is expected. + [Tags] minimal-regression + Skip If not ${FIRMWARE_NUMBER_VERIFICATION} DMI002.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DMI002.202 not supported + Get SMBIOS Values ${ENV_ID_FEDORA} + Should Contain ${DMI_BIOS} Version: ${DMIDECODE_FIRMWARE_VERSION} + IF ${FIRMWARE_FROM_BINARY} Firmware Version Verification From Binary + +DMI003.202 Verify the firmware product name + [Documentation] Check whether the DUT product name is the same as it is + ... expected. + [Tags] minimal-regression + Skip If not ${PRODUCT_NAME_VERIFICATION} DMI003.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DMI003.202 not supported + Get SMBIOS Values ${ENV_ID_FEDORA} + Should Contain ${DMI_SYSTEM} Product Name: ${DMIDECODE_PRODUCT_NAME} + +DMI004.202 Verify the firmware release date + [Documentation] Check whether the firmware release date on the DUT is + ... the same as it is expected. + Skip If not ${RELEASE_DATE_VERIFICATION} DMI004.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DMI004.202 not supported + Get SMBIOS Values ${ENV_ID_FEDORA} + Should Contain ${DMI_BIOS} Release Date: ${DMIDECODE_RELEASE_DATE} + +DMI005.202 Verify the firmware manufacturer + [Documentation] Check whether the firmware manufacturer on the DUT is + ... the same as it is expected. + Skip If not ${MANUFACTURER_VERIFICATION} DMI005.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DMI005.202 not supported + Get SMBIOS Values ${ENV_ID_FEDORA} + Should Contain ${DMI_SYSTEM} Manufacturer: ${DMIDECODE_MANUFACTURER} + Should Contain ${DMI_BASEBOARD} Manufacturer: ${DMIDECODE_MANUFACTURER} + +DMI006.202 Verify the firmware vendor + [Documentation] Check whether the firmware vendor on the DUT is the same + ... as it is expected. + Skip If not ${VENDOR_VERIFICATION} DMI006.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DMI006.202 not supported + Get SMBIOS Values ${ENV_ID_FEDORA} + Should Contain ${DMI_BIOS} Vendor: ${DMIDECODE_VENDOR} + +DMI007.202 Verify the firmware family + [Documentation] Check whether the firmware family on the DUT is the same + ... as it is expected. + Skip If not ${FAMILY_VERIFICATION} DMI007.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DMI007.202 not supported + Get SMBIOS Values ${ENV_ID_FEDORA} + Should Contain ${DMI_SYSTEM} Family: ${DMIDECODE_FAMILY} + +DMI008.202 Verify the firmware type + [Documentation] Check whether the firmware type on the DUT is the same + ... as it is expected. + Skip If not ${TYPE_VERIFICATION} DMI008.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} DMI008.202 not supported + Get SMBIOS Values ${ENV_ID_FEDORA} Should Contain ${DMI_CHASSIS} Type: ${DMIDECODE_TYPE} @@ -88,11 +180,13 @@ Get SMBIOS Values ... and Chassis) and store them in suite variables. Each table is stored ... in a dedicated variable because their fields have generic names (e.g. ... Type) that is later extracted in the test cases. + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User - Detect Or Install Package dmidecode + ${out}= Execute Linux Command dmidecode -t bios Set Suite Variable $DMI_BIOS ${out} ${out}= Execute Linux Command dmidecode -t system diff --git a/dasharo-compatibility/eMMC-support.robot b/dasharo-compatibility/eMMC-support.robot index edcc19d802..9409d849b7 100644 --- a/dasharo-compatibility/eMMC-support.robot +++ b/dasharo-compatibility/eMMC-support.robot @@ -29,7 +29,7 @@ MMC001.001 eMMC support (Ubuntu) Skip If not ${EMMC_SUPPORT} MMC001.001 not supported Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MMC001.001 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${out}= Execute Command In Terminal cat /sys/class/block/mmcblk0/device/name diff --git a/dasharo-compatibility/ec-and-super-IO.robot b/dasharo-compatibility/ec-and-super-IO.robot index 0ad922685e..198df5eb65 100644 --- a/dasharo-compatibility/ec-and-super-IO.robot +++ b/dasharo-compatibility/ec-and-super-IO.robot @@ -25,71 +25,48 @@ Suite Teardown Run Keyword *** Test Cases *** -ECR001.001 Battery monitoring - charge level in OS (Ubuntu) +ECR001.201 Battery monitoring - charge level in OS (Ubuntu) [Documentation] Check whether the battery charge level can be read ... (in mAh) in Linux OS. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR001.001 not supported + ... Previous IDs: ECR001.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR001.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} ECR001.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package acpi-call Turn On ACPI CALL Module In Linux Check Charge Level In Linux Exit From Root User -ECR001.002 Battery monitoring - charge level in OS (Windows) - [Documentation] Check whether battery charge level can be read in - ... Windows OS. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ECR001.002 not supported - Power On - Login To Windows - ${out}= Get Battery Power Level Windows - Should Be True ${out} > 0 and ${out} < 101 - -ECR002.001 Battery monitoring - charging state in OS (Ubuntu) +ECR002.201 Battery monitoring - charging state in OS (Ubuntu) [Documentation] Check whether the battery state can be read in Linux OS. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR002.001 not supported + ... Previous IDs: ECR002.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR002.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} ECR002.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package acpi-call Turn On ACPI CALL Module In Linux Check Charging State In Linux Exit From Root User -ECR002.002 Battery monitoring - charging state in OS (Windows) - [Documentation] Check whether the battery state can be read in Windows - ... OS. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ECR002.002 not supported - Power On - Login To Windows - Check If Battery Is Charging Windows - -ECR003.001 Touchpad in OS - (Ubuntu) +ECR003.201 Touchpad in OS - (Ubuntu) [Documentation] Check whether touchpad is visible in Linux OS. ... Touchpad steering and effect detection must be checked ... manually. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR003.001 not supported - + ... Previous IDs: ECR003.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR003.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} ECR003.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package libinput-tools - Detect Or Install Package acpi-call Turn On ACPI CALL Module In Linux Device Detection In Linux Touchpad Exit From Root User -ECR003.002 Touchpad in OS - (Windows) - [Documentation] Check whether touchpad is visible in Windows OS. - ... Touchpad steering and effect detection must be checked - ... manually. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ECR003.002 not supported - Power On - Login To Windows - ${out}= Get Pointing Devices Windows - Should Contain ${out} HID-compliant mouse - # ECR005.001 Keyboard (function key: play/pause) in OS (Ubuntu) # [Documentation] Check whether function key: play/pause works in # ... Linux OS. @@ -128,87 +105,62 @@ ECR003.002 Touchpad in OS - (Windows) # No Operation # # TODO: Pi-KVM necessary -ECR014.001 Keyboard (function key: brightness down) in OS (Ubuntu) +ECR014.201 Keyboard (function key: brightness down) in OS (Ubuntu) [Documentation] Check whether function key: brightness down works in ... Linux OS. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR015.001 not supported + ... Previous IDs: ECR014.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR014.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} ECR0014.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package acpi-call - Turn On ACPI CALL Module In Linux - ${max_brightness}= Get Maximum Brightness In Linux - Set Brightness In Linux ${max_brightness} - ${brightness1}= Get Current Brightness In Linux - Brightness Down Button In Linux - ${brightness2}= Get Current Brightness In Linux - Should Be True ${brightness2} < ${brightness1} + Keyboard Function Key Brightness Down In Linux Exit From Root User -ECR015.001 Keyboard (function key: brightness up) in OS (Ubuntu) +ECR015.201 Keyboard (function key: brightness up) in OS (Ubuntu) [Documentation] Check whether function key: brightness up works in ... Linux OS. - IF not ${EC_AND_SUPER_IO_SUPPORT} SKIP ECR015.001 not supported - IF not ${TESTS_IN_UBUNTU_SUPPORT} SKIP ECR015.001 not supported + ... Previous IDs: ECR015.001 + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR015.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR015.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} ECR0015.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package acpi-call - Turn On ACPI CALL Module In Linux - Set Brightness In Linux 0 - ${brightness1}= Get Current Brightness In Linux - Brightness Up Button In Linux - ${brightness2}= Get Current Brightness In Linux - Should Be True ${brightness2} > ${brightness1} + Keyboard Function Key Brightness Up In Linux Exit From Root User -ECR016.001 Keyboard (function key: camera on/off) in OS (Ubuntu) +ECR016.201 Keyboard (function key: camera on/off) in OS (Ubuntu) [Documentation] Check whether the camera on/off hotkey works correctly. - IF not ${EC_AND_SUPER_IO_SUPPORT} SKIP ECR016.001 not supported - IF not ${USB_CAMERA_DETECTION_SUPPORT} - SKIP ECR016.001 not supported - END - IF not ${TESTS_IN_UBUNTU_SUPPORT} SKIP ECR016.001 not supported + ... Previous IDs: ECR016.001 + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR016.201 not supported + Skip If not ${USB_CAMERA_DETECTION_SUPPORT} ECR016.201 not supported + Skip If not ${ACPI_CAMERA_SWITCH_SUPPORT} ECR016.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR016.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} ECR0016.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package acpi-call - Turn On ACPI CALL Module In Linux - ${out}= List Devices In Linux usb - Should Contain ${out} Camera - Toggle Camera In Linux - ${out}= List Devices In Linux usb - Should Not Contain ${out} Camera - Toggle Camera In Linux - ${out}= List Devices In Linux usb - Should Contain ${out} Camera + Keyboard Function Key Camera OnOff In Linux Exit From Root User -ECR017.001 Keyboard (function key: flight mode) in OS (Ubuntu) +ECR017.201 Keyboard (function key: flight mode) in OS (Ubuntu) [Documentation] Check whether function key: flight mode works in ... Linux OS. - IF not ${EC_AND_SUPER_IO_SUPPORT} SKIP ECR017.001 not supported - IF not ${TESTS_IN_UBUNTU_SUPPORT} SKIP ECR017.001 not supported - IF not ${WIRELESS_CARD_SUPPORT} SKIP ECR017.001 not supported + ... Previous IDs: ECR017.001 + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR017.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR017.201 not supported + Skip If not ${WIRELESS_CARD_SUPPORT} ECR017.201 not supported + Skip If '${DUT_CONNECTION_METHOD}' == 'SSH' ECR017.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} ECR0017.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package acpi-call - Turn On ACPI CALL Module In Linux - ${wifi_status}= Get WiFi Block Status - ${bt_status}= Get Bluetooth Block Status - Should Be True ${wifi_status} == False - Should Be True ${bt_status} == False - Toggle Flight Mode In Linux - ${wifi_status}= Get WiFi Block Status - ${bt_status}= Get Bluetooth Block Status - Should Be True ${wifi_status} == True - Should Be True ${bt_status} == True - Toggle Flight Mode In Linux - ${wifi_status}= Get WiFi Block Status - ${bt_status}= Get Bluetooth Block Status - Should Be True ${wifi_status} == False - Should Be True ${bt_status} == False + Keyboard Function Key Flight Mode In Linux Exit From Root User # ECR018.001 Keyboard (function key: sleep) in OS (Ubuntu) @@ -217,59 +169,210 @@ ECR017.001 Keyboard (function key: flight mode) in OS (Ubuntu) # Power On # Login to Linux # Switch to root user -# Detect or Install Package acpi-call +# # Turn On ACPI_CALL module in Linux # Enter sleep mode in Linux # Wake from sleep mode in Linux # Exit from root user -ECR019.001 Buttons (button: power) in OS (Ubuntu) +ECR019.201 Buttons (button: power) in OS (Ubuntu) [Documentation] Check whether button: power is detected in Linux OS. - IF not ${EC_AND_SUPER_IO_SUPPORT} SKIP ECR019.001 not supported - IF not ${TESTS_IN_UBUNTU_SUPPORT} SKIP ECR019.001 not supported + ... Previous IDs: ECR019.001 + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR019.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR019.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} ECR0019.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package acpi-call Turn On ACPI CALL Module In Linux Device Detection In Linux Power Exit From Root User -ECR020.001 Charging until 98% level in OS (Ubuntu) +ECR020.201 Charging until 98% level in OS (Ubuntu) [Documentation] Check whether the DUT stops charging the battery when the ... 98% threshold is reached. - IF not ${EC_AND_SUPER_IO_SUPPORT} SKIP ECR020.001 not supported - IF not ${TESTS_IN_UBUNTU_SUPPORT} SKIP ECR020.001 not supported + ... Previous IDs: ECR020.001 + Skip If '${POWER_CTRL}' != 'sonoff' ECR020.201 not supported + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR020.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR020.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} ECR0020.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Sonoff On - Charge Battery Until Target Level In Linux 98 - Sonoff Off + Charging Until 98% Level In Linux Check Charging State Not Charging In Linux -ECR021.001 Not charging between 95% and 98% in OS (Ubuntu) +ECR021.201 Not charging between 95% and 98% in OS (Ubuntu) [Documentation] Check whether the DUT does not charge the battery when ... the charge level is between 95% and 98%. - IF not ${EC_AND_SUPER_IO_SUPPORT} SKIP ECR021.001 not supported - IF not ${TESTS_IN_UBUNTU_SUPPORT} SKIP ECR021.001 not supported + ... Previous IDs: ECR021.001 + Skip If '${POWER_CTRL}' != 'sonoff' ECR021.201 not supported + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR021.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR021.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} ECR0021.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - ${percentage}= Check Battery Percentage In Linux - IF ${percentage} < 95 - Sonoff On - Charge Battery Until Target Level In Linux 96 - Sonoff Off - Sleep 5 - Sonoff On - Check Charging State Not Charging In Linux - ELSE - Sonoff Off - Sleep 5 - Sonoff On - Check Charging State Not Charging In Linux - END + Not Charging Between 95% And 98% In Linux + Exit From Root User + +ECR001.202 Battery monitoring - charge level in OS (Fedora) + [Documentation] Check whether the battery charge level can be read + ... (in mAh) in Linux OS. + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} ECR001.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Turn On ACPI CALL Module In Linux + Check Charge Level In Linux + Exit From Root User + +ECR002.202 Battery monitoring - charging state in OS (Fedora) + [Documentation] Check whether the battery state can be read in Linux OS. + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} ECR002.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Turn On ACPI CALL Module In Linux + Check Charging State In Linux + Exit From Root User + +ECR003.202 Touchpad in OS - (Fedora) + [Documentation] Check whether touchpad is visible in Linux OS. + ... Touchpad steering and effect detection must be checked + ... manually. + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} ECR002.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Turn On ACPI CALL Module In Linux + Device Detection In Linux Touchpad + Exit From Root User + +ECR014.202 Keyboard (function key: brightness down) in OS (Fedora) + [Documentation] Check whether function key: brightness down works in + ... Linux OS. + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} ECR0014.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Keyboard Function Key Brightness Down In Linux + Exit From Root User + +ECR015.202 Keyboard (function key: brightness up) in OS (Fedora) + [Documentation] Check whether function key: brightness up works in + ... Linux OS. + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR015.202 not supported + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} ECR0015.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Keyboard Function Key Brightness Up In Linux + Exit From Root User + +ECR016.202 Keyboard (function key: camera on/off) in OS (Fedora) + [Documentation] Check whether the camera on/off hotkey works correctly. + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR016.202 not supported + Skip If not ${USB_CAMERA_DETECTION_SUPPORT} ECR016.202 not supported + Skip If not ${ACPI_CAMERA_SWITCH_SUPPORT} ECR016.201 not supported + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} ECR0016.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Keyboard Function Key Camera OnOff In Linux + Exit From Root User + +ECR017.202 Keyboard (function key: flight mode) in OS (Fedora) + [Documentation] Check whether function key: flight mode works in + ... Linux OS. + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR017.202 not supported + Skip If not ${WIRELESS_CARD_SUPPORT} ECR017.202 not supported + Skip If '${DUT_CONNECTION_METHOD}' == 'SSH' ECR017.202 not supported + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} ECR0017.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Keyboard Function Key Flight Mode In Linux + Exit From Root User + +ECR019.202 Buttons (button: power) in OS (Fedora) + [Documentation] Check whether button: power is detected in Linux OS. + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR019.202 not supported + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} ECR0019.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Turn On ACPI CALL Module In Linux + Device Detection In Linux Power + Exit From Root User + +ECR020.202 Charging until 98% level in OS (Fedora) + [Documentation] Check whether the DUT stops charging the battery when the + ... 98% threshold is reached. + Skip If '${POWER_CTRL}' != 'sonoff' ECR020.202 not supported + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR020.202 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} ECR020.202 not supported + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} ECR0020.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Charging Until 98% Level In Linux + Check Charging State Not Charging In Linux + +ECR021.202 Not charging between 95% and 98% in OS (Fedora) + [Documentation] Check whether the DUT does not charge the battery when + ... the charge level is between 95% and 98%. + Skip If '${POWER_CTRL}' != 'sonoff' ECR021.202 not supported + Skip If not ${EC_AND_SUPER_IO_SUPPORT} ECR021.202 not supported + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} ECR0021.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Not Charging Between 95% And 98% In Linux + Exit From Root User + +ECR001.301 Battery monitoring - charge level in OS (Windows) + [Documentation] Check whether battery charge level can be read in + ... Windows OS. + ... Previous IDs: ECR001.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ECR001.301 not supported + Power On + Login To Windows + ${out}= Get Battery Power Level Windows + Should Be True ${out} > 0 and ${out} < 101 + +ECR002.301 Battery monitoring - charging state in OS (Windows) + [Documentation] Check whether the battery state can be read in Windows + ... OS. + ... Previous IDs: ECR002.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ECR002.301 not supported + Power On + Login To Windows + Check If Battery Is Charging Windows + +ECR003.301 Touchpad in OS - (Windows) + [Documentation] Check whether touchpad is visible in Windows OS. + ... Touchpad steering and effect detection must be checked + ... manually. + ... Previous IDs: ECR003.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} ECR003.301 not supported + Power On + Login To Windows + ${out}= Get Pointing Devices Windows + Should Contain ${out} HID-compliant mouse ECR022.001 EC sync update with power adapter connected works correctly [Documentation] This test aims to verify whether coreboot update @@ -374,3 +477,87 @@ ECR023.001 EC sync doesn't update with power adapter disconnected ... ${FW_NO_EC_SYNC_VERSION} Check EC Firmware Version ... EXPECTED_VERSION=${EC_NO_SYNC_VERSION} TOOL=dasharo_ectool + + +*** Keywords *** +Keyboard Function Key Brightness Down In Linux + [Documentation] Check whether function key: brightness down works in + ... Linux OS. + [Tags] robot:private + Turn On ACPI CALL Module In Linux + ${max_brightness}= Get Maximum Brightness In Linux + Set Brightness In Linux ${max_brightness} + ${brightness1}= Get Current Brightness In Linux + Brightness Down Button In Linux + ${brightness2}= Get Current Brightness In Linux + Should Be True ${brightness2} < ${brightness1} + +Keyboard Function Key Brightness Up In Linux + [Documentation] Check whether function key: brightness up works in + ... Linux OS. + [Tags] robot:private + Turn On ACPI CALL Module In Linux + Set Brightness In Linux 0 + ${brightness1}= Get Current Brightness In Linux + Brightness Up Button In Linux + ${brightness2}= Get Current Brightness In Linux + Should Be True ${brightness2} > ${brightness1} + +Keyboard Function Key Camera OnOff In Linux + [Documentation] Check whether the camera on/off hotkey works correctly. + [Tags] robot:private + Turn On ACPI CALL Module In Linux + ${out}= List Devices In Linux usb + Should Contain Any ${out} Camera BisonCam + Toggle Camera In Linux + ${out}= List Devices In Linux usb + Should Not Contain Any ${out} Camera BisonCam + Toggle Camera In Linux + ${out}= List Devices In Linux usb + Should Contain Any ${out} Camera BisonCam + +Keyboard Function Key Flight Mode In Linux + [Documentation] Check whether function key: flight mode works in + ... Linux OS. + [Tags] robot:private + Turn On ACPI CALL Module In Linux + ${wifi_status}= Get WiFi Block Status + ${bt_status}= Get Bluetooth Block Status + Should Be True ${wifi_status} == False + Should Be True ${bt_status} == False + Toggle Flight Mode In Linux + ${wifi_status}= Get WiFi Block Status + ${bt_status}= Get Bluetooth Block Status + Should Be True ${wifi_status} == True + Should Be True ${bt_status} == True + Toggle Flight Mode In Linux + ${wifi_status}= Get WiFi Block Status + ${bt_status}= Get Bluetooth Block Status + Should Be True ${wifi_status} == False + Should Be True ${bt_status} == False + +Charging Until 98% Level In Linux + [Documentation] Check whether the DUT stops charging the battery when the + ... 98% threshold is reached. + Sonoff On + Charge Battery Until Target Level In Linux 98 + Sonoff Off + Check Charging State Not Charging In Linux + +Not Charging Between 95% And 98% In Linux + [Documentation] Check whether the DUT does not charge the battery when + ... the charge level is between 95% and 98%. + ${percentage}= Check Battery Percentage In Linux + IF ${percentage} < 95 + Sonoff On + Charge Battery Until Target Level In Linux 96 + Sonoff Off + Sleep 5 + Sonoff On + Check Charging State Not Charging In Linux + ELSE + Sonoff Off + Sleep 5 + Sonoff On + Check Charging State Not Charging In Linux + END diff --git a/dasharo-compatibility/efi.robot b/dasharo-compatibility/efi.robot index 2272b57a77..1dcea1459e 100644 --- a/dasharo-compatibility/efi.robot +++ b/dasharo-compatibility/efi.robot @@ -30,7 +30,7 @@ EFI001.001 Boot into UEFI OS (Ubuntu) ... possibility to identify the system. Skip If not ${TESTS_IN_UBUNTU_SUPPORT} EFI001.001 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${out}= Execute Command In Terminal cat /etc/os-release diff --git a/dasharo-compatibility/efibootmgr.robot b/dasharo-compatibility/efibootmgr.robot index 7d6fa0bd42..1761fb9d9b 100644 --- a/dasharo-compatibility/efibootmgr.robot +++ b/dasharo-compatibility/efibootmgr.robot @@ -16,14 +16,8 @@ Resource ../keys.robot # - document which setup/teardown keywords to use and what are they doing # - go threough them and make sure they are doing what the name suggest (not # exactly the case right now) -Suite Setup Run Keywords -... Prepare Test Suite -... AND -... Login And Remove Test Boot Entry -Suite Teardown Run Keywords -... Login And Remove Test Boot Entry -... AND -... Log Out And Close Connection +Suite Setup Efibootmgr Suite Setup +Suite Teardown Efibootmgr Suite Teardown *** Variables *** @@ -31,9 +25,8 @@ ${TEST_BOOT_ENTRY_NAME}= dasharo-compatibility_efibootmgr-custom-boot-entry *** Test Cases *** -EBM001.001 Network Boot enable +EBM001.201 Network Boot enable [Documentation] Test if enabling network boot entry works. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} EBM0001.001 not supported Skip If not ${DASHARO_NETWORKING_MENU_SUPPORT} EBM001.001 not supported ${boot_menu}= Get UEFI Boot Manager Entries @@ -46,9 +39,8 @@ EBM001.001 Network Boot enable ${boot_menu}= Get UEFI Boot Manager Entries Should Contain ${boot_menu} ${IPXE_BOOT_ENTRY} -EBM002.001 Network Boot disable +EBM002.201 Network Boot disable [Documentation] Test if disabling network boot entry works. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} EBM002.001 not supported Skip If not ${DASHARO_NETWORKING_MENU_SUPPORT} EBM002.001 not supported ${boot_menu}= Get UEFI Boot Manager Entries @@ -61,9 +53,8 @@ EBM002.001 Network Boot disable ${boot_menu}= Get UEFI Boot Manager Entries Should Not Contain ${boot_menu} ${IPXE_BOOT_ENTRY} -EBM003.001 Custom Boot Order Add +EBM003.201 Custom Boot Order Add [Documentation] Test if adding a custom boot entry works. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} EBM003.001 not supported Skip If not ${CUSTOM_BOOT_ORDER_SUPPORT} EBM003.001 not supported Login To Linux @@ -94,9 +85,8 @@ EBM003.001 Custom Boot Order Add ${out}= Execute Command In Terminal efibootmgr Should Contain ${out} ${TEST_BOOT_ENTRY_NAME} -EBM004.001 Custom Boot Order Remove +EBM004.201 Custom Boot Order Remove [Documentation] Test if removing a custom boot entry works. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} EBM004.001 not supported Skip If not ${CUSTOM_BOOT_ORDER_SUPPORT} EBM004.001 not supported Login To Linux @@ -120,6 +110,8 @@ EBM004.001 Custom Boot Order Remove *** Keywords *** Login And Remove Test Boot Entry + Power Cycle On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Remove Test Boot Entry Return Bootorder @@ -136,3 +128,16 @@ Find Test Boot Entry Id ${id}= Set Variable ... $(efibootmgr | grep "${TEST_BOOT_ENTRY_NAME}" | cut -d" " -f1 | grep -Eo '[0-9A-F]{4}' | grep -Eo '[^0][0-9A-F]{0,3}|0$') RETURN ${id} + +Efibootmgr Suite Setup + [Documentation] Load platform config, and if this suite is supported + ... remove remaining boot entries. + Prepare Test Suite + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} Efi Boot Manager requires Ubuntu + Login And Remove Test Boot Entry + +Efibootmgr Suite Teardown + [Documentation] If tests are supported, remove test boot entries + ... and then close connection to DUT + IF ${TESTS_IN_UBUNTU_SUPPORT} Login And Remove Test Boot Entry + Log Out And Close Connection diff --git a/dasharo-compatibility/esp-scanning.robot b/dasharo-compatibility/esp-scanning.robot index 25007989cb..0cd2642864 100644 --- a/dasharo-compatibility/esp-scanning.robot +++ b/dasharo-compatibility/esp-scanning.robot @@ -12,30 +12,14 @@ Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -# Library ../lib/QemuMonitor.py /tmp/qmp-socket -# Required setup keywords: -# Prepare Test Suite - generic setup keyword for all tests -# Required teardown keywords: -# Log Out And Close Connection - generic setup keyword for all tests, -# closes all connections to DUT and PiKVM -Suite Setup Run Keywords -... Prepare Test Suite -... AND -... Skip If not ${ESP_SCANNING_SUPPORT} ESP scanning tests not supported -... AND -... Prepare Required Files For Qemu -... AND -... Prepare EFI Partition With System Files -Suite Teardown Run Keywords -... Clear Out EFI Partition AND -... Log Out And Close Connection +Suite Setup Setup Esp Scanning Suite +Suite Teardown Teardown Esp Scanning Suite *** Test Cases *** ESP001.001 ESP Scan with OS-specific .efi files added [Documentation] This test aims to verify that any properly added .efi ... files will have boot menu entries created for them. - Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} ESP001.001 not supported Power On ${boot_menu}= Enter Boot Menu Tianocore And Return Construction FOR ${system} IN @{SYSTEMS_FOR_ESP_TESTING} @@ -49,11 +33,8 @@ ESP003.001 ESP Scan ignores OSes on removable media [Documentation] This test aims to verify that the bootable /EFI ... partitions of removable media are ignored by the scan and aren't ... listed in boot menu, except for DTS. - Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} ESP003.001 not supported Power On - Download ISO And Mount As USB ${DL_CACHE_DIR}/CorePlus-current.iso - ... ${TINYCORE_URL} - ... 5c0c5c7c835070f0adcaeafad540252e9dd2935c02e57de6112fb92fb5d6f9c5 + Mount USB Disk Image ${TEST_DATA_DIR}/iso/TinyCore-15.0.iso required=${FALSE} Power On ${boot_menu}= Enter Boot Menu Tianocore And Return Construction Should Not Contain Match ${boot_menu} *CorePlus* @@ -62,7 +43,6 @@ ESP004.001 ESP Scan does not create duplicate entries [Documentation] This test aims to verify that the firmware will not ... create duplicate entries, for example, if both shimx64 and grubx64 ... are present for a single OS. - Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} ESP004.001 not supported Power On ${boot_menu}= Enter Boot Menu Tianocore And Return Construction @@ -78,20 +58,15 @@ ESP005.001 ESP Scan detects Dasharo Tools Suite [Documentation] This test aims to verify that the firmware detects ... Dasharo Tools Suite boot media and creates a corresponding boot ... menu entry. - Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} ESP005.001 not supported Power On - Download ISO And Mount As USB - ... ${DL_CACHE_DIR}/dts-base-i${DL_CACHE_DIR}/mage-v1.2.8.iso - ... ${DTS_URL} - ... f42b59633dbcc16ecbd7c98a880c582c5235c22626d7204202c922f3a7fa231b + Mount USB Disk Image ${TEST_DATA_DIR}/dts/dts-base-image-v2.1.3.wic Power On ${boot_menu}= Enter Boot Menu Tianocore And Return Construction - Should Contain Match ${boot_menu} Dasharo Tools Suite on (* + Should Contain Match ${boot_menu} Dasharo Tools Suite (on * ESP006.001 ESP Scan does not find non-block boot devices [Documentation] This test aims to verify that the firmware will not ... find non-block boot devices - Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} ESP004.001 not supported Power On ${boot_menu}= Enter Boot Menu Tianocore And Return Construction FOR ${boot_option} IN @{boot_menu} @@ -101,9 +76,6 @@ ESP006.001 ESP Scan does not find non-block boot devices ESP002.001 ESP Scan after deleting additional .efi files [Documentation] This test aims to verify that none of the systems linger ... on in the boot menu after we've deleted their files from /EFI/. - Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} ESP002.001 not supported - Skip If not ${ESP_SCANNING_SUPPORT} ESP002.001 not supported - Power On Clear Out EFI Partition Power On @@ -111,3 +83,21 @@ ESP002.001 ESP Scan after deleting additional .efi files FOR ${system} IN @{SYSTEMS_FOR_ESP_TESTING} Should Not Contain Match ${boot_menu} ${system}* END + + +*** Keywords *** +Setup Esp Scanning Suite + [Documentation] Load platform config and prepare files for the testing + Prepare Test Suite + Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} ESP scanning tests not supported + Skip If not ${ESP_SCANNING_SUPPORT} ESP scanning tests not supported + Prepare EFI Partition With System Files + +Teardown Esp Scanning Suite + [Documentation] Teardown ESP suite. To reduce cross-suite interaction + ... we clear call Clear Out EFI Partition only if suite run in the + ... first place + IF ${ESP_SCANNING_SUPPORT} and ${TESTS_IN_FIRMWARE_SUPPORT} + Clear Out EFI Partition + END + Log Out And Close Connection diff --git a/dasharo-compatibility/firmware-bulding-locally.robot b/dasharo-compatibility/firmware-bulding-locally.robot index 1bcf5bf3c7..2d39504070 100644 --- a/dasharo-compatibility/firmware-bulding-locally.robot +++ b/dasharo-compatibility/firmware-bulding-locally.robot @@ -43,7 +43,6 @@ FLB002.001 Flash locally built firmware (Ubuntu) Power On Login To Linux Switch To Root User - Get Flashrom From Cloud Write Into Terminal flashrom -p internal -w ../coreboot/build/coreboot.rom --ifd -i bios ${flash_result}= Read From Terminal Until Prompt IF "Warning: Chip content is identical to the requested image." in """${flash_result}""" diff --git a/dasharo-compatibility/flash-test-stub.robot b/dasharo-compatibility/flash-test-stub.robot index 4b34e0ac7d..e25e946ede 100644 --- a/dasharo-compatibility/flash-test-stub.robot +++ b/dasharo-compatibility/flash-test-stub.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot Resource ../platform-configs/include/protectli-vp66xx.robot # TODO: diff --git a/dasharo-compatibility/flash-write-protection.robot b/dasharo-compatibility/flash-write-protection.robot index d12014b1b0..3fb15ec6c9 100644 --- a/dasharo-compatibility/flash-write-protection.robot +++ b/dasharo-compatibility/flash-write-protection.robot @@ -29,16 +29,18 @@ HWP001.001 Hardware flash write protection support [Documentation] Check whether the DUT support hardware write protection ... mechanism. Power On - Boot From USB - Serial Root Login Linux debian + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User Check Write Protection Availability HWP002.001 Hardware flash write protection enable / disable [Documentation] Check whether there is a possibility to set and erase ... hardware write protection on the DUT. Power On - Boot From USB - Serial Root Login Linux debian + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User Erase Write Protection Set Write Protection 0x00000000 ${FLASH_LENGTH} Check Write Protection Status diff --git a/dasharo-compatibility/miniPCIe-slot-verification.robot b/dasharo-compatibility/miniPCIe-slot-verification.robot index 50b87d9d8e..e95caf62e4 100644 --- a/dasharo-compatibility/miniPCIe-slot-verification.robot +++ b/dasharo-compatibility/miniPCIe-slot-verification.robot @@ -18,85 +18,159 @@ Resource ../keys.robot # exactly the case right now) Suite Setup Run Keywords ... Prepare Test Suite -... AND -... Skip If not ${MINI_PC_IE_SLOT_SUPPORT} MiniPCIe slot tests not supported +# ... AND +# ... Skip If not ${MINI_PC_IE_SLOT_SUPPORT} MiniPCIe slot tests not supported Suite Teardown Run Keyword ... Log Out And Close Connection *** Test Cases *** -MWL001.001 Wireless card detection (Ubuntu) +MWL001.201 Wireless card detection (Ubuntu) [Documentation] Check whether the Wi-Fi/Bluetooth card is enumerated ... correctly and can be detected from the operating system. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MWL001.001 not supported - Power On - Login To Linux - Switch To Root User - ${out}= List Devices In Linux pci - Should Contain ${out} ${WIFI_CARD} - Exit From Root User + ... Previous IDs: MWL001.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MWL001.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in "${TESTED_LINUX_DISTROS}" MWL001.201 not supported + Wireless Card Detection ${ENV_ID_UBUNTU} -MWL001.002 Wireless card detection (Windows) +MWL002.201 Wi-Fi scanning (Ubuntu) + [Documentation] Check whether the Wi-Fi functionality of card is + ... initialized correctly and can be used from within the + ... operating system.. + ... Previous IDs: MWL002.001 + Skip If not ${MINI_PC_IE_SLOT_SUPPORT} MWL002.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MWL002.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in "${TESTED_LINUX_DISTROS}" MWL002.201 not supported + Wi-Fi Scanning ${ENV_ID_UBUNTU} + +MWL003.201 Bluetooth scanning (Ubuntu) + [Documentation] Check whether the Bluetooth functionality of card is + ... initialized correctly and can be used from within the + ... operating system. + ... Previous IDs: MWL003.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MWL003.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in "${TESTED_LINUX_DISTROS}" MWL003.201 not supported + Bluetooth Scanning ${ENV_ID_UBUNTU} + +MWL004.201 LTE card detection (Ubuntu) + [Documentation] Check whether the LTE card is detected correctly in the + ... operating system. + ... Previous IDs: MWL004.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MWL004.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in "${TESTED_LINUX_DISTROS}" MWL004.201 not supported + LTE Card Detection ${ENV_ID_UBUNTU} + +MWL001.202 Wireless card detection (Fedora) [Documentation] Check whether the Wi-Fi/Bluetooth card is enumerated ... correctly and can be detected from the operating system. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} WLE001.002 not supported - Power On - Login To Windows - ${out}= Execute Command In Terminal Get-PnpDevice -PresentOnly | Select-String -Pattern "Wi-Fi" - Should Contain ${out} ${WIFI_CARD} + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MWL001.202 not supported + Skip If "${ENV_ID_FEDORA}" not in "${TESTED_LINUX_DISTROS}" MWL001.202 not supported + Wireless Card Detection ${ENV_ID_FEDORA} -MWL002.001 Wi-Fi scanning (Ubuntu) +MWL002.202 Wi-Fi scanning (Fedora) [Documentation] Check whether the Wi-Fi functionality of card is ... initialized correctly and can be used from within the ... operating system.. - Skip If not ${MINI_PC_IE_SLOT_SUPPORT} MWL002.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MWL002.001 not supported + Skip If not ${MINI_PC_IE_SLOT_SUPPORT} MWL002.202 not supported + Skip If "${ENV_ID_FEDORA}" not in "${TESTED_LINUX_DISTROS}" MWL002.202 not supported + Wi-Fi Scanning ${ENV_ID_FEDORA} + +MWL003.202 Bluetooth scanning (Fedora) + [Documentation] Check whether the Bluetooth functionality of card is + ... initialized correctly and can be used from within the + ... operating system. + Skip If "${ENV_ID_FEDORA}" not in "${TESTED_LINUX_DISTROS}" MWL003.202 not supported + Bluetooth Scanning ${ENV_ID_FEDORA} + +MWL004.202 LTE card detection (Fedora) + [Documentation] Check whether the LTE card is detected correctly in the + ... operating system. + Skip If "${ENV_ID_FEDORA}" not in "${TESTED_LINUX_DISTROS}" MWL004.202 not supported + LTE Card Detection ${ENV_ID_FEDORA} + +MWL001.301 Wireless card detection (Windows) + [Documentation] Check whether the Wi-Fi/Bluetooth card is enumerated + ... correctly and can be detected from the operating system. + ... Previous IDs: MWL001.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} WLE001.301 not supported Power On - Login To Linux - Switch To Root User - Scan For Wi-Fi In Linux - Exit From Root User + Login To Windows + ${out}= Execute Command In Terminal Get-PnpDevice -PresentOnly | Select-String -Pattern "Wi-Fi" + Should Contain ${out} ${WIFI_CARD} -MWL002.002 Wi-Fi scanning (Windows) +MWL002.301 Wi-Fi scanning (Windows) [Documentation] Check whether the Wi-Fi/Bluetooth card is enumerated ... correctly and can be detected from the operating system. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} MLW002.002 not supported + ... Previous IDs: MWL002.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} MLW002.301 not supported Power On Login To Windows ${out}= Execute Command In Terminal netsh wlan show network Should Contain ${out} 3mdeb_abr Should Contain ${out} 3mdeb_abr_5GHz -MWL003.001 Bluetooth scanning (Ubuntu) +# MWL003.002 Bluetooth scanning (Windows) +# [Documentation] TBD + +# MWL004.002 LTE card detection (Windows) +# [Documentation] Check whether the LTE card is detected correctly in the +# ... Windows OS. +# Skip If not ${tests_in_windows_support} MWL004.002 not supported +# Power On +# Login to Windows +# ${out}= List Windows USB Devices +# Should Contain ${out} ${LTE_card} + + +*** Keywords *** +Wireless Card Detection + [Documentation] Check whether the Wi-Fi/Bluetooth card is enumerated + ... correctly and can be detected from the operating system. + [Tags] robot:private + [Arguments] ${os_id} + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux pci + Should Contain ${out} ${WIFI_CARD} + Exit From Root User + +Wi-Fi Scanning + [Documentation] Check whether the Wi-Fi functionality of card is + ... initialized correctly and can be used from within the + ... operating system. + [Tags] robot:private + [Arguments] ${os_id} + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + Scan For Wi-Fi In Linux + Exit From Root User + +Bluetooth Scanning [Documentation] Check whether the Bluetooth functionality of card is ... initialized correctly and can be used from within the ... operating system. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MWL003.001 not supported + [Tags] robot:private + [Arguments] ${os_id} Power On + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User Scan For Bluetooth In Linux Exit From Root User -# MWL003.002 Bluetooth scanning (Windows) -# [Documentation] TBD - -MWL004.001 LTE card detection (Ubuntu) +LTE Card Detection [Documentation] Check whether the LTE card is detected correctly in the ... operating system. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MWL004.001 not supported + [Tags] robot:private + [Arguments] ${os_id} Power On + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${out}= List Devices In Linux usb Should Contain ${out} ${LTE_CARD} Exit From Root User - -# MWL004.002 LTE card detection (Windows) -# [Documentation] Check whether the LTE card is detected correctly in the -# ... Windows OS. -# Skip If not ${tests_in_windows_support} MWL004.002 not supported -# Power On -# Login to Windows -# ${out}= List Windows USB Devices -# Should Contain ${out} ${LTE_card} diff --git a/dasharo-compatibility/network-boot-utilities.robot b/dasharo-compatibility/network-boot-utilities.robot index 57b6af857a..0f71518c66 100644 --- a/dasharo-compatibility/network-boot-utilities.robot +++ b/dasharo-compatibility/network-boot-utilities.robot @@ -24,7 +24,7 @@ Resource ../keys.robot Suite Setup Run Keywords ... Prepare Test Suite ... AND -... Skip If not ${NETBOOT_UTILITIES_SUPPORT} Network BOot and Utilities tests not supported +... Skip If not ${NETBOOT_UTILITIES_SUPPORT} Network Boot and Utilities tests not supported Suite Teardown Run Keyword ... Log Out And Close Connection @@ -141,3 +141,16 @@ NBT007.001 Change netboot URL option works correctly Enter Submenu From Snapshot ${ipxe_menu} Change Netboot iPXE Payload URL ${out}= Read From Terminal Until Reset to Default Should Contain ${out} http://boot.dasharo.com/dts/dts.ipxe + +NBT008.001 iPXE Autoboot is disabled + [Documentation] Check whether platform can reenter the IPXE menu + ... without booting automatically + Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} NBT008.001 not supported + Power On + ${boot_menu}= Enter Boot Menu Tianocore And Return Construction + Enter Submenu From Snapshot ${boot_menu} Network Boot and Utilities + ${ipxe_menu_initial}= Get IPXE Boot Menu Construction + Sleep 15 + Reenter Menu + ${ipxe_menu_secondary}= Get IPXE Boot Menu Construction + Should Be Equal ${ipxe_menu_initial} ${ipxe_menu_secondary} diff --git a/dasharo-compatibility/network-speed.robot b/dasharo-compatibility/network-speed.robot index 3316dfb5b0..8dc090c102 100644 --- a/dasharo-compatibility/network-speed.robot +++ b/dasharo-compatibility/network-speed.robot @@ -1,5 +1,6 @@ *** Settings *** Library Collections +Library Dialogs Library OperatingSystem Library Process Library String @@ -23,28 +24,63 @@ Suite Teardown Run Keyword *** Test Cases *** -ETHPERF001.001 Check Performance of 2.5G Wired Network Interface (Ubuntu) +ETHPERF001.201 Check Performance of 2.5G Wired Network Interface (Ubuntu) [Documentation] This test aims to verify the performance of Ethernet connection Depends On ${ETH_PERF_PAIR_2_G} + Depends On ${ETH_PORTS} + + ${eth_ports_number}= Get Length ${ETH_PORTS} + IF '${eth_ports_number}' == '2' + Skip If '${DUT_CONNECTION_METHOD}' != 'Telnet' + Pause Execution + ... [1/6] This is semi-manual execution, in next step there will be instruction checklist of DUT setup modification. + ${lab_network_port}= Get Value From User + ... [2/6] Enter DUT ethernet port number connected to lab network. 1 + + @{manual_eth_loop_setup}= Create List + ... 1. On DUT, disconnect lab network ethernet cable from port ${lab_network_port} + ... 2. On DUT, connect both ethernet ports with Cat 6a patch cable. + @{manual_eth_restore}= Create List + ... 1. On DUT, disconnect Cat 6a patch cable from both ethernet ports + ... 2. On DUT, reconnect lab network ethernet cable to port ${lab_network_port} + + @{dut_setup_values}= Get Selections From User + ... [3/6] Follow the steps, mark each when done, click OK when finished. + ... ${manual_eth_loop_setup}[0] + ... ${manual_eth_loop_setup}[1] + Lists Should Be Equal ${manual_eth_loop_setup} ${dut_setup_values} + + Pause Execution [4/6] Click OK to begin speed testing. + END + Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package iperf3 ${eth_1}= Get From List ${ETH_PERF_PAIR_2_G} 0 ${eth_2}= Get From List ${ETH_PERF_PAIR_2_G} 1 Configure Network Interfaces For Testing ${eth_1} ${eth_2} + Test Network Performance 2.35 -ETHPERF002.001 Check Performance of 10G Wired Network Interface (Ubuntu) + IF '${eth_ports_number}' == '2' + Pause Execution + ... [5/6] This is semi-manual execution, in next step there will be instruction checklist of DUT setup modification. + @{dut_restore_values}= Get Selections From User + ... [6/6] Follow the steps, mark each when done, click OK when finished. + ... ${manual_eth_restore}[0] + ... ${manual_eth_restore}[1] + Lists Should Be Equal ${manual_eth_restore} ${dut_restore_values} + END + +ETHPERF002.201 Check Performance of 10G Wired Network Interface (Ubuntu) [Documentation] This test aims to verify the performance of Ethernet connection Depends On ${ETH_PERF_PAIR_10_G} Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package iperf3 ${eth_1}= Get From List ${ETH_PERF_PAIR_10_G} 0 ${eth_2}= Get From List ${ETH_PERF_PAIR_10_G} 1 diff --git a/dasharo-compatibility/nvidia.robot b/dasharo-compatibility/nvidia.robot index 35e1478f2c..3635bb1851 100644 --- a/dasharo-compatibility/nvidia.robot +++ b/dasharo-compatibility/nvidia.robot @@ -25,35 +25,62 @@ Suite Teardown Run Keyword *** Test Cases *** -NVI001.001 NVIDIA Graphics detect (Ubuntu) +NVI001.201 NVIDIA Graphics detect (Ubuntu) [Documentation] Check whether the NVIDIA graphics card is initialized ... correctly and can be detected by the Linux OS. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NVI001.001 not supported + ... Previous IDs: NVI001.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NVI001.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} NVI001.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package pciutils ${out}= Execute Linux Command lspci | grep -i nvidia | cat Should Contain Any ${out} 3D controller: NVIDIA Corporation VGA compatible controller: NVIDIA Corporation Exit From Root User -NVI001.002 NVIDIA Graphics detect (Windows) +NVI002.201 NVIDIA Graphics power management (Ubuntu) + [Documentation] Check whether the NVIDIA graphics power management is + ... functional and the card powers on only while it's used. + ... Previous IDs: NVI002.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NVI002.201 not supported + Skip If "${ENV_ID_UBUNTU}" not in ${TESTED_LINUX_DISTROS} NVI002.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Check NVIDIA Power Management In Linux + Exit From Root User + +NVI001.202 NVIDIA Graphics detect (Fedora) [Documentation] Check whether the NVIDIA graphics card is initialized - ... correctly and can be detected by the Windows 11. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} NVI001.002 not supported + ... correctly and can be detected by the Linux OS. + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} NVI001.202 not supported Power On - Login To Windows - ${out}= Get Video Controllers Windows - Should Contain ${out} NVIDIA GeForce + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + ${out}= Execute Linux Command lspci | grep -i nvidia | cat + Should Contain Any ${out} 3D controller: NVIDIA Corporation VGA compatible controller: NVIDIA Corporation + Exit From Root User -NVI002.001 NVIDIA Graphics power management (Ubuntu) +NVI002.202 NVIDIA Graphics power management (Fedora) [Documentation] Check whether the NVIDIA graphics power management is ... functional and the card powers on only while it's used. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NVI002.001 not supported + Skip If "${ENV_ID_FEDORA}" not in ${TESTED_LINUX_DISTROS} NVI001.202 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} Login To Linux Switch To Root User - Detect Or Install Package mesa-utils - Detect Or Install Package pciutils Check NVIDIA Power Management In Linux Exit From Root User + +NVI001.301 NVIDIA Graphics detect (Windows) + [Documentation] Check whether the NVIDIA graphics card is initialized + ... correctly and can be detected by the Windows 11. + ... Previous IDs: NVI001.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} NVI001.301 not supported + Power On + Login To Windows + ${out}= Get Video Controllers Windows + Should Contain ${out} NVIDIA GeForce diff --git a/dasharo-compatibility/nvme-support.robot b/dasharo-compatibility/nvme-support.robot index fa9a22821c..7d95d7393a 100644 --- a/dasharo-compatibility/nvme-support.robot +++ b/dasharo-compatibility/nvme-support.robot @@ -29,29 +29,48 @@ NVM001.001 NVMe support in firmware [Documentation] Check whether the firmware is able to correctly detect ... NVMe disk in M.2 slot. Skip If not ${NVME_DISK_SUPPORT} NVM001.001 not supported + Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} Power On ${out}= Enter Boot Menu Tianocore And Return Construction Should Contain ${out} ${CLEVO_DISK} -NVM001.002 NVMe support in OS (Ubuntu) +NVM001.201 NVMe support in OS (Ubuntu) [Documentation] Check whether the Operating System can boot from NVMe ... disk in M.2 slot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NVM001.002 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out}= List Devices In Linux pci - Should Contain ${out} ${DEVICE_NVME_DISK} - Exit From Root User + ... Previous IDs: NVM001.002 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NVM001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} NVM001.201 not supported + NVMe Support In OS ${ENV_ID_UBUNTU} -NVM001.003 NVMe support in OS (Windows) +NVM001.202 NVMe support in OS (Fedora) [Documentation] Check whether the Operating System can boot from NVMe ... disk in M.2 slot. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} NVM001.003 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} NVM001.202 not supported + NVMe Support In OS ${ENV_ID_FEDORA} + +NVM001.301 NVMe support in OS (Windows) + [Documentation] Check whether the Operating System can boot from NVMe + ... disk in M.2 slot. + ... Previous IDs: NVM001.003 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} NVM001.301 not supported Power On Login To Windows # Switch to root user ${out}= Execute Command In Terminal Get-PnpDevice -Status "OK" | where { $_.InstanceId -like "*NVME*"} Should Contain ${out} DiskDrive # Exit from root user + + +*** Keywords *** +NVMe Support In OS + [Documentation] Check whether the Operating System can boot from NVMe + ... disk in M.2 slot. + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux pci + Should Contain ${out} ${DEVICE_NVME_DISK} + Exit From Root User diff --git a/dasharo-compatibility/os-bsd-anysense.robot b/dasharo-compatibility/os-bsd-anysense.robot new file mode 100644 index 0000000000..935f9971e5 --- /dev/null +++ b/dasharo-compatibility/os-bsd-anysense.robot @@ -0,0 +1,151 @@ +*** Settings *** +Library Collections +Library Dialogs +Library OperatingSystem +Library Process +Library String +Library Telnet timeout=20 seconds connection_timeout=120 seconds +Resource ../variables.robot +Resource ../keywords.robot +Resource ../keys.robot + +# Log Out And Close Connection - elementary teardown keyword for all tests. +Suite Setup Run Keywords +... Prepare Test Suite +Suite Teardown Run Keywords +... Log Out And Close Connection +Test Setup Run Keyword +... Restore Initial DUT Connection Method + + +*** Variables *** +${PFSENSE_PROMPT}= [2.7.2-RELEASE][root@pfSense.home.arpa]/root + + +*** Test Cases *** +PFS001.502 Boot pfSense LTS CE (serial output) from disk after cold-boot + [Documentation] Boot pfSense LTS CE (serial output) from disk after cold-boot + Power On + # TBD + +OPN001.503 Boot OPNsense (serial output) from disk after cold-boot + [Documentation] Boot OPNsense (serial output) from disk after cold-boot + Power On + Boot OPN + # TBD + +PFS002.502 Boot pfSense LTS CE (serial output) from disk after warm-boot + [Documentation] Boot pfSense LTS CE (serial output) from disk after warm-boot + ... does not use rtcwake!!! + Power On + Boot PfSense + Enter Pf Sense Shell + Write Into Terminal poweroff + Power On + Boot PfSense + +PFS003.502 Boot pfSense LTS CE (serial output) from disk after reboot + [Documentation] Boot pfSense LTS CE (serial output) from disk after reboot + Power On + Boot PfSense + Enter Pf Sense Shell + Write Into Terminal reboot + Boot PfSense + +PFS004.502 Boot pfSense LTS CE (serial output) Installer into rescue shell + Power On + Boot PfSense Installer + Enter PfSense Rescue Shell + ${output}= Execute Command In Terminal ls + Should Contain ${output} COPYRIGHT + Should Contain ${output} .profile + +PFS005.502 Preseed pfSense Installer + Power On + Boot PfSense Installer + Enter PfSense Rescue Shell + Execute Command In Terminal + ... awk -v sq="'" -v dq='"' -v ROOT_LABEL=PFBOOT '/^NEWFS_ESP=/ { print "NEWFS_ESP=" sq "newfs_msdos -L " ROOT_LABEL " " dq "%s" dq sq; next; }; { print; }' /usr/libexec/bsdinstall/zfsboot > /tmp/zfsboot + Execute Command In Terminal mount -u / + Execute Command In Terminal mv /tmp/zfsboot /usr/libexec/bsdinstall/zfsboot + Execute Command In Terminal chmod +x /usr/libexec/bsdinstall/zfsboot + Execute Command In Terminal sync + ${output}= Execute Command In Terminal grep PFBOOT /usr/libexec/bsdinstall/zfsboot + Should Contain ${output} PFBOOT + +# There's no OPN005.503, preseed requires another FreeBSD system + +PFS006.502 Boot pfSense Installer + Power On + Boot PfSense Installer + Execute Manual Step Click OK to PASS, after test ends, connect to DUT via serial and continue. + +OPN006.503 Boot OPNsense Installer + Power On + Boot OPNsense Installer + Execute Manual Step Click OK to PASS, after test ends, connect to DUT via serial and continue. + + +*** Keywords *** +Boot PfSense Installer + [Documentation] Run /EFI/BOOT/bootx64.efi file from PFEFI-labeled partition; + ... Select console type vt100 and accept the license + Enter Boot From File + Enter Volume In File Explorer PFEFI + Execute File In File Explorer EFI + Execute File In File Explorer BOOT + Execute File In File Explorer bootx64.efi + Read From Terminal Until Console type [vt100]: + Write Into Terminal vt100 + Read From Terminal Until [Accept] + Press Enter + +Boot OPNsense Installer + [Documentation] Run /efi/boot/bootx64.efi file from OPNEFI-labeled partition; + Enter Boot From File + Enter Volume In File Explorer OPNEFI + Execute File In File Explorer efi + Execute File In File Explorer boot + Execute File In File Explorer bootx64.efi + Read From Terminal Until FreeBSD/amd64 (OPNsense.localdomain) (ttyu0) + Read From Terminal Until login: + +Enter PfSense Shell + Write Into Terminal 8 + Read From Terminal Until ${PFSENSE_PROMPT} + Set Prompt For Terminal ${PFSENSE_PROMPT} + +Enter PfSense Rescue Shell + ${menu}= Read From Terminal Until + # end would be 5 but it's 3 due to two empty lines + ${construction}= Parse Menu Snapshot Into Construction ${menu} 5 3 + Enter Submenu From Snapshot + ... ${construction} + ... Rescue Shell${SPACE_*_8}Launch a shell for rescue operations + ... "APP" + Set Prompt For Terminal \# + +Enter OPN Sense Rescue Shell: + Read From Terminal FreeBSD/amd64 (OPNsense.localdomain) (ttyu0) + Read From Terminal Until login: + Write Into Terminal root + Read From Terminal Until Password: + Write Into Terminal opnsense + Read From Terminal Until Enter an option: + Write Into Terminal 8 + +Boot PfSense + [Documentation] PFBOOT -> /efi/boot/bootx64.efi + Enter Boot From File + Enter Volume In File Explorer PFBOOT + Execute File In File Explorer efi + Execute File In File Explorer boot + Execute File In File Explorer bootx64.efi + Read From Terminal Until Enter an option: + +Boot OPN Sense + Enter Boot From File + Enter Volume In File Explorer OPNBOOT + Execute File In File Explorer efi + Execute File In File Explorer boot + Execute File In File Explorer bootx64.efi diff --git a/dasharo-compatibility/platform-hibernation-and-resume.robot b/dasharo-compatibility/platform-hibernation-and-resume.robot index 61eff4bf1a..2edfdd292d 100644 --- a/dasharo-compatibility/platform-hibernation-and-resume.robot +++ b/dasharo-compatibility/platform-hibernation-and-resume.robot @@ -40,8 +40,7 @@ HIB001.001 Cyclic platform hibernation and resume (Ubuntu) Boot Operating System ubuntu Login To Linux Switch To Root User - Detect Or Install Package util-linux - Detect Or Install FWTS + FOR ${index} IN RANGE 0 ${HIBERNATION_ITERATIONS_NUMBER} ${is_hibernation_performed_correctly}= Perform Hibernation Test Using FWTS IF not ${is_hibernation_performed_correctly} diff --git a/dasharo-compatibility/platform-suspend-and-resume.robot b/dasharo-compatibility/platform-suspend-and-resume.robot index a2114cc14a..83fd65cb7b 100644 --- a/dasharo-compatibility/platform-suspend-and-resume.robot +++ b/dasharo-compatibility/platform-suspend-and-resume.robot @@ -18,43 +18,100 @@ Suite Teardown Log Out And Close Connection *** Test Cases *** -SUSP005.001 Cyclic platform suspend and resume (Ubuntu) +SUSP005.201 Cyclic platform suspend and resume (Ubuntu) [Documentation] This test aims to verify that the DUT platform suspend ... and resume procedure performed cyclically works correctly - Skip If not ${SUSPEND_AND_RESUME_SUPPORT} SUSP005.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUSP005.001 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUSP005.001 not supported - Cyclic Platform Suspend And Resume (Ubuntu) + ... Previous IDs: SUSP005.001 + Skip If not ${SUSPEND_AND_RESUME_SUPPORT} SUSP005.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUSP005.201 not supported + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUSP005.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SUSP005.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Cyclic Platform Suspend And Resume + Exit From Root User + +SUSP006.201 Cyclic platform suspend and resume (Ubuntu) (S0ix) + [Documentation] This test aims to verify that the DUT platform suspend + ... and resume procedure performed cyclically works correctly + ... Previous IDs: SUSP005.002 + Skip If not ${SUSPEND_AND_RESUME_SUPPORT} SUSP006.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUSP006.201 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUSP006.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SUSP006.201 not supported + Set Platform Sleep Type S0ix + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Cyclic Platform Suspend And Resume S0ix + Exit From Root User + +SUSP007.201 Cyclic platform suspend and resume (Ubuntu) (S3) + [Documentation] This test aims to verify that the DUT platform suspend + ... and resume procedure performed cyclically works correctly + ... Previous IDs: SUSP005.003 + Skip If not ${SUSPEND_AND_RESUME_SUPPORT} SUSP007.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUSP007.201 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUSP007.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SUSP007.201 not supported + Set Platform Sleep Type S3 + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Cyclic Platform Suspend And Resume S3 + Exit From Root User + +SUSP005.202 Cyclic platform suspend and resume (Fedora) + [Documentation] This test aims to verify that the DUT platform suspend + ... and resume procedure performed cyclically works correctly + Skip If not ${SUSPEND_AND_RESUME_SUPPORT} SUSP005.202 not supported + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUSP005.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SUSP005.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Cyclic Platform Suspend And Resume + Exit From Root User -SUSP005.002 Cyclic platform suspend and resume (Ubuntu) (S0ix) +SUSP006.202 Cyclic platform suspend and resume (Fedora) (S0ix) [Documentation] This test aims to verify that the DUT platform suspend ... and resume procedure performed cyclically works correctly - Skip If not ${SUSPEND_AND_RESUME_SUPPORT} SUSP005.002 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUSP005.002 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUSP005.002 not supported + Skip If not ${SUSPEND_AND_RESUME_SUPPORT} SUSP006.202 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUSP006.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SUSP006.202 not supported Set Platform Sleep Type S0ix - Cyclic Platform Suspend And Resume (Ubuntu) S0ix + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Cyclic Platform Suspend And Resume S0ix + Exit From Root User -SUSP005.003 Cyclic platform suspend and resume (Ubuntu) (S3) +SUSP007.202 Cyclic platform suspend and resume (Fedora) (S3) [Documentation] This test aims to verify that the DUT platform suspend ... and resume procedure performed cyclically works correctly - Skip If not ${SUSPEND_AND_RESUME_SUPPORT} SUSP005.003 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUSP005.003 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUSP005.003 not supported + Skip If not ${SUSPEND_AND_RESUME_SUPPORT} SUSP007.202 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUSP007.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SUSP007.202 not supported Set Platform Sleep Type S3 - Cyclic Platform Suspend And Resume (Ubuntu) S3 + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Cyclic Platform Suspend And Resume S3 + Exit From Root User *** Keywords *** -Cyclic Platform Suspend And Resume (Ubuntu) +Cyclic Platform Suspend And Resume [Arguments] ${platform_sleep_type}=${EMPTY} ${suspend_detected_fails}= Set Variable ${0} - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} - Switch To Root User - Detect Or Install FWTS FOR ${index} IN RANGE 0 ${SUSPEND_ITERATIONS_NUMBER} ${is_suspend_performed_correctly}= Perform Suspend Test Using FWTS IF not ${is_suspend_performed_correctly} diff --git a/dasharo-compatibility/reset-to-defaults.robot b/dasharo-compatibility/reset-to-defaults.robot index 70a5cb9eda..f3af74102a 100644 --- a/dasharo-compatibility/reset-to-defaults.robot +++ b/dasharo-compatibility/reset-to-defaults.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing diff --git a/dasharo-compatibility/sata-detect.robot b/dasharo-compatibility/sata-detect.robot index 139e1f2b36..dcf87e93e2 100644 --- a/dasharo-compatibility/sata-detect.robot +++ b/dasharo-compatibility/sata-detect.robot @@ -28,7 +28,7 @@ SAT001.002 SATA support in OS (Ubuntu) Depends On ${SATA_SUPPORT} Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Detect Or Install Package smartmontools diff --git a/dasharo-compatibility/sd-card-reader.robot b/dasharo-compatibility/sd-card-reader.robot index 06270e5e75..2af7c8dbd4 100644 --- a/dasharo-compatibility/sd-card-reader.robot +++ b/dasharo-compatibility/sd-card-reader.robot @@ -25,35 +25,55 @@ Suite Teardown Run Keyword *** Test Cases *** -SDC001.001 SD Card reader detection (Ubuntu) +SDC001.201 SD Card reader detection (Ubuntu) [Documentation] Check whether the SD Card reader is enumerated correctly ... and can be detected from the operating system. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SDC001.001 not supported + ... Previous IDs: SDC001.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SDC001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SDC001.201 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${disks}= Identify Disks In Linux Should Match str(${disks}) *SD* Exit From Root User -SDC001.002 SD Card reader detection (Windows) +SDC002.201 SD Card read/write (Ubuntu) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + ... Previous IDs: SDC002.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SDC002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SDC002.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Execute Linux Command dd if=/dev/urandom of=/tmp/in.bin bs=4K count=100 + Execute Linux Command dd if=/tmp/in.bin of=/dev/mmcblk0 bs=4K count=100 + Execute Linux Command dd if=/dev/mmcblk0 of=/tmp/out.bin bs=4K count=100 + ${result}= Check If Files Are Identical In Linux /tmp/in.bin /tmp/out.bin + Should Be True ${result} + Exit From Root User + +SDC001.202 SD Card reader detection (Fedora) [Documentation] Check whether the SD Card reader is enumerated correctly ... and can be detected from the operating system. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} SDC001.001 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SDC001.202 not supported Power On - Login To Windows - # Switch to root user - ${out}= Execute Command In Terminal Get-PnpDevice -Status "OK" -Class "DiskDrive" - Should Contain ${out} DiskDrive - # Exit from root user + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + ${disks}= Identify Disks In Linux + Should Match str(${disks}) *SD* + Exit From Root User -SDC002.001 SD Card read/write (Ubuntu) +SDC002.202 SD Card read/write (Fedora) [Documentation] Check whether the SD Card reader is initialized correctly ... and can be used from the operating system. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SDC002.001 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SDC002.202 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_FEDORA} Login To Linux Switch To Root User Execute Linux Command dd if=/dev/urandom of=/tmp/in.bin bs=4K count=100 @@ -63,10 +83,23 @@ SDC002.001 SD Card read/write (Ubuntu) Should Be True ${result} Exit From Root User -SDC002.002 SD Card read/write (Windows) +SDC001.301 SD Card reader detection (Windows) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + ... Previous IDs: SDC001.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} SDC001.301 not supported + Power On + Login To Windows + # Switch to root user + ${out}= Execute Command In Terminal Get-PnpDevice -Status "OK" -Class "DiskDrive" + Should Contain ${out} DiskDrive + # Exit from root user + +SDC002.301 SD Card read/write (Windows) [Documentation] Check whether the SD Card reader is initialized correctly ... and can be used from the operating system. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} SDC002.001 not supported + ... Previous IDs: SDC002.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} SDC002.301 not supported Power On SSHLibrary.Put File drive_letters.ps1 /C:/Users/user Login To Windows diff --git a/dasharo-compatibility/uefi-shell.robot b/dasharo-compatibility/uefi-shell.robot index e0b3bb4e3d..9125925fd1 100644 --- a/dasharo-compatibility/uefi-shell.robot +++ b/dasharo-compatibility/uefi-shell.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -25,11 +24,18 @@ Suite Teardown Run Keyword *** Test Cases *** USH001.001 UEFI Shell - [Documentation] Check whether the DUT has the ability to boot into an - ... integrated UEFI Shell application. + [Documentation] Check whether the UEFI Shell is available, and whether + ... UEFI Shell was sourced from coreboot image, or from OS drive. Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} USH001.001 not supported - Skip If not ${UEFI_SHELL_SUPPORT} USH001.001 not supported Power On ${boot_menu}= Enter Boot Menu Tianocore And Return Construction Enter Submenu From Snapshot ${boot_menu} UEFI Shell - Read From Terminal Until UEFI Interactive Shell + Read From Terminal Until Shell> + Write Bare Into Terminal dh + Press Enter + ${shell_dump_handle}= Read From Terminal Until Shell> + + Should Not Contain ${shell_dump_handle} LoadedImage(Shell) + ... UEFI Shell sourced from Dasharo FW image! + Should Contain ${shell_dump_handle} LoadedImage(\\EFI\\Shell\\Shell.efi) + ... UEFI Shell not sourced from EFI partition! diff --git a/dasharo-compatibility/usb-always-on.robot b/dasharo-compatibility/usb-always-on.robot new file mode 100644 index 0000000000..6a9303f865 --- /dev/null +++ b/dasharo-compatibility/usb-always-on.robot @@ -0,0 +1,157 @@ +*** Settings *** +Library Collections +Library Dialogs +Library OperatingSystem +Library Process +Library String +Resource ../variables.robot +Resource ../keywords.robot +Resource ../keys.robot + +Suite Setup Run Keyword +... Prepare Test Suite +# TODO: human-readable representation of setup menu key for all platforms + + +*** Variables *** +@{USB_PORTS_POWER_AND_CHARGING_OPTS}= While System is On Always On + + +*** Test Cases *** +USC001.001 "USB power and charging" option is present + [Documentation] This test aims to verify that "USB ports power and charging" + ... option is present in setup menu. + Execute Manual Step Power on DUT + Execute Manual Step + ... Wait for "${TIANOCORE_STRING}" string on the screen and press SETUP_MENU_KEY to enter setup menu + Execute Manual Step Enter Dasharo System Features submenu + Execute Manual Step Enter Power Management Options submenu + Execute Manual Step Note, if "USB ports power and charging" menu option is present + @{user_values}= Get Selections From User + ... Enter value submenu of "USB ports power and charging", mark existing values, but don't change anything + ... ${USB_PORTS_POWER_AND_CHARGING_OPTS}[0] + ... ${USB_PORTS_POWER_AND_CHARGING_OPTS}[1] + Lists Should Be Equal ${USB_PORTS_POWER_AND_CHARGING_OPTS} ${user_values} + Execute Manual Step Power off DUT + +USC002.001 Power IS delivered through always-on USB A ports + [Documentation] This test verifies, if setting "USB ports power and + ... charging" menu option to "Always On" keeps electrical power supply on + ... selected USB A ports, after DUT is power off + Execute Manual Step Power on DUT + Execute Manual Step + ... Wait for "${TIANOCORE_STRING}" string on the screen and press SETUP_MENU_KEY to enter setup menu + Execute Manual Step Enter Dasharo System Features submenu + Execute Manual Step Enter Power Management Options submenu + Execute Manual Step Set value of "USB ports power and charging" to "Always On" + Execute Manual Step Save setup configuration with F10 key, confirm with Y key + Execute Manual Step Power off DUT + Execute Manual Step Power on DUT (this is when setup change takes effect) + Execute Manual Step Wait until "${TIANOCORE_STRING}" appears on screen and power off DUT + ${power_meter_message}= Catenate Verify state of all USB A ports that + ... are marked in "Hardware configuration matrix" as "Always On USB" + ... using USB power meter. All verified ports should be able to supply + ... power meter itself and voltage should be close to 5.0V + Execute Manual Step ${power_meter_message} + +USC003.001 Power IS delivered through always-on USB C ports + [Documentation] This test verifies, if setting "USB ports power and + ... charging" menu option to "Always On" keeps electrical power supply on + ... selected USB C ports, after DUT is power off + Execute Manual Step Power on DUT + Execute Manual Step + ... Wait for "${TIANOCORE_STRING}" string on the screen and press SETUP_MENU_KEY to enter setup menu + Execute Manual Step Enter Dasharo System Features submenu + Execute Manual Step Enter Power Management Options submenu + Execute Manual Step Set value of "USB ports power and charging" to "Always On" + Execute Manual Step Save setup configuration with F10 key, confirm with Y key + Execute Manual Step Power off DUT + Execute Manual Step Power on DUT (this is when setup change takes effect) + Execute Manual Step Wait until "${TIANOCORE_STRING}" appears on screen and power off DUT + ${power_meter_message}= Catenate Verify state of all USB C ports that + ... are marked in "Hardware configuration matrix" as "Always On USB" + ... using USB power meter. All verified ports should be able to supply + ... power meter itself and voltage should be close to 5.0V + Execute Manual Step ${power_meter_message} + +USC004.001 Power IS NOT delivered through always-on USB A ports + [Documentation] This test verifies, if setting "USB ports power and + ... charging" menu option to "While System is On" is disabling electrical + ... power supply on selected USB A ports, after DUT is power off. + Execute Manual Step Power on DUT + Execute Manual Step + ... Wait for "${TIANOCORE_STRING}" string on the screen and press SETUP_MENU_KEY to enter setup menu + Execute Manual Step Enter Dasharo System Features submenu + Execute Manual Step Enter Power Management Options submenu + Execute Manual Step Set value of "USB ports power and charging" to "While System is On" + Execute Manual Step Save setup configuration with F10 key, confirm with Y key + Execute Manual Step Power off DUT + Execute Manual Step Power on DUT (this is when setup change takes effect) + Execute Manual Step Wait until "${TIANOCORE_STRING}" appears on screen and power off DUT + ${power_meter_message}= Catenate Verify state of all USB A ports that + ... are marked in "Hardware configuration matrix" as "Always On USB" + ... using USB power meter. All verified ports should not be able to + ... supply power meter itself and voltage should be close to 0.0V + Execute Manual Step ${power_meter_message} + +USC005.001 Power IS NOT delivered through always-on USB C ports + [Documentation] This test verifies, if setting "USB ports power and + ... charging" menu option to "While System is On" is disabling electrical + ... power supply on selected USB C ports, after DUT is power off. + Execute Manual Step Power on DUT + Execute Manual Step + ... Wait for "${TIANOCORE_STRING}" string on the screen and press SETUP_MENU_KEY to enter setup menu + Execute Manual Step Enter Dasharo System Features submenu + Execute Manual Step Enter Power Management Options submenu + Execute Manual Step Set value of "USB ports power and charging" to "While System is On" + Execute Manual Step Save setup configuration with F10 key, confirm with Y key + Execute Manual Step Power off DUT + Execute Manual Step Power on DUT (this is when setup change takes effect) + Execute Manual Step Wait until "${TIANOCORE_STRING}" appears on screen and power off DUT + ${power_meter_message}= Catenate Verify state of all USB C ports that + ... are marked in "Hardware configuration matrix" as "Always On USB" + ... using USB power meter. All verified ports should not be able to + ... supply power meter itself and voltage should be close to 0.0V + Execute Manual Step ${power_meter_message} + +USC006.001 Power IS NOT delivered through regular USB A ports + [Documentation] This test verifies, if setting "USB ports power and + ... charging" menu option to "Always On" is NOT enabling electrical power + ... supply to USB A ports that are NOT marked as "Always On USB", after + ... DUT is power off. + Execute Manual Step Power on DUT + Execute Manual Step + ... Wait for "${TIANOCORE_STRING}" string on the screen and press SETUP_MENU_KEY to enter setup menu + Execute Manual Step Enter Dasharo System Features submenu + Execute Manual Step Enter Power Management Options submenu + Execute Manual Step Set value of "USB ports power and charging" to "Always On" + Execute Manual Step Save setup configuration with F10 key, confirm with Y key + Execute Manual Step Power off DUT + Execute Manual Step Power on DUT (this is when setup change takes effect) + Execute Manual Step Wait until "${TIANOCORE_STRING}" appears on screen and power off DUT + ${power_meter_message}= Catenate Verify state of all USB A ports that + ... are NOT marked in "Hardware configuration matrix" as "Always On USB" + ... using USB power meter. All verified ports should not be able to + ... supply power meter itself and voltage should be close to 0.0V + Execute Manual Step ${power_meter_message} + +USC007.001 Power IS NOT delivered through regular USB C ports + [Documentation] This test verifies, if setting "USB ports power and + ... charging" menu option to "Always On" is NOT enabling electrical power + ... supply to USB C ports that are NOT marked as "Always On USB", after + ... DUT is power off. + Execute Manual Step Power on DUT + Execute Manual Step + ... Wait for "${TIANOCORE_STRING}" string on the screen and press SETUP_MENU_KEY to enter setup menu + Execute Manual Step Enter Dasharo System Features submenu + Execute Manual Step Enter Power Management Options submenu + Execute Manual Step Set value of "USB ports power and charging" to "Always On" + Execute Manual Step Save setup configuration with F10 key, confirm with Y key + Execute Manual Step Power off DUT + Execute Manual Step Power on DUT (this is when setup change takes effect) + Execute Manual Step Wait until "${TIANOCORE_STRING}" appears on screen and power off DUT + ${power_meter_message}= Catenate Verify state of all USB C ports that + ... are NOT marked in "Hardware configuration matrix" as "Always On USB" + ... using USB power meter. All verified ports should not be able to + ... supply power meter itself and voltage should be close to 0.0V + Execute Manual Step ${power_meter_message} diff --git a/dasharo-compatibility/usb-boot.robot b/dasharo-compatibility/usb-boot.robot index bdeab36af9..7c1e811787 100644 --- a/dasharo-compatibility/usb-boot.robot +++ b/dasharo-compatibility/usb-boot.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -20,7 +19,7 @@ Resource ../pikvm-rest-api/pikvm_comm.robot Suite Setup Run Keywords ... Prepare Test Suite ... AND -... Skip If "${BOOT_FROM_USB_ITERATIONS_NUMBER}" == "0" USB booting tests skipped +... Skip If ${BOOT_FROM_USB_ITERATIONS_NUMBER} == 0 USB booting tests skipped ... AND ... Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} Tests in firmware not supported Suite Teardown Run Keyword @@ -32,87 +31,51 @@ UBT001.001 USB detect and boot after coldboot [Documentation] Check whether the DUT properly detects USB device and ... boots into the operating system after coldboot (reboot ... realized by power supply cutting off then cutting on). - Platform Verification Set Local Variable ${failed_boot} 0 FOR ${index} IN RANGE 0 ${BOOT_FROM_USB_ITERATIONS_NUMBER} TRY Power Cycle On - Boot From USB - IF '${PLATFORM}' == 'raptor-cs_talos2' - Login To Linux - ELSE - Login To Linux Over Serial Console - ... ${DEVICE_USB_USERNAME} - ... ${DEVICE_USB_PASSWORD} - ... ${DEVICE_USB_PROMPT} - END + Boot Dasharo Tools Suite USB EXCEPT ${failed_boot}= Evaluate ${failed_boot} + 1 + IF '${failed_boot}' > '${ALLOWED_FAILS_USB_BOOT}' + Fail Boot from USB failed too many times (${failed_boot}) + END END END - IF '${failed_boot}' > '${ALLOWED_FAILS_USB_BOOT}' - Fail Boot from USB failed too many times (${failed_boot}) - END UBT002.001 USB detect and boot after warmboot [Documentation] Check whether the DUT properly detects USB device and ... boots into the operating system after warmboot (reboot ... realized by device turning off then turning on). - Platform Verification Set Local Variable ${failed_boot} 0 FOR ${index} IN RANGE 0 ${BOOT_FROM_USB_ITERATIONS_NUMBER} TRY Power On - Boot From USB - IF '${PLATFORM}' == 'raptor-cs_talos2' - Login To Linux - ELSE - Login To Linux Over Serial Console - ... ${DEVICE_USB_USERNAME} - ... ${DEVICE_USB_PASSWORD} - ... ${DEVICE_USB_PROMPT} - END + Boot Dasharo Tools Suite USB EXCEPT ${failed_boot}= Evaluate ${failed_boot} + 1 + IF '${failed_boot}' > '${ALLOWED_FAILS_USB_BOOT}' + Fail Boot from USB failed too many times (${failed_boot}) + END END END - IF '${failed_boot}' > '${ALLOWED_FAILS_USB_BOOT}' - Fail Boot from USB failed too many times (${failed_boot}) - END UBT003.001 USB detect and boot after system reboot [Documentation] Check whether the DUT properly detects USB device and ... boots into the operating system after system reboot ... (reboot performing by relevant command). - Platform Verification Set Local Variable ${failed_boot} 0 Power On FOR ${index} IN RANGE 0 ${BOOT_FROM_USB_ITERATIONS_NUMBER} TRY - Boot From USB - IF '${PLATFORM}' != 'raptor-cs_talos2' Reboot Via Linux On USB - IF '${PLATFORM}' == 'raptor-cs_talos2' Login To Linux - IF '${PLATFORM}' == 'raptor-cs_talos2' - Write Into Terminal reboot - END + Boot Dasharo Tools Suite USB + Enter Shell In DTS + Execute Reboot Command EXCEPT ${failed_boot}= Evaluate ${failed_boot} + 1 + IF '${failed_boot}' > '${ALLOWED_FAILS_USB_BOOT}' + Fail Boot from USB failed too many times (${failed_boot}) + END END END - IF '${failed_boot}' > '${ALLOWED_FAILS_USB_BOOT}' - Fail Boot from USB failed too many times (${failed_boot}) - END - - -*** Keywords *** -Platform Verification - [Documentation] Check whether according to hardware matrix, any USB - ... stick is connected to the platform. - IF '${PLATFORM}' == 'raptor-cs_talos2' RETURN - ${conf}= Get Current CONFIG ${CONFIG_LIST} - ${result}= Evaluate "USB_Storage" in """${conf}""" - IF not ${result} - SKIP \nPlatform doesn't have USB storage attached. - ELSE - Log Selected platform is correct. - END diff --git a/dasharo-compatibility/usb-camera.robot b/dasharo-compatibility/usb-camera.robot index f02c340eb4..4d1053ffe3 100644 --- a/dasharo-compatibility/usb-camera.robot +++ b/dasharo-compatibility/usb-camera.robot @@ -25,47 +25,96 @@ Suite Teardown Run Keyword *** Test Cases *** -CAM001.001 Integrated webcam (Ubuntu) +CAM001.201 Integrated webcam (Ubuntu) [Documentation] Check whether the integrated USB camera is initialized ... correctly and can be accessed from the Linux OS. Assumption: No ... external cameras connected. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CAM001.001 not supported + ... Previous IDs: CAM001.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CAM001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CAM001.201 not supported Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package ffmpeg - Detect Or Install Package libinput-tools - Device Detection In Linux Camera - ${out0}= Execute Linux Command ffprobe /dev/video0 - Should Contain ${out0} Input #0, video4linux2,v4l2, from '/dev/video0': - Should Contain - ... ${out0} - ... Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422 + Integrated Webcam Linux Exit From Root User -CAM001.002 Integrated webcam (Windows) +CAM002.201 Integrated IR Camera (Ubuntu) + [Documentation] Check whether the integrated infrared camera is + ... initialized correctly and can be accessed from the Linux OS. + ... Assumption: No external camera connected. Camera exposes separate + ... devnodes for visible-spectrum and IR modes, in that order. + ... Previous IDs: CAM002.001 + Skip If not ${IR_CAMERA_SUPPORT} CAM002.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CAM002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CAM002.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Integrated IR Camera Linux + Exit From Root User + +CAM001.202 Integrated webcam (Fedora) + [Documentation] Check whether the integrated USB camera is initialized + ... correctly and can be accessed from the Linux OS. Assumption: No + ... external cameras connected. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CAM001.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Integrated Webcam Linux + Exit From Root User + +CAM002.202 Integrated IR Camera (Fedora) + [Documentation] Check whether the integrated infrared camera is + ... initialized correctly and can be accessed from the Linux OS. + ... Assumption: No external camera connected. Camera exposes separate + ... devnodes for visible-spectrum and IR modes, in that order. + Skip If not ${IR_CAMERA_SUPPORT} CAM002.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CAM002.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Integrated IR Camera Linux + Exit From Root User + +CAM001.301 Integrated webcam (Windows) [Documentation] Check whether the integrated USB camera is initialized ... correctly and can be accessed from the Windows OS. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CAM001.002 not supported + ... Previous IDs: CAM001.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CAM001.301 not supported Power On Login To Windows ${out}= Get USB Devices Windows Should Contain ${out} Chicony USB2.0 Camera -CAM002.001 Integrated IR Camera (Ubuntu) + +*** Keywords *** +Integrated Webcam Linux + [Documentation] Check whether the integrated USB camera is initialized + ... correctly and can be accessed from the Linux OS. Assumption: No + ... external cameras connected. + [Tags] robot:private + ${out}= List Devices In Linux usb + Should Contain Any ${out} Camera BisonCam + ${out0}= Execute Linux Command ffprobe /dev/video0 + Should Contain ${out0} Input #0, video4linux2,v4l2, from '/dev/video0': + Should Contain + ... ${out0} + ... Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422 + +Integrated IR Camera Linux [Documentation] Check whether the integrated infrared camera is ... initialized correctly and can be accessed from the Linux OS. ... Assumption: No external camera connected. Camera exposes separate ... devnodes for visible-spectrum and IR modes, in that order. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CAM002.001 not supported - Power On - Login To Linux - Switch To Root User - Detect Or Install Package ffmpeg - Detect Or Install Package libinput-tools - Device Detection In Linux Camera + [Tags] robot:private + ${out}= List Devices In Linux usb + Should Contain Any ${out} Camera BisonCam ${out0}= Execute Linux Command ffprobe /dev/video2 Should Contain ... ${out0} ... Stream #0:0: Video: rawvideo (Y800 / 0x30303859), gray - Exit From Root User diff --git a/dasharo-compatibility/usb-detect.robot b/dasharo-compatibility/usb-detect.robot index 1e63ae753a..1f82e527ea 100644 --- a/dasharo-compatibility/usb-detect.robot +++ b/dasharo-compatibility/usb-detect.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -32,137 +31,56 @@ UDT001.001 USB detection after coldboot [Documentation] Check whether the DUT detects properly USB device after ... the coldboot (reboot realized by power supply cutting off ... then cutting on). - Platform Verification - Set Global Variable ${FAILED_DETECTION} 0 - Set Local Variable ${usb} 0 + Set Local Variable ${failed_detection} 0 FOR ${index} IN RANGE 0 ${USB_DETECTION_ITERATIONS_NUMBER} - TRY - ${usb}= Evaluate 0 - Power Cycle On - IF '${PAYLOAD}' == 'tianocore' - Enter Boot Menu Tianocore - ${menu}= Read From Terminal Until ESC to exit - ELSE IF '${PAYLOAD}' == 'seabios' - ${menu}= Enter SeaBIOS And Return Menu - ELSE IF '${PAYLOAD}' == 'petitboot' - ${menu}= Enter Petitboot And Return Menu - ELSE - ${menu}= FAIL Unknown payload: ${PAYLOAD} - END - FOR ${stick} IN @{ATTACHED_USB} - ${usb_tmp}= Get Count ${menu} ${stick} - ${usb}= Evaluate ${usb} + ${usb_tmp} - END - IF '${PLATFORM}' in ['apu1', 'apu5'] - ${usb}= Evaluate - ... ${usb} - sum([1 for line in """${menu}""".splitlines() if 'Multiple Card' in line]) - ELSE - ${usb}= Evaluate '${usb}' + Power Cycle On + ${boot_menu}= Enter Boot Menu Tianocore And Return Construction + ${found}= Check USB Stick Detection In Edk2 ${boot_menu} + + IF '${found}' != '${TRUE}' + ${failed_detection}= Evaluate ${failed_detection} + 1 + IF '${failed_detection}' > '${ALLOWED_FAILS_USB_DETECT}' + Fail Detection failed too many times (${failed_detection}) END - ${usb_count}= Get All USB - Should Be Equal As Integers ${usb} ${usb_count} - EXCEPT - ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 END END - IF '${failed_detection}' > '${ALLOWED_FAILS_USB_DETECT}' - Fail Detection failed too many times (${failed_detection}) - END -UDT002.001 USB detection after warmboot +UDT001.002 USB detection after warmboot [Documentation] Check whether the DUT detects properly USB device after ... the warmboot (reboot realized by device turning off then ... turning on). - Platform Verification - Set Global Variable ${FAILED_DETECTION} 0 - Set Local Variable ${usb} 0 + Set Local Variable ${failed_detection} 0 FOR ${index} IN RANGE 0 ${USB_DETECTION_ITERATIONS_NUMBER} - TRY - ${usb}= Evaluate 0 - Power On - IF '${PAYLOAD}' == 'tianocore' - ${menu}= Enter Tianocore And Return Menu - ELSE IF '${PAYLOAD}' == 'seabios' - ${menu}= Enter SeaBIOS And Return Menu - ELSE IF '${PAYLOAD}' == 'petitboot' - ${menu}= Enter Petitboot And Return Menu - ELSE - ${menu}= FAIL Unknown payload: ${PAYLOAD} - END - FOR ${stick} IN @{ATTACHED_USB} - ${usb_tmp}= Get Count ${menu} ${stick} - ${usb}= Evaluate ${usb} + ${usb_tmp} - END - IF '${PLATFORM}' in ['apu1', 'apu5'] - ${usb}= Evaluate - ... ${usb} - sum([1 for line in """${menu}""".splitlines() if 'Multiple Card' in line]) - ELSE - ${usb}= Evaluate '${usb}' + Power On + ${boot_menu}= Enter Boot Menu Tianocore And Return Construction + ${found}= Check USB Stick Detection In Edk2 ${boot_menu} + + IF '${found}' != '${TRUE}' + ${failed_detection}= Evaluate ${failed_detection} + 1 + IF '${failed_detection}' > '${ALLOWED_FAILS_USB_DETECT}' + Fail Detection failed too many times (${failed_detection}) END - ${usb_count}= Get All USB - Should Be Equal As Integers ${usb} ${usb_count} - EXCEPT - ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 END END - IF '${failed_detection}' > '${ALLOWED_FAILS_USB_DETECT}' - Fail Detection failed too many times (${failed_detection}) - END -UDT003.001 USB detection after system reboot +UDT001.003 USB detection after system reboot [Documentation] Check whether the DUT detects properly USB device after ... the system reboot (reboot performing by relevant command). - Platform Verification Set Local Variable ${failed_detection} 0 - Set Local Variable ${usb} 0 + + Power On FOR ${index} IN RANGE 0 ${USB_DETECTION_ITERATIONS_NUMBER} - TRY - ${usb}= Evaluate 0 - Power On - IF '${PAYLOAD}' == 'tianocore' - Reboot Via Ubuntu By Tianocore - ELSE IF '${PAYLOAD}' == 'seabios' - Reboot Via IPXE Boot By SeaBIOS - ELSE IF '${PAYLOAD}' == 'petitboot' - Reboot Via OS Boot By Petitboot - ELSE - FAIL Unknown payload: ${PAYLOAD} - END - IF '${PAYLOAD}' == 'tianocore' - ${menu}= Enter Tianocore And Return Menu - ELSE IF '${PAYLOAD}' == 'seabios' - ${menu}= Enter SeaBIOS And Return Menu - ELSE IF '${PAYLOAD}' == 'petitboot' - ${menu}= Enter Petitboot And Return Menu - ELSE - ${menu}= FAIL Unknown payload: ${PAYLOAD} - END - FOR ${stick} IN @{ATTACHED_USB} - ${usb_tmp}= Get Count ${menu} ${stick} - ${usb}= Evaluate ${usb} + ${usb_tmp} - END - IF '${PLATFORM}' in ['apu1', 'apu5'] - ${usb}= Evaluate - ... ${usb} - sum([1 for line in """${menu}""".splitlines() if 'Multiple Card' in line]) - ELSE - ${usb}= Evaluate '${usb}' - END - ${usb_count}= Get All USB - Should Be Equal As Integers ${usb} ${usb_count} - EXCEPT + ${boot_menu}= Enter Boot Menu Tianocore And Return Construction + ${found}= Check USB Stick Detection In Edk2 ${boot_menu} + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} boot_menu=${boot_menu} + Login To Linux + Switch To Root User + Execute Reboot Command + + IF '${found}' != '${TRUE}' ${failed_detection}= Evaluate ${failed_detection} + 1 + IF '${failed_detection}' > '${ALLOWED_FAILS_USB_DETECT}' + Fail Detection failed too many times (${failed_detection}) + END END END - IF '${failed_detection}' > '${ALLOWED_FAILS_USB_DETECT}' - Fail Detection failed too many times (${failed_detection}) - END - - -*** Keywords *** -Platform Verification - [Documentation] Check whether according to hardware matrix, any USB - ... stick is connected to the platform. - IF '${PLATFORM}' == 'raptor-cs_talos2' RETURN - ${conf}= Get Current CONFIG ${CONFIG_LIST} - ${result}= Evaluate "USB_Storage" in """${conf}""" - IF not ${result} SKIP Platform doesn't have USB storage attached. diff --git a/dasharo-compatibility/usb-hid-and-msc-support.robot b/dasharo-compatibility/usb-hid-and-msc-support.robot index 514041f73d..f1d4e53c47 100644 --- a/dasharo-compatibility/usb-hid-and-msc-support.robot +++ b/dasharo-compatibility/usb-hid-and-msc-support.robot @@ -8,7 +8,6 @@ Library SSHLibrary timeout=90 seconds Library RequestsLibrary # TODO: maybe have a single file to include if we need to include the same # stuff in all test cases -Resource ../pikvm-rest-api/pikvm_comm.robot Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot @@ -18,7 +17,7 @@ Resource ../keys.robot # Required teardown keywords: # Log Out And Close Connection - elementary teardown keyword for all tests. Suite Setup Run Keyword -... Prepare Test Suite +... Prepare USB HID Test Suite Suite Teardown Run Keyword ... Log Out And Close Connection @@ -27,107 +26,190 @@ Suite Teardown Run Keyword USB001.001 USB devices detected in FW [Documentation] Check whether USB devices are detected in Tianocore ... (edk2). - Skip If not ${USB_DISKS_DETECTION_SUPPORT} USB001.001 not supported - Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} - Upload And Mount DTS Flash Iso + Depends On ${TESTS_IN_FIRMWARE_SUPPORT} + Depends On ${USB_DISKS_DETECTION_SUPPORT} + Depends On ${HAS_USB_STORAGE} Power On ${boot_menu}= Enter Boot Menu Tianocore And Return Construction - Check That USB Devices Are Detected ${boot_menu} - -USB001.002 USB devices detected by OS (Ubuntu) - [Documentation] Check whether the external USB devices are detected - ... correctly in Linux OS. - Skip If not ${USB_DISKS_DETECTION_SUPPORT} USB001.002 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} USB001.002 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Detect Or Install Package usbutils - ${out}= Execute Command In Terminal lsusb -v | grep bInterfaceClass - Should Contain ${out} Human Interface Device - Should Contain ${out} Mass Storage - Exit From Root User - -USB001.003 USB devices detected by OS (Windows) - [Documentation] Check whether the external USB devices are detected - ... correctly in Windows OS. - Skip If not ${USB_DISKS_DETECTION_SUPPORT} USB001.003 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} USB001.003 not supported - Power On - Login To Windows - ${out}= Execute Command In Terminal Get-PnpDevice -PresentOnly | Where-Object { $_.InstanceId -match '^USB' } - Should Contain ${out} HIDClass - Should Contain ${out} DiskDrive + Check USB Stick Detection In Edk2 ${boot_menu} USB002.001 USB keyboard detected in FW [Documentation] Check whether the external USB keyboard is detected ... correctly by the firmware and all basic keys work ... according to their labels. [Tags] minimal-regression - Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} USB002.001 not supported + Depends On ${TESTS_IN_FIRMWARE_SUPPORT} + Depends On ${HAS_KEYBOARD} Power On Enter UEFI Shell ${out}= Execute UEFI Shell Command devices Should Contain ${out} Usb Keyboard -USB002.002 USB keyboard in OS (Ubuntu) +USB001.201 USB devices detected by OS (Ubuntu) + [Documentation] Check whether the external USB devices are detected + ... correctly in Ubuntu OS. + ... Previous IDs: USB001.002 + Depends On ${USB_DISKS_DETECTION_SUPPORT} + Depends On ${TESTS_IN_UBUNTU_SUPPORT} + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} + USB Devices Detected By OS ${ENV_ID_UBUNTU} + +USB002.201 USB keyboard in OS (Ubuntu) [Documentation] Check whether the external USB keyboard is detected - ... correctly by the Linux OS and all basic keys work - ... according to their labels. - IF not ${USB_KEYBOARD_DETECTION_SUPPORT} - SKIP USB002.002 not supported - END - IF not ${TESTS_IN_UBUNTU_SUPPORT} SKIP USB002.002 not supported + ... correctly by the Ubuntu OS. + ... Previous IDs: USB002.002 + Depends On ${USB_KEYBOARD_DETECTION_SUPPORT} + Depends On ${HAS_KEYBOARD} + Depends On ${TESTS_IN_UBUNTU_SUPPORT} + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} + USB Keyboard In OS ${ENV_ID_UBUNTU} + +USB003.201 Upload 1GB file on USB storage (Ubuntu) + [Documentation] Check whether the 1GB file can be transferred from the + ... operating system to the USB storage. + ... Previous IDs: USB003.002 + Depends On ${UPLOAD_ON_USB_SUPPORT} + Depends On ${HAS_USB_STORAGE} + Depends On ${TESTS_IN_UBUNTU_SUPPORT} + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} + Upload 1GB File On USB Storage ${ENV_ID_UBUNTU} + +USB001.202 USB devices detected by OS (Fedora) + [Documentation] Check whether the external USB devices are detected + ... correctly in Fedora OS. + Depends On ${USB_DISKS_DETECTION_SUPPORT} + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} + USB Devices Detected By OS ${ENV_ID_FEDORA} + +USB002.202 USB keyboard in OS (Fedora) + [Documentation] Check whether the external USB keyboard is detected + ... correctly by the Fedora OS. + Depends On ${USB_KEYBOARD_DETECTION_SUPPORT} + Depends On ${HAS_KEYBOARD} + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} + USB Keyboard In OS ${ENV_ID_FEDORA} + +USB003.202 Upload 1GB file on USB storage (Fedora) + [Documentation] Check whether the 1GB file can be transferred from the + ... operating system to the USB storage. + Depends On ${UPLOAD_ON_USB_SUPPORT} + Depends On ${HAS_USB_STORAGE} + Depends On ${TESTS_IN_UBUNTU_SUPPORT} + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} + Upload 1GB File On USB Storage ${ENV_ID_FEDORA} + +USB001.301 USB devices detected by OS (Windows) + [Documentation] Check whether the external USB devices are detected + ... correctly in Windows OS. + ... Previous IDs: USB001.003 + Depends On ${USB_DISKS_DETECTION_SUPPORT} + Depends On ${TESTS_IN_WINDOWS_SUPPORT} Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out}= List Devices In Linux usb - Should Contain ${out} ${DEVICE_USB_KEYBOARD} + Login To Windows + ${out}= Execute Command In Terminal + ... Get-PnpDevice -PresentOnly | Where-Object { $_.InstanceId -match '^USB' } + IF ${HAS_KEYBOARD} Should Contain ${out} HIDClass + IF ${HAS_USB_STORAGE} Should Contain ${out} DiskDrive -USB002.003 USB keyboard in OS (Windows) +USB002.301 USB keyboard in OS (Windows) [Documentation] Check whether the external USB keyboard is detected ... correctly by the Windows OS. - IF not ${USB_KEYBOARD_DETECTION_SUPPORT} - SKIP USB002.003 not supported - END - IF not ${TESTS_IN_WINDOWS_SUPPORT} SKIP USB002.003 not supported + ... Previous IDs: USB002.003 + Depends On ${USB_KEYBOARD_DETECTION_SUPPORT} + Depends On ${HAS_KEYBOARD} + Depends On ${TESTS_IN_WINDOWS_SUPPORT} Power On Login To Windows ${out}= Execute Command In Terminal Get-CimInstance win32_KEYBOARD ${keyboard}= Get Lines Matching Regexp ${out} ^CreationClassName\\s+:\\sWin32_Keyboard.*$ Should Not Be Empty ${keyboard} -USB003.001 Upload 1GB file on USB storage (Ubuntu) - [Documentation] Check whether the 1GB file can be transferred from the - ... operating system to the USB storage. - IF not ${UPLOAD_ON_USB_SUPPORT} SKIP USB003.001 not supported - IF not ${TESTS_IN_UBUNTU_SUPPORT} SKIP USB003.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Execute Linux Command openssl rand -out test_file.txt -base64 $(( 2**30 * 3/4 )) - ${path_to_usb}= Identify Path To USB - Execute Linux Command cp test_file.txt ${path_to_usb} 120 - Check If Files Are Identical In Linux test_file.txt ${path_to_usb}/test_file.txt - Execute Linux Command rm test_file.txt ${path_to_usb}/test_file.txt - Exit From Root User - -USB003.002 Upload 1GB file on USB storage (Windows) +USB003.301 Upload 1GB file on USB storage (Windows) [Documentation] Check whether the 1GB file can be transferred from the ... operating system to the USB storage. - IF not ${UPLOAD_ON_USB_SUPPORT} SKIP USB003.002 not supported - IF not ${TESTS_IN_WINDOWS_SUPPORT} SKIP USB003.002 not supported + ... Previous IDs: USB003.003 + Depends On ${UPLOAD_ON_USB_SUPPORT} + Depends On ${HAS_USB_STORAGE} + Depends On ${TESTS_IN_WINDOWS_SUPPORT} Power On Login To Windows Generate 1GB File In Windows # Work only with one attached USB storage ${drive_letter}= Get Drive Letter Of USB - Execute Command In Terminal Copy-Item -Path C:\\Users\\user\\test_file.txt ${drive_letter}: + Execute Command In Terminal + ... Copy-Item -Path C:\\Users\\user\\test_file.txt ${drive_letter}: 120 ${hash1}= Get Hash Of File test_file.txt ${hash2}= Get Hash Of File ${drive_letter}:\\test_file.txt Execute Command In Terminal Remove-Item -Path C:\\Users\\user\\test_file.txt - Execute Command In Terminal Remove-Item -Path ${drive_letter}:\\test_file.txt + Execute Command In Terminal + ... Remove-Item -Path ${drive_letter}:\\test_file.txt 120 Should Be Equal ${hash1} ${hash2} + + +*** Keywords *** +Prepare USB HID Test Suite + [Documentation] Prepare this test suite + [Tags] robot:private + Prepare Test Suite + IF "${DEVICE_USB_KEYBOARD}" != "${EMPTY}" or "${DUT_CONNECTION_METHOD}" == "pikvm" + Set Suite Variable $HAS_KEYBOARD ${TRUE} + ELSE + Set Suite Variable $HAS_KEYBOARD ${FALSE} + END + + IF "${DUT_CONNECTION_METHOD}" == "pikvm" + Mount USB Disk Image ${TEST_DATA_DIR}/secure-boot/sb_test_data.img + END + + # Assume for now that we always have USB storage attached. In fact, all of + # the platforms as of today should have the USB drive with DTS attached. + # Refer to the lib/usb-hid-msc-lib.robot + Set Suite Variable $HAS_USB_STORAGE ${TRUE} + Skip If not ${HAS_KEYBOARD} and not ${HAS_USB_STORAGE} + ... Platform doesn't have USB keyboard or USB storage attached + +USB Devices Detected By OS + [Documentation] Check whether the external USB devices are detected + ... correctly in Linux OS. + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + + ${out}= Execute Command In Terminal lsusb -v | grep bInterfaceClass + IF ${HAS_KEYBOARD} Should Contain ${out} Human Interface Device + IF ${HAS_USB_STORAGE} Should Contain ${out} Mass Storage + Exit From Root User + +USB Keyboard In OS + [Documentation] Check whether the external USB keyboard is detected + ... correctly by the Linux OS. + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux usb + Should Contain ${out} ${DEVICE_USB_KEYBOARD} + +Upload 1GB File On USB Storage + [Documentation] Check whether the 1GB file can be transferred from the + ... operating system to the USB storage. + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + Execute Linux Command openssl rand -out test_file.txt -base64 $(( 2**30 * 3/4 )) + ${path_to_usb}= Identify Path To USB + Execute Linux Command mount ${path_to_usb} /mnt + Execute Linux Command yes | cp -f test_file.txt /mnt 120 + Execute Linux Command sync 120 + Check If Files Are Identical In Linux test_file.txt /mnt/test_file.txt + Execute Linux Command yes | rm test_file.txt /mnt/test_file.txt + Execute Linux Command sync && umount ${path_to_usb} 120 + Exit From Root User diff --git a/dasharo-compatibility/usb-type-c-semiauto.robot b/dasharo-compatibility/usb-type-c-semiauto.robot deleted file mode 100644 index a31c61a0f2..0000000000 --- a/dasharo-compatibility/usb-type-c-semiauto.robot +++ /dev/null @@ -1,558 +0,0 @@ -*** Settings *** -Library Collections -Library OperatingSystem -Library Process -Library String -Library Telnet timeout=20 seconds connection_timeout=120 seconds -Library SSHLibrary timeout=90 seconds -Library RequestsLibrary -# TODO: maybe have a single file to include if we need to include the same -# stuff in all test cases -Resource ../variables.robot -Resource ../keywords.robot -Resource ../keys.robot - -# TODO: -# - document which setup/teardown keywords to use and what are they doing -# - go threough them and make sure they are doing what the name suggest (not -# exactly the case right now) -Suite Setup Run Keywords -... Prepare Test Suite -... AND -... Skip If not ${DOCKING_STATION_DETECT_SUPPORT} Docking station detect tests not supported -... AND -... Check If Platform Sleep Type Can Be Selected -Suite Teardown Run Keyword -... Log Out And Close Connection - - -*** Test Cases *** -UTC008.001 Docking station detection after coldboot (Ubuntu) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether he DUT properly detects the docking station - ... after coldboot. - Skip If '${POWER_CTRL}' == 'none' UTC008.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC008.001 not supported - Docking Station Detection After Coldboot (Ubuntu) WL-UMD05 Pro Rev.E - -UTC009.001 Docking station detection after warmboot (Ubuntu) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether he DUT properly detects the docking station - ... after warmboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC009.001 not supported - Docking Station Detection After Warmboot (Ubuntu) WL-UMD05 Pro Rev.E - -UTC010.001 Docking station detection after reboot (Ubuntu) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC010.001 not supported - Docking Station Detection After Reboot (Ubuntu) WL-UMD05 Pro Rev.E - -UTC011.001 Docking station detection after suspend (Ubuntu) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.001 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.001 not supported - Docking Station Detection After Suspend (Ubuntu) WL-UMD05 Pro Rev.E - -UTC011.002 Docking station detection after suspend (Ubuntu) (S0ix) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.002 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.002 not supported - Set Platform Sleep Type S0ix - Docking Station Detection After Suspend (Ubuntu) WL-UMD05 Pro Rev.E S0ix - -UTC011.003 Docking station detection after suspend (Ubuntu) (S3) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.003 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.003 not supported - Set Platform Sleep Type S3 - Docking Station Detection After Suspend (Ubuntu) WL-UMD05 Pro Rev.E S3 - -UTC008.002 Docking station detection after coldboot (Ubuntu) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether he DUT properly detects the docking station - ... after coldboot. - Skip If '${POWER_CTRL}' == 'none' UTC008.002 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC008.002 not supported - Docking Station Detection After Coldboot (Ubuntu) WL-UMD05 Pro Rev.C1 - -UTC009.002 Docking station detection after warmboot (Ubuntu) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether he DUT properly detects the docking station - ... after warmboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC009.002 not supported - Docking Station Detection After Warmboot (Ubuntu) WL-UMD05 Pro Rev.C1 - -UTC010.002 Docking station detection after reboot (Ubuntu) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC010.002 not supported - Docking Station Detection After Reboot (Ubuntu) WL-UMD05 Pro Rev.C1 - -UTC011.004 Docking station detection after suspend (Ubuntu) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.004 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.004 not supported - Docking Station Detection After Suspend (Ubuntu) WL-UMD05 Pro Rev.C1 - -UTC011.005 Docking station detection after suspend (Ubuntu) (S0ix) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.005 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.005 not supported - Set Platform Sleep Type S0ix - Docking Station Detection After Suspend (Ubuntu) WL-UMD05 Pro Rev.C1 S0ix - -UTC011.006 Docking station detection after suspend (Ubuntu) (S3) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.006 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.006 not supported - Set Platform Sleep Type S3 - Docking Station Detection After Suspend (Ubuntu) WL-UMD05 Pro Rev.C1 S3 - -UTC008.003 Docking station detection after coldboot (Ubuntu) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether he DUT properly detects the docking station - ... after coldboot. - Skip If '${POWER_CTRL}' == 'none' UTC008.003 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC008.003 not supported - Docking Station Detection After Coldboot (Ubuntu) WL-UG69PD2 Rev.A1 - -UTC009.003 Docking station detection after warmboot (Ubuntu) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether he DUT properly detects the docking station - ... after warmboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC009.003 not supported - Docking Station Detection After Warmboot (Ubuntu) WL-UG69PD2 Rev.A1 - -UTC010.003 Docking station detection after reboot (Ubuntu) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC010.003 not supported - Docking Station Detection After Reboot (Ubuntu) WL-UG69PD2 Rev.A1 - -UTC011.007 Docking station detection after suspend (Ubuntu) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.007 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.007 not supported - Docking Station Detection After Suspend (Ubuntu) WL-UG69PD2 Rev.A1 - -UTC011.008 Docking station detection after suspend (Ubuntu) (S0ix) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.008 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.008 not supported - Set Platform Sleep Type S0ix - Docking Station Detection After Suspend (Ubuntu) WL-UG69PD2 Rev.A1 S0ix - -UTC011.009 Docking station detection after suspend (Ubuntu) (S3) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.009 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.009 not supported - Set Platform Sleep Type S3 - Docking Station Detection After Suspend (Ubuntu) WL-UG69PD2 Rev.A1 S3 - -UTC022.001 Docking station detection after coldboot then hotplug (Ubuntu) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether he DUT properly detects the docking station - ... after coldboot. - Skip If '${POWER_CTRL}' == 'none' UTC022.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC022.001 not supported - Docking Station Detection After Coldboot Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.E - -UTC023.001 Docking station detection after warmboot then hotplug (Ubuntu) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether he DUT properly detects the docking station - ... after warmboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC023.001 not supported - Docking Station Detection After Warmboot Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.E - -UTC024.001 Docking station detection after reboot then hotplug (Ubuntu) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC023.001 not supported - Docking Station Detection After Reboot Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.E - -UTC025.001 Docking station detection after suspend then hotplug (Ubuntu) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC025.001 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC025.001 not supported - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Docking Station Detection After Suspend Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.E - -UTC025.002 Docking station detection after suspend then hotplug (Ubuntu) (S0ix) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.002 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.002 not supported - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Set Platform Sleep Type S0ix - Docking Station Detection After Suspend Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.E S0ix - -UTC025.003 Docking station detection after suspend then hotplug (Ubuntu) (S3) (WL-UMD05 Pro Rev.E) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.003 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.003 not supported - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Set Platform Sleep Type S3 - Docking Station Detection After Suspend Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.E S3 - -UTC022.002 Docking station detection after coldboot then hotplug (Ubuntu) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether he DUT properly detects the docking station - ... after coldboot. - Skip If '${POWER_CTRL}' == 'none' Coldboot automatic tests not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC008.002 not supported - Docking Station Detection After Coldboot Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.C1 - -UTC023.002 Docking station detection after warmboot then hotplug (Ubuntu) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether he DUT properly detects the docking station - ... after warmboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC009.002 not supported - Docking Station Detection After Warmboot Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.C1 - -UTC024.002 Docking station detection after reboot then hotplug (Ubuntu) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC010.002 not supported - Docking Station Detection After Reboot Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.C1 - -UTC025.004 Docking station detection after suspend then hotplug (Ubuntu) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.004 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.004 not supported - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Docking Station Detection After Suspend Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.C1 - -UTC025.005 Docking station detection after suspend then hotplug (Ubuntu) (S0ix) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.005 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.005 not supported - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Set Platform Sleep Type S0ix - Docking Station Detection After Suspend Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.C1 S0ix - -UTC025.006 Docking station detection after suspend then hotplug (Ubuntu) (S3) (WL-UMD05 Pro Rev.C1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.006 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.006 not supported - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Set Platform Sleep Type S3 - Docking Station Detection After Suspend Then Hotplug (Ubuntu) WL-UMD05 Pro Rev.C1 S3 - -UTC022.003 Docking station detection after coldboot then hotplug (Ubuntu) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether he DUT properly detects the docking station - ... after coldboot. - Skip If '${POWER_CTRL}' == 'none' Coldboot automatic tests not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC008.003 not supported - Docking Station Detection After Coldboot Then Hotplug (Ubuntu) WL-UG69PD2 Rev.A1 - -UTC023.003 Docking station detection after warmboot then hotplug (Ubunt) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether he DUT properly detects the docking station - ... after warmboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC009.003 not supported - Docking Station Detection After Warmboot Then Hotplug (Ubuntu) WL-UG69PD2 Rev.A1 - -UTC024.003 Docking station detection after reboot then hotplug (Ubuntu) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC010.003 not supported - Docking Station Detection After Reboot Then Hotplug (Ubuntu) WL-UG69PD2 Rev.A1 - -UTC025.007 Docking station detection after suspend then hotplug (Ubuntu) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.007 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.007 not supported - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Docking Station Detection After Suspend Then Hotplug (Ubuntu) WL-UG69PD2 Rev.A1 - -UTC025.008 Docking station detection after suspend then hotplug (Ubuntu) (S0ix) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.008 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.008 not supported - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Set Platform Sleep Type S0ix - Docking Station Detection After Suspend Then Hotplug (Ubuntu) WL-UG69PD2 Rev.A1 S0ix - -UTC025.009 Docking station detection after suspend then hotplug (Ubuntu) (S3) (WL-UG69PD2 Rev.A1) - [Documentation] Check whether the DUT properly detects the docking station - ... after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC011.009 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC011.009 not supported - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Set Platform Sleep Type S3 - Docking Station Detection After Suspend Then Hotplug (Ubuntu) WL-UG69PD2 Rev.A1 S3 - - -*** Keywords *** -Docking Station Detection After Coldboot (Ubuntu) - [Arguments] ${docking_station_model} - Skip If '${POWER_CTRL}' == 'none' Coldboot automatic tests not supported - Pause Execution In Console - ... Please make sure the docking station connected is ${docking_station_model} and press ENTER - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out_after_reboot}= Execute Linux Command uptime --since - Detect Docking Station In Linux ${docking_station_model} - Set Global Variable ${FAILED_DETECTION} 0 - FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_COLDBOOT_ITERATIONS} - Log To Console Cold boot iteration ${iteration+1}/${STABILITY_DETECTION_COLDBOOT_ITERATIONS} - TRY - ${out_before_reboot}= Execute Linux Command uptime --since - WHILE '${out_before_reboot}' == '${out_after_reboot}' - Power Cycle On - Login To Linux - Switch To Root User - ${out_after_reboot}= Execute Linux Command uptime --since - Detect Docking Station In Linux ${docking_station_model} - END - EXCEPT - ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 - END - END - IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' - FAIL \n ${failed_detection} iterations failed. - END - Log To Console \nAll iterations passed. - -Docking Station Detection After Warmboot (Ubuntu) - [Arguments] ${docking_station_model} - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out_after_reboot}= Execute Linux Command uptime --since - Detect Docking Station In Linux ${docking_station_model} - Set Global Variable ${FAILED_DETECTION} 0 - FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_WARMBOOT_ITERATIONS} - Log To Console Warm boot iteration ${iteration+1}/${STABILITY_DETECTION_WARMBOOT_ITERATIONS} - TRY - ${out_before_reboot}= Execute Linux Command uptime --since - WHILE '${out_before_reboot}' == '${out_after_reboot}' - Perform Warmboot Using Rtcwake - Login To Linux - Switch To Root User - ${out_after_reboot}= Execute Linux Command uptime --since - Detect Docking Station In Linux ${docking_station_model} - END - EXCEPT - ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 - END - END - IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' - FAIL \n ${failed_detection} iterations failed. - END - Log To Console \nAll iterations passed. - -Docking Station Detection After Reboot (Ubuntu) - [Arguments] ${docking_station_model} - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Detect Docking Station In Linux ${docking_station_model} - Set Global Variable ${FAILED_DETECTION} 0 - FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} - Log To Console Reboot iteration ${iteration+1}/${STABILITY_DETECTION_REBOOT_ITERATIONS} - TRY - Execute Reboot Command - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Detect Docking Station In Linux ${docking_station_model} - EXCEPT - ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 - END - END - IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' - FAIL \n ${failed_detection} iterations failed. - END - Log To Console \nAll iterations passed. - -Docking Station Detection After Suspend (Ubuntu) - [Arguments] ${docking_station_model} ${platform_sleep_type}=${EMPTY} - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} - Switch To Root User - Detect Or Install FWTS - Detect Docking Station In Linux ${docking_station_model} - Set Global Variable ${FAILED_DETECTION} 0 - FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_SUSPEND_ITERATIONS} - Log To Console - ... Suspend ${platform_sleep_type} iteration ${iteration+1}/${STABILITY_DETECTION_SUSPEND_ITERATIONS} - Perform Suspend Test Using FWTS - TRY - Detect Docking Station In Linux ${docking_station_model} - EXCEPT message - Evaluate ${FAILED_DETECTION}= ${FAILED_DETECTION}+1 - END - END - IF '${FAILED_DETECTION}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' - FAIL \n ${FAILED_DETECTION} iterations failed. - END - Log To Console \nAll iterations passed. - -Pause Execution In Console - [Documentation] Pauses execution until user press ENTER. - [Arguments] ${message}= Press ENTER to continue... - Run notify-send "Please execute Manual Step in ${TEST_NAME}" # GUI message - Run echo -ne '\007' # ASCII BEL (\007) - Log To Console ${message} - Run read ignore - Log To Console Manual step confirmed - -Docking Station Detection After Coldboot Then Hotplug (Ubuntu) - [Arguments] ${docking_station_model} - Skip If '${POWER_CTRL}' == 'none' Coldboot automatic tests not supported - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out_after_reboot}= Execute Linux Command uptime --since - ${out_before_reboot}= Execute Linux Command uptime --since - Run Keyword And Expect Error * does not contain * Detect Docking Station In Linux ${docking_station_model} - Set Global Variable ${FAILED_DETECTION} 0 - WHILE '${out_before_reboot}' == '${out_after_reboot}' - Log To Console Coldboot the DUT manually - # coldboot - msi ./sonoff, protectli RteCtrl -rel, novacustom ??? - Pause Execution In Console Do power cut-off, reconnect and press ENTER. - Login To Linux - Switch To Root User - ${out_after_reboot}= Execute Linux Command uptime --since - Run Keyword And Expect Error - ... * does not contain * - ... Detect Docking Station In Linux - ... ${docking_station_model} - END - FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_COLDBOOT_ITERATIONS} - Log To Console Hotplug after Cold boot iteration ${iteration+1}/${STABILITY_DETECTION_COLDBOOT_ITERATIONS} - TRY - Pause Execution In Console Connect docking station ${docking_station_model} and press ENTER. - Detect Docking Station In Linux ${docking_station_model} - Pause Execution In Console Disconnect docking station ${docking_station_model} and press ENTER. - Run Keyword And Expect Error - ... * does not contain * - ... Detect Docking Station In Linux - ... ${docking_station_model} - EXCEPT - ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 - END - END - IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' - FAIL \n ${failed_detection} iterations failed. - END - Log To Console \nAll iterations passed. - -Docking Station Detection After Warmboot Then Hotplug (Ubuntu) - [Arguments] ${docking_station_model} - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out_after_reboot}= Execute Linux Command uptime --since - ${out_before_reboot}= Execute Linux Command uptime --since - Run Keyword And Expect Error * does not contain * Detect Docking Station In Linux ${docking_station_model} - Set Global Variable ${FAILED_DETECTION} 0 - WHILE '${out_before_reboot}' == '${out_after_reboot}' - Perform Warmboot Using Rtcwake - Pause Execution In Console Press power button on platform and press ENTER. - Login To Linux - Switch To Root User - ${out_after_reboot}= Execute Linux Command uptime --since - Run Keyword And Expect Error - ... * does not contain * - ... Detect Docking Station In Linux - ... ${docking_station_model} - END - FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_WARMBOOT_ITERATIONS} - Log To Console Hotplug after Warm boot iteration ${iteration+1}/${STABILITY_DETECTION_WARMBOOT_ITERATIONS} - TRY - Pause Execution In Console Connect docking station ${docking_station_model} and press ENTER. - Detect Docking Station In Linux ${docking_station_model} - Pause Execution In Console Disconnect docking station ${docking_station_model} and press ENTER. - Run Keyword And Expect Error - ... * does not contain * - ... Detect Docking Station In Linux - ... ${docking_station_model} - EXCEPT - ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 - END - END - IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' - FAIL \n ${failed_detection} iterations failed. - END - Log To Console \nAll iterations passed. - -Docking Station Detection After Reboot Then Hotplug (Ubuntu) - [Arguments] ${docking_station_model} - Pause Execution In Console Please make sure the docking station is disconnected and press ENTER - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Run Keyword And Expect Error * does not contain * Detect Docking Station In Linux ${docking_station_model} - Set Global Variable ${FAILED_DETECTION} 0 - Execute Reboot Command - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} - Log To Console Hotplug after Reboot iteration ${iteration+1}/${STABILITY_DETECTION_REBOOT_ITERATIONS} - TRY - Pause Execution In Console Connect docking station ${docking_station_model} and press ENTER. - Detect Docking Station In Linux ${docking_station_model} - Pause Execution In Console Disconnect docking station ${docking_station_model} and press ENTER. - Run Keyword And Expect Error - ... * does not contain * - ... Detect Docking Station In Linux - ... ${docking_station_model} - EXCEPT - ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 - END - END - IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' - FAIL \n ${failed_detection} iterations failed. - END - Log To Console \nAll iterations passed. - -Docking Station Detection After Suspend Then Hotplug (Ubuntu) - [Arguments] ${docking_station_model} ${platform_sleep_type}=${EMPTY} - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} - Switch To Root User - Detect Or Install FWTS - Run Keyword And Expect Error * does not contain * Detect Docking Station In Linux ${docking_station_model} - Set Global Variable ${FAILED_DETECTION} 0 - Perform Suspend Test Using FWTS - FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_SUSPEND_ITERATIONS} - Log To Console - ... Hotplug after Suspend ${platform_sleep_type} iteration ${iteration+1}/${STABILITY_DETECTION_SUSPEND_ITERATIONS} - TRY - Pause Execution In Console Connect docking station ${docking_station_model} and press ENTER. - Detect Docking Station In Linux ${docking_station_model} - Pause Execution In Console Disconnect docking station ${docking_station_model} and press ENTER. - Run Keyword And Expect Error - ... * does not contain * - ... Detect Docking Station In Linux - ... ${docking_station_model} - EXCEPT message - Evaluate ${FAILED_DETECTION}= ${FAILED_DETECTION}+1 - END - END - IF '${FAILED_DETECTION}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' - FAIL \n ${FAILED_DETECTION} iterations failed. - END - Log To Console \nAll iterations passed. diff --git a/dasharo-compatibility/usb-type-c.robot b/dasharo-compatibility/usb-type-c.robot index 8f5895987e..2e72d98e24 100644 --- a/dasharo-compatibility/usb-type-c.robot +++ b/dasharo-compatibility/usb-type-c.robot @@ -1,356 +1,3628 @@ +*** Comments *** +# robocop: disable=too-many-test-cases + + *** Settings *** -Library Collections -Library OperatingSystem -Library Process -Library String -Library Telnet timeout=20 seconds connection_timeout=120 seconds -Library SSHLibrary timeout=90 seconds -Library RequestsLibrary -# TODO: maybe have a single file to include if we need to include the same -# stuff in all test cases -Resource ../variables.robot Resource ../keywords.robot -Resource ../keys.robot -Resource ../lib/me.robot -Resource ../lib/docks.robot +Resource ../lib/utc.robot # TODO: # - document which setup/teardown keywords to use and what are they doing # - go threough them and make sure they are doing what the name suggest (not # exactly the case right now) -Suite Setup Run Keyword +Suite Setup Run Keywords ... Prepare Test Suite +... AND +... Check If Platform Sleep Type Can Be Selected +... AND +... Prepare UTC Test Suite Suite Teardown Run Keyword ... Log Out And Close Connection *** Test Cases *** -UTC004.001 USB Type-C Display output (semi-automatic) +# Not automated +# UTC101.001 USB Type-A charging capability (Firmware) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test verifies that the USB-A ports are able to provide +# ... charging to a connected smartphone. +# Usb Type-A Charging Capability 001 Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC103.001 Thunderbolt 4 USB Type-C power output (Firmware) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test verifies that the Thunderbolt 4 port is able +# ... to provide charging to a USB Type-C accessory. +# Thunderbolt 4 Usb Type-C Power Output 001 Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC115.001 USB Type-C docking station USB devices recognition (Firmware) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] Check whether the external USB devices connected to the +# ... docking station are detected correctly +# Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC115.001 not supported +# Usb Type-C Docking Station Usb Devices Recognition 001 Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC117.001 USB Type-C docking station USB keyboard (Firmware) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] Check whether the external USB keyboard connected to the +# ... docking station is detected correctly. +# Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC117.001 not supported +# Usb Type-C Docking Station Usb Keyboard 001 Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC105.201 USB Type-C PD power input (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC105.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC105.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC105.201 not supported +# Usb Type-C Pd Power Input ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC107.201 USB Type-C Display output (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) [Documentation] Check whether the DUT can detect the USB Type-C hub. - Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC004.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC004.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out}= List Devices In Linux usb - Should Contain ${out} ${CLEVO_USB_C_HUB} - Exit From Root User - -UTC004.005 USB Type-C Display output With Me Disabled(semi-automatic) - [Documentation] Check whether the DUT can detect the USB Type-C hub - ... when Intel ME is disabled - Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC004.002 not supported - Skip If not ${DASHARO_INTEL_ME_MENU_SUPPORT} Dasharo Intel ME menu not supported - Set UEFI Option MeMode Disabled (HAP) - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${result}= Check ME Out - Should Not Be Equal As Strings ${result} Enabled - ${out}= List Devices In Linux usb - Should Contain ${out} ${CLEVO_USB_C_HUB} - Exit From Root User - -UTC004.006 USB Type-C Display output With Me Enabled (semi-automatic) - [Documentation] Check whether the DUT can detect the USB Type-C hub - ... when Intel ME is enabled - Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} TMD004.003 not supported - Skip If not ${DASHARO_INTEL_ME_MENU_SUPPORT} Dasharo Intel ME menu not supported - Set UEFI Option MeMode Enabled - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${result}= Check ME Out - Should Be Equal As Strings ${result} Enabled - ${out}= List Devices In Linux usb - Should Contain ${out} ${CLEVO_USB_C_HUB} - Exit From Root User - -UTC005.001 - Docking station HDMI display in OS (DP Alt mode) (Ubuntu) - [Documentation] This test aims to verify that the display connected with - ... the HDMI cable to the docking station is correctly - ... recognized by the OPERATING_SYSTEM. - Skip If not ${DOCKING_STATION_HDMI} UTC005.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC005.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Check PCON On MST Hub In Linux - Exit From Root User - -UTC005.002 - Docking station HDMI display in OS (DP Alt mode) (Windows) - [Documentation] This test aims to verify that the display connected with - ... the HDMI cable to the docking station is correctly - ... recognized by the OPERATING_SYSTEM. - Skip If not ${DOCKING_STATION_HDMI} UTC005.002 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC005.002 not supported - Power On - Login To Windows - Check Docking Station HDMI Windows + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC107.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC107.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC107.201 not supported + Usb Type-C Display Output ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E -UTC005.003 - Docking station HDMI display in OS (Ubuntu) +UTC109.201 USB Type-C docking station HDMI display (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) [Documentation] This test aims to verify that the display connected with ... the HDMI cable to the docking station is correctly ... recognized by the OPERATING_SYSTEM. - Skip If not ${DOCKING_STATION_HDMI} UTC005.003 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC005.003 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Check Display Port On Hub In Linux HDMI - Exit From Root User - -UTC005.005 USB Type-C docking station HDMI display with ME disabled(Ubuntu) - [Documentation] This test aims to verify that the display connected with - ... the HDMI cable to the docking station is correctly - ... recognized by the OPERATING_SYSTEM. - Skip If not ${DOCKING_STATION_HDMI} UTC005.005 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC005.005 not supported - Set UEFI Option MeMode Disabled (HAP) - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${result}= Check ME Out - Should Not Be Equal As Strings ${result} Enabled - Check Display Port On Hub In Linux HDMI - Exit From Root User - -UTC005.007 USB Type-C docking station HDMI display with ME enabled(Ubuntu) - [Documentation] This test aims to verify that the display connected with - ... the HDMI cable to the docking station is correctly - ... recognized by the OPERATING_SYSTEM. - Skip If not ${DOCKING_STATION_HDMI} UTC005.007 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC005.007 not supported - Set UEFI Option MeMode Enabled - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${result}= Check ME Out - Should Be Equal As Strings ${result} Enabled - Check Display Port On Hub In Linux HDMI - Exit From Root User + Skip If not ${DOCKING_STATION_HDMI} UTC109.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC109.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC109.201 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E -UTC006.001 - Docking station DP display in OS (DP Alt mode) (Ubuntu) +UTC111.201 USB Type-C docking station DP display (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) [Documentation] This test aims to verify that the display connected with ... the HDMI cable to the docking station is correctly ... recognized by the OPERATING_SYSTEM. - Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC006.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC006.001 not supported - Power Cycle On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Check DP Port On MST Hub In Linux - Exit From Root User + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC111.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC111.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC111.201 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC113.201 USB Type-C docking station Triple display (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC113.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC113.201 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC115.201 USB Type-C docking station USB devices recognition (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC115.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC115.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC115.201 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC117.201 USB Type-C docking station USB keyboard (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC117.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC117.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC117.201 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC119.201 USB Type-C docking station upload 1GB file on USB storage (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC119.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC119.201 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC121.201 USB Type-C docking station Ethernet connection (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC121.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC121.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC121.201 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC123.201 USB Type-C docking station audio recognition (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC123.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC123.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC123.201 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC125.201 USB Type-C docking station audio playback (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC125.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC125.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC125.201 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC127.201 USB Type-C docking station audio capture (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC127.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC127.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC127.201 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC129.201 USB Type-C docking station SD Card reader detection (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC129.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC129.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC129.201 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC131.201 USB Type-C docking station SD Card read/write (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC131.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC131.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC131.201 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC133.201 USB Type-C PD current limiting (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC133.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC133.201 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC135.201 Docking station detection after coldboot (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC135.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC135.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC135.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC135.201 not supported + Docking Station Detection After Coldboot ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC137.201 Docking station detection after warmboot (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC137.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC137.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC137.201 not supported + Docking Station Detection After Warmboot ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC139.201 Docking station detection after reboot (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC139.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC139.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC139.201 not supported + Docking Station Detection After Reboot ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC141.201 Docking station detection after suspend (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC141.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC141.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC141.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC141.201 not supported + Docking Station Detection After Suspend ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC143.201 Docking station detection after suspend (S0ix) (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC143.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC143.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC143.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC143.201 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E -UTC006.002 - Docking station DP display in OS (DP Alt mode) (Windows) +UTC145.201 Docking station detection after suspend (S3) (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC145.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC145.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC145.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC145.201 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC147.201 Docking station detection after coldboot then hotplug (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC147.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC147.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC147.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC147.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC149.201 Docking station detection after warmboot then hotplug (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC149.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC149.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC149.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC151.201 Docking station detection after reboot then hotplug (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC151.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC151.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC151.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC153.201 Docking station detection after suspend then hotplug (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC153.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC153.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC153.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC153.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC155.201 Docking station detection after suspend then hotplug (S0ix) (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC155.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC155.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC155.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC155.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +UTC157.201 Docking station detection after suspend then hotplug (S3) (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC157.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC157.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC157.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC157.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC105.202 USB Type-C PD power input (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC105.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC105.202 not supported +# Usb Type-C Pd Power Input ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC107.202 USB Type-C Display output (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC107.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC107.202 not supported + Usb Type-C Display Output ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC109.202 USB Type-C docking station HDMI display (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) [Documentation] This test aims to verify that the display connected with - ... the DisplayPort cable to the docking station is correctly + ... the HDMI cable to the docking station is correctly ... recognized by the OPERATING_SYSTEM. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC006.002 not supported - Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC006.002 not supported - Power On - Login To Windows - Check Docking Station DP Windows + Skip If not ${DOCKING_STATION_HDMI} UTC109.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC109.202 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E -UTC006.003 - Docking station DP display in OS (Ubuntu) +UTC111.202 USB Type-C docking station DP display (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) [Documentation] This test aims to verify that the display connected with ... the HDMI cable to the docking station is correctly ... recognized by the OPERATING_SYSTEM. - Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC006.003 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC006.003 not supported - Power Cycle On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Check Display Port On Hub In Linux DP - Exit From Root User + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC111.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC111.202 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC113.202 USB Type-C docking station Triple display (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC113.202 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC115.202 USB Type-C docking station USB devices recognition (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC115.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC115.202 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC117.202 USB Type-C docking station USB keyboard (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC117.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC117.202 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC119.202 USB Type-C docking station upload 1GB file on USB storage (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC119.202 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC121.202 USB Type-C docking station Ethernet connection (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC121.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC121.202 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC123.202 USB Type-C docking station audio recognition (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC123.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC123.202 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC125.202 USB Type-C docking station audio playback (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC125.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC125.202 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC127.202 USB Type-C docking station audio capture (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC127.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC127.202 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC129.202 USB Type-C docking station SD Card reader detection (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC129.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC129.202 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC131.202 USB Type-C docking station SD Card read/write (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC131.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC131.202 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC133.202 USB Type-C PD current limiting (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC133.202 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC135.202 Docking station detection after coldboot (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC135.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC135.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC135.202 not supported + Docking Station Detection After Coldboot ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E -UTC006.005 USB Type-C docking station DP display with ME disabled(Ubuntu) +UTC137.202 Docking station detection after warmboot (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC137.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC137.202 not supported + Docking Station Detection After Warmboot ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC139.202 Docking station detection after reboot (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC139.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC139.202 not supported + Docking Station Detection After Reboot ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC141.202 Docking station detection after suspend (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC141.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC141.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC141.202 not supported + Docking Station Detection After Suspend ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC143.202 Docking station detection after suspend (S0ix) (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC143.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC143.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC143.202 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC145.202 Docking station detection after suspend (S3) (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC145.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC145.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC145.202 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC147.202 Docking station detection after coldboot then hotplug (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC147.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC147.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC147.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC149.202 Docking station detection after warmboot then hotplug (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC149.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC149.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC151.202 Docking station detection after reboot then hotplug (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC151.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC151.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC153.202 Docking station detection after suspend then hotplug (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC153.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC153.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC153.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC155.202 Docking station detection after suspend then hotplug (S0ix) (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC155.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC155.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC155.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +UTC157.202 Docking station detection after suspend then hotplug (S3) (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC157.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC157.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC157.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC105.301 USB Type-C PD power input (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC105.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC105.301 not supported +# Usb Type-C Pd Power Input ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +UTC109.301 USB Type-C docking station HDMI display (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) [Documentation] This test aims to verify that the display connected with ... the HDMI cable to the docking station is correctly ... recognized by the OPERATING_SYSTEM. - Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC006.005 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC006.005 not supported - Set UEFI Option MeMode Disabled (HAP) - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${result}= Check ME Out - Should Not Be Equal As Strings ${result} Enabled - Check Display Port On Hub In Linux DP - Exit From Root User + Skip If not ${DOCKING_STATION_HDMI} UTC109.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC109.301 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E -UTC006.007 USB Type-C docking station DP display with ME enabled(Ubuntu) +UTC111.301 USB Type-C docking station DP display (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) [Documentation] This test aims to verify that the display connected with ... the HDMI cable to the docking station is correctly ... recognized by the OPERATING_SYSTEM. - Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC006.007 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC006.007 not supported - Set UEFI Option MeMode Enabled - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${result}= Check ME Out - Should Be Equal As Strings ${result} Enabled - Check Display Port On Hub In Linux DP - Exit From Root User + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC111.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC111.301 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E -UTC012.002 USB devices recognition (Ubuntu) - [Documentation] Check whether the external USB devices connected to the - ... docking station are detected correctly in Linux OS. - Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC012.002 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC012.002 not supported - Power On - Login To Linux - Switch To Root User - ${out}= List Devices In Linux usb - Should Contain ${out} SanDisk - Exit From Root User - -UTC012.003 USB devices recognition (Windows) +# Not automated +# UTC113.301 USB Type-C docking station Triple display (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC113.301 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +UTC115.301 USB Type-C docking station USB devices recognition (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) [Documentation] Check whether the external USB devices connected to the - ... docking station are detected correctly in Windows OS. - Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC012.003 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC012.003 not supported - Power On - Login To Windows - ${out}= Execute Command In Terminal Get-PnpDevice -PresentOnly | Where-Object { $_.InstanceId -match '^USB' } - Should Contain ${out} OK${SPACE*9}DiskDrive${SPACE*8}USB${SPACE*2}SanDisk - -UTC013.002 USB keyboard detection (Ubuntu) + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC115.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC115.301 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +UTC117.301 USB Type-C docking station USB keyboard (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) [Documentation] Check whether the external USB keyboard connected to the - ... docking station is detected correctly by the Linux OS. - Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC013.002 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC013.002 not supported - Power On - Login To Linux - Switch To Root User - ${out}= List Devices In Linux usb - Should Contain ${out} ${DEVICE_USB_KEYBOARD} - Exit From Root User - -UTC013.003 USB keyboard detection (Windows) + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC117.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC117.301 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC119.301 USB Type-C docking station upload 1GB file on USB storage (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC119.301 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +UTC121.301 USB Type-C docking station Ethernet connection (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC121.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC121.301 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC125.301 USB Type-C docking station audio playback (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC125.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC125.301 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC127.301 USB Type-C docking station audio capture (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC127.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC127.301 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +UTC129.301 USB Type-C docking station SD Card reader detection (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC129.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC129.301 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +UTC131.301 USB Type-C docking station SD Card read/write (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC131.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC131.301 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC133.301 USB Type-C PD current limiting (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC133.301 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC102.001 USB Type-A charging capability (Firmware) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test verifies that the USB-A ports are able to provide +# ... charging to a connected smartphone. +# Usb Type-A Charging Capability 001 Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC104.001 Thunderbolt 4 USB Type-C power output (Firmware) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test verifies that the Thunderbolt 4 port is able +# ... to provide charging to a USB Type-C accessory. +# Thunderbolt 4 Usb Type-C Power Output 001 Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC116.001 USB Type-C docking station USB devices recognition (Firmware) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] Check whether the external USB devices connected to the +# ... docking station are detected correctly +# Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC116.001 not supported +# Usb Type-C Docking Station Usb Devices Recognition 001 Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC118.001 USB Type-C docking station USB keyboard (Firmware) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] Check whether the external USB keyboard connected to the +# ... docking station is detected correctly. +# Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC118.001 not supported +# Usb Type-C Docking Station Usb Keyboard 001 Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC106.201 USB Type-C PD power input (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC106.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC106.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC106.201 not supported +# Usb Type-C Pd Power Input ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC108.201 USB Type-C Display output (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC108.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC108.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC108.201 not supported + Usb Type-C Display Output ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC110.201 USB Type-C docking station HDMI display (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC110.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC110.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC110.201 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC112.201 USB Type-C docking station DP display (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC112.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC112.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC112.201 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC114.201 USB Type-C docking station Triple display (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC114.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC114.201 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC116.201 USB Type-C docking station USB devices recognition (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC116.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC116.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC116.201 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC118.201 USB Type-C docking station USB keyboard (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) [Documentation] Check whether the external USB keyboard connected to the - ... docking station is detected correctly by the Windows OS. - Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC013.003 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC013.003 not supported - Power On - Login To Windows - ${out}= Execute Command In Terminal Get-CimInstance win32_KEYBOARD - Should Contain ${out} Description${SPACE*17}: USB Input Device strip_spaces=True - -UTC014.001 Ethernet connection (Ubuntu) + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC118.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC118.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC118.201 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC120.201 USB Type-C docking station upload 1GB file on USB storage (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC120.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC120.201 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC122.201 USB Type-C docking station Ethernet connection (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) [Documentation] This test aims to verify that the connection to internet ... via docking station's Ethernet port can be obtained on - ... Ubuntu 22.04. - Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC014.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC014.001 not supported - Power On - Login To Linux - Switch To Root User - Check Internet Connection On Linux - Exit From Root User - -UTC014.002 Ethernet connection (Windows) + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC122.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC122.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC122.201 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC124.201 USB Type-C docking station audio recognition (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC124.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC124.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC124.201 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC126.201 USB Type-C docking station audio playback (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC126.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC126.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC126.201 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC128.201 USB Type-C docking station audio capture (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC128.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC128.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC128.201 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC130.201 USB Type-C docking station SD Card reader detection (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC130.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC130.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC130.201 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC132.201 USB Type-C docking station SD Card read/write (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC132.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC132.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC132.201 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC134.201 USB Type-C PD current limiting (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC134.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC134.201 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC136.201 Docking station detection after coldboot (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC136.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC136.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC136.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC136.201 not supported + Docking Station Detection After Coldboot ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC138.201 Docking station detection after warmboot (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC138.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC138.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC138.201 not supported + Docking Station Detection After Warmboot ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC140.201 Docking station detection after reboot (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC140.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC140.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC140.201 not supported + Docking Station Detection After Reboot ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC142.201 Docking station detection after suspend (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC142.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC142.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC142.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC142.201 not supported + Docking Station Detection After Suspend ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC144.201 Docking station detection after suspend (S0ix) (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC144.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC144.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC144.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC144.201 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC146.201 Docking station detection after suspend (S3) (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC146.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC146.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC146.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC146.201 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC148.201 Docking station detection after coldboot then hotplug (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC148.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC148.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC148.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC148.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC150.201 Docking station detection after warmboot then hotplug (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC150.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC150.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC150.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC152.201 Docking station detection after reboot then hotplug (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC152.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC152.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC152.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC154.201 Docking station detection after suspend then hotplug (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC154.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC154.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC154.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC154.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC156.201 Docking station detection after suspend then hotplug (S0ix) (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC156.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC156.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC156.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC156.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +UTC158.201 Docking station detection after suspend then hotplug (S3) (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC158.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC158.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC158.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC158.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC106.202 USB Type-C PD power input (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC106.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC106.202 not supported +# Usb Type-C Pd Power Input ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC108.202 USB Type-C Display output (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC108.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC108.202 not supported + Usb Type-C Display Output ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC110.202 USB Type-C docking station HDMI display (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC110.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC110.202 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC112.202 USB Type-C docking station DP display (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC112.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC112.202 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC114.202 USB Type-C docking station Triple display (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC114.202 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC116.202 USB Type-C docking station USB devices recognition (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC116.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC116.202 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC118.202 USB Type-C docking station USB keyboard (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC118.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC118.202 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC120.202 USB Type-C docking station upload 1GB file on USB storage (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC120.202 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC122.202 USB Type-C docking station Ethernet connection (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) [Documentation] This test aims to verify that the connection to internet ... via docking station's Ethernet port can be obtained on - ... Windows 11. - Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC014.002 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC014.002 not supported - Power On - Login To Windows - Check Internet Connection On Windows - -UTC015.001 Audio recognition (Ubuntu) + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC122.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC122.202 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC124.202 USB Type-C docking station audio recognition (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) [Documentation] This test aims to verify that the external headset is - ... properly recognized after plugging in the 3.5 mm jack into the - ... docking station. - Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC015.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC015.001 not supported - Power On - Login To Linux - Switch To Root User - ${out}= List Devices In Linux usb - Should Contain ${out} ${EXTERNAL_HEADSET} - Exit From Root User - -UTC18.001 Docking Station SD Card reader detection (Ubuntu) + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC124.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC124.202 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC126.202 USB Type-C docking station audio playback (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC126.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC126.202 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC128.202 USB Type-C docking station audio capture (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC128.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC128.202 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC130.202 USB Type-C docking station SD Card reader detection (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) [Documentation] Check whether the SD Card reader is enumerated correctly ... and can be detected from the operating system. - Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC18.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC18.001 not supported - Power On - Login To Linux - Switch To Root User - ${disks}= Identify Disks In Linux - Should Match str(${disks}) pattern=*SD* - Exit From Root User - -UTC018.002 Docking Station SD Card reader detection (Windows) + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC130.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC130.202 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC132.202 USB Type-C docking station SD Card read/write (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC132.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC132.202 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC134.202 USB Type-C PD current limiting (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC134.202 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC136.202 Docking station detection after coldboot (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC136.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC136.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC136.202 not supported + Docking Station Detection After Coldboot ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC138.202 Docking station detection after warmboot (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC138.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC138.202 not supported + Docking Station Detection After Warmboot ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC140.202 Docking station detection after reboot (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC140.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC140.202 not supported + Docking Station Detection After Reboot ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC142.202 Docking station detection after suspend (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC142.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC142.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC142.202 not supported + Docking Station Detection After Suspend ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC144.202 Docking station detection after suspend (S0ix) (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC144.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC144.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC144.202 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC146.202 Docking station detection after suspend (S3) (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC146.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC146.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC146.202 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC148.202 Docking station detection after coldboot then hotplug (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC148.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC148.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC148.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC150.202 Docking station detection after warmboot then hotplug (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC150.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC150.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC152.202 Docking station detection after reboot then hotplug (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC152.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC152.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC154.202 Docking station detection after suspend then hotplug (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC154.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC154.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC154.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC156.202 Docking station detection after suspend then hotplug (S0ix) (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC156.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC156.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC156.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +UTC158.202 Docking station detection after suspend then hotplug (S3) (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC158.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC158.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC158.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC106.301 USB Type-C PD power input (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC106.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC106.301 not supported +# Usb Type-C Pd Power Input ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +UTC110.301 USB Type-C docking station HDMI display (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC110.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC110.301 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +UTC112.301 USB Type-C docking station DP display (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC112.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC112.301 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC114.301 USB Type-C docking station Triple display (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC114.301 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +UTC116.301 USB Type-C docking station USB devices recognition (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC116.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC116.301 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +UTC118.301 USB Type-C docking station USB keyboard (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC118.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC118.301 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC120.301 USB Type-C docking station upload 1GB file on USB storage (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC120.301 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +UTC122.301 USB Type-C docking station Ethernet connection (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC122.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC122.301 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC126.301 USB Type-C docking station audio playback (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC126.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC126.301 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC128.301 USB Type-C docking station audio capture (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC128.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC128.301 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +UTC130.301 USB Type-C docking station SD Card reader detection (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) [Documentation] Check whether the SD Card reader is enumerated correctly ... and can be detected from the operating system. - Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC018.001 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC018.001 not supported - Power On - Login To Windows - ${out}= Execute Command In Terminal - ... Get-PnpDevice -Status "OK" -Class "DiskDrive" | ForEach-Object { $_.FriendlyName } - @{lines}= Split To Lines ${out} - FOR ${disk} IN @{lines} - ${disk}= Replace String Using Regexp ${disk} ${SPACE}+ ${SPACE} - TRY - Should Contain Any ${disk} ${DOCKING_STATION_MODEL_1} ${DOCKING_STATION_MODEL_2} - EXCEPT - Log ${disk} is not SD Card - END - END - -UTC019.001 Docking Station SD Card read/write (Ubuntu) + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC130.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC130.301 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +UTC132.301 USB Type-C docking station SD Card read/write (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) [Documentation] Check whether the SD Card reader is initialized correctly ... and can be used from the operating system. - Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC019.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC019.001 not supported - Power On - Login To Linux - Switch To Root User - ${path}= Identify Path To SD Card In Linux - FOR ${disk} IN @{path} - Check Read Write To External Drive In Linux ${disk} - END - Exit From Root User - -UTC019.002 Docking Station SD Card read/write (Windows) + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC132.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC132.301 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC134.301 USB Type-C PD current limiting (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.E) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC134.301 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.E + +# Not automated +# UTC201.001 USB Type-A charging capability (Firmware) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test verifies that the USB-A ports are able to provide +# ... charging to a connected smartphone. +# Usb Type-A Charging Capability 001 Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC203.001 Thunderbolt 4 USB Type-C power output (Firmware) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test verifies that the Thunderbolt 4 port is able +# ... to provide charging to a USB Type-C accessory. +# Thunderbolt 4 Usb Type-C Power Output 001 Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC215.001 USB Type-C docking station USB devices recognition (Firmware) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] Check whether the external USB devices connected to the +# ... docking station are detected correctly +# Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC215.001 not supported +# Usb Type-C Docking Station Usb Devices Recognition 001 Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC217.001 USB Type-C docking station USB keyboard (Firmware) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] Check whether the external USB keyboard connected to the +# ... docking station is detected correctly. +# Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC217.001 not supported +# Usb Type-C Docking Station Usb Keyboard 001 Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC205.201 USB Type-C PD power input (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC205.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC205.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC205.201 not supported +# Usb Type-C Pd Power Input ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC207.201 USB Type-C Display output (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC207.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC207.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC207.201 not supported + Usb Type-C Display Output ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC209.201 USB Type-C docking station HDMI display (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC209.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC209.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC209.201 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC211.201 USB Type-C docking station DP display (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC211.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC211.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC211.201 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC213.201 USB Type-C docking station Triple display (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC213.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC213.201 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC215.201 USB Type-C docking station USB devices recognition (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC215.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC215.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC215.201 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC217.201 USB Type-C docking station USB keyboard (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC217.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC217.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC217.201 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC219.201 USB Type-C docking station upload 1GB file on USB storage (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC219.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC219.201 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC221.201 USB Type-C docking station Ethernet connection (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC221.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC221.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC221.201 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC223.201 USB Type-C docking station audio recognition (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC223.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC223.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC223.201 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC225.201 USB Type-C docking station audio playback (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC225.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC225.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC225.201 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC227.201 USB Type-C docking station audio capture (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC227.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC227.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC227.201 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC229.201 USB Type-C docking station SD Card reader detection (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC229.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC229.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC229.201 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC231.201 USB Type-C docking station SD Card read/write (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) [Documentation] Check whether the SD Card reader is initialized correctly ... and can be used from the operating system. - Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC019.001 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC019.001 not supported - Power On - Login To Windows - ${drive_letter}= Identify Path To SD Card In Windows - Check Read Write To External Drive In Windows ${drive_letter} - -UTC021.001 USB Type-C laptop charging (Ubuntu) - [Documentation] Check whether the DUT can be charged using a - ... PD power supply connected to the docking station, which - ... is connected to the USB Type-C port. - Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC021.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC021.001 not supported - Power On - Login To Linux - Switch To Root User - Check Charging State In Linux - Exit From Root User - -UTC021.002 USB Type-C laptop charging (Windows) - [Documentation] Check whether the DUT can be charged using a - ... PD power supply connected to the docking station, which - ... is connected to the USB Type-C port. - Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC021.002 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC021.002 not supported - Power On - Login To Windows - Check Charging State In Windows + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC231.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC231.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC231.201 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC233.201 USB Type-C PD current limiting (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC233.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC233.201 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC235.201 Docking station detection after coldboot (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC235.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC235.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC235.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC235.201 not supported + Docking Station Detection After Coldboot ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC237.201 Docking station detection after warmboot (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC237.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC237.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC237.201 not supported + Docking Station Detection After Warmboot ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC239.201 Docking station detection after reboot (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC239.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC239.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC239.201 not supported + Docking Station Detection After Reboot ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC241.201 Docking station detection after suspend (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC241.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC241.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC241.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC241.201 not supported + Docking Station Detection After Suspend ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC243.201 Docking station detection after suspend (S0ix) (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC243.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC243.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC243.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC243.201 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC245.201 Docking station detection after suspend (S3) (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC245.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC245.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC245.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC245.201 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC247.201 Docking station detection after coldboot then hotplug (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC247.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC247.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC247.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC247.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC249.201 Docking station detection after warmboot then hotplug (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC249.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC249.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC249.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC251.201 Docking station detection after reboot then hotplug (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC251.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC251.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC251.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC253.201 Docking station detection after suspend then hotplug (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC253.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC253.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC253.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC253.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC255.201 Docking station detection after suspend then hotplug (S0ix) (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC255.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC255.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC255.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC255.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +UTC257.201 Docking station detection after suspend then hotplug (S3) (Ubuntu) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC257.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC257.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC257.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC257.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_UBUNTU} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC205.202 USB Type-C PD power input (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC205.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC205.202 not supported +# Usb Type-C Pd Power Input ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC207.202 USB Type-C Display output (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC207.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC207.202 not supported + Usb Type-C Display Output ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC209.202 USB Type-C docking station HDMI display (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC209.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC209.202 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC211.202 USB Type-C docking station DP display (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC211.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC211.202 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC213.202 USB Type-C docking station Triple display (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC213.202 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC215.202 USB Type-C docking station USB devices recognition (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC215.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC215.202 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC217.202 USB Type-C docking station USB keyboard (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC217.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC217.202 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC219.202 USB Type-C docking station upload 1GB file on USB storage (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC219.202 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC221.202 USB Type-C docking station Ethernet connection (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC221.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC221.202 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC223.202 USB Type-C docking station audio recognition (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC223.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC223.202 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC225.202 USB Type-C docking station audio playback (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC225.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC225.202 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC227.202 USB Type-C docking station audio capture (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC227.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC227.202 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC229.202 USB Type-C docking station SD Card reader detection (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC229.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC229.202 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC231.202 USB Type-C docking station SD Card read/write (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC231.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC231.202 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC233.202 USB Type-C PD current limiting (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC233.202 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC235.202 Docking station detection after coldboot (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC235.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC235.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC235.202 not supported + Docking Station Detection After Coldboot ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC237.202 Docking station detection after warmboot (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC237.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC237.202 not supported + Docking Station Detection After Warmboot ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC239.202 Docking station detection after reboot (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC239.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC239.202 not supported + Docking Station Detection After Reboot ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC241.202 Docking station detection after suspend (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC241.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC241.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC241.202 not supported + Docking Station Detection After Suspend ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC243.202 Docking station detection after suspend (S0ix) (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC243.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC243.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC243.202 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC245.202 Docking station detection after suspend (S3) (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC245.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC245.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC245.202 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC247.202 Docking station detection after coldboot then hotplug (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC247.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC247.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC247.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC249.202 Docking station detection after warmboot then hotplug (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC249.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC249.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC251.202 Docking station detection after reboot then hotplug (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC251.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC251.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC253.202 Docking station detection after suspend then hotplug (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC253.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC253.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC253.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC255.202 Docking station detection after suspend then hotplug (S0ix) (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC255.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC255.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC255.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +UTC257.202 Docking station detection after suspend then hotplug (S3) (Fedora) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC257.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC257.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC257.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_FEDORA} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC205.301 USB Type-C PD power input (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC205.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC205.301 not supported +# Usb Type-C Pd Power Input ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +UTC209.301 USB Type-C docking station HDMI display (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC209.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC209.301 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +UTC211.301 USB Type-C docking station DP display (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC211.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC211.301 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC213.301 USB Type-C docking station Triple display (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC213.301 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +UTC215.301 USB Type-C docking station USB devices recognition (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC215.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC215.301 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +UTC217.301 USB Type-C docking station USB keyboard (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC217.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC217.301 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC219.301 USB Type-C docking station upload 1GB file on USB storage (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC219.301 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +UTC221.301 USB Type-C docking station Ethernet connection (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC221.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC221.301 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC225.301 USB Type-C docking station audio playback (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC225.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC225.301 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC227.301 USB Type-C docking station audio capture (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC227.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC227.301 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +UTC229.301 USB Type-C docking station SD Card reader detection (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC229.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC229.301 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +UTC231.301 USB Type-C docking station SD Card read/write (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC231.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC231.301 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC233.301 USB Type-C PD current limiting (Windows) (ME: Enabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC233.301 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_WINDOWS} Enabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC202.001 USB Type-A charging capability (Firmware) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test verifies that the USB-A ports are able to provide +# ... charging to a connected smartphone. +# Usb Type-A Charging Capability 001 Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC204.001 Thunderbolt 4 USB Type-C power output (Firmware) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test verifies that the Thunderbolt 4 port is able +# ... to provide charging to a USB Type-C accessory. +# Thunderbolt 4 Usb Type-C Power Output 001 Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC216.001 USB Type-C docking station USB devices recognition (Firmware) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] Check whether the external USB devices connected to the +# ... docking station are detected correctly +# Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC216.001 not supported +# Usb Type-C Docking Station Usb Devices Recognition 001 Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC218.001 USB Type-C docking station USB keyboard (Firmware) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] Check whether the external USB keyboard connected to the +# ... docking station is detected correctly. +# Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC218.001 not supported +# Usb Type-C Docking Station Usb Keyboard 001 Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC206.201 USB Type-C PD power input (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC206.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC206.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC206.201 not supported +# Usb Type-C Pd Power Input ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC208.201 USB Type-C Display output (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC208.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC208.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC208.201 not supported + Usb Type-C Display Output ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC210.201 USB Type-C docking station HDMI display (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC210.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC210.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC210.201 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC212.201 USB Type-C docking station DP display (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC212.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC212.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC212.201 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC214.201 USB Type-C docking station Triple display (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC214.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC214.201 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC216.201 USB Type-C docking station USB devices recognition (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC216.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC216.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC216.201 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC218.201 USB Type-C docking station USB keyboard (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC218.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC218.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC218.201 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC220.201 USB Type-C docking station upload 1GB file on USB storage (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC220.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC220.201 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC222.201 USB Type-C docking station Ethernet connection (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC222.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC222.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC222.201 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC224.201 USB Type-C docking station audio recognition (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC224.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC224.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC224.201 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC226.201 USB Type-C docking station audio playback (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC226.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC226.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC226.201 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC228.201 USB Type-C docking station audio capture (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC228.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC228.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC228.201 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC230.201 USB Type-C docking station SD Card reader detection (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC230.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC230.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC230.201 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC232.201 USB Type-C docking station SD Card read/write (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC232.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC232.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC232.201 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC234.201 USB Type-C PD current limiting (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC234.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC234.201 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC236.201 Docking station detection after coldboot (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC236.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC236.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC236.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC236.201 not supported + Docking Station Detection After Coldboot ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC238.201 Docking station detection after warmboot (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC238.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC238.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC238.201 not supported + Docking Station Detection After Warmboot ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC240.201 Docking station detection after reboot (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC240.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC240.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC240.201 not supported + Docking Station Detection After Reboot ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC242.201 Docking station detection after suspend (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC242.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC242.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC242.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC242.201 not supported + Docking Station Detection After Suspend ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC244.201 Docking station detection after suspend (S0ix) (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC244.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC244.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC244.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC244.201 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC246.201 Docking station detection after suspend (S3) (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC246.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC246.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC246.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC246.201 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC248.201 Docking station detection after coldboot then hotplug (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC248.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC248.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC248.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC248.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC250.201 Docking station detection after warmboot then hotplug (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC250.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC250.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC250.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC252.201 Docking station detection after reboot then hotplug (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC252.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC252.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC252.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC254.201 Docking station detection after suspend then hotplug (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC254.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC254.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC254.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC254.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC256.201 Docking station detection after suspend then hotplug (S0ix) (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC256.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC256.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC256.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC256.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +UTC258.201 Docking station detection after suspend then hotplug (S3) (Ubuntu) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC258.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC258.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC258.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC258.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_UBUNTU} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC206.202 USB Type-C PD power input (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC206.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC206.202 not supported +# Usb Type-C Pd Power Input ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC208.202 USB Type-C Display output (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC208.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC208.202 not supported + Usb Type-C Display Output ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC210.202 USB Type-C docking station HDMI display (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC210.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC210.202 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC212.202 USB Type-C docking station DP display (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC212.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC212.202 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC214.202 USB Type-C docking station Triple display (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC214.202 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC216.202 USB Type-C docking station USB devices recognition (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC216.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC216.202 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC218.202 USB Type-C docking station USB keyboard (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC218.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC218.202 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC220.202 USB Type-C docking station upload 1GB file on USB storage (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC220.202 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC222.202 USB Type-C docking station Ethernet connection (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC222.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC222.202 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC224.202 USB Type-C docking station audio recognition (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC224.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC224.202 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC226.202 USB Type-C docking station audio playback (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC226.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC226.202 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC228.202 USB Type-C docking station audio capture (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC228.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC228.202 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC230.202 USB Type-C docking station SD Card reader detection (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC230.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC230.202 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC232.202 USB Type-C docking station SD Card read/write (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC232.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC232.202 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC234.202 USB Type-C PD current limiting (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC234.202 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC236.202 Docking station detection after coldboot (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC236.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC236.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC236.202 not supported + Docking Station Detection After Coldboot ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC238.202 Docking station detection after warmboot (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC238.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC238.202 not supported + Docking Station Detection After Warmboot ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC240.202 Docking station detection after reboot (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC240.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC240.202 not supported + Docking Station Detection After Reboot ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC242.202 Docking station detection after suspend (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC242.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC242.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC242.202 not supported + Docking Station Detection After Suspend ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC244.202 Docking station detection after suspend (S0ix) (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC244.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC244.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC244.202 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC246.202 Docking station detection after suspend (S3) (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC246.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC246.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC246.202 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC248.202 Docking station detection after coldboot then hotplug (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC248.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC248.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC248.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC250.202 Docking station detection after warmboot then hotplug (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC250.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC250.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC252.202 Docking station detection after reboot then hotplug (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC252.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC252.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC254.202 Docking station detection after suspend then hotplug (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC254.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC254.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC254.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC256.202 Docking station detection after suspend then hotplug (S0ix) (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC256.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC256.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC256.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +UTC258.202 Docking station detection after suspend then hotplug (S3) (Fedora) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC258.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC258.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC258.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_FEDORA} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC206.301 USB Type-C PD power input (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC206.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC206.301 not supported +# Usb Type-C Pd Power Input ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +UTC210.301 USB Type-C docking station HDMI display (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC210.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC210.301 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +UTC212.301 USB Type-C docking station DP display (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC212.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC212.301 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC214.301 USB Type-C docking station Triple display (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC214.301 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +UTC216.301 USB Type-C docking station USB devices recognition (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC216.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC216.301 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +UTC218.301 USB Type-C docking station USB keyboard (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC218.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC218.301 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC220.301 USB Type-C docking station upload 1GB file on USB storage (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC220.301 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +UTC222.301 USB Type-C docking station Ethernet connection (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC222.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC222.301 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC226.301 USB Type-C docking station audio playback (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC226.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC226.301 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC228.301 USB Type-C docking station audio capture (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC228.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC228.301 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +UTC230.301 USB Type-C docking station SD Card reader detection (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC230.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC230.301 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +UTC232.301 USB Type-C docking station SD Card read/write (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC232.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC232.301 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC234.301 USB Type-C PD current limiting (Windows) (ME: Disabled) (WL-UMD05 Pro Rev.C1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC234.301 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_WINDOWS} Disabled WL-UMD05 Pro Rev.C1 + +# Not automated +# UTC301.001 USB Type-A charging capability (Firmware) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test verifies that the USB-A ports are able to provide +# ... charging to a connected smartphone. +# Usb Type-A Charging Capability 001 Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC303.001 Thunderbolt 4 USB Type-C power output (Firmware) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test verifies that the Thunderbolt 4 port is able +# ... to provide charging to a USB Type-C accessory. +# Thunderbolt 4 Usb Type-C Power Output 001 Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC315.001 USB Type-C docking station USB devices recognition (Firmware) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] Check whether the external USB devices connected to the +# ... docking station are detected correctly +# Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC315.001 not supported +# Usb Type-C Docking Station Usb Devices Recognition 001 Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC317.001 USB Type-C docking station USB keyboard (Firmware) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] Check whether the external USB keyboard connected to the +# ... docking station is detected correctly. +# Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC317.001 not supported +# Usb Type-C Docking Station Usb Keyboard 001 Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC305.201 USB Type-C PD power input (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC305.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC305.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC305.201 not supported +# Usb Type-C Pd Power Input ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC307.201 USB Type-C Display output (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC307.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC307.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC307.201 not supported + Usb Type-C Display Output ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC309.201 USB Type-C docking station HDMI display (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC309.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC309.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC309.201 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC311.201 USB Type-C docking station DP display (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC311.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC311.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC311.201 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC313.201 USB Type-C docking station Triple display (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC313.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC313.201 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC315.201 USB Type-C docking station USB devices recognition (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC315.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC315.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC315.201 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC317.201 USB Type-C docking station USB keyboard (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC317.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC317.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC317.201 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC319.201 USB Type-C docking station upload 1GB file on USB storage (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC319.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC319.201 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC321.201 USB Type-C docking station Ethernet connection (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC321.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC321.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC321.201 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC323.201 USB Type-C docking station audio recognition (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC323.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC323.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC323.201 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC325.201 USB Type-C docking station audio playback (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC325.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC325.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC325.201 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC327.201 USB Type-C docking station audio capture (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC327.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC327.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC327.201 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC329.201 USB Type-C docking station SD Card reader detection (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC329.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC329.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC329.201 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC331.201 USB Type-C docking station SD Card read/write (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC331.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC331.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC331.201 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC333.201 USB Type-C PD current limiting (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC333.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC333.201 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC335.201 Docking station detection after coldboot (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC335.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC335.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC335.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC335.201 not supported + Docking Station Detection After Coldboot ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC337.201 Docking station detection after warmboot (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC337.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC337.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC337.201 not supported + Docking Station Detection After Warmboot ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC339.201 Docking station detection after reboot (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC339.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC339.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC339.201 not supported + Docking Station Detection After Reboot ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC341.201 Docking station detection after suspend (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC341.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC341.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC341.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC341.201 not supported + Docking Station Detection After Suspend ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC343.201 Docking station detection after suspend (S0ix) (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC343.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC343.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC343.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC343.201 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC345.201 Docking station detection after suspend (S3) (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC345.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC345.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC345.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC345.201 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC347.201 Docking station detection after coldboot then hotplug (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC347.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC347.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC347.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC347.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC349.201 Docking station detection after warmboot then hotplug (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC349.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC349.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC349.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC351.201 Docking station detection after reboot then hotplug (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC351.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC351.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC351.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC353.201 Docking station detection after suspend then hotplug (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC353.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC353.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC353.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC353.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC355.201 Docking station detection after suspend then hotplug (S0ix) (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC355.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC355.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC355.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC355.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +UTC357.201 Docking station detection after suspend then hotplug (S3) (Ubuntu) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC357.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC357.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC357.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC357.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_UBUNTU} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC305.202 USB Type-C PD power input (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC305.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC305.202 not supported +# Usb Type-C Pd Power Input ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC307.202 USB Type-C Display output (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC307.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC307.202 not supported + Usb Type-C Display Output ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC309.202 USB Type-C docking station HDMI display (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC309.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC309.202 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC311.202 USB Type-C docking station DP display (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC311.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC311.202 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC313.202 USB Type-C docking station Triple display (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC313.202 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC315.202 USB Type-C docking station USB devices recognition (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC315.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC315.202 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC317.202 USB Type-C docking station USB keyboard (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC317.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC317.202 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC319.202 USB Type-C docking station upload 1GB file on USB storage (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC319.202 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC321.202 USB Type-C docking station Ethernet connection (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC321.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC321.202 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC323.202 USB Type-C docking station audio recognition (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC323.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC323.202 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC325.202 USB Type-C docking station audio playback (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC325.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC325.202 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC327.202 USB Type-C docking station audio capture (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC327.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC327.202 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC329.202 USB Type-C docking station SD Card reader detection (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC329.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC329.202 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC331.202 USB Type-C docking station SD Card read/write (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC331.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC331.202 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC333.202 USB Type-C PD current limiting (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC333.202 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC335.202 Docking station detection after coldboot (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC335.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC335.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC335.202 not supported + Docking Station Detection After Coldboot ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC337.202 Docking station detection after warmboot (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC337.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC337.202 not supported + Docking Station Detection After Warmboot ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC339.202 Docking station detection after reboot (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC339.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC339.202 not supported + Docking Station Detection After Reboot ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC341.202 Docking station detection after suspend (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC341.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC341.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC341.202 not supported + Docking Station Detection After Suspend ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC343.202 Docking station detection after suspend (S0ix) (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC343.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC343.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC343.202 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC345.202 Docking station detection after suspend (S3) (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC345.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC345.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC345.202 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC347.202 Docking station detection after coldboot then hotplug (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC347.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC347.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC347.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC349.202 Docking station detection after warmboot then hotplug (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC349.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC349.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC351.202 Docking station detection after reboot then hotplug (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC351.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC351.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC353.202 Docking station detection after suspend then hotplug (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC353.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC353.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC353.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC355.202 Docking station detection after suspend then hotplug (S0ix) (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC355.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC355.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC355.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +UTC357.202 Docking station detection after suspend then hotplug (S3) (Fedora) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC357.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC357.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC357.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_FEDORA} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC305.301 USB Type-C PD power input (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC305.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC305.301 not supported +# Usb Type-C Pd Power Input ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +UTC309.301 USB Type-C docking station HDMI display (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC309.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC309.301 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +UTC311.301 USB Type-C docking station DP display (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC311.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC311.301 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC313.301 USB Type-C docking station Triple display (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC313.301 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +UTC315.301 USB Type-C docking station USB devices recognition (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC315.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC315.301 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +UTC317.301 USB Type-C docking station USB keyboard (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC317.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC317.301 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC319.301 USB Type-C docking station upload 1GB file on USB storage (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC319.301 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +UTC321.301 USB Type-C docking station Ethernet connection (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC321.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC321.301 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC325.301 USB Type-C docking station audio playback (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC325.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC325.301 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC327.301 USB Type-C docking station audio capture (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC327.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC327.301 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +UTC329.301 USB Type-C docking station SD Card reader detection (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC329.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC329.301 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +UTC331.301 USB Type-C docking station SD Card read/write (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC331.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC331.301 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC333.301 USB Type-C PD current limiting (Windows) (ME: Enabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC333.301 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_WINDOWS} Enabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC302.001 USB Type-A charging capability (Firmware) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test verifies that the USB-A ports are able to provide +# ... charging to a connected smartphone. +# Usb Type-A Charging Capability 001 Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC304.001 Thunderbolt 4 USB Type-C power output (Firmware) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test verifies that the Thunderbolt 4 port is able +# ... to provide charging to a USB Type-C accessory. +# Thunderbolt 4 Usb Type-C Power Output 001 Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC316.001 USB Type-C docking station USB devices recognition (Firmware) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] Check whether the external USB devices connected to the +# ... docking station are detected correctly +# Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC316.001 not supported +# Usb Type-C Docking Station Usb Devices Recognition 001 Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC318.001 USB Type-C docking station USB keyboard (Firmware) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] Check whether the external USB keyboard connected to the +# ... docking station is detected correctly. +# Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC318.001 not supported +# Usb Type-C Docking Station Usb Keyboard 001 Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC306.201 USB Type-C PD power input (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC306.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC306.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC306.201 not supported +# Usb Type-C Pd Power Input ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC308.201 USB Type-C Display output (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC308.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC308.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC308.201 not supported + Usb Type-C Display Output ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC310.201 USB Type-C docking station HDMI display (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC310.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC310.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC310.201 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC312.201 USB Type-C docking station DP display (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC312.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC312.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC312.201 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC314.201 USB Type-C docking station Triple display (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC314.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC314.201 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC316.201 USB Type-C docking station USB devices recognition (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC316.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC316.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC316.201 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC318.201 USB Type-C docking station USB keyboard (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC318.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC318.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC318.201 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC320.201 USB Type-C docking station upload 1GB file on USB storage (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC320.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC320.201 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC322.201 USB Type-C docking station Ethernet connection (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC322.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC322.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC322.201 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC324.201 USB Type-C docking station audio recognition (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC324.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC324.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC324.201 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC326.201 USB Type-C docking station audio playback (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC326.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC326.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC326.201 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC328.201 USB Type-C docking station audio capture (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC328.201 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC328.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC328.201 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC330.201 USB Type-C docking station SD Card reader detection (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC330.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC330.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC330.201 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC332.201 USB Type-C docking station SD Card read/write (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC332.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC332.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC332.201 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC334.201 USB Type-C PD current limiting (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC334.201 not supported +# Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC334.201 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC336.201 Docking station detection after coldboot (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC336.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC336.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC336.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC336.201 not supported + Docking Station Detection After Coldboot ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC338.201 Docking station detection after warmboot (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC338.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC338.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC338.201 not supported + Docking Station Detection After Warmboot ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC340.201 Docking station detection after reboot (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC340.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC340.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC340.201 not supported + Docking Station Detection After Reboot ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC342.201 Docking station detection after suspend (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC342.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC342.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC342.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC342.201 not supported + Docking Station Detection After Suspend ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC344.201 Docking station detection after suspend (S0ix) (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC344.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC344.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC344.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC344.201 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC346.201 Docking station detection after suspend (S3) (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC346.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC346.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC346.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC346.201 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC348.201 Docking station detection after coldboot then hotplug (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC348.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC348.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC348.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC348.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC350.201 Docking station detection after warmboot then hotplug (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC350.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC350.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC350.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC352.201 Docking station detection after reboot then hotplug (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC352.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC352.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC352.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC354.201 Docking station detection after suspend then hotplug (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC354.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC354.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC354.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC354.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC356.201 Docking station detection after suspend then hotplug (S0ix) (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC356.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC356.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC356.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC356.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +UTC358.201 Docking station detection after suspend then hotplug (S3) (Ubuntu) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC358.201 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC358.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} UTC358.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} UTC358.201 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_UBUNTU} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC306.202 USB Type-C PD power input (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC306.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC306.202 not supported +# Usb Type-C Pd Power Input ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC308.202 USB Type-C Display output (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT can detect the USB Type-C hub. + Skip If not ${USB_TYPE_C_DISPLAY_SUPPORT} UTC308.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC308.202 not supported + Usb Type-C Display Output ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC310.202 USB Type-C docking station HDMI display (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC310.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC310.202 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC312.202 USB Type-C docking station DP display (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC312.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC312.202 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC314.202 USB Type-C docking station Triple display (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC314.202 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC316.202 USB Type-C docking station USB devices recognition (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC316.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC316.202 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC318.202 USB Type-C docking station USB keyboard (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC318.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC318.202 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC320.202 USB Type-C docking station upload 1GB file on USB storage (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC320.202 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC322.202 USB Type-C docking station Ethernet connection (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC322.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC322.202 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC324.202 USB Type-C docking station audio recognition (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station. + Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC324.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC324.202 not supported + Usb Type-C Docking Station Audio Recognition ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC326.202 USB Type-C docking station audio playback (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC326.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC326.202 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC328.202 USB Type-C docking station audio capture (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC328.202 not supported +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC328.202 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC330.202 USB Type-C docking station SD Card reader detection (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC330.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC330.202 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC332.202 USB Type-C docking station SD Card read/write (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC332.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC332.202 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC334.202 USB Type-C PD current limiting (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC334.202 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC336.202 Docking station detection after coldboot (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether he DUT properly detects the docking station + ... after coldboot. + Skip If '${POWER_CTRL}' == 'none' UTC336.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC336.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC336.202 not supported + Docking Station Detection After Coldboot ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC338.202 Docking station detection after warmboot (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether he DUT properly detects the docking station + ... after warmboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC338.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC338.202 not supported + Docking Station Detection After Warmboot ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC340.202 Docking station detection after reboot (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot. + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC340.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC340.202 not supported + Docking Station Detection After Reboot ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC342.202 Docking station detection after suspend (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC342.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC342.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC342.202 not supported + Docking Station Detection After Suspend ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC344.202 Docking station detection after suspend (S0ix) (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC344.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC344.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC344.202 not supported + Docking Station Detection After Suspend (S0Ix) ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC346.202 Docking station detection after suspend (S3) (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3). + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC346.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC346.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC346.202 not supported + Docking Station Detection After Suspend (S3) ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC348.202 Docking station detection after coldboot then hotplug (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after coldboot then hotplug. + [Tags] semiauto + Skip If '${POWER_CTRL}' == 'none' UTC348.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC348.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC348.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Coldboot Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC350.202 Docking station detection after warmboot then hotplug (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after warmboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC350.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC350.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Warmboot Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC352.202 Docking station detection after reboot then hotplug (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after reboot then hotplug. + [Tags] semiauto + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC352.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC352.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Reboot Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC354.202 Docking station detection after suspend then hotplug (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend then hotplug. + [Tags] semiauto + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC354.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC354.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC354.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC356.202 Docking station detection after suspend then hotplug (S0ix) (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC356.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC356.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC356.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S0Ix) ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +UTC358.202 Docking station detection after suspend then hotplug (S3) (Fedora) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug. + [Tags] semiauto + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} UTC358.202 not supported + Skip If not ${DOCKING_STATION_DETECT_SUPPORT} UTC358.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} UTC358.202 not supported + Skip If not ${SEMI_AUTO} semi auto test skipped: SEMI_AUTO==${SEMI_AUTO} + Docking Station Detection After Suspend Then Hotplug (S3) ${ENV_ID_FEDORA} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC306.301 USB Type-C PD power input (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] Check whether the DUT can be charged using a +# ... PD power supply connected to the docking station, which +# ... is connected to the USB Type-C port +# ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu) +# Skip If not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT} UTC306.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC306.301 not supported +# Usb Type-C Pd Power Input ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +UTC310.301 USB Type-C docking station HDMI display (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_HDMI} UTC310.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC310.301 not supported + Usb Type-C Docking Station Hdmi Display ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +UTC312.301 USB Type-C docking station DP display (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_DISPLAY_PORT} UTC312.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC312.301 not supported + Usb Type-C Docking Station Dp Display ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC314.301 USB Type-C docking station Triple display (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the three display +# ... simultaneously connected to the docking station is correctly +# ... recognized by the OPERATING_SYSTEM. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC314.301 not supported +# Usb Type-C Docking Station Triple Display ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +UTC316.301 USB Type-C docking station USB devices recognition (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB devices connected to the + ... docking station are detected correctly + Skip If not ${DOCKING_STATION_USB_SUPPORT} UTC316.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC316.301 not supported + Usb Type-C Docking Station Usb Devices Recognition ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +UTC318.301 USB Type-C docking station USB keyboard (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the external USB keyboard connected to the + ... docking station is detected correctly. + Skip If not ${DOCKING_STATION_KEYBOARD_SUPPORT} UTC318.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC318.301 not supported + Usb Type-C Docking Station Usb Keyboard ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC320.301 USB Type-C docking station upload 1GB file on USB storage (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the 1GB file can be +# ... transferred from the OPERATING_SYSTEM to the USB storage +# ... connected to the docking station. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC320.301 not supported +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +UTC322.301 USB Type-C docking station Ethernet connection (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM. + Skip If not ${DOCKING_STATION_NET_INTERFACE} UTC322.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC322.301 not supported + Usb Type-C Docking Station Ethernet Connection ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC326.301 USB Type-C docking station audio playback (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to playback audio recordings by using the external headset +# ... speakers connected to the docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC326.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC326.301 not supported +# Usb Type-C Docking Station Audio Playback ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC328.301 USB Type-C docking station audio capture (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the audio subsystem is able +# ... to capture audio from external headset connected to the +# ... docking station. +# Skip If not ${DOCKING_STATION_AUDIO_SUPPORT} UTC328.301 not supported +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC328.301 not supported +# Usb Type-C Docking Station Audio Capture ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +UTC330.301 USB Type-C docking station SD Card reader detection (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC330.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC330.301 not supported + Usb Type-C Docking Station Sd Card Reader Detection ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +UTC332.301 USB Type-C docking station SD Card read/write (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) + [Documentation] Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system. + Skip If not ${DOCKING_STATION_SD_CARD_READER_SUPPORT} UTC332.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC332.301 not supported + Usb Type-C Docking Station Sd Card Read/Write ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 + +# Not automated +# UTC334.301 USB Type-C PD current limiting (Windows) (ME: Disabled) (WL-UG69PD2 Rev.A1) +# [Documentation] This test aims to verify that the power draw from a USB-C PD +# ... power supply does not exceed the limits of the power supply's +# ... specifications. +# Skip If not ${TESTS_IN_WINDOWS_SUPPORT} UTC334.301 not supported +# Usb Type-C Pd Current Limiting ${ENV_ID_WINDOWS} Disabled WL-UG69PD2 Rev.A1 diff --git a/dasharo-compatibility/watchdog.robot b/dasharo-compatibility/watchdog.robot index f22f8428ca..90022b1460 100644 --- a/dasharo-compatibility/watchdog.robot +++ b/dasharo-compatibility/watchdog.robot @@ -119,7 +119,7 @@ WDT005.001 Watchdog is detected by OS (Ubuntu) ${chipset_menu}= Reenter Menu And Return Construction Set Option State ${chipset_menu} Watchdog timeout value 300 Save Changes And Reset - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Execute Linux Command modprobe wdat_wdt @@ -148,7 +148,7 @@ WTD006.001 Watchdog resets platform on kernel crash (Ubuntu 22.04) ${chipset_menu}= Reenter Menu And Return Construction Set Option State ${chipset_menu} Watchdog timeout value 300 Save Changes And Reset - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User # Verify that there are entries from wdt or watchdog in kernel logs diff --git a/dasharo-compatibility/wifi-bluetooth-support.robot b/dasharo-compatibility/wifi-bluetooth-support.robot index 5d9d7b1067..6c825ad231 100644 --- a/dasharo-compatibility/wifi-bluetooth-support.robot +++ b/dasharo-compatibility/wifi-bluetooth-support.robot @@ -27,69 +27,90 @@ Suite Teardown Run Keyword *** Test Cases *** -WLE001.001 Wireless card detection (Ubuntu) +WLE001.201 Wireless card detection (Ubuntu) [Documentation] Check whether the Wi-Fi/Bluetooth card is enumerated ... correctly and can be detected from the operating system. - Skip If not ${WIRELESS_CARD_SUPPORT} WLE001.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} WLE001.001 not supported - Log To Console Remember to test all variants of wireless cards. - Log Remember to test all variants of wireless cards. WARN - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Detect Or Install Package pciutils - ${out}= Execute Command In Terminal lspci | grep "Network controller:" - Should Match ${out} *${WIFI_CARD_UBUNTU}* - Log To Console The test passed for the ${WIFI_CARD_UBUNTU} wireless card - Log The test passed for the ${WIFI_CARD_UBUNTU} wireless card WARN - Exit From Root User + ... Previous IDs: WLE001.001 + Skip If not ${WIRELESS_CARD_SUPPORT} WLE001.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} WLE001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} WLE001.201 not supported + Wireless Card Detection ${ENV_ID_UBUNTU} + +WLE002.201 Wi-Fi scanning (Ubuntu) + [Documentation] Check whether the Wi-Fi functionality of card is + ... initialized correctly and can be used from within the + ... operating system.. + ... Previous IDs: WLE002.001 + [Tags] minimal-regression + Skip If not ${WIRELESS_CARD_WIFI_SUPPORT} WLE002.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} WLE002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} WLE002.201 not supported + Wi-Fi Scanning ${ENV_ID_UBUNTU} -WLE001.002 Wireless card detection (Windows) +WLE003.201 Bluetooth scanning (Ubuntu) + [Documentation] Check whether the Bluetooth functionality of card is + ... initialized correctly and can be used from within the + ... operating system. + ... Previous IDs: WLE003.001 + Skip If not ${WIRELESS_CARD_BLUETOOTH_SUPPORT} WLE003.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} WLE003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} WLE003.201 not supported + Bluetooth Scanning ${ENV_ID_UBUNTU} + +WLE001.202 Wireless card detection (Fedora) [Documentation] Check whether the Wi-Fi/Bluetooth card is enumerated ... correctly and can be detected from the operating system. - Skip If not ${WIRELESS_CARD_SUPPORT} WLE001.002 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} WLE001.002 not supported - Log To Console Remember to test all variants of wireless cards. - Log Remember to test all variants of wireless cards. WARN - Power On - Login To Windows - ${out}= Execute Command In Terminal - ... Get-PnpDevice | Where-Object {$_.Class -eq "Net" -and $_.FriendlyName -match "Wireless|Wi-Fi" -and $_.FriendlyName -notmatch "Virtual|Tunnel|TAP"} - Should Match ${out} *${WIFI_CARD}* - Log To Console The test passed for the ${WIFI_CARD} wireless card - Log The test passed for the ${WIFI_CARD} wireless card WARN + Skip If not ${WIRELESS_CARD_SUPPORT} WLE001.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} WLE001.202 not supported + Wireless Card Detection ${ENV_ID_FEDORA} -WLE002.001 Wi-Fi scanning (Ubuntu) +WLE002.202 Wi-Fi scanning (Fedora) [Documentation] Check whether the Wi-Fi functionality of card is ... initialized correctly and can be used from within the ... operating system.. [Tags] minimal-regression - Skip If not ${WIRELESS_CARD_WIFI_SUPPORT} WLE002.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} WLE002.001 not supported + Skip If not ${WIRELESS_CARD_WIFI_SUPPORT} WLE002.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} WLE002.202 not supported + Wi-Fi Scanning ${ENV_ID_FEDORA} + +WLE003.202 Bluetooth scanning (Fedora) + [Documentation] Check whether the Bluetooth functionality of card is + ... initialized correctly and can be used from within the + ... operating system. + Skip If not ${WIRELESS_CARD_BLUETOOTH_SUPPORT} WLE003.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} WLE003.202 not supported + Bluetooth Scanning ${ENV_ID_FEDORA} + +WLE001.301 Wireless card detection (Windows) + [Documentation] Check whether the Wi-Fi/Bluetooth card is enumerated + ... correctly and can be detected from the operating system. + ... Previous IDs: WLE001.002 + Skip If not ${WIRELESS_CARD_SUPPORT} WLE001.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} WLE001.301 not supported Log To Console Remember to test all variants of wireless cards. Log Remember to test all variants of wireless cards. WARN Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Scan For Wi-Fi In Linux - Detect Or Install Package pciutils - ${current_card}= Execute Command In Terminal lspci | grep "Network controller: | awk -F": " '{print $2}" - Exit From Root User - Log To Console The test passed for the ${current_card} wireless card - Log The test passed for the ${current_card} wireless card WARN + Login To Windows + ${out}= Execute Command In Terminal + ... Get-PnpDevice -PresentOnly | Where-Object {$_.Class -eq "Net" -and $_.FriendlyName -match "Wireless|Wi-Fi" -and $_.FriendlyName -notmatch "Virtual|Tunnel|TAP"} + Should Match ${out} *${WIFI_CARD}* + Log To Console The test passed for the ${WIFI_CARD} wireless card + Log The test passed for the ${WIFI_CARD} wireless card WARN -WLE002.002 Wi-Fi scanning (Windows) +WLE002.301 Wi-Fi scanning (Windows) [Documentation] Check whether the Wi-Fi/Bluetooth card is enumerated ... correctly and can be detected from the operating system. - Skip If not ${WIRELESS_CARD_WIFI_SUPPORT} WLE002.002 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} WLE002.002 not supported + ... Previous IDs: WLE002.002 + Skip If not ${WIRELESS_CARD_WIFI_SUPPORT} WLE002.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} WLE002.301 not supported Log To Console Remember to test all variants of wireless cards. Log Remember to test all variants of wireless cards. WARN Power On Login To Windows Execute Command In Terminal Start-Service WlanSvc + # Ensure WiFi is enabled + Execute Command In Terminal + ... Set-NetAdapterAdvancedProperty -Name "Wi-Fi" -AllProperties -RegistryKeyword "SoftwareRadioOff" -RegistryValue "0" ${out}= Execute Command In Terminal netsh wlan show network Should Contain ${out} ${3_MDEB_WIFI_NETWORK} ${current_card}= @@ -97,25 +118,6 @@ WLE002.002 Wi-Fi scanning (Windows) Log To Console The test passed for the ${current_card} wireless card Log The test passed for the ${current_card} wireless card WARN -WLE003.001 Bluetooth scanning (Ubuntu) - [Documentation] Check whether the Bluetooth functionality of card is - ... initialized correctly and can be used from within the - ... operating system. - Skip If not ${WIRELESS_CARD_BLUETOOTH_SUPPORT} WLE003.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} WLE003.001 not supported - Log To Console Remember to test all variants of wireless cards. - Log Remember to test all variants of wireless cards. WARN - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Scan For Bluetooth In Linux - Detect Or Install Package pciutils - ${current_card}= Execute Command In Terminal lspci | grep "Network controller: | awk -F": " '{print $2}" - Exit From Root User - Log To Console The test passed for the ${current_card} wireless card - Log The test passed for the ${current_card} wireless card WARN - # TBD - Run scanning bluetooth via powershell and list aviailable devices # test case below just check connected bluetooth devices # WLE003.002 Bluetooth scanning (Windows 11) @@ -128,3 +130,69 @@ WLE003.001 Bluetooth scanning (Ubuntu) # Login to Windows # ${out}= Execute Command in Terminal Get-PnpDevice -class Bluetooth # Should Contain X Times ${out} OK 4 + + +*** Keywords *** +Wireless Card Detection + [Documentation] Check whether the Wi-Fi/Bluetooth card is enumerated + ... correctly and can be detected from the operating system. + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} + Log To Console Remember to test all variants of wireless cards. + Log Remember to test all variants of wireless cards. WARN + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + + ${out}= Execute Command In Terminal lspci | grep "Network controller:" + Should Match ${out} *${WIFI_CARD_UBUNTU}* + Log To Console The test passed for the ${WIFI_CARD_UBUNTU} wireless card + Log The test passed for the ${WIFI_CARD_UBUNTU} wireless card WARN + Exit From Root User + +Wi-Fi Scanning + [Documentation] Check whether the Wi-Fi functionality of card is + ... initialized correctly and can be used from within the + ... operating system.. + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} + Log To Console Remember to test all variants of wireless cards. + Log Remember to test all variants of wireless cards. WARN + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + + # with interfaces DOWN, dhclient takes around 37s + Execute Command In Terminal dhclient 60s + IF "${BOOTED_OS_ID}"=="${ENV_ID_UBUNTU}" + Detect Or Install Package network-manager + END + Scan For Wi-Fi In Linux + IF "${BOOTED_OS_ID}"=="${ENV_ID_UBUNTU}" + Detect Or Install Package pciutils + END + ${current_card}= Execute Command In Terminal lspci | grep "Network controller: | awk -F": " '{print $2}" + Exit From Root User + Log To Console The test passed for the ${current_card} wireless card + Log The test passed for the ${current_card} wireless card WARN + +Bluetooth Scanning + [Documentation] Check whether the Bluetooth functionality of card is + ... initialized correctly and can be used from within the + ... operating system. + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} + Log To Console Remember to test all variants of wireless cards. + Log Remember to test all variants of wireless cards. WARN + Power On + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + Scan For Bluetooth In Linux + + ${current_card}= Execute Command In Terminal lspci | grep "Network controller:" | awk -F": " '{print $2}' + Exit From Root User + Log To Console The test passed for the ${current_card} wireless card + Log The test passed for the ${current_card} wireless card WARN diff --git a/dasharo-performance/boot-time-measure.robot b/dasharo-performance/boot-time-measure.robot index 13185cf3ad..b600abe0f3 100644 --- a/dasharo-performance/boot-time-measure.robot +++ b/dasharo-performance/boot-time-measure.robot @@ -30,15 +30,66 @@ ${ITERATIONS}= 5 *** Test Cases *** -CBMEM001.001 Serial boot time measure: coreboot booting time after coldboot +CBMEM001.201 Serial boot time measure: coreboot booting time after coldboot [Documentation] Check whether the DUT boots after coldboot and how ... long it takes for coreboot to boot after coldboot if ... CPU is serial initialized. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CBMEM001.001 not supported + ... Previous IDs: CBMEM001.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CBMEM001.201 not supported Skip If '${POWER_CTRL}' == 'none' Coldboot automatic tests not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CBMEM001.201 not supported + Serial Boot Time Measure Coreboot Booting Time After Coldboot ${ENV_ID_UBUNTU} +CBMEM002.201 Serial boot time measure: coreboot booting time after warmboot + [Documentation] Check whether the DUT boots after warmboot and how + ... long it takes for coreboot to boot after warmboot if + ... CPU is serial initialized. + ... Previous IDs: CBMEM002.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CBMEM002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CBMEM002.201 not supported + Serial Boot Time Measure Coreboot Booting Time After Warmboot ${ENV_ID_UBUNTU} + +CBMEM003.201 Serial boot time measure: coreboot booting time after system reboot + [Documentation] Check whether the DUT boots after system reboot and how + ... long it takes for coreboot to boot after system reboot + ... if CPU is serial initialized. + ... Previous IDs: CBMEM003.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CBMEM003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CBMEM003.201 not supported + Serial Boot Time Measure Coreboot Booting Time After System Reboot ${ENV_ID_UBUNTU} + +CBMEM001.202 Serial boot time measure: coreboot booting time after coldboot + [Documentation] Check whether the DUT boots after coldboot and how + ... long it takes for coreboot to boot after coldboot if + ... CPU is serial initialized. + Skip If '${POWER_CTRL}' == 'none' Coldboot automatic tests not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CBMEM001.202 not supported + Serial Boot Time Measure Coreboot Booting Time After Coldboot ${ENV_ID_FEDORA} + +CBMEM002.202 Serial boot time measure: coreboot booting time after warmboot + [Documentation] Check whether the DUT boots after warmboot and how + ... long it takes for coreboot to boot after warmboot if + ... CPU is serial initialized. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CBMEM002.202 not supported + Serial Boot Time Measure Coreboot Booting Time After Warmboot ${ENV_ID_FEDORA} + +CBMEM003.202 Serial boot time measure: coreboot booting time after system reboot + [Documentation] Check whether the DUT boots after system reboot and how + ... long it takes for coreboot to boot after system reboot + ... if CPU is serial initialized. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CBMEM003.202 not supported + Serial Boot Time Measure Coreboot Booting Time After System Reboot ${ENV_ID_FEDORA} + + +*** Keywords *** +Serial Boot Time Measure Coreboot Booting Time After Coldboot + [Documentation] Check whether the DUT boots after coldboot and how + ... long it takes for coreboot to boot after coldboot if + ... CPU is serial initialized. + [Tags] robot:private + [Arguments] ${os_id} ${min} ${max} ${average} ${stddev}= - ... Measure Coldboot Time ${ITERATIONS} + ... Measure Coldboot Time ${ITERATIONS} ${os_id} Log To Console \nCoreboot average booting time: ${average} s\n Log To Console \nCoreboot shortest booting time: ${min} s\n @@ -49,14 +100,14 @@ CBMEM001.001 Serial boot time measure: coreboot booting time after coldboot Should Be True ${max} < ${MAX_ACCEPTABLE_COLDBOOT_TIME_S} Should Be True ${stddev} < ${MAX_ACCEPTABLE_COLDBOOT_TIME_STD_DEV_S} -CBMEM002.001 Serial boot time measure: coreboot booting time after warmboot +Serial Boot Time Measure Coreboot Booting Time After Warmboot [Documentation] Check whether the DUT boots after warmboot and how ... long it takes for coreboot to boot after warmboot if ... CPU is serial initialized. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CBMEM002.001 not supported - + [Tags] robot:private + [Arguments] ${os_id} ${min} ${max} ${average} ${stddev}= - ... Measure Warmboot Time ${ITERATIONS} + ... Measure Warmboot Time ${ITERATIONS} ${os_id} Log To Console \nCoreboot average booting time: ${average} s\n Log To Console \nCoreboot shortest booting time: ${min} s\n @@ -67,14 +118,16 @@ CBMEM002.001 Serial boot time measure: coreboot booting time after warmboot Should Be True ${max} < ${MAX_ACCEPTABLE_WARMBOOT_TIME_S} Should Be True ${stddev} < ${MAX_ACCEPTABLE_WARMBOOT_TIME_STD_DEV_S} -CBMEM003.001 Serial boot time measure: coreboot booting time after system reboot +Serial Boot Time Measure Coreboot Booting Time After System Reboot [Documentation] Check whether the DUT boots after system reboot and how ... long it takes for coreboot to boot after system reboot ... if CPU is serial initialized. + [Tags] robot:private + [Arguments] ${os_id} Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CBMEM003.001 not supported ${min} ${max} ${average} ${stddev}= - ... Measure Reboot Time ${ITERATIONS} + ... Measure Reboot Time ${ITERATIONS} ${os_id} Log To Console \nCoreboot average booting time: ${average} s\n Log To Console \nCoreboot shortest booting time: ${min} s\n diff --git a/dasharo-performance/cpu-frequency.robot b/dasharo-performance/cpu-frequency.robot index 427e8d92f4..870f0c3f7d 100644 --- a/dasharo-performance/cpu-frequency.robot +++ b/dasharo-performance/cpu-frequency.robot @@ -12,6 +12,7 @@ Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot Resource ../keys-and-keywords/heads-keywords.robot +Resource ../lib/performance/cpu.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -28,81 +29,289 @@ Suite Teardown Run Keyword *** Test Cases *** -CPF001.001 CPU not stuck on initial frequency (Ubuntu) +CPF001.201 CPU not stuck on initial frequency (Ubuntu) [Documentation] This test aims to verify whether the mounted CPU does not ... stuck on the initial frequency after booting into the OS. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF001.001 not supported + ... Previous IDs: CPF001.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF001.201 not supported Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop - CPU Not Stuck On Initial Frequency (Ubuntu) + CPU Not Stuck On Initial Frequency (Linux) ${ENV_ID_UBUNTU} -CPF001.002 CPU not stuck on initial frequency (Windows) +CPF002.201 CPU not stuck on initial frequency (Ubuntu) (battery) [Documentation] This test aims to verify whether the mounted CPU does not ... stuck on the initial frequency after booting into the OS. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF001.002 not supported - Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop - CPU Not Stuck On Initial Frequency (Windows) + ... Previous IDs: CPF001.004 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF002.201 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} battery not present + Skip If ${AC_CONNECTED} AC connected + Skip If ${USB-PD_connected} USB-PD connected + Skip If Battery Level Below 30 Percent + CPU Not Stuck On Initial Frequency (Linux) ${ENV_ID_UBUNTU} -CPF001.003 CPU not stuck on initial frequency (Heads+Debian) +CPF003.201 CPU not stuck on initial frequency (Ubuntu) (AC) [Documentation] This test aims to verify whether the mounted CPU does not ... stuck on the initial frequency after booting into the OS. - Skip If not ${TESTS_IN_DEBIAN_SUPPORT} CPF001.003 not supported - Skip If not ${HEADS_PAYLOAD_SUPPORT} CPF001.003 not supported - Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop - CPU Not Stuck On Initial Frequency (Heads+Debian) + ... Previous IDs: CPF001.007 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF003.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF003.201 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${AC_CONNECTED} AC not connected + Skip If ${USB-PD_connected} USB-PD connected + CPU Not Stuck On Initial Frequency (Linux) ${ENV_ID_UBUNTU} -CPF001.004 CPU not stuck on initial frequency (Ubuntu) (battery) +CPF004.201 CPU not stuck on initial frequency (Ubuntu) (USB-PD) [Documentation] This test aims to verify whether the mounted CPU does not ... stuck on the initial frequency after booting into the OS. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF001.004 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF001.004 not supported + ... Previous IDs: CPF001.0010 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF004.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF004.201 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If ${AC_CONNECTED} AC connected + Skip If not ${USB-PD_connected} USB-PD not connected + CPU Not Stuck On Initial Frequency (Linux) ${ENV_ID_UBUNTU} + +CPF005.201 CPU runs on expected frequency (Ubuntu) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency. + ... Previous IDs: CPF002.001 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF005.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF005.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF005.201 not supported + Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop + CPU Runs On Expected Frequency (Linux) ${ENV_ID_UBUNTU} + +CPF006.201 CPU runs on expected frequency (Ubuntu) (battery) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency. + ... Previous IDs: CPF002.003 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF006.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF006.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF006.201 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${BATTERY_PRESENT} battery not present Skip If ${AC_CONNECTED} AC connected Skip If ${USB-PD_connected} USB-PD connected - CPU Not Stuck On Initial Frequency (Ubuntu) + Skip If Battery Level Below 30 Percent + CPU Runs On Expected Frequency (Linux) ${ENV_ID_UBUNTU} -CPF001.005 CPU not stuck on initial frequency (Windows) (battery) - [Documentation] This test aims to verify whether the mounted CPU does not - ... stuck on the initial frequency after booting into the OS. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF001.005 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF001.005 not supported +CPF007.201 CPU runs on expected frequency (Ubuntu) (AC) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency. + ... Previous IDs: CPF002.005 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF007.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF007.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF007.201 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${AC_CONNECTED} AC not connected + Skip If ${USB-PD_connected} USB-PD connected + CPU Runs On Expected Frequency (Linux) ${ENV_ID_UBUNTU} + +CPF008.201 CPU runs on expected frequency (Ubuntu) (USB-PD) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency. + ... Previous IDs: CPF002.007 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF008.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF008.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF008.201 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If ${AC_CONNECTED} AC connected + Skip If not ${USB-PD_connected} USB-PD not connected + CPU Runs On Expected Frequency (Linux) ${ENV_ID_UBUNTU} + +CPF009.201 CPU with load runs on expected frequency (Ubuntu) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency after stress test. + ... Previous IDs: CPF004.001 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF009.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF009.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF009.201 not supported + Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop + CPU With Load Runs On Expected Frequency (Linux) ${ENV_ID_UBUNTU} + +CPF010.201 CPU with load runs on expected frequency (Ubuntu) (battery) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency after stress test. + ... Previous IDs: CPF004.003 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF010.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF010.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF010.201 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${BATTERY_PRESENT} battery not present Skip If ${AC_CONNECTED} AC connected Skip If ${USB-PD_connected} USB-PD connected - CPU Not Stuck On Initial Frequency (Windows) + Skip If Battery Level Below 30 Percent + CPU With Load Runs On Expected Frequency (Linux) ${ENV_ID_UBUNTU} -CPF001.006 CPU not stuck on initial frequency (Heads+Debian) (battery) +CPF011.201 CPU with load runs on expected frequency (Ubuntu) (AC) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency after stress test. + ... Previous IDs: CPF004.005 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF011.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF011.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF011.201 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${AC_CONNECTED} AC not connected + Skip If ${USB-PD_connected} USB-PD connected + CPU With Load Runs On Expected Frequency (Linux) ${ENV_ID_UBUNTU} + +CPF012.201 CPU with load runs on expected frequency (Ubuntu) (USB-PD) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency after stress test. + ... Previous IDs: CPF004.007 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF012.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF012.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPF012.201 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If ${AC_CONNECTED} AC connected + Skip If not ${USB-PD_connected} USB-PD not connected + CPU With Load Runs On Expected Frequency (Linux) ${ENV_ID_UBUNTU} + +CPF001.202 CPU not stuck on initial frequency (Fedora) [Documentation] This test aims to verify whether the mounted CPU does not ... stuck on the initial frequency after booting into the OS. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF001.006 not supported - Skip If not ${TESTS_IN_DEBIAN_SUPPORT} CPF001.006 not supported - Skip If not ${HEADS_PAYLOAD_SUPPORT} CPF001.006 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF001.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF001.202 not supported + Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop + CPU Not Stuck On Initial Frequency (Linux) ${ENV_ID_FEDORA} + +CPF002.202 CPU not stuck on initial frequency (Fedora) (battery) + [Documentation] This test aims to verify whether the mounted CPU does not + ... stuck on the initial frequency after booting into the OS. + Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF002.202 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${BATTERY_PRESENT} battery not present Skip If ${AC_CONNECTED} AC connected Skip If ${USB-PD_connected} USB-PD connected - CPU Not Stuck On Initial Frequency (Heads+Debian) + Skip If Battery Level Below 30 Percent + CPU Not Stuck On Initial Frequency (Linux) ${ENV_ID_FEDORA} -CPF001.007 CPU not stuck on initial frequency (Ubuntu) (AC) +CPF003.202 CPU not stuck on initial frequency (Fedora) (AC) [Documentation] This test aims to verify whether the mounted CPU does not ... stuck on the initial frequency after booting into the OS. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF001.007 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF001.007 not supported + Skip If not ${CPU_FREQUENCY_MEASURE} CPF003.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF003.202 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${AC_CONNECTED} AC not connected Skip If ${USB-PD_connected} USB-PD connected - CPU Not Stuck On Initial Frequency (Ubuntu) + CPU Not Stuck On Initial Frequency (Linux) ${ENV_ID_FEDORA} -CPF001.008 CPU not stuck on initial frequency (Windows) (AC) +CPF004.202 CPU not stuck on initial frequency (Fedora) (USB-PD) [Documentation] This test aims to verify whether the mounted CPU does not ... stuck on the initial frequency after booting into the OS. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF001.008 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF001.008 not supported + Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF004.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If ${AC_CONNECTED} AC connected + Skip If not ${USB-PD_connected} USB-PD not connected + CPU Not Stuck On Initial Frequency (Linux) ${ENV_ID_FEDORA} + +CPF005.202 CPU runs on expected frequency (Fedora) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency. + Skip If not ${CPU_FREQUENCY_MEASURE} CPF005.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF005.202 not supported + Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop + CPU Runs On Expected Frequency (Linux) ${ENV_ID_FEDORA} + +CPF006.202 CPU runs on expected frequency (Fedora) (battery) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency. + Skip If not ${CPU_FREQUENCY_MEASURE} CPF006.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF006.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} battery not present + Skip If ${AC_CONNECTED} AC connected + Skip If ${USB-PD_connected} USB-PD connected + Skip If Battery Level Below 30 Percent + CPU Runs On Expected Frequency (Linux) ${ENV_ID_FEDORA} + +CPF007.202 CPU runs on expected frequency (Fedora) (AC) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency. + Skip If not ${CPU_FREQUENCY_MEASURE} CPF007.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF007.202 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${AC_CONNECTED} AC not connected Skip If ${USB-PD_connected} USB-PD connected - CPU Not Stuck On Initial Frequency (Windows) + CPU Runs On Expected Frequency (Linux) ${ENV_ID_FEDORA} + +CPF008.202 CPU runs on expected frequency (Fedora) (USB-PD) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency. + Skip If not ${CPU_FREQUENCY_MEASURE} CPF008.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF008.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If ${AC_CONNECTED} AC connected + Skip If not ${USB-PD_connected} USB-PD not connected + CPU Runs On Expected Frequency (Linux) ${ENV_ID_FEDORA} + +CPF009.202 CPU with load runs on expected frequency (Fedora) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency after stress test. + Skip If not ${CPU_FREQUENCY_MEASURE} CPF009.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF009.202 not supported + Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop + CPU With Load Runs On Expected Frequency (Linux) ${ENV_ID_FEDORA} + +CPF010.202 CPU with load runs on expected frequency (Fedora) (battery) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency after stress test. + Skip If not ${CPU_FREQUENCY_MEASURE} CPF010.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF010.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} battery not present + Skip If ${AC_CONNECTED} AC connected + Skip If ${USB-PD_connected} USB-PD connected + Skip If Battery Level Below 30 Percent + CPU With Load Runs On Expected Frequency (Linux) ${ENV_ID_FEDORA} + +CPF011.202 CPU with load runs on expected frequency (Fedora) (AC) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency after stress test. + Skip If not ${CPU_FREQUENCY_MEASURE} CPF011.202 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF011.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF011.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${AC_CONNECTED} AC not connected + Skip If ${USB-PD_connected} USB-PD connected + CPU With Load Runs On Expected Frequency (Linux) ${ENV_ID_FEDORA} + +CPF012.202 CPU with load runs on expected frequency (Fedora) (USB-PD) + [Documentation] This test aims to verify whether the mounted CPU is + ... running on expected frequency after stress test. + Skip If not ${CPU_FREQUENCY_MEASURE} CPF012.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPF012.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If ${AC_CONNECTED} AC connected + Skip If not ${USB-PD_connected} USB-PD not connected + CPU With Load Runs On Expected Frequency (Linux) ${ENV_ID_FEDORA} + +CPF001.003 CPU not stuck on initial frequency (Heads+Debian) + [Documentation] This test aims to verify whether the mounted CPU does not + ... stuck on the initial frequency after booting into the OS. + Skip If not ${TESTS_IN_DEBIAN_SUPPORT} CPF001.003 not supported + Skip If not ${HEADS_PAYLOAD_SUPPORT} CPF001.003 not supported + Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop + CPU Not Stuck On Initial Frequency (Heads+Debian) + +CPF001.006 CPU not stuck on initial frequency (Heads+Debian) (battery) + [Documentation] This test aims to verify whether the mounted CPU does not + ... stuck on the initial frequency after booting into the OS. + Skip If not ${CPU_FREQUENCY_MEASURE} CPF001.006 not supported + Skip If not ${TESTS_IN_DEBIAN_SUPPORT} CPF001.006 not supported + Skip If not ${HEADS_PAYLOAD_SUPPORT} CPF001.006 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} battery not present + Skip If ${AC_CONNECTED} AC connected + Skip If ${USB-PD_connected} USB-PD connected + CPU Not Stuck On Initial Frequency (Heads+Debian) CPF001.009 CPU not stuck on initial frequency (Heads+Debian) (AC) [Documentation] This test aims to verify whether the mounted CPU does not @@ -115,188 +324,140 @@ CPF001.009 CPU not stuck on initial frequency (Heads+Debian) (AC) Skip If ${USB-PD_connected} USB-PD connected CPU Not Stuck On Initial Frequency (Heads+Debian) -CPF001.010 CPU not stuck on initial frequency (Ubuntu) (USB-PD) +CPF001.012 CPU not stuck on initial frequency (Heads+Debian) (USB-PD) [Documentation] This test aims to verify whether the mounted CPU does not ... stuck on the initial frequency after booting into the OS. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF001.010 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF001.010 not supported + Skip If not ${CPU_FREQUENCY_MEASURE} CPF001.012 not supported + Skip If not ${TESTS_IN_DEBIAN_SUPPORT} CPF001.012 not supported + Skip If not ${HEADS_PAYLOAD_SUPPORT} CPF001.012 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If ${AC_CONNECTED} AC connected Skip If not ${USB-PD_connected} USB-PD not connected - CPU Not Stuck On Initial Frequency (Ubuntu) + CPU Not Stuck On Initial Frequency (Heads+Debian) -CPF001.011 CPU not stuck on initial frequency (Windows) (USB-PD) +CPF001.301 CPU not stuck on initial frequency (Windows) [Documentation] This test aims to verify whether the mounted CPU does not ... stuck on the initial frequency after booting into the OS. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF001.011 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF001.011 not supported + ... Previous IDs: CPF001.002 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF001.301 not supported + Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop` + CPU Not Stuck On Initial Frequency (Windows) + +CPF002.301 CPU not stuck on initial frequency (Windows) (battery) + [Documentation] This test aims to verify whether the mounted CPU does not + ... stuck on the initial frequency after booting into the OS. + ... Previous IDs: CPF001.005 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF002.301 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} battery not present Skip If ${AC_CONNECTED} AC connected - Skip If not ${USB-PD_connected} USB-PD not connected + Skip If ${USB-PD_connected} USB-PD connected CPU Not Stuck On Initial Frequency (Windows) -CPF001.012 CPU not stuck on initial frequency (Heads+Debian) (USB-PD) +CPF003.301 CPU not stuck on initial frequency (Windows) (AC) [Documentation] This test aims to verify whether the mounted CPU does not ... stuck on the initial frequency after booting into the OS. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF001.012 not supported - Skip If not ${TESTS_IN_DEBIAN_SUPPORT} CPF001.012 not supported - Skip If not ${HEADS_PAYLOAD_SUPPORT} CPF001.012 not supported + ... Previous IDs: CPF001.008 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF003.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF003.301 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${AC_CONNECTED} AC not connected + Skip If ${USB-PD_connected} USB-PD connected + CPU Not Stuck On Initial Frequency (Windows) + +CPF004.301 CPU not stuck on initial frequency (Windows) (USB-PD) + [Documentation] This test aims to verify whether the mounted CPU does not + ... stuck on the initial frequency after booting into the OS. + ... Previous IDs: CPF001.011 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF004.301 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If ${AC_CONNECTED} AC connected Skip If not ${USB-PD_connected} USB-PD not connected - CPU Not Stuck On Initial Frequency (Heads+Debian) - -CPF002.001 CPU runs on expected frequency (Ubuntu) - [Documentation] This test aims to verify whether the mounted CPU is - ... running on expected frequency. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF002.001 not supported - Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop - CPU Runs On Expected Frequency (Ubuntu) + CPU Not Stuck On Initial Frequency (Windows) -CPF002.002 CPU runs on expected frequency (Windows) +CPF005.301 CPU runs on expected frequency (Windows) [Documentation] This test aims to verify whether the mounted CPU is ... running on expected frequency. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.002 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF002.002 not supported + ... Previous IDs: CPF002.002 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF005.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF005.301 not supported Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop CPU Runs On Expected Frequency (Windows) -CPF002.003 CPU runs on expected frequency (Ubuntu) (battery) - [Documentation] This test aims to verify whether the mounted CPU is - ... running on expected frequency. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.003 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF002.003 not supported - Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop - Skip If not ${BATTERY_PRESENT} battery not present - Skip If ${AC_CONNECTED} AC connected - Skip If ${USB-PD_connected} USB-PD connected - CPU Runs On Expected Frequency (Ubuntu) - -CPF002.004 CPU runs on expected frequency (Windows) (battery) +CPF006.301 CPU runs on expected frequency (Windows) (battery) [Documentation] This test aims to verify whether the mounted CPU is ... running on expected frequency. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.004 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF002.004 not supported + ... Previous IDs: CPF002.004 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF006.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF006.301 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${BATTERY_PRESENT} battery not present Skip If ${AC_CONNECTED} AC connected Skip If ${USB-PD_connected} USB-PD connected CPU Runs On Expected Frequency (Windows) -CPF002.005 CPU runs on expected frequency (Ubuntu) (AC) +CPF007.301 CPU runs on expected frequency (Windows) (AC) [Documentation] This test aims to verify whether the mounted CPU is ... running on expected frequency. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.005 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF002.005 not supported - Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop - Skip If not ${AC_CONNECTED} AC not connected - Skip If ${USB-PD_connected} USB-PD connected - CPU Runs On Expected Frequency (Ubuntu) - -CPF002.006 CPU runs on expected frequency (Windows) (AC) - [Documentation] This test aims to verify whether the mounted CPU is - ... running on expected frequency. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.006 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF002.006 not supported + ... Previous IDs: CPF002.006 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF007.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF007.301 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${AC_CONNECTED} AC not connected Skip If ${USB-PD_connected} USB-PD connected CPU Runs On Expected Frequency (Windows) -CPF002.007 CPU runs on expected frequency (Ubuntu) (USB-PD) +CPF008.301 CPU runs on expected frequency (Windows) (USB-PD) [Documentation] This test aims to verify whether the mounted CPU is ... running on expected frequency. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.007 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF002.007 not supported - Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop - Skip If ${AC_CONNECTED} AC connected - Skip If not ${USB-PD_connected} USB-PD not connected - CPU Runs On Expected Frequency (Ubuntu) - -CPF002.008 CPU runs on expected frequency (Windows) (USB-PD) - [Documentation] This test aims to verify whether the mounted CPU is - ... running on expected frequency. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF002.008 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF002.008 not supported + ... Previous IDs: CPF002.008 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF008.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF008.301 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If ${AC_CONNECTED} AC connected Skip If not ${USB-PD_connected} USB-PD not connected CPU Runs On Expected Frequency (Windows) -CPF004.001 CPU with load runs on expected frequency (Ubuntu) +CPF009.301 CPU with load runs on expected frequency (Windows) [Documentation] This test aims to verify whether the mounted CPU is ... running on expected frequency after stress test. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF004.001 not supported - Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop - CPU With Load Runs On Expected Frequency (Ubuntu) - -CPF004.002 CPU with load runs on expected frequency (Windows) - [Documentation] This test aims to verify whether the mounted CPU is - ... running on expected frequency after stress test. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.002 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF004.002 not supported + ... Previous IDs: CPF004.002 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF009.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF009.301 not supported Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop CPU With Load Runs On Expected Frequency (Windows) -CPF004.003 CPU with load runs on expected frequency (Ubuntu) (battery) - [Documentation] This test aims to verify whether the mounted CPU is - ... running on expected frequency after stress test. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.003 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF004.003 not supported - Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop - Skip If not ${BATTERY_PRESENT} battery not present - Skip If ${AC_CONNECTED} AC connected - Skip If ${USB-PD_connected} USB-PD connected - CPU With Load Runs On Expected Frequency (Ubuntu) - -CPF004.004 CPU with load runs on expected frequency (Windows) (battery) +CPF010.301 CPU with load runs on expected frequency (Windows) (battery) [Documentation] This test aims to verify whether the mounted CPU is ... running on expected frequency after stress test. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.004 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF004.004 not supported + ... Previous IDs: CPF004.004 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF010.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF010.301 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${BATTERY_PRESENT} battery not present Skip If ${AC_CONNECTED} AC connected Skip If ${USB-PD_connected} USB-PD connected CPU With Load Runs On Expected Frequency (Windows) -CPF004.005 CPU with load runs on expected frequency (Ubuntu) (AC) +CPF011.301 CPU with load runs on expected frequency (Windows) (AC) [Documentation] This test aims to verify whether the mounted CPU is ... running on expected frequency after stress test. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.005 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF004.005 not supported - Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop - Skip If not ${AC_CONNECTED} AC not connected - Skip If ${USB-PD_connected} USB-PD connected - CPU With Load Runs On Expected Frequency (Ubuntu) - -CPF004.006 CPU with load runs on expected frequency (Windows) (AC) - [Documentation] This test aims to verify whether the mounted CPU is - ... running on expected frequency after stress test. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.006 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF004.006 not supported + ... Previous IDs: CPF004.006 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF011.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF011.301 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${AC_CONNECTED} AC not connected Skip If ${USB-PD_connected} USB-PD connected CPU With Load Runs On Expected Frequency (Windows) -CPF004.007 CPU with load runs on expected frequency (Ubuntu) (USB-PD) - [Documentation] This test aims to verify whether the mounted CPU is - ... running on expected frequency after stress test. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.007 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPF004.007 not supported - Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop - Skip If ${AC_CONNECTED} AC connected - Skip If not ${USB-PD_connected} USB-PD not connected - CPU With Load Runs On Expected Frequency (Ubuntu) - -CPF004.008 CPU with load runs on expected frequency (Windows) (USB-PD) +CPF012.301 CPU with load runs on expected frequency (Windows) (USB-PD) [Documentation] This test aims to verify whether the mounted CPU is ... running on expected frequency after stress test. - Skip If not ${CPU_FREQUENCY_MEASURE} CPF004.008 not supported - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF004.008 not supported + ... Previous IDs: CPF004.008 + Skip If not ${CPU_FREQUENCY_MEASURE} CPF012.301 not supported + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} CPF012.301 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If ${AC_CONNECTED} AC connected Skip If not ${USB-PD_connected} USB-PD not connected @@ -304,21 +465,25 @@ CPF004.008 CPU with load runs on expected frequency (Windows) (USB-PD) *** Keywords *** -CPU Not Stuck On Initial Frequency (Ubuntu) +CPU Not Stuck On Initial Frequency (Linux) + [Tags] robot:private + [Arguments] ${os_id} Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User Sleep 10s - Check If CPU Not Stuck On Initial Frequency In Ubuntu + Check If CPU Not Stuck On Initial Frequency In Linux CPU Not Stuck On Initial Frequency (Windows) + [Tags] robot:private Power On Login To Windows Sleep 10s Check If CPU Not Stuck On Initial Frequency In Windows CPU Not Stuck On Initial Frequency (Heads+Debian) + [Tags] robot:private Power On Detect Heads Main Menu # Proceed with default boot @@ -327,14 +492,16 @@ CPU Not Stuck On Initial Frequency (Heads+Debian) Write Into Terminal debian Login To Linux With Root Privileges Sleep 10s - Check If CPU Not Stuck On Initial Frequency In Ubuntu + Check If CPU Not Stuck On Initial Frequency In Linux -CPU Runs On Expected Frequency (Ubuntu) +CPU Runs On Expected Frequency (Linux) + [Tags] robot:private + [Arguments] ${os_id} ${cpu_max_frequency_tol}= Evaluate ${CPU_MAX_FREQUENCY} * 1.125 ${cpu_min_frequency_tol}= Evaluate ${CPU_MIN_FREQUENCY} * 0.875 Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${timer}= Convert To Integer 0 @@ -353,6 +520,7 @@ CPU Runs On Expected Frequency (Ubuntu) END CPU Runs On Expected Frequency (Windows) + [Tags] robot:private Power On Login To Windows ${timer}= Convert To Integer 0 @@ -364,12 +532,14 @@ CPU Runs On Expected Frequency (Windows) ${timer}= Evaluate ${timer} + ${FREQUENCY_TEST_MEASURE_INTERVAL} END -CPU With Load Runs On Expected Frequency (Ubuntu) +CPU With Load Runs On Expected Frequency (Linux) + [Tags] robot:private + [Arguments] ${os_id} ${cpu_max_frequency_tol}= Evaluate ${CPU_MAX_FREQUENCY} * 1.125 ${cpu_min_frequency_tol}= Evaluate ${CPU_MIN_FREQUENCY} * 0.875 Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User Stress Test ${FREQUENCY_TEST_DURATION}m @@ -389,6 +559,7 @@ CPU With Load Runs On Expected Frequency (Ubuntu) END CPU With Load Runs On Expected Frequency (Windows) + [Tags] robot:private Power On Login To Windows SSHLibrary.Put File stress-test-windows.ps1 /C:/Users/user diff --git a/dasharo-performance/cpu-performance.robot b/dasharo-performance/cpu-performance.robot new file mode 100644 index 0000000000..43decaa7ac --- /dev/null +++ b/dasharo-performance/cpu-performance.robot @@ -0,0 +1,219 @@ +*** Settings *** +Library Telnet timeout=20 seconds connection_timeout=120 seconds +Library SSHLibrary timeout=90 seconds +Resource ../lib/performance/common.robot +Resource ../lib/performance/cpu.robot + +Suite Setup CPU Performance Suite Setup +Suite Teardown Log Out And Close Connection + + +*** Variables *** +${DEVIATION_UP}= 1.2 # acceptable deviation +/-20% +${DEVIATION_DOWN}= 0.8 + + +*** Test Cases *** +CPP001.201 Single Threaded CPU Benchmark (Ubuntu) (AC) + [Documentation] Test single threaded performance using phoronix + ... test suite, for Ubuntu, while connected to power supply. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPP001.001 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${AC_CONNECTED} The platform is not connected to AC + Skip If Battery Level Below 30 Percent + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + ${render_test_passed}= Run C-Ray Single-thread Render + ${coremark_test_passed}= Run Coremark Single-thread + Should Be True ${render_test_passed} + Should Be True ${coremark_test_passed} + +CPP001.202 Single Threaded CPU Benchmark (Ubuntu) (Battery) + [Documentation] Test single threaded performance using phoronix + ... test suite, for Ubuntu, while powered by inbuilt battery. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPP001.002 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} Battery is not present + Skip If ${AC_CONNECTED} The platform is not connected to AC + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + ${render_test_passed}= Run C-Ray Single-thread Render + ${coremark_test_passed}= Run Coremark Single-thread + Should Be True ${render_test_passed} + Should Be True ${coremark_test_passed} + +CPP002.201 Multi Threaded CPU Benchmark (Ubuntu) (AC) + [Documentation] Test multi threaded performance using phoronix + ... test suite, for Ubuntu, while connected to power supply. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPP001.002 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${AC_CONNECTED} The platform is not connected to AC + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + ${c_7zip_test_passed}= 7-Zip Multi-thread Compression And Decompression Average + Should Be True ${c_7zip_test_passed} + +CPP002.202 Multi Threaded CPU Benchmark (Ubuntu) (Battery) + [Documentation] Test multi threaded performance using phoronix + ... test suite, for Ubuntu, while powered by inbuilt battery. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPP001.002 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} Battery not present + Skip If ${AC_CONNECTED} AC connected + Skip If Battery Level Below 30 Percent + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + ${c_7zip_test_passed}= 7-Zip Multi-thread Compression And Decompression Average + Should Be True ${c_7zip_test_passed} + + +*** Keywords *** +CPU Performance Suite Setup + [Tags] robot:private + Prepare Test Suite + Skip If not ${CPU_PERFORMANCE_TESTS_SUPPORT} + Check Power Supply + IF ${TESTS_IN_UBUNTU_SUPPORT} + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Detect Or Install Phoronix Test Suite On Ubuntu + Execute Linux Command phoronix-test-suite install c-ray 300 + Execute Linux Command phoronix-test-suite install compress-7zip 300 + Execute Linux Command phoronix-test-suite install coremark 300 + END + Log To Console The result of the benchmarks depends on the processor and + ... RAM in the device. Please make sure that the hardware under test is + ... compatible with the one given in the reference values. + + # Date and hour of the start of the test the same for all the tests + ${get_date}= Get Current Date result_format=%d%m%Y%H%M%S + Set Global Variable ${CURRENT_DATE} ${get_date} + ${laptop_platform}= Check The Platform Is A Laptop + ${1080p}= Catenate Resolution: 1080p - Rays Per Pixel: 16= ${CRAY_1080_P_RENDER} + ${4k}= Catenate Resolution: 4K - Rays Per Pixel: 16= ${CRAY_4_K_RENDER} + ${5k}= Catenate Resolution: 5K - Rays Per Pixel: 16= ${CRAY_5_K_RENDER} + @{sginle_thread_res_tests}= Create List ${1080p} ${4k} ${5k} + Set Global Variable @{SGINLE_THREAD_RES_TESTS} + ${comp}= Catenate Test: Compression Rating=${ZIP_MULTI_COMPRESSION} + ${decomp}= Catenate Test: Decompression Rating=${ZIP_MULTI_DECOMPRESSION} + @{multi_thread_tests}= Create List ${comp} ${decomp} + Set Global Variable @{MULTI_THREAD_TESTS} + +Run C-Ray Single-thread Render + [Documentation] Run C-Ray benchmark with all resolutions (1080p, 4K, 5K) on single thread + [Tags] robot:private + Log To Console \n # new line for readability + ${test_name_to_path}= Set Variable cpuperformance + ${test_name_to_path}= Catenate SEPARATOR= ${test_name_to_path} ${CURRENT_DATE} + + ${result}= Execute Command In Terminal + ... echo 4 | phoronix-test-suite batch-run pts/c-ray TEST_RESULTS_NAME=${test_name_to_path} + ... timeout=18000 + Should Not Contain ${result} The batch mode must first be configured. + + ${test_passed}= Validate Multiple Results + ... ${PTS_RESULTS_DIR_LINUX_ROOT} + ... ${test_name_to_path} + ... @{SGINLE_THREAD_RES_TESTS} + RETURN ${test_passed} + +Run Coremark Single-thread + [Documentation] Run Coremark benchmark on single thread + [Tags] robot:private + ${test_name_to_path}= Set Variable cpuperformance + ${test_name_to_path}= Catenate SEPARATOR= ${test_name_to_path} ${CURRENT_DATE} + + ${result}= Execute Command In Terminal + ... phoronix-test-suite batch-run pts/coremark TEST_RESULTS_NAME=${test_name_to_path} + ... timeout=1800 + Should Not Contain ${result} The batch mode must first be configured. + + ${test_result_values}= Read The Results + ... ${PTS_RESULTS_DIR_LINUX_ROOT} + ... ${test_name_to_path} + ... CoreMark Size 666 - Iterations Per Second + Log To Console \nResults of the CoreMark Size 666 - Iterations Per Second:\n + ${test_passed}= Validate The Results ${test_result_values} ${COREMARK_SINGLE} + RETURN ${test_passed} + +7-Zip Multi-thread Compression And Decompression Average + [Documentation] Run 7-Zip Multi-thread Compression and Decompression benchmark on multiple threads + [Tags] robot:private + Log To Console \n # new line for readability + ${test_name_to_path}= Set Variable cpuperformance + ${test_name_to_path}= Catenate SEPARATOR= ${test_name_to_path} ${CURRENT_DATE} + + ${result}= Execute Command In Terminal + ... phoronix-test-suite batch-run pts/compress-7zip TEST_RESULTS_NAME=${test_name_to_path} + ... timeout=1800 + Should Not Contain ${result} The batch mode must first be configured. + + ${test_passed}= Validate Multiple Results + ... ${PTS_RESULTS_DIR_LINUX_ROOT} + ... ${test_name_to_path} + ... @{MULTI_THREAD_TESTS} + RETURN ${test_passed} + +Read The Results + [Tags] robot:private + [Arguments] ${perf_results_path_ubuntu} ${test_name_to_path} ${test_description} + ${awk_commmand}= Catenate + ... awk -F '[<>]' '/${test_description}<\\/Description>/ + ... {found=1} found && // + ... {print $3; found=0}' ${perf_results_path_ubuntu}/${test_name_to_path}/composite.xml + ${test_result_values}= Execute Command In Terminal ${awk_commmand} + RETURN ${test_result_values} + +Validate The Results + [Tags] robot:private + [Arguments] ${nums} ${combined_ref_val} + ${ref_val}= Convert To Number ${combined_ref_val} + ${min}= Evaluate ${ref_val} * ${DEVIATION_DOWN} + ${max}= Evaluate ${ref_val} * ${DEVIATION_UP} + ${num_list}= Split String ${nums} separator=: + ${return_val}= Set Variable ${True} + + ${qtty}= Get Length ${num_list} + FOR ${i} IN RANGE ${qtty} + ${num}= Convert To Number ${num_list}[${i}] + ${i_plus_one}= Evaluate ${i} + 1 + IF ${num} < ${min} or ${num} > ${max} + Log To Console ${i_plus_one}. ${num} is out of acceptable range of (${min} - ${max}). + ${return_val}= Set Variable ${False} + ELSE + Log To Console ${i_plus_one}. ${num} + END + END + RETURN ${return_val} + +Validate Multiple Results + [Tags] robot:private + [Arguments] ${perf_results_path_ubuntu} ${test_name_to_path} @{reference_data} + Should Not Be Empty ${reference_data} + ${test_passed}= Set Variable ${True} + FOR ${compare_values} IN @{reference_data} + ${description_string} ${expected_value}= Split String ${compare_values} = + Log To Console \nResults of the ${description_string}: + + ${test_result_values}= Read The Results + ... ${perf_results_path_ubuntu} + ... ${test_name_to_path} + ... ${description_string} + + ${result}= Validate The Results ${test_result_values} ${expected_value} + IF ${result} == ${False} + ${test_passed}= Set Variable ${False} + Log To Console Test Failed for the: ${description_string}. + END + END + RETURN ${test_passed} diff --git a/dasharo-performance/cpu-temperature.robot b/dasharo-performance/cpu-temperature.robot index d1811e13ca..7c86af6e75 100644 --- a/dasharo-performance/cpu-temperature.robot +++ b/dasharo-performance/cpu-temperature.robot @@ -22,104 +22,281 @@ Suite Setup Run Keywords ... Skip If not ${CPU_TEMPERATURE_MEASURE} CPU temperature measurement tests not supported ... AND ... Check Power Supply +... AND +... Prepare Sensors Suite Teardown Run Keyword ... Log Out And Close Connection *** Test Cases *** -CPT001.001 CPU temperature without load (Ubuntu) +CPT001.201 CPU temperature without load (Ubuntu) [Documentation] This test aims to verify whether the temperature of CPU ... cores after system booting is not higher than the maximum ... allowed temperature. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT001.001 not supported + ... Previous IDs: CPT001.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPT001.201 not supported Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop CPU Temperature Without Load (Ubuntu) -CPT001.002 CPU temperature without load (Ubuntu) (battery) +CPT002.201 CPU temperature without load (Ubuntu) (battery) [Documentation] This test aims to verify whether the temperature of CPU ... cores after system booting is not higher than the maximum ... allowed temperature. - Skip If not ${CPU_TEMPERATURE_MEASURE} CPT001.002 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT001.002 not supported + ... Previous IDs: CPT001.002 + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT002.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPT002.201 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${BATTERY_PRESENT} battery not present Skip If ${AC_CONNECTED} AC connected Skip If ${USB-PD_connected} USB-PD connected - CPU Temperature Without Load (Ubuntu) + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Skip If Battery Level Below 30 Percent + CPU Temperature Without Load + Exit From Root User -CPT001.003 CPU temperature without load (Ubuntu) (AC) +CPT003.201 CPU temperature without load (Ubuntu) (AC) [Documentation] This test aims to verify whether the temperature of CPU ... cores after system booting is not higher than the maximum ... allowed temperature. - Skip If not ${CPU_TEMPERATURE_MEASURE} CPT001.003 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT001.003 not supported + ... Previous IDs: CPT001.003 + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT003.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPT003.201 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${AC_CONNECTED} AC not connected Skip If ${USB-PD_connected} USB-PD connected - CPU Temperature Without Load (Ubuntu) + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + CPU Temperature Without Load + Exit From Root User -CPT001.004 CPU temperature without load (Ubuntu) (USB-PD) +CPT004.201 CPU temperature without load (Ubuntu) (USB-PD) [Documentation] This test aims to verify whether the temperature of CPU ... cores after system booting is not higher than the maximum ... allowed temperature. - Skip If not ${CPU_TEMPERATURE_MEASURE} CPT001.004 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT001.004 not supported + ... Previous IDs: CPT001.004 + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT004.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT004.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPT004.201 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If ${AC_CONNECTED} AC connected Skip If not ${USB-PD_connected} USB-PD not connected - CPU Temperature Without Load (Ubuntu) + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + CPU Temperature Without Load + Exit From Root User -CPT002.001 CPU temperature after stress test (Ubuntu) +CPT005.201 CPU temperature after stress test (Ubuntu) [Documentation] This test aims to verify whether the temperature of the ... CPU cores is not higher than the maximum allowed ... temperature during stress test. - Skip If not ${CPU_TEMPERATURE_MEASURE} CPT002.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT002.001 not supported + ... Previous IDs: CPT002.001 + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT005.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT005.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPT005.201 not supported Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop - CPU Temperature After Stress Test (Ubuntu) + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + CPU Temperature After Stress Test + Exit From Root User -CPT002.002 CPU temperature after stress test (Ubuntu) (battery) +CPT006.002 CPU temperature after stress test (Ubuntu) (battery) [Documentation] This test aims to verify whether the temperature of the ... CPU cores is not higher than the maximum allowed ... temperature during stress test. - Skip If not ${CPU_TEMPERATURE_MEASURE} CPT002.002 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT002.002 not supported + ... Previous IDs: CPT002.002 + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT006.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT006.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPT006.201 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${BATTERY_PRESENT} battery not present Skip If ${AC_CONNECTED} AC connected Skip If ${USB-PD_connected} USB-PD connected - CPU Temperature After Stress Test (Ubuntu) + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Skip If Battery Level Below 30 Percent + CPU Temperature After Stress Test + Exit From Root User -CPT002.003 CPU temperature after stress test (Ubuntu) (AC) +CPT007.201 CPU temperature after stress test (Ubuntu) (AC) [Documentation] This test aims to verify whether the temperature of the ... CPU cores is not higher than the maximum allowed ... temperature during stress test. - Skip If not ${CPU_TEMPERATURE_MEASURE} CPT002.003 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT002.003 not supported + ... Previous IDs: CPT002.003 + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT007.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT007.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPT007.201 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If not ${AC_CONNECTED} AC not connected Skip If ${USB-PD_connected} USB-PD connected - CPU Temperature After Stress Test (Ubuntu) + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + CPU Temperature After Stress Test + Exit From Root User -CPT002.004 CPU temperature after stress test (Ubuntu) (USB-PD) +CPT008.201 CPU temperature after stress test (Ubuntu) (USB-PD) [Documentation] This test aims to verify whether the temperature of the ... CPU cores is not higher than the maximum allowed ... temperature during stress test. - Skip If not ${CPU_TEMPERATURE_MEASURE} CPT002.004 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT002.004 not supported + ... Previous IDs: CPT002.004 + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT008.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CPT008.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CPT008.201 not supported Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop Skip If ${AC_CONNECTED} AC connected Skip If not ${USB-PD_connected} USB-PD not connected - CPU Temperature After Stress Test (Ubuntu) + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + CPU Temperature After Stress Test + Exit From Root User +CPT001.202 CPU temperature without load (Fedora) + [Documentation] This test aims to verify whether the temperature of CPU + ... cores after system booting is not higher than the maximum + ... allowed temperature. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPT001.202 not supported + Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + CPU Temperature Without Load + Exit From Root User -*** Keywords *** -CPU Temperature Without Load (Ubuntu) +CPT002.202 CPU temperature without load (Fedora) (battery) + [Documentation] This test aims to verify whether the temperature of CPU + ... cores after system booting is not higher than the maximum + ... allowed temperature. + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT002.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPT002.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} battery not present + Skip If ${AC_CONNECTED} AC connected + Skip If ${USB-PD_connected} USB-PD connected Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_FEDORA} Login To Linux Switch To Root User - Detect Or Install Package lm-sensors + Skip If Battery Level Below 30 Percent + CPU Temperature Without Load + Exit From Root User + +CPT003.202 CPU temperature without load (Fedora) (AC) + [Documentation] This test aims to verify whether the temperature of CPU + ... cores after system booting is not higher than the maximum + ... allowed temperature. + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT003.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPT003.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${AC_CONNECTED} AC not connected + Skip If ${USB-PD_connected} USB-PD connected + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + CPU Temperature Without Load + Exit From Root User + +CPT004.202 CPU temperature without load (Fedora) (USB-PD) + [Documentation] This test aims to verify whether the temperature of CPU + ... cores after system booting is not higher than the maximum + ... allowed temperature. + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT004.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPT004.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If ${AC_CONNECTED} AC connected + Skip If not ${USB-PD_connected} USB-PD not connected + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + CPU Temperature Without Load + Exit From Root User + +CPT005.202 CPU temperature after stress test (Fedora) + [Documentation] This test aims to verify whether the temperature of the + ... CPU cores is not higher than the maximum allowed + ... temperature during stress test. + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT005.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPT005.202 not supported + Skip If ${LAPTOP_PLATFORM} The Platform is a Laptop + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + CPU Temperature After Stress Test + Exit From Root User + +CPT006.202 CPU temperature after stress test (Fedora) (battery) + [Documentation] This test aims to verify whether the temperature of the + ... CPU cores is not higher than the maximum allowed + ... temperature during stress test. + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT006.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPT006.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} battery not present + Skip If ${AC_CONNECTED} AC connected + Skip If ${USB-PD_connected} USB-PD connected + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Skip If Battery Level Below 30 Percent + CPU Temperature After Stress Test + Exit From Root User + +CPT007.202 CPU temperature after stress test (Fedora) (AC) + [Documentation] This test aims to verify whether the temperature of the + ... CPU cores is not higher than the maximum allowed + ... temperature during stress test. + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT007.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPT007.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${AC_CONNECTED} AC not connected + Skip If ${USB-PD_connected} USB-PD connected + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + CPU Temperature After Stress Test + Exit From Root User + +CPT008.202 CPU temperature after stress test (Fedora) (USB-PD) + [Documentation] This test aims to verify whether the temperature of the + ... CPU cores is not higher than the maximum allowed + ... temperature during stress test. + Skip If not ${CPU_TEMPERATURE_MEASURE} CPT008.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CPT008.202 not supported + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If ${AC_CONNECTED} AC connected + Skip If not ${USB-PD_connected} USB-PD not connected + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + CPU Temperature After Stress Test + Exit From Root User + + +*** Keywords *** +CPU Temperature Without Load Execute Command In Terminal sensors-detect --auto ${timer}= Convert To Integer 0 @{temperature_list}= Create List @@ -131,7 +308,7 @@ CPU Temperature Without Load (Ubuntu) ${minute_counter}= Set Variable 0 Log To Console \nStarting Test... FOR ${i} IN RANGE ${total_intervals} - ${temperature}= Get CPU Temperature CURRENT + ${temperature}= Get CPU Temperature Append To List ${temperature_list} ${temperature} ${max_temperature}= Evaluate max(${max_temperature}, ${temperature}) ${min_temperature}= Evaluate min(${min_temperature}, ${temperature}) @@ -156,12 +333,7 @@ CPU Temperature Without Load (Ubuntu) Log To Console Test threshold of CPU temp: ${MAX_CPU_TEMP}°C Should Be True ${average} < ${MAX_CPU_TEMP} -CPU Temperature After Stress Test (Ubuntu) - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Detect Or Install Package lm-sensors +CPU Temperature After Stress Test Execute Command In Terminal sensors-detect --auto Stress Test ${TEMPERATURE_TEST_DURATION}s ${timer}= Convert To Integer 0 @@ -174,7 +346,7 @@ CPU Temperature After Stress Test (Ubuntu) ${minute_counter}= Set Variable 0 Log To Console \nStarting Test... FOR ${i} IN RANGE ${total_intervals} - ${temperature}= Get CPU Temperature CURRENT + ${temperature}= Get CPU Temperature Append To List ${temperature_list} ${temperature} ${max_temperature}= Evaluate max(${max_temperature}, ${temperature}) ${min_temperature}= Evaluate min(${min_temperature}, ${temperature}) diff --git a/dasharo-performance/custom-fan-curve.robot b/dasharo-performance/custom-fan-curve.robot index 501b02afbc..51aad69b8a 100644 --- a/dasharo-performance/custom-fan-curve.robot +++ b/dasharo-performance/custom-fan-curve.robot @@ -1,24 +1,32 @@ *** Settings *** Library Collections +Library DateTime Library OperatingSystem Library Process Library String Library Telnet timeout=20 seconds connection_timeout=120 seconds Library SSHLibrary timeout=90 seconds Library RequestsLibrary +Library CSVLibrary +Library ../lib/fan_curve_tests/fan_curve_tests.py # TODO: maybe have a single file to include if we need to include the same # stuff in all test cases Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Variables ../platform-configs/fan-curve-config.yaml +Resource ../lib/sensors/sensors.robot +Resource ../lib/performance/cpu.robot # TODO: # - document which setup/teardown keywords to use and what are they doing # - go threough them and make sure they are doing what the name suggest (not # exactly the case right now) -Suite Setup Run Keyword +Suite Setup Run Keywords ... Prepare Test Suite +... AND +... Skip If '''${CUSTOM_FAN_CURVE_FILE}''' == '''${TBD}''' CFC not supported - CUSTOM_FAN_CURVE_FILE not defined +... AND +... Import Variables ${CURDIR}/../platform-configs/${CUSTOM_FAN_CURVE_FILE} Suite Teardown Run Keyword ... Log Out And Close Connection @@ -30,23 +38,13 @@ CFC001.001 Custom fan curve silent profile measure (Ubuntu) ... the defined values. Skip If not ${CUSTOM_FAN_CURVE_SILENT_MODE_SUPPORT} CFC001.001 not supported Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CFC001.001 not supported + + Set UEFI Option FanCurveOption Silent Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Prepare Lm-sensors - Stress Test ${CUSTOM_FAN_CURVE_TEST_DURATION}m - ${timer}= Convert To Integer 0 - FOR ${i} IN RANGE (${CUSTOM_FAN_CURVE_TEST_DURATION} / ${CUSTOM_FAN_CURVE_MEASURE_INTERVAL}) - Log To Console \n ---------------------------------------------------------------- - Log To Console ${timer} min. - ${temperature}= Get Temperature CURRENT - ${pwm}= Get PWM Value - ${expected_speed_percentage}= Calculate Speed Percentage Based On Temperature In Silent Mode - ... ${temperature} - Calculate Smoothing ${pwm} ${expected_speed_percentage} - Sleep ${CUSTOM_FAN_CURVE_MEASURE_INTERVAL}m - ${timer}= Evaluate ${timer} + ${CUSTOM_FAN_CURVE_MEASURE_INTERVAL} - END + Perform Custom Fan Curve Test silent CFC002.001 Custom fan curve performance profile measure (Ubuntu) [Documentation] Check whether the fan curve is configured correctly in @@ -54,65 +52,175 @@ CFC002.001 Custom fan curve performance profile measure (Ubuntu) ... the defined values. Skip If not ${CUSTOM_FAN_CURVE_PERFORMANCE_MODE_SUPPORT} CFC002.001 not supported Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CFC002.001 not supported + + Set UEFI Option FanCurveOption Performance Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Prepare Lm-sensors - Stress Test ${CUSTOM_FAN_CURVE_TEST_DURATION}m - ${timer}= Convert To Integer 0 - FOR ${i} IN RANGE (${CUSTOM_FAN_CURVE_TEST_DURATION} / ${CUSTOM_FAN_CURVE_MEASURE_INTERVAL}) - Log To Console \n ---------------------------------------------------------------- - Log To Console ${timer} min. - ${temperature}= Get Temperature CURRENT - ${pwm}= Get PWM Value - ${expected_speed_percentage}= Calculate Speed Percentage Based On Temperature In Performance Mode - ... ${temperature} - Calculate Smoothing ${pwm} ${expected_speed_percentage} - Sleep ${CUSTOM_FAN_CURVE_MEASURE_INTERVAL}m - ${timer}= Evaluate ${timer} + ${CUSTOM_FAN_CURVE_MEASURE_INTERVAL} - END + Perform Custom Fan Curve Test performance + +CFC003.001 Custom fan curve OFF profile measure (Ubuntu) + [Documentation] Check whether the fan curve is configured correctly in + ... silent profile and the fan spins up and down according to + ... the defined values. + Skip If not ${CUSTOM_FAN_CURVE_OFF_MODE_SUPPORT} CFC003.001 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} CFC003.001 not supported + + Set UEFI Option FanCurveOption Fans Off + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Perform Custom Fan Curve Test off *** Keywords *** -Calculate Speed Percentage Based On Temperature - [Documentation] Calculates the expected speed percentage by config file - ... for a given temperature based on an algorithm and a - ... defined curve. +Perform Custom Fan Curve Test + [Documentation] Performs a Custom Fan Curve test for a given profile + [Arguments] ${profile} + Prepare Sensors + ${measurements}= Create List + ${stress_len}= Evaluate ${CUSTOM_FAN_CURVE_TEST_DURATION}*5 + ${cpu_count}= Execute Command In Terminal nproc + ${fan_mode}= Get Fan Measurement Unit Name + + FOR ${cpu_usage} IN RANGE 100 + Stress Test time=${stress_len}s load_percent=${cpu_usage} + Sleep 1s Let the CPU temperature stabilize + ${current_time}= Evaluate time.time() + ${start_time}= Set Variable ${current_time} + ${end_time}= Evaluate ${start_time} + ${CUSTOM_FAN_CURVE_TEST_DURATION} + + WHILE ${current_time} < ${end_time} + ${current_time}= Evaluate time.time() + ${duration}= Evaluate ${current_time} - ${start_time} + Log To Console \n${duration} s. + ${result} ${measurement}= Measure And Verify + ... ${profile} ${fan_mode} + Append To List ${measurements} ${measurement} + IF not ${result} Log To Console Invalid fan speed WARN + END + END + Stress Test Stop + Sleep ${CUSTOM_FAN_CURVE_COOLDOWN_SECONDS}s + + ${percentile_drop}= Get From Dictionary ${TEMPERATURE_CURVE_SETTINGS} percentile_drop + ${failed_count}= Count Failed Fan Measurements ${measurements} + ${filtered}= Filter Fan Measurements ${measurements} ${percentile_drop} + ${failed_after_filtering}= Count Failed Fan Measurements ${filtered} + ${image}= Save Measurements ${filtered} ${profile}_filtered + Log html=true + + IF ${failed_count} > 0 + ${total_measurements}= Get Length ${measurements} + ${percent_failed}= Evaluate ${failed_count} / ${total_measurements} + ${acceptable_invalid_percent}= Get From Dictionary + ... ${TEMPERATURE_CURVE_SETTINGS} acceptable_invalid_percent + Should Be True ${percent_failed} <= ${acceptable_invalid_percent} + ... Too many measurements were invalid (${percent_failed} > ${acceptable_invalid_percent}) + END + +Measure And Verify + [Arguments] ${profile} ${fan_mode} + ${fan_speed}= Get Fan Speed ${fan_mode} + ${cpu_temp}= Get CPU Temperature + ${range_data}= Get Fan Curve Range ${cpu_temp} ${profile} + ${result} ${expected}= Verify Fan Speeds + ... ${range_data} ${fan_speed} ${fan_mode} ${cpu_temp} + ${tolerance}= Get From Dictionary ${range_data} tolerance_${fan_mode} + ${measurement}= Create Dictionary temp=${cpu_temp} + ... speed=${fan_speed} expected=${expected} + ... tolerance=${tolerance} + Log To Console + ... ${cpu_temp}C - ${fan_speed} ${fan_mode} (expected: ${expected} ${fan_mode} +/- ${tolerance}) + RETURN ${result} ${measurement} + +Save Measurements + [Documentation] Saves fan speed & temp measurements to csv file + [Arguments] ${measurements} ${name} + ${columns}= Create List temp speed expected tolerance + ${filename}= Set Variable fan_speeds_${name} + ${file_path}= Set Variable ${LOGS_DIR}/${filename} + CSVLibrary.Csv File From Associative ${file_path}.csv ${measurements} ${columns} + ${image}= Plot Fan Curve ${file_path} Fan speeds ${name} + RETURN ${image} + +Verify Fan Speeds + [Documentation] Compares RPM/PWM to target values depending + ... on CPU temperature and a fan curve. + [Tags] robot:private + [Arguments] ${range_data} ${fan_speed} ${fan_mode} ${cpu_temp} + + ${expected_fan_speed}= Calculate Expected Speed ${cpu_temp} ${fan_mode} ${range_data} + ${tolerance}= Get From Dictionary ${range_data} tolerance_${fan_mode} + + IF '${fan_mode}' == 'pwm' + ${fan_speed}= Evaluate float(${fan_speed}/2.55) + END + + # RPM Measurements are not as precise as PWM. The margin of error has to be much larger. + IF '${fan_mode}' == 'rpm' + ${smoothing}= Set Variable ${tolerance} + ELSE IF '${fan_mode}' == 'pwm' and ${expected_fan_speed} < 35 + ${smoothing}= Evaluate 1 + ELSE + ${smoothing}= Evaluate ${tolerance} + END + + ${high_limit}= Evaluate ${expected_fan_speed}+${smoothing} + ${low_limit}= Evaluate ${expected_fan_speed}-${smoothing} + ${speed_is_valid}= Evaluate ${low_limit} < ${fan_speed} < ${high_limit} + + RETURN ${speed_is_valid} ${expected_fan_speed} + +Get Fan Curve Range + [Documentation] Returns the dictionary with settings for temperature + ... range where the current temperature fits for a given profile + [Arguments] ${temperature} ${profile} + IF '${profile}' == 'silent' + ${range_data}= Get Fan Curve Range From Curve ${temperature} @{TEMPERATURE_CURVE_SILENT} + ELSE IF '${profile}' == 'performance' + ${range_data}= Get Fan Curve Range From Curve ${temperature} @{TEMPERATURE_CURVE_PERFORMANCE} + ELSE IF '${profile}' == 'off' + ${range_data}= Get Fan Curve Range From Curve ${temperature} @{TEMPERATURE_CURVE_OFF} + END + RETURN ${range_data} + +Get Fan Curve Range From Curve + [Documentation] Returns the dictionary with settings for temperature + ... range where the current temperature fits + [Tags] robot:private [Arguments] ${temperature} @{temperature_curve} - ${rpm}= Evaluate -1 + + ${expected_speed}= Evaluate -1 FOR ${range_data} IN @{temperature_curve} ${min_temp} ${max_temp}= Get From Dictionary ${range_data} range - ${eval_min} ${eval_max}= Get From Dictionary ${range_data} evaluation - # if temperature is equal to start of the range then rpm value will be - # equal to minimal rpm for this range - IF ${temperature} == ${min_temp} - ${rpm}= Evaluate float(${eval_min}) - BREAK - # if not check if the temperature is lower than maximum temperature in - # this range and if so, then calculate rpm by finding a linear function - # and its ordinate - ELSE IF ${temperature} < ${max_temp} - ${rpm}= Evaluate - ... float(((${eval_max}-${eval_min})/(${max_temp}-${min_temp}))*(${temperature}-${min_temp})+${eval_min}) - BREAK - END + # Ranges are ordered and don't overlap allowing for searching like this + IF ${temperature} < ${max_temp} RETURN ${range_data} + END + +Calculate Expected Speed + [Documentation] Calculates the expected speed percentage by config file + ... for a given temperature based on an algorithm and a + ... defined curve. Speed unit should be defined as "pwm" or "rpm" to + ... choose the curve unit. + [Tags] robot:private + [Arguments] ${temperature} ${speed_unit} ${range_data} + + ${expected_speed}= Evaluate -1 + ${min_temp} ${max_temp}= Get From Dictionary ${range_data} range + ${eval_min} ${eval_max}= Get From Dictionary ${range_data} evaluation_${speed_unit} + + IF ${temperature} == ${min_temp} + ${expected_speed}= Evaluate float(${eval_min}) + # if not check if the temperature is lower than maximum temperature in + # this range and if so, then calculate pwm by finding a linear function + # and its ordinate + ELSE IF ${temperature} < ${max_temp} + ${expected_speed}= Evaluate + ... float(((${eval_max}-${eval_min})/(${max_temp}-${min_temp}))*(${temperature}-${min_temp})+${eval_min}) END - IF ${rpm} == -1 FAIL - RETURN ${rpm} - -Calculate Speed Percentage Based On Temperature In Performance Mode - [Documentation] Calculates the expected speed percentage in performance - ... mode for a given temperature based on an algorithm and a - ... defined curve. - [Arguments] ${temperature} - ${rpm}= Calculate Speed Percentage Based On Temperature ${temperature} @{TEMPERATURE_CURVE_PERFORMANCE} - RETURN ${rpm} - -Calculate Speed Percentage Based On Temperature In Silent Mode - [Documentation] Calculates the expected speed percentage in silent - ... mode for a given temperature based on an algorithm and a - ... defined curve. - [Arguments] ${temperature} - ${rpm}= Calculate Speed Percentage Based On Temperature ${temperature} @{TEMPERATURE_CURVE_SILENT} - RETURN ${rpm} + IF ${expected_speed} == -1 FAIL + RETURN ${expected_speed} diff --git a/dasharo-performance/disk-io.robot b/dasharo-performance/disk-io.robot new file mode 100644 index 0000000000..b91f796d31 --- /dev/null +++ b/dasharo-performance/disk-io.robot @@ -0,0 +1,340 @@ +*** Settings *** +Library Telnet timeout=20 seconds connection_timeout=120 seconds +Library SSHLibrary timeout=90 seconds +Resource ../lib/performance/common.robot +Resource ../lib/platform/power.robot + +Suite Setup Disk IO Suite Setup +Suite Teardown Log Out And Close Connection + + +*** Variables *** +${FIO_LATEST_RELEASE_URL}= https://api.github.com/repos/axboe/fio/releases/latest +${RESULTS_DIR_UBUNTU}= fio_results +${RESULTS_DIR_WINDOWS}= C:\fio-results + + +*** Test Cases *** +DIO001.201 Sequential Read Performance (Ubuntu) (AC) + [Documentation] Check various scenarios of single threaded read + ... performance, while connected to power supply unit. (Ubuntu) + Sleep 20s + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Power Cycle Into Ubuntu + Run FIO On Ubuntu sequential_with_queues + ... --rw=read --bs=1M --iodepth=32 --numjobs=1 --size=2G + Run FIO On Ubuntu sequential_without_queues + ... --rw=read --bs=1M --iodepth=1 --numjobs=1 --size=2G + ${seq_read_queued}= Parse FIO Result sequential_with_queues.json read + ${seq_read_nonque}= Parse FIO Result sequential_without_queues.json read + Should Be True ${seq_read_queued} >= ${UBU_SEQ_READ_QUEUED}*0.85 Sequential Read Queued is below expected + Should Be True ${seq_read_nonque} >= ${UBU_SEQ_READ_NONQUE}*0.85 Sequential Read Non-Queued is below expected + +DIO002.201 Sequential Read Performance (Ubuntu) (Battery) + [Documentation] Check various scenarios of single threaded read + ... performance, while powered by inbuilt battery. (Ubuntu) + Sleep 20s + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} Battery not present + Skip If Battery Level Below 30 Percent + Power Cycle Into Ubuntu + Switch To Root User + Run FIO On Ubuntu sequential_with_queues + ... --rw=read --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Ubuntu sequential_without_queues + ... --rw=read --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Ubuntu sequential_with_queues_mt + ... --rw=read --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + ${seq_read_queued}= Parse FIO Result sequential_with_queues.json read + ${seq_read_nonque}= Parse FIO Result sequential_without_queues.json read + Should Be True ${seq_read_queued} >= ${UBU_SEQ_READ_QUEUED}*0.85 Sequential Read Queued is below expected + Should Be True ${seq_read_nonque} >= ${UBU_SEQ_READ_NONQUE}*0.85 Sequential Read Non-Queued is below expected + +DIO003.201 Sequential Write Performance (Ubuntu) (AC) + [Documentation] Check various scenarios of single-threaded write + ... performance while powered by AC adapter. (Ubuntu) + Sleep 20s + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Power Cycle Into Ubuntu + Switch To Root User + Run FIO On Ubuntu sequential_write_with_queues + ... --rw=write --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Ubuntu sequential_write_without_queues + ... --rw=write --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Ubuntu sequential_write_with_queues_mt + ... --rw=write --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + ${seq_write_queued}= Parse FIO Result sequential_write_with_queues.json write + ${seq_write_nonque}= Parse FIO Result sequential_write_without_queues.json write + Should Be True ${seq_write_queued} >= ${UBU_SEQ_WRITE_QUEUED}*0.85 Sequential Write Queued is below expected + Should Be True + ... ${seq_write_nonque} >= ${UBU_SEQ_WRITE_NONQUE}*0.85 + ... Sequential Write Non-Queued is below expected + +DIO004.201 Sequential Write Performance (Ubuntu) (Battery) + [Documentation] Check various scenarios of single threaded write + ... performance, while powered by inbuilt battery. (Ubuntu) + Sleep 20s + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} Battery not present + Skip If Battery Level Below 30 Percent + Power Cycle Into Ubuntu + Switch To Root User + Run FIO On Ubuntu sequential_write_with_queues + ... --rw=write --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Ubuntu sequential_write_without_queues + ... --rw=write --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Ubuntu sequential_write_with_queues_mt + ... --rw=write --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + ${seq_write_queued}= Parse FIO Result sequential_write_with_queues.json write + ${seq_write_nonque}= Parse FIO Result sequential_write_without_queues.json write + Should Be True ${seq_write_queued} >= ${UBU_SEQ_WRITE_QUEUED}*0.85 Sequential Write Queued is below expected + Should Be True + ... ${seq_write_nonque} >= ${UBU_SEQ_WRITE_NONQUE}*0.85 + ... Sequential Write Non-Queued is below expected + +DIO005.201 Random Read Performance (Ubuntu) (AC) + [Documentation] Check various scenarios of random read performance + ... while connected to power supply unit. (Ubuntu) + Sleep 20s + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Power Cycle Into Ubuntu + Switch To Root User + Run FIO On Ubuntu random_read_with_queues + ... --rw=randread --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Ubuntu random_read_without_queues + ... --rw=randread --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Ubuntu random_read_with_queues_mt + ... --rw=randread --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + ${rand_read_queued}= Parse FIO Result random_read_with_queues.json read + ${rand_read_nonque}= Parse FIO Result random_read_without_queues.json read + Should Be True ${rand_read_queued} >= ${UBU_RAND_READ_QUEUED}*0.85 Random Read BW Queued is below expected + Should Be True + ... ${rand_read_nonque} >= ${UBU_RAND_READ_NONQUE}*0.85 + ... Random Read BW Non-Queued is below expected + +DIO006.201 Random Read Performance (Ubuntu) (Battery) + [Documentation] Check various scenarios of random read performance + ... while running on battery power. (Ubuntu) + Sleep 20s + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} Battery not present + Skip If Battery Level Below 30 Percent + Power Cycle Into Ubuntu + Switch To Root User + Run FIO On Ubuntu random_read_with_queues + ... --rw=randread --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Ubuntu random_read_without_queues + ... --rw=randread --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Ubuntu random_read_with_queues_mt + ... --rw=randread --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + ${rand_read_queued}= Parse FIO Result random_read_with_queues.json read + ${rand_read_nonque}= Parse FIO Result random_read_without_queues.json read + Should Be True ${rand_read_queued} >= ${UBU_RAND_READ_QUEUED}*0.85 Random Read BW Queued is below expected + Should Be True + ... ${rand_read_nonque} >= ${UBU_RAND_READ_NONQUE}*0.85 + ... Random Read BW Non-Queued is below expected + +DIO007.201 Random Write Performance (Ubuntu) (AC) + [Documentation] Check various scenarios of random write performance + ... while connected to power supply unit. (Ubuntu) + Sleep 20s + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Power Cycle Into Ubuntu + Switch To Root User + Run FIO On Ubuntu random_write_with_queues + ... --rw=randwrite --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Ubuntu random_write_without_queues + ... --rw=randwrite --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Ubuntu random_write_with_queues_mt + ... --rw=randwrite --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + ${rand_write_queued}= Parse FIO Result random_write_with_queues.json write + ${rand_write_nonque}= Parse FIO Result random_write_without_queues.json write + Should Be True ${rand_write_queued} >= ${UBU_RAND_WRITE_QUEUED}*0.85 Random Write BW Queued is below expected + Should Be True + ... ${rand_write_nonque} >= ${UBU_RAND_WRITE_NONQUE}*0.85 + ... Random Write BW Non-Queued is below expected + +DIO008.201 Random Write Performance (Ubuntu) (Battery) + [Documentation] Check various scenarios of sequential write performance + ... while connected to power supply unit. (Ubuntu) + Sleep 20s + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} Battery not present + Skip If Battery Level Below 30 Percent + Power Cycle Into Ubuntu + Switch To Root User + Run FIO On Ubuntu random_write_with_queues + ... --rw=randwrite --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Ubuntu random_write_without_queues + ... --rw=randwrite --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Ubuntu random_write_with_queues_mt + ... --rw=randwrite --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + ${rand_write_queued}= Parse FIO Result random_write_with_queues.json write + ${rand_write_nonque}= Parse FIO Result random_write_without_queues.json write + Should Be True ${rand_write_queued} >= ${UBU_RAND_WRITE_QUEUED}*0.85 Random Write BW Queued is below expected + Should Be True + ... ${rand_write_nonque} >= ${UBU_RAND_WRITE_NONQUE}*0.85 + ... Random Write BW Non-Queued is below expected + +DIO001.003 Sequential Read Performance (Windows) (AC) + [Documentation] Check various scenarios of single threaded read + ... performance, while connected to power supply unit. (Windows) + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} + Power Cycle Into Windows + Run FIO On Windows sequential_with_queues + ... --rw=read --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Windows sequential_without_queues + ... --rw=read --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Windows sequential_with_queues_mt + ... --rw=read --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + +DIO001.004 Sequential Read Performance (Windows) (Battery) + [Documentation] Check various scenarios of single threaded read + ... performance, while powered by inbuilt battery. (Windows) + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} Battery not present + Power Cycle Into Windows + Run FIO On Windows sequential_with_queues + ... --rw=read --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Windows sequential_without_queues + ... --rw=read --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Windows sequential_with_queues_mt + ... --rw=read --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + +DIO002.003 Sequential Write Performance (Windows) (AC) + [Documentation] Check various scenarios of multi threaded write + ... performance, while connected to power supply unit. (Windows) + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} + Power Cycle Into Windows + Run FIO On Windows sequential_write_with_queues + ... --rw=write --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Windows sequential_write_without_queues + ... --rw=write --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Windows sequential_write_with_queues_mt + ... --rw=write --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + Power Cycle Into Ubuntu # as of march 4 2025, running tests on novacustom is rather + # primitive and default starting point is ubuntu + +DIO002.004 Sequential Write Performance (Windows) (Battery) + [Documentation] Check various scenarios of multi threaded write + ... performance, while powered by inbuilt battery. (Windows) + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} Battery not present + Power Cycle Into Windows + Run FIO On Windows sequential_write_with_queues + ... --rw=write --bs=1M --iodepth=32 --numjobs=1 --size=4G + Run FIO On Windows sequential_write_without_queues + ... --rw=write --bs=1M --iodepth=1 --numjobs=1 --size=4G + Run FIO On Windows sequential_write_with_queues_mt + ... --rw=write --bs=1M --iodepth=32 --numjobs=${DEF_THREADS_TOTAL} --size=4G + Power Cycle Into Ubuntu + +DIO003.003 Random Read Performance (Windows) (AC) + [Documentation] Check various scenarios of single threaded write + ... performance, while connected to power supply unit. (Windows) + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} + Power Cycle Into Windows + Run FIO On Windows random_read + ... --rw=randread --bs=4K --iodepth=32 --numjobs=1 --size=10G + Power Cycle Into Ubuntu + +DIO003.004 Random Read Performance (Windows) (Battery) + [Documentation] Check various scenarios of single threaded write + ... performance, while powered by inbuilt battery. (Windows) + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} Battery not present + Power Cycle Into Windows + Run FIO On Windows random_read + ... --rw=randread --bs=4K --iodepth=32 --numjobs=1 --size=10G + Power Cycle Into Ubuntu + +DIO004.003 Random Write Performance (Windows) (AC) + [Documentation] Check various scenarios of multi threaded write + ... performance, while connected to power supply unit. (Windows) + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} + Power Cycle Into Windows + Run FIO On Windows random_write + ... --rw=randwrite --bs=4K --iodepth=32 --numjobs=4 --size=10G + Power Cycle Into Ubuntu + +DIO004.004 Random Write Performance (Windows) (Battery) + [Documentation] Check various scenarios of multi threaded write + ... performance, while powered by inbuilt battery.(Windows) + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} + Skip If not ${LAPTOP_PLATFORM} The Platform is not a Laptop + Skip If not ${BATTERY_PRESENT} Battery not present + Power Cycle Into Windows + Run FIO On Windows random_write + ... --rw=randwrite --bs=4K --iodepth=32 --numjobs=4 --size=10G + Power Cycle Into Ubuntu + + +*** Keywords *** +Disk IO Suite Setup + [Documentation] Load config and download tooling for both windows + ... ubuntu. + Prepare Test Suite + Skip If not ${DISK_IO_PERFORMANCE_TESTS} + ... Disk IO tests not enabled for this platform config + IF ${TESTS_IN_UBUNTU_SUPPORT} + Power Cycle Into Ubuntu + Switch To Root User + Detect Or Install Package fio + Exit From Root User + Execute Linux Command mkdir ~/${RESULTS_DIR_UBUNTU} + END + Check Power Supply + # IF ${TESTS_IN_WINDOWS_SUPPORT} + # Power Cycle Into Windows + # Log Hello + # END + +Run FIO On Ubuntu + [Documentation] Wrapper for /usr/bin/fio, with adjusted timeout. + [Arguments] ${fio_test_name} ${fio_args} + # Example arguments we want to pass + # --rw=randread --bs=4K --iodepth=32 --numjobs=4 --size=10G + Execute Linux Command mkdir ~/${RESULTS_DIR_UBUNTU} + Execute Linux Command touch ~/${RESULTS_DIR_UBUNTU}/${fio_test_name}.json + ${cmd}= Set Variable /usr/bin/fio + ${cmd}= Catenate ${cmd} --name=${fio_test_name} + ${cmd}= Catenate ${cmd} --ioengine=libaio --runtime=60s + ${cmd}= Catenate ${cmd} --direct=1 --group_reporting + ${cmd}= Catenate ${cmd} --output=${RESULTS_DIR_UBUNTU}/${fio_test_name}.json + ${cmd}= Catenate ${cmd} --output-format=json + ${cmd}= Catenate ${cmd} --unlink=1 + ${cmd}= Catenate ${cmd} --filename=testfile + + ${cmd}= Catenate ${cmd} ${fio_args} + ${result}= Execute Linux Command ${cmd} 300 + Sleep 10s + +Run FIO On Windows + [Documentation] Wrapper for fio.exe, with adjusted timeout. + [Arguments] ${fio_test_name} ${fio_args} + Execute Command In Terminal ${RESULTS_DIR_WINDOWS} + ${cmd}= Set Variable fio.exe --name=${fio_test_name} + ${cmd}= Set Variable ${cmd} --ioengine=windowsaio --runtime=60s + ${cmd}= Set Variable ${cmd} --direct=1 --group_reporting + ${cmd}= Set Variable ${cmd} --output=${RESULTS_DIR_WINDOWS}/${fio_test_name}.json --output-format=json + ${cmd}= Set Variable ${cmd} ${fio_args} + + ${result}= Execute Command In Terminal ${cmd} 300 + Log To Console ${result} + Sleep 10s + +Parse FIO Result + [Arguments] ${filename} ${operation} + ${json_data}= Execute Linux Command cat ${RESULTS_DIR_UBUNTU}/${filename} + ${parsed}= Evaluate json.loads("""${json_data}""") json + ${bw}= Set Variable + ... ${parsed}[jobs][0][${operation}][bw] + Sleep 10s + RETURN ${bw}/1024 diff --git a/dasharo-performance/fast-boot.robot b/dasharo-performance/fast-boot.robot new file mode 100644 index 0000000000..6aa0f8a281 --- /dev/null +++ b/dasharo-performance/fast-boot.robot @@ -0,0 +1,126 @@ +*** Settings *** +Library Telnet timeout=20 seconds connection_timeout=120 seconds +Library SSHLibrary timeout=90 seconds +Resource ../lib/platform/boot.robot +Resource ../lib/cbmem.robot + +Suite Setup Initialize Fast Boot Suite +Suite Teardown Log Out And Close Connection + + +*** Variables *** +${ITERATIONS}= 5 + + +*** Test Cases *** +FBT001.201 Fast Boot Reduces Boot Time + [Documentation] Check whether the DUT boot time is reduced with + ... fast boot enabled. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} PLB001.201 not supported + Log To Console \nMeasuring boot time with Fast Boot\n + Login To Linux + Switch To Root User + Set Fast Boot State on + ${fast_min} ${fast_max} ${fast_avg} ${fast_stddev}= + ... Measure FW Boot Time On Linux ${ITERATIONS} + + Log To Console \nMeasuring boot time without Fast Boot\n + Login To Linux + Switch To Root User + Set Fast Boot State off + ${slow_min} ${slow_max} ${slow_avg} ${slow_stddev}= + ... Measure FW Boot Time On Linux ${ITERATIONS} + + ${average_gain}= + ... Evaluate ${slow_avg} - ${fast_avg} + ${min_gain}= + ... Evaluate ${slow_min} - ${fast_min} + ${max_gain}= + ... Evaluate ${slow_max} - ${fast_max} + + Log To Console \nAverage (No Fast Boot): ${slow_avg} s + Log To Console \nAverage (With Fast Boot): ${fast_avg} s + Log To Console \nFastboot average time gain: ${average_gain} s + Log To Console \nFastboot longest time gain: ${max_gain} s + Log To Console \nFastboot shortest time gain: ${min_gain} s + ${relative_boot_time}= Evaluate (${fast_avg} / ${slow_avg}) * 100 + Log To Console + ... \nFastboot took ${relative_boot_time}% of regular boot on average + + IF ${relative_boot_time} > 70.0 Fail + + +*** Keywords *** +Set Fast Boot State + [Documentation] Set fast boot to on/off via Linux Shell + [Tags] robot:private + [Arguments] ${state} + + ${var_file_name}= Execute Linux Command + ... ls /sys/firmware/efi/efivars -l | grep "FastBoot" | awk '{print $NF}' + Should Not Be Empty ${var_file_name} + ${var_file_path}= Catenate SEPARATOR= /sys/firmware/efi/efivars/ ${var_file_name} + Execute Linux Command chattr -i ${var_file_path} + + ${new_var_path}= Set Variable /tmp/${var_file_name} + + Execute Linux Command touch ${new_var_path} + IF '${state}' == 'on' + Execute Linux Command printf '\\x07\\x00\\x00\\x00\\x01' \> ${new_var_path} + ELSE IF '${state}' == 'off' + Execute Linux Command printf '\\x07\\x00\\x00\\x00\\x00' \> ${new_var_path} + END + + ${out}= Execute Linux Command + ... dd if=${new_var_path} of=${var_file_path} bs=5 + + Should Not Contain ${out} Operation Not Permitted + Execute Linux Command rm ${new_var_path} + +Measure FW Boot Time On Linux + [Documentation] Performs a measurement of firmware boot time + ... over number of iterations provided as argument. + [Tags] robot:private + [Arguments] ${iterations} + ${durations}= Create List + Log To Console \n + + FOR ${index} IN RANGE 0 ${iterations} + Execute Reboot Command linux ${True} + Sleep 5s + Login To Linux + Switch To Root User + ${boot_time}= Get FW Boot Time From Systemd-analyze + Log To Console (${index}) Boot time: ${boot_time} s + Append To List ${durations} ${boot_time} + END + + ${min} ${max} ${average} ${stddev}= + ... Calculate Boot Time Statistics ${durations} + RETURN ${min} ${max} ${average} ${stddev} + +Get FW Boot Time From Systemd-analyze + [Documentation] Use systemd-analyze to get firmware boot time + [Tags] robot:private + FOR ${index} IN RANGE 0 10 + ${boot_time}= Execute Linux Command + ... systemd-analyze | awk 'NR==1 {print $4}' | sed 's/s//g' + + # ssh opens before GDM might finish loading desktop + ${status}= Run Keyword And Ignore Error + ... Should Not Contain ${boot_time} not yet finished + + IF '${status}[0]' != 'FAIL' RETURN ${boot_time} + + Sleep 5s + END + Fail Could not acquire boot time + +Initialize Fast Boot Suite + [Documentation] Use efibootmgr to list entries, and set new order, + ... with Ubuntu at the top of the list. + [Tags] robot:private + Prepare Test Suite + Skip If not ${FAST_AND_QUIET_BOOT_SUPPORT} Boot performance measurement tests not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} Boot performance measurement tests not supported + Set Selected OS As First In Boot Order Via Efibootmgr ${ENV_ID_UBUNTU} diff --git a/dasharo-performance/gpu-performance.robot b/dasharo-performance/gpu-performance.robot new file mode 100644 index 0000000000..220ed26609 --- /dev/null +++ b/dasharo-performance/gpu-performance.robot @@ -0,0 +1,75 @@ +*** Settings *** +Library Telnet timeout=20 seconds connection_timeout=120 seconds +Library SSHLibrary timeout=90 seconds +Resource ../lib/performance/gpu.robot + +Suite Setup GPU Performance Suite Setup +Suite Teardown Log Out And Close Connection + + +*** Test Cases *** +GPP001.201 GPU Performance Measure (Ubuntu) (AC) + [Documentation] Test GPU performance for Ubuntu on AC + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Skip If not ${AC_CONNECTED} Cannot run this test on battery + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + # Pass condition, that is at least 90% of original benchmark + ${pass_cond}= Evaluate ${UNIGINE_SUPERPOSITION_RESULT_AC} * 0.9 + ${result}= Run Unigine Superposition On Ubuntu + Log To Console \nAverage FPS: ${result} + IF ${result} < ${pass_cond} + Fail GPU AC performance lower than expected! + END + +GPP002.201 GPU Performance Measure (Ubuntu) (Battery) + [Documentation] Test GPU performance for Ubuntu on Battery + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Skip If ${AC_CONNECTED} You must run this test on battery + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + ${power_level}= Check Battery Level On Linux + # This test runtime is ~11 minutes, probably should be good on more than 25% + Skip If ${power_level} < 25 Insufficient Battery Charge to perform this test + # Pass condition, that is at least 90% of original benchmark + ${pass_cond}= Evaluate ${UNIGINE_SUPERPOSITION_RESULT_BAT} * 0.9 + ${result}= Run Unigine Superposition On Ubuntu + Log To Console \nAverage FPS: ${result} + IF ${result} < ${pass_cond} + Fail GPU battery performance lower than expected! + END + + +*** Keywords *** +GPU Performance Suite Setup + [Documentation] Load config and download tooling for supported OSes + [Tags] robot:private + Prepare Test Suite + Skip If not ${GPU_PERFORMANCE_TESTS_SUPPORT} + ${get_date}= Get Current Date result_format=%d%m%Y%H%M%S + Set Global Variable ${CURRENT_DATE} ${get_date} + + IF ${TESTS_IN_UBUNTU_SUPPORT} + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Execute Manual Step Please ensure DUT has active desktop session + ... by logging into X11 Gnome Desktop. + Detect Or Install Phoronix Test Suite On Ubuntu + + # Error redirection; for unknown reason to me, DTS throws + # "sh: 1: kill: No such process" from time to time + ${out}= Execute Command In Terminal + ... phoronix-test-suite list-installed-tests 2>/dev/null | grep "pts/unigine-super" + + IF '${out}' == '${EMPTY}' + # 10 Minute timeout to download ~1.5GB + Execute Linux Command DISPLAY=:0 phoronix-test-suite install-test unigine-super 600 + Read From Terminal Until Prompt + END + + Setup Phoronix Batch Mode + END + + Check Power Supply diff --git a/dasharo-performance/graphics-configuration.robot b/dasharo-performance/graphics-configuration.robot new file mode 100644 index 0000000000..e21989d3f6 --- /dev/null +++ b/dasharo-performance/graphics-configuration.robot @@ -0,0 +1,124 @@ +*** Settings *** +Library Telnet timeout=20 seconds connection_timeout=120 seconds +Library SSHLibrary timeout=90 seconds +Resource ../keywords.robot +Resource ../lib/performance/common.robot + +Suite Setup Prepare Test Suite +Suite Teardown Log Out And Close Connection + + +*** Test Cases *** +DGPU001.001 Hybrid Graphics modes: NVIDIA Optimus + [Documentation] Verifies that the internal display is connected to the integrated GPU (iGPU) while both iGPU and dGPU are active in Ubuntu. + + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Skip If not ${NVIDIA_GRAPHICS_CARD_SUPPORT} + Set UEFI Option DGPUState NVIDIA Optimus + Power Cycle Into Ubuntu + Switch To Root User + + ${dgpu_card} ${igpu_card}= Get GPU Cards + + ${igpu_display}= Execute Command In Terminal ls /sys/class/drm/${igpu_card}-eDP* 2>/dev/null + ${dgpu_display}= Execute Command In Terminal ls /sys/class/drm/${dgpu_card}-eDP* 2>/dev/null + + IF '${igpu_display}' + ${igpu_display_status}= Execute Command In Terminal cat /sys/class/drm/${igpu_card}-eDP*/enabled + # sometimes if the directory deos not exist it repeats back the typed command + # i. e. cat /sys/class/drm/${igpu_card}-eDP*/enabled with enabled at the end, resulting in a false positive + Should Not Contain ${igpu_display_status} cat msg= "iGPU is not driving the internal display." + Should Contain ${igpu_display_status} enabled msg= "iGPU is not driving the internal display." + ELSE + Fail msg= "No internal display found for iGPU." + END + + IF '${dgpu_display}' + ${dgpu_display_status}= Execute Command In Terminal cat /sys/class/drm/${dgpu_card}-eDP*/enabled + Should Not Contain ${dgpu_display_status} cat msg= "dGPU is not driving the internal display." + Should Contain + ... ${dgpu_display_status} + ... disabled + ... msg= "dGPU is incorrectly driving the internal display." + ELSE + Log To Console "No internal display found for dGPU." + END + + # also including the original logic to be extra sure + ${dgpu_status}= Execute Command In Terminal lspci | grep -i nvidia + Should Contain ${dgpu_status} VGA msg= "dGPU is not detected." + + ${igpu_status}= Execute Command In Terminal lspci | grep -i 'intel' + Should Contain ${igpu_status} VGA msg= "iGPU is not detected." + + Log To Console Internal display is connected to iGPU, and both iGPU and dGPU are active. + +DGPU002.001 Hybrid Graphics modes: dGPU Only + [Documentation] Verifies that the internal display is connected to the discrete GPU (dGPU) while the integrated GPU (iGPU) is still active. + + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Skip If not ${NVIDIA_GRAPHICS_CARD_SUPPORT} + Skip If not ${DGPU_ONLY_SUPPORT} + Set UEFI Option DGPUState dGPU Only + Power Cycle Into Ubuntu + Switch To Root User + + ${dgpu_card} ${igpu_card}= Get GPU Cards + + ${dgpu_display}= Execute Command In Terminal ls /sys/class/drm/${dgpu_card}-eDP* 2>/dev/null + ${igpu_display}= Execute Command In Terminal ls /sys/class/drm/${igpu_card}-eDP* 2>/dev/null + + IF '${dgpu_display}' + ${dgpu_status}= Execute Command In Terminal cat /sys/class/drm/${dgpu_card}-eDP*/enabled + Should Not Contain ${dgpu_status} cat msg= "iGPU is not driving the internal display." + Should Contain ${dgpu_status} enabled msg= "dGPU is not driving the internal display." + ELSE + Fail msg= "No internal display found for dGPU." + END + + IF '${igpu_display}' + ${igpu_status}= Execute Command In Terminal cat /sys/class/drm/${igpu_card}-eDP*/enabled + Should Not Contain ${igpu_status} cat msg= "iGPU is not driving the internal display." + Should Contain ${igpu_status} disabled msg= "iGPU is still driving the internal display." + ELSE + Log To Console "No internal display found for iGPU. Skipping check." + END + + Log To Console Internal display is connected to dGPU + +DGPU003.001 Hybrid Graphics modes: iGPU Only + [Documentation] Verifies that only the discrete GPU (dGPU) is turned off and the integrated GPU (iGPU) is active. + + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} + Skip If not ${NVIDIA_GRAPHICS_CARD_SUPPORT} + Set UEFI Option DGPUState iGPU Only + Power Cycle Into Ubuntu + Switch To Root User + ${gpu_status}= Execute Command In Terminal lspci | grep -i nvidia + Should Not Contain ${gpu_status} VGA msg= "dGPU is still active." + + ${igpu_status}= Execute Command In Terminal lspci | grep -i 'intel' + Should Contain ${igpu_status} VGA msg= "iGPU is not detected." + + Log To Console Only iGPU is active, and dGPU is turned off. + + +*** Keywords *** +Get GPU Cards + ${gpu_cards_raw}= Execute Command In Terminal + ... ls -d /sys/class/drm/card[0-9]*/device/vendor | awk -F'/' '{print $(NF-2)}' + ${gpu_cards}= Split String ${gpu_cards_raw} + ${dgpu_card}= Set Variable nocard + ${igpu_card}= Set Variable nocard + + FOR ${card} IN @{gpu_cards} + ${vendor}= Execute Command In Terminal cat /sys/class/drm/${card}/device/vendor + ${vendor}= Strip String ${vendor} + IF '${vendor}' == '0x10de' + ${dgpu_card}= Set Variable ${card} + ELSE IF '${vendor}' == '0x8086' + ${igpu_card}= Set Variable ${card} + END + END + + RETURN ${dgpu_card} ${igpu_card} diff --git a/dasharo-performance/platform-stability.robot b/dasharo-performance/platform-stability.robot index 104e221b6f..5a4fc59d66 100644 --- a/dasharo-performance/platform-stability.robot +++ b/dasharo-performance/platform-stability.robot @@ -52,78 +52,117 @@ STB001.001 Verify if no reboot occurs in the firmware ${timer}= Evaluate ${timer} + ${STABILITY_TEST_MEASURE_INTERVAL} END -STB001.002 Verify if no reboot occurs in the OS (Ubuntu) +STB001.201 Verify if no reboot occurs in the OS (Ubuntu) [Documentation] This test aims to verify that the DUT booted to the ... Operating System does not reset. The test is performed in multiple ... iterations - after a defined time an attempt to read the output of ... specific commands confirming the stability of work is repeated. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} STB001.002 not supported + ... Previous IDs: STB001.002 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} STB001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} STB001.201 not supported + Verify If No Reboot Occurs In Linux ${ENV_ID_UBUNTU} +STB002.201 Verify if no unexpected boot errors appear in Linux logs + [Documentation] This test aims to verify that there are no unexpected + ... error ,essages in Linux kernel logs. + ... Previous IDs: STB002.001 + [Tags] minimal-regression + Skip If not ${PLATFORM_STABILITY_CHECKING} STB002.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} STB002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} STB002.201 not supported + Verify If No Unexpected Boot Errors Appear In Linux Logs ${ENV_ID_UBUNTU} + +STB001.202 Verify if no reboot occurs in the OS (Fedora) + [Documentation] This test aims to verify that the DUT booted to the + ... Operating System does not reset. The test is performed in multiple + ... iterations - after a defined time an attempt to read the output of + ... specific commands confirming the stability of work is repeated. + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} STB001.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} STB001.202 not supported + Verify If No Reboot Occurs In Linux ${ENV_ID_FEDORA} + +STB002.202 Verify if no unexpected boot errors appear in Linux logs + [Documentation] This test aims to verify that there are no unexpected + ... error ,essages in Linux kernel logs. + [Tags] minimal-regression + Skip If not ${PLATFORM_STABILITY_CHECKING} STB002.202 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} STB002.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} STB002.202 not supported + Verify If No Unexpected Boot Errors Appear In Linux Logs ${ENV_ID_FEDORA} + +STB001.301 Verify if no reboot occurs in the OS (Windows) + [Documentation] This test aims to verify that the DUT booted to the + ... Operating System does not reset. The test is performed in multiple + ... iterations - after a defined time an attempt to read the output of + ... specific commands confirming the stability of work is repeated. + ... Previous IDs: STB001.003 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} STB001.301 not supported Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User + Login To Windows ${timer}= Convert To Integer 0 Set Local Variable ${device_uptime} 0 FOR ${i} IN RANGE (${STABILITY_TEST_DURATION} / ${STABILITY_TEST_MEASURE_INTERVAL}) + 1 Log To Console \n ---------------------------------------------------------------- Log To Console ${timer} min. - ${network_status}= Execute Command In Terminal ip link | grep -E 'enp|eno' - ${uptime_output}= Execute Command In Terminal cat /proc/uptime - ${uptime_list}= Split String ${uptime_output} ${SPACE} - ${current_uptime}= Convert To Number ${uptime_list}[0] + ${uptime_output}= Execute Command In Terminal (get-date) - (gcim Win32_OperatingSystem).LastBootUpTime + ${network_status}= Execute Command In Terminal Get-NetAdapter -Name "Ethernet*" + + ${total_seconds_line}= Get Lines Matching Regexp ${uptime_output} .*TotalSeconds.* + @{line_parts}= Split String ${total_seconds_line} : + ${total_seconds}= Set Variable ${line_parts[1]} + ${total_seconds}= Strip String ${total_seconds} + ${total_seconds}= Convert To Number ${total_seconds} + ${current_uptime}= Set Variable ${total_seconds} + IF ${current_uptime} >= ${device_uptime} Set Local Variable ${device_uptime} ${current_uptime} ELSE FAIL \n The device has been reset during the test! END - Should Contain ${network_status} UP + Should Contain ${network_status} Up Sleep ${STABILITY_TEST_MEASURE_INTERVAL}m ${timer}= Evaluate ${timer} + ${STABILITY_TEST_MEASURE_INTERVAL} END -STB001.003 Verify if no reboot occurs in the OS (Windows) + +*** Keywords *** +Verify If No Reboot Occurs In Linux [Documentation] This test aims to verify that the DUT booted to the ... Operating System does not reset. The test is performed in multiple ... iterations - after a defined time an attempt to read the output of ... specific commands confirming the stability of work is repeated. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} STB001.002 not supported + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} Power On - Login To Windows + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User ${timer}= Convert To Integer 0 Set Local Variable ${device_uptime} 0 FOR ${i} IN RANGE (${STABILITY_TEST_DURATION} / ${STABILITY_TEST_MEASURE_INTERVAL}) + 1 Log To Console \n ---------------------------------------------------------------- Log To Console ${timer} min. - ${uptime_output}= Execute Command In Terminal (get-date) - (gcim Win32_OperatingSystem).LastBootUpTime - ${network_status}= Execute Command In Terminal Get-NetAdapter -Name "Ethernet*" - - ${total_seconds_line}= Get Lines Matching Regexp ${uptime_output} .*TotalSeconds.* - @{line_parts}= Split String ${total_seconds_line} : - ${total_seconds}= Set Variable ${line_parts[1]} - ${total_seconds}= Strip String ${total_seconds} - ${total_seconds}= Convert To Number ${total_seconds} - ${current_uptime}= Set Variable ${total_seconds} - + ${network_status}= Execute Command In Terminal ip link | grep -E 'enp|eno' + ${uptime_output}= Execute Command In Terminal cat /proc/uptime + ${uptime_list}= Split String ${uptime_output} ${SPACE} + ${current_uptime}= Convert To Number ${uptime_list}[0] IF ${current_uptime} >= ${device_uptime} Set Local Variable ${device_uptime} ${current_uptime} ELSE FAIL \n The device has been reset during the test! END - Should Contain ${network_status} Up + Should Contain ${network_status} UP Sleep ${STABILITY_TEST_MEASURE_INTERVAL}m ${timer}= Evaluate ${timer} + ${STABILITY_TEST_MEASURE_INTERVAL} END -STB002.001 Verify if no unexpected boot errors appear in Linux logs +Verify If No Unexpected Boot Errors Appear In Linux Logs [Documentation] This test aims to verify that there are no unexpected ... error ,essages in Linux kernel logs. - [Tags] minimal-regression - Skip If not ${PLATFORM_STABILITY_CHECKING} STB002.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} - + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User Check Unexpected Boot Errors diff --git a/dasharo-security/bios-lock.robot b/dasharo-security/bios-lock.robot index 82464455e7..52e7a9f30d 100644 --- a/dasharo-security/bios-lock.robot +++ b/dasharo-security/bios-lock.robot @@ -27,32 +27,65 @@ Suite Teardown Run Keyword *** Test Cases *** -BLS001.001 BIOS lock support (Ubuntu) +BLS001.201 BIOS lock support (Ubuntu) [Documentation] BIOS lock is a method to prevent a specific region of the ... firmware from being flashed. This test aims to verify that, ... after turning on the mechanism, the BIOS region should be correctly ... recognized during attempt to overwrite it by using flashrom tool. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} BLS001.001 not supported - Set UEFI Option LockBios ${TRUE} - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Get Flashrom From Cloud - ${out_flashrom}= Execute Command In Terminal flashrom -p internal - ${pr0}= Get Lines Matching Regexp ${out_flashrom} ^PR0: Warning: 0x.{8}-0x.{8} is read-only.$ - Should Not Be Empty ${pr0} + ... Previous IDs: BLS001.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} BLS001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} BLS001.201 not supported + BIOS Lock Support ${ENV_ID_UBUNTU} -BLS002.001 BIOS lock support deactivation (Ubuntu) +BLS002.201 BIOS lock support deactivation (Ubuntu) [Documentation] BIOS lock is a method to prevent a specific region of the ... firmware from being flashed. This test aims to verify that, after ... turning off the mechanism, the BIOS region overwriting operation is ... available again. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} BLS002.001 not supported - Set UEFI Option LockBios ${FALSE} - Boot System Or From Connected Disk ubuntu + ... Previous IDs: BLS002.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} BLS002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} BLS002.201 not supported + BIOS Lock Support Deactivation ${ENV_ID_UBUNTU} + +BLS001.202 BIOS lock support (Fedora) + [Documentation] BIOS lock is a method to prevent a specific region of the + ... firmware from being flashed. This test aims to verify that, + ... after turning on the mechanism, the BIOS region should be correctly + ... recognized during attempt to overwrite it by using flashrom tool. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} BLS001.202 not supported + BIOS Lock Support ${ENV_ID_FEDORA} + +BLS002.202 BIOS lock support deactivation (Fedora) + [Documentation] BIOS lock is a method to prevent a specific region of the + ... firmware from being flashed. This test aims to verify that, after + ... turning off the mechanism, the BIOS region overwriting operation is + ... available again. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} BLS002.202 not supported + BIOS Lock Support Deactivation ${ENV_ID_FEDORA} + + +*** Keywords *** +BIOS Lock Support + [Tags] robot:private + [Arguments] ${os_id} + ${pr0}= Get Bios Lock State ${os_id} + Should Not Be Empty ${pr0} + +BIOS Lock Support Deactivation + [Tags] robot:private + [Arguments] ${os_id} + ${pr0}= Get Bios Lock State ${os_id} + Should Not Be Empty ${pr0} + +Get Bios Lock State + [Tags] robot:private + [Arguments] ${os_id} + Set UEFI Option LockBios ${TRUE} + Power On + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User - Get Flashrom From Cloud ${out_flashrom}= Execute Command In Terminal flashrom -p internal ${pr0}= Get Lines Matching Regexp ${out_flashrom} ^PR0: Warning: 0x.{8}-0x.{8} is read-only.$ - Should Be Empty ${pr0} + Exit From Root User + RETURN ${pr0} diff --git a/dasharo-security/camera-switch.robot b/dasharo-security/camera-switch.robot index aa02a8ccb4..1609e39e59 100644 --- a/dasharo-security/camera-switch.robot +++ b/dasharo-security/camera-switch.robot @@ -27,23 +27,53 @@ Suite Teardown Run Keyword *** Test Cases *** -CHS001.001 Check camera enablement +CHS001.201 Check camera enablement [Documentation] This test makes sure that camera enable option ... is set, hence the camera works properly + ... Previous IDs: CHS001.001 + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CHS001.201 not supported Set UEFI Option EnableCamera ${TRUE} + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Detect Or Install Package usbutils ${webcam}= Check The Presence Of Webcam Should Be True ${webcam} -CHS002.001 Check camera disablement +CHS002.201 Check camera disablement [Documentation] This test makes sure that camera enable option ... is not set, hence the camera is not detected by operating system + ... Previous IDs: CHS002.001 + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} CHS002.201 not supported Set UEFI Option EnableCamera ${FALSE} + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + ${webcam}= Check The Presence Of Webcam + Should Not Be True ${webcam} + +CHS001.202 Check camera enablement + [Documentation] This test makes sure that camera enable option + ... is set, hence the camera works properly + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CHS001.202 not supported + Set UEFI Option EnableCamera ${TRUE} + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + ${webcam}= Check The Presence Of Webcam + Should Be True ${webcam} + +CHS002.202 Check camera disablement + [Documentation] This test makes sure that camera enable option + ... is not set, hence the camera is not detected by operating system + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} CHS002.202 not supported + Set UEFI Option EnableCamera ${FALSE} + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} Login To Linux Switch To Root User - Detect Or Install Package usbutils ${webcam}= Check The Presence Of Webcam Should Not Be True ${webcam} diff --git a/dasharo-security/early-boot-dma-protection.robot b/dasharo-security/early-boot-dma-protection.robot index 4190a2ad3d..de0fe32db5 100644 --- a/dasharo-security/early-boot-dma-protection.robot +++ b/dasharo-security/early-boot-dma-protection.robot @@ -39,10 +39,9 @@ EDP001.001 Enable early Boot DMA Protection support ${security_menu}= Enter Dasharo Submenu ${dasharo_menu} Dasharo Security Options Set Option State ${security_menu} Early boot DMA Protection ${TRUE} Save Changes And Reset - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Get Cbmem From Cloud ${cbmem_output}= Execute Command In Terminal cbmem -1 | grep --color=never DMA Should Contain ${cbmem_output} Successfully enabled VT-d PMR DMA protection @@ -58,9 +57,8 @@ EDP002.001 Disable early Boot DMA Protection support ${security_menu}= Enter Dasharo Submenu ${dasharo_menu} Dasharo Security Options Set Option State ${security_menu} Early boot DMA Protection ${FALSE} Save Changes And Reset - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Get Cbmem From Cloud ${cbmem_output}= Execute Command In Terminal cbmem -1 | grep --color=never DMA Should Not Contain ${cbmem_output} Successfully enabled VT-d PMR DMA protection diff --git a/dasharo-security/me-neuter-static.robot b/dasharo-security/me-neuter-static.robot index b047b8200d..d996f2cc96 100644 --- a/dasharo-security/me-neuter-static.robot +++ b/dasharo-security/me-neuter-static.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -28,9 +27,9 @@ Suite Teardown Run Keyword *** Test Cases *** MES001.001 Check if ME is statically disabled [Documentation] Check whether the Intel ME is disabled at build time. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MNE002.001 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MES001.001 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${result}= Check ME Out diff --git a/dasharo-security/me-neuter.robot b/dasharo-security/me-neuter.robot index 0dd2c7ac6c..256bbe6f44 100644 --- a/dasharo-security/me-neuter.robot +++ b/dasharo-security/me-neuter.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -39,23 +38,85 @@ MNE001.001 Intel ME mode option is available and has the correct default state ${state}= Get Option State ${me_menu} Intel ME mode Should Be Equal ${state} Enabled -MNE002.001 Intel ME mode option Enabled works correctly (Ubuntu) +MNE002.201 Intel ME mode option Enabled works correctly (Ubuntu) [Documentation] Check whether the Intel ME mode option in state Enabled ... works correctly. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MNE002.001 not supported + ... Previous IDs: MNE002.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MNE002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} MNE002.201 not supported + Intel ME Mode Option Enabled Works Correctly ${ENV_ID_UBUNTU} + +MNE003.201 Intel ME mode option Disabled (Soft) works correctly (Ubuntu) + [Documentation] Check whether the Intel ME mode option in state + ... Disabled (Soft) works correctly + ... Previous IDs: MNE003.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MNE003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} MNE003.201 not supported + Intel ME Mode Option Disabled (Soft) Works Correctly ${ENV_ID_UBUNTU} + +MNE004.201 Intel ME mode option Disabled (HAP) works correctly (Ubuntu) + [Documentation] Check whether the Intel ME mode option in state + ... Disabled (HAP) works correctly. + ... Previous IDs: MNE004.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MNE004.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} MNE004.201 not supported + Intel ME Mode Option Disabled (HAP) Works Correctly ${ENV_ID_UBUNTU} + +MNE006.201 Check Intel ME version (Ubuntu) + [Documentation] This test aims to verify that the Intel ME version might + ... be read on the Operating System level. The read version should be + ... the same as in the release notes. + ... Previous IDs: MNE006.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MNE006.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} MNE004.201 not supported + Check Intel ME Version ${ENV_ID_UBUNTU} + +MNE002.202 Intel ME mode option Enabled works correctly (Fedora) + [Documentation] Check whether the Intel ME mode option in state Enabled + ... works correctly. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} MNE002.202 not supported + Intel ME Mode Option Enabled Works Correctly ${ENV_ID_FEDORA} + +MNE003.202 Intel ME mode option Disabled (Soft) works correctly (Fedora) + [Documentation] Check whether the Intel ME mode option in state + ... Disabled (Soft) works correctly + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} MNE003.202 not supported + Intel ME Mode Option Disabled (Soft) Works Correctly ${ENV_ID_FEDORA} + +MNE004.202 Intel ME mode option Disabled (HAP) works correctly (Fedora) + [Documentation] Check whether the Intel ME mode option in state + ... Disabled (HAP) works correctly. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} MNE004.202 not supported + Intel ME Mode Option Disabled (HAP) Works Correctly ${ENV_ID_FEDORA} + +MNE006.202 Check Intel ME version (Fedora) + [Documentation] This test aims to verify that the Intel ME version might + ... be read on the Operating System level. The read version should be + ... the same as in the release notes. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} MNE004.202 not supported + Check Intel ME Version ${ENV_ID_FEDORA} + + +*** Keywords *** +Intel ME Mode Option Enabled Works Correctly + [Documentation] Check whether the Intel ME mode option in state Enabled + ... works correctly. + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} Set UEFI Option MeMode Enabled - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${result}= Check ME Out Should Be Equal As Strings ${result} Enabled -MNE003.001 Intel ME mode option Disabled (Soft) works correctly (Ubuntu) +Intel ME Mode Option Disabled (Soft) Works Correctly [Documentation] Check whether the Intel ME mode option in state ... Disabled (Soft) works correctly - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MNE003.001 not supported + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} Set UEFI Option MeMode Disabled (Soft) - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${result}= Check ME Out @@ -65,12 +126,13 @@ MNE003.001 Intel ME mode option Disabled (Soft) works correctly (Ubuntu) Should Be Equal As Strings ${result} Disabled (Soft) END -MNE004.001 Intel ME mode option Disabled (HAP) works correctly (Ubuntu) +Intel ME Mode Option Disabled (HAP) Works Correctly [Documentation] Check whether the Intel ME mode option in state ... Disabled (HAP) works correctly. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MNE004.001 not supported + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} Set UEFI Option MeMode Disabled (HAP) - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${result}= Check ME Out @@ -80,14 +142,15 @@ MNE004.001 Intel ME mode option Disabled (HAP) works correctly (Ubuntu) Should Be Equal As Strings ${result} Disabled (HAP) END -MNE006.001 Check Intel ME version (Ubuntu) +Check Intel ME Version [Documentation] This test aims to verify that the Intel ME version might ... be read on the Operating System level. The read version should be ... the same as in the release notes. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} MNE006.001 not supported + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} Set UEFI Option MeMode Enabled Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${out}= Execute Command In Terminal cat /sys/class/mei/mei0/fw_ver diff --git a/dasharo-security/measured-boot.robot b/dasharo-security/measured-boot.robot index 462cf9c8cf..0f3332be58 100644 --- a/dasharo-security/measured-boot.robot +++ b/dasharo-security/measured-boot.robot @@ -10,8 +10,8 @@ Library RequestsLibrary # stuff in all test cases Resource ../variables.robot Resource ../keywords.robot -Resource ../keys.robot Resource ../lib/tpm.robot +Resource ../keys.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -27,20 +27,34 @@ ${PCRS_TO_CHECK}= [0-79]|14 *** Test Cases *** -MBO001.001 Measured Boot support +MBO001.201 Measured Boot support (Ubuntu) [Documentation] Check whether Measured Boot is functional and ... measurements are stored into the TPM. - ${pcr_hashes}= Get PCRs State From Linux [0-3] - FOR ${pcr_hash} IN @{pcr_hashes} - ${pcr} ${hash}= Split String ${pcr_hash} separator=: - ${unique_values_str}= Evaluate ''.join(set("${hash}")) - Should Not Be Equal ${unique_values_str} F ignore_case=${TRUE} - Should Not Be Equal ${unique_values_str} 0 ignore_case=${TRUE} - END + ... Previous IDs: MBO001.001 + Power On + Boot Linux And Login To Root ${ENV_ID_UBUNTU} + Linux Measured Boot Support -MBO002.001 Check if event log PCRs match actual values +MBO002.201 Check if event log PCRs match actual values (Ubuntu) [Documentation] Check whether PCRs values calculated from event log match ... actual PCRs values + ... Previous IDs: MBO002.001 + Power On + Boot Linux And Login To Root ${ENV_ID_UBUNTU} + Validate PCRs Against Event Log /sys/kernel/security/tpm0/binary_bios_measurements + +MBO001.202 Measured Boot support (Fedora) + [Documentation] Check whether Measured Boot is functional and + ... measurements are stored into the TPM. + Power On + Boot Linux And Login To Root ${ENV_ID_FEDORA} + Linux Measured Boot Support + +MBO002.202 Check if event log PCRs match actual values (Fedora) + [Documentation] Check whether PCRs values calculated from event log match + ... actual PCRs values + Power On + Boot Linux And Login To Root ${ENV_ID_FEDORA} Validate PCRs Against Event Log /sys/kernel/security/tpm0/binary_bios_measurements MBO003.001 Changing Secure Boot certificate changes only PCR-7 @@ -53,7 +67,7 @@ MBO003.001 Changing Secure Boot certificate changes only PCR-7 Disable Secure Boot ${sb_menu} Save Changes And Reset - Boot Ubuntu And Login To Root + Boot Linux And Login To Root ${default_hashes}= Get PCRs State From Linux ${PCRS_TO_CHECK} Power On @@ -67,7 +81,7 @@ MBO003.001 Changing Secure Boot certificate changes only PCR-7 Sleep 1s Save Changes And Reset - Boot Ubuntu And Login To Root + Boot Linux And Login To Root FOR ${pcr_hash} IN @{default_hashes} ${pcr} ${hash}= Split String ${pcr_hash} separator=: ${new_hash}= Execute Command In Terminal cat ${pcr} @@ -84,7 +98,7 @@ MBO004.001 Changing Dasharo network boot settings changes only PCR-1 Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} Tests in firmware are not supported Skip If not ${DASHARO_NETWORKING_MENU_SUPPORT} Tests in Dasharo Networking Menu are not supported Power On - Boot Ubuntu And Login To Root + Boot Linux And Login To Root @{hashes_before_changes}= Get PCRs State From Linux ${PCRS_TO_CHECK} Power On @@ -96,7 +110,7 @@ MBO004.001 Changing Dasharo network boot settings changes only PCR-1 Set Option State ${menu} Enable network boot ${new_network_boot_state} Save Changes And Reset - Boot Ubuntu And Login To Root + Boot Linux And Login To Root FOR ${pcr_hash} IN @{hashes_before_changes} ${pcr} ${hash}= Split String ${pcr_hash} separator=: ${new_hash}= Execute Command In Terminal cat ${pcr} @@ -113,7 +127,7 @@ MBO004.002 Changing Dasharo security settings changes only PCR-1 Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} Tests in firmware are not supported Skip If not ${SMM_WRITE_PROTECTION_SUPPORT} Tests in Dasharo Security Menu are not supported Power On - Boot Ubuntu And Login To Root + Boot Linux And Login To Root @{hashes_before_changes}= Get PCRs State From Linux ${PCRS_TO_CHECK} Power On @@ -125,7 +139,7 @@ MBO004.002 Changing Dasharo security settings changes only PCR-1 Set Option State ${menu} Enable SMM BIOS write ${new_smm_protection_state} Save Changes And Reset - Boot Ubuntu And Login To Root + Boot Linux And Login To Root FOR ${pcr_hash} IN @{hashes_before_changes} ${pcr} ${hash}= Split String ${pcr_hash} separator=: ${new_hash}= Execute Command In Terminal cat ${pcr} @@ -142,7 +156,7 @@ MBO004.003 Changing Dasharo APU settings changes only PCR-1 Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} Tests in firmware are not supported Skip If not ${APU_CONFIGURATION_MENU_SUPPORT} Tests in Dasharo APU Menu are not supported Power On - Boot Ubuntu And Login To Root + Boot Linux And Login To Root @{hashes_before_changes}= Get PCRs State From Linux ${PCRS_TO_CHECK} Power On @@ -153,7 +167,7 @@ MBO004.003 Changing Dasharo APU settings changes only PCR-1 Set Option State ${menu} Core Performance Boost ${new_core_boost_state} Save Changes And Reset - Boot Ubuntu And Login To Root + Boot Linux And Login To Root FOR ${pcr_hash} IN @{hashes_before_changes} ${pcr} ${hash}= Split String ${pcr_hash} separator=: ${new_hash}= Execute Command In Terminal cat ${pcr} @@ -174,12 +188,12 @@ MBO005.001 Flashing firmware and reset to defaults results in same measurement Flash Firmware ${FW_FILE} Power Cycle On - Boot Ubuntu And Login To Root + Boot Linux And Login To Root ${default_pcr_state}= Get PCRs State From Linux ${PCRS_TO_CHECK} Restore SB And Tianocore Defaults And Reset - Boot Ubuntu And Login To Root + Boot Linux And Login To Root ${reset_pcr_state}= Get PCRs State From Linux ${PCRS_TO_CHECK} Lists Should Be Equal ${default_pcr_state} ${reset_pcr_state} @@ -192,7 +206,7 @@ MBO005.002 Multiple reset to defaults results in identical measurements Restore SB And Tianocore Defaults And Reset - Boot Ubuntu And Login To Root + Boot Linux And Login To Root FOR ${pcr_hash} IN @{default_hashes} ${pcr} ${hash}= Split String ${pcr_hash} separator=: ${new_hash}= Execute Command In Terminal cat ${pcr} @@ -227,7 +241,7 @@ MBO006.001 Identical configuration results in identical measurements Set Option State ${menu} ${option} ${option_state} Save Changes And Reset - Boot Ubuntu And Login To Root + Boot Linux And Login To Root FOR ${pcr_hash} IN @{default_hashes} ${pcr} ${hash}= Split String ${pcr_hash} separator=: ${new_hash}= Execute Command In Terminal cat ${pcr} @@ -261,7 +275,7 @@ MBO006.002 Identical configuration after reset results in identical measurements Reset To Defaults Tianocore Save Changes And Reset - Boot Ubuntu And Login To Root + Boot Linux And Login To Root FOR ${pcr_hash} IN @{default_hashes} ${pcr} ${hash}= Split String ${pcr_hash} separator=: ${new_hash}= Execute Command In Terminal cat ${pcr} @@ -275,34 +289,53 @@ Get Default PCRs State ... configuration to default and then returns PCRs values. Next call ... return values measured in first call (remembers value in whole ... Test Suite). + [Tags] robot:private ${default_pcr_state}= Get Variable Value $DEFAULT_PCR_STATE_SUITE IF ${default_pcr_state} is ${NONE} Restore SB And Tianocore Defaults And Reset - Boot Ubuntu And Login To Root + Boot Linux And Login To Root ${default_pcr_state}= Get PCRs State From Linux ${PCRS_TO_CHECK} Set Suite Variable $DEFAULT_PCR_STATE_SUITE ${default_pcr_state} END RETURN ${default_pcr_state} -Boot Ubuntu And Login To Root +Boot Linux And Login To Root [Documentation] Boots Ubuntu and logins as root - Boot System Or From Connected Disk ubuntu + [Tags] robot:private + [Arguments] ${os_id}=${DEFAULT_BOOT_OS_ID} + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User Restore SB And Tianocore Defaults And Reset [Documentation] Restores Secure Boot and Tianocore to defaults and then ... restarts + [Tags] robot:private Restore Secure Boot Defaults Reset To Defaults Tianocore Save Changes And Reset Measured Boot Suite Setup + [Tags] robot:private Prepare Test Suite + Skip If ${TPM_SUPPORTED_VERSION} == None Measured boot tests require TPM Skip If not ${MEASURED_BOOT_SUPPORT} Measured boot is not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} Tests in Ubuntu are not supported + Skip If not '${DEFAULT_BOOT_OS_ID}' in ${TESTED_LINUX_DISTROS} Tests in Linux are not supported Power On - Boot Ubuntu And Login To Root - Detect Or Install Package tpm2-tools + Boot Linux And Login To Root + Verify Presence Of TPM Via Sysfs + # Disable service that adds dbx certificates which could interfere with tests Execute Command In Terminal systemctl disable secureboot-db.service + +Linux Measured Boot Support + [Documentation] Check whether Measured Boot is functional and + ... measurements are stored into the TPM. + [Tags] robot:private + ${pcr_hashes}= Get PCRs State From Linux [0-3] + FOR ${pcr_hash} IN @{pcr_hashes} + ${pcr} ${hash}= Split String ${pcr_hash} separator=: + ${unique_values_str}= Evaluate ''.join(set("${hash}")) + Should Not Be Equal ${unique_values_str} F ignore_case=${TRUE} + Should Not Be Equal ${unique_values_str} 0 ignore_case=${TRUE} + END diff --git a/dasharo-security/secure-boot.robot b/dasharo-security/secure-boot.robot index 640de71728..c8bd6235c0 100644 --- a/dasharo-security/secure-boot.robot +++ b/dasharo-security/secure-boot.robot @@ -25,6 +25,8 @@ Suite Setup Run Keywords ... AND ... Skip If not ${SECURE_BOOT_SUPPORT} Secure Boot is not supported ... AND +... Mount USB Disk Image ${TEST_DATA_DIR}/secure-boot/sb_test_data.img file TRUE +... AND ... Restore Secure Boot Defaults Suite Teardown Run Keywords ... Run Keyword If ${SECURE_BOOT_SUPPORT} and ${TESTS_IN_FIRMWARE_SUPPORT} Set Secure Boot State To Disabled @@ -68,7 +70,7 @@ SBO002.001 UEFI Secure Boot (Ubuntu) Tianocore Reset System # 2. Check SB state in OS - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${sb_status}= Check Secure Boot In Linux @@ -83,7 +85,7 @@ SBO002.001 UEFI Secure Boot (Ubuntu) Tianocore Reset System # 4. Check SB state in OS - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${sb_status}= Check Secure Boot In Linux @@ -126,12 +128,11 @@ SBO002.002 UEFI Secure Boot (Windows) # keywords and menu layout changes. # -SBO003.001 Attempt to boot file with the correct key from Shell (firmware) - [Documentation] This test verifies that Secure Boot allows booting - ... a signed file with a correct key. - Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} SBO003.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SBO003.001 not supported - Download ISO And Mount As USB ${DL_CACHE_DIR}/${GOOD_KEYS_NAME} ${GOOD_KEYS_URL} ${GOOD_KEYS_SHA256} +SBO003.001 Attempt to boot file with the correct key from Boot Maintenance Manager (firmware) + [Documentation] This test verifies that Secure Boot allows booting a + ... signed file with a correct key. + Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} SBO004.001 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SBO004.001 not supported Power On ${sb_menu}= Enter Secure Boot Menu And Return Construction Enable Secure Boot ${sb_menu} @@ -141,22 +142,22 @@ SBO003.001 Attempt to boot file with the correct key from Shell (firmware) ${sb_menu}= Get Secure Boot Menu Construction ${advanced_menu}= Enter Advanced Secure Boot Keys Management And Return Construction ${sb_menu} Enter Enroll DB Signature Using File In DB Options ${advanced_menu} - Enter Volume In File Explorer GOOD_KEYS - Select File In File Explorer DB.cer + Enter Volume In File Explorer BAD_INFLUE + Select File In File Explorer cert_good.der # Save Changes And Reset # Changes to Secure Boot menu take action immediately, so we can just reset Tianocore Reset System - Enter UEFI Shell - ${out}= Execute File In UEFI Shell hello-valid-keys.efi - Should Contain ${out} Hello, world! + Enter Boot From File + Enter Volume In File Explorer BAD_INFLUE + Execute File In File Explorer hello-dasharo-signed-good.efi + Read From Terminal Until ${HELLO_EFI_STRING} -SBO004.001 Attempt to boot file without the key from Shell (firmware) +SBO004.001 Attempt to boot file without the key from Boot Maintenance Manager (firmware) [Documentation] This test verifies that Secure Boot blocks booting a file ... without a key. Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} SBO004.001 not supported Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SBO004.001 not supported - Download ISO And Mount As USB ${DL_CACHE_DIR}/${NOT_SIGNED_NAME} ${NOT_SIGNED_URL} ${NOT_SIGNED_SHA256} # 1. Make sure that SB is enabled Power On ${sb_menu}= Enter Secure Boot Menu And Return Construction @@ -164,16 +165,17 @@ SBO004.001 Attempt to boot file without the key from Shell (firmware) # Save Changes And Reset # Changes to Secure Boot menu takes action immediately, so we can just reset Tianocore Reset System - Enter UEFI Shell - ${out}= Execute File In UEFI Shell hello.efi - Should Contain ${out} Access Denied -SBO005.001 Attempt to boot file with the wrong-signed key from Shell (firmware) + Enter Boot From File + Enter Volume In File Explorer BAD_INFLUE + Execute File In File Explorer hello-dasharo.efi + Read From Terminal Until ${SB_ERROR_STRING} + +SBO005.001 Attempt to boot file with the wrong-signed key from Boot Maintenance Manager (firmware) [Documentation] This test verifies that Secure Boot disallows booting ... a signed file with a wrong-signed key. Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} SBO005.001 not supported Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SBO005.001 not supported - Download ISO And Mount As USB ${DL_CACHE_DIR}/${BAD_KEYS_NAME} ${BAD_KEYS_URL} ${BAD_KEYS_SHA256} # 1. Make sure that SB is enabled Power On ${sb_menu}= Enter Secure Boot Menu And Return Construction @@ -181,9 +183,11 @@ SBO005.001 Attempt to boot file with the wrong-signed key from Shell (firmware) # Save Changes And Reset # Changes to Secure Boot menu takes action immediately, so we can just reset Tianocore Reset System - Enter UEFI Shell - ${out}= Execute File In UEFI Shell hello-bad-keys.efi - Should Contain ${out} Access Denied + + Enter Boot From File + Enter Volume In File Explorer BAD_INFLUE + Execute File In File Explorer hello-dasharo-signed-bad.efi + Read From Terminal Until ${SB_ERROR_STRING} SBO006.001 Reset Secure Boot Keys option availability (firmware) [Documentation] This test verifies that the Reset Secure Boot Keys @@ -206,7 +210,6 @@ SBO007.001 Attempt to boot the file after restoring keys to default (firmware) ... removes any custom added certificates. Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} SBO007.001 not supported Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SBO007.001 not supported - Download ISO And Mount As USB ${DL_CACHE_DIR}/${GOOD_KEYS_NAME} ${GOOD_KEYS_URL} ${GOOD_KEYS_SHA256} Power On ${sb_menu}= Enter Secure Boot Menu And Return Construction Enable Secure Boot ${sb_menu} @@ -217,15 +220,16 @@ SBO007.001 Attempt to boot the file after restoring keys to default (firmware) ${sb_menu}= Get Secure Boot Menu Construction ${advanced_menu}= Enter Advanced Secure Boot Keys Management And Return Construction ${sb_menu} Enter Enroll DB Signature Using File In DB Options ${advanced_menu} - Enter Volume In File Explorer GOOD_KEYS - Select File In File Explorer DB.cer + Enter Volume In File Explorer BAD_INFLUE + Select File In File Explorer cert_good.der # Save Changes And Reset # Changes to Secure Boot menu take action immediately, so we can just reset Tianocore Reset System - Enter UEFI Shell - ${out}= Execute File In UEFI Shell hello-valid-keys.efi - Should Contain ${out} Hello, world! + Enter Boot From File + Enter Volume In File Explorer BAD_INFLUE + Execute File In File Explorer hello-dasharo-signed-good.efi + Read From Terminal Until ${HELLO_EFI_STRING} Power On ${sb_menu}= Enter Secure Boot Menu And Return Construction @@ -235,16 +239,16 @@ SBO007.001 Attempt to boot the file after restoring keys to default (firmware) # Changes to Secure Boot menu take action immediately, so we can just reset Tianocore Reset System - Enter UEFI Shell - ${out}= Execute File In UEFI Shell hello-valid-keys.efi - Should Contain ${out} Access Denied + Enter Boot From File + Enter Volume In File Explorer BAD_INFLUE + Execute File In File Explorer hello-dasharo-signed-good.efi + Read From Terminal Until ${SB_ERROR_STRING} SBO008.001 Attempt to enroll the key in the incorrect format (firmware) [Documentation] This test verifies that it is impossible to load ... a certificate in the wrong file format. Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} SBO008.001 not supported Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SBO008.001 not supported - Download ISO And Mount As USB ${DL_CACHE_DIR}/${BAD_FORMAT_NAME} ${BAD_FORMAT_URL} ${BAD_FORMAT_SHA256} # 1. Make sure that SB is enabled Power On ${sb_menu}= Enter Secure Boot Menu And Return Construction @@ -254,35 +258,16 @@ SBO008.001 Attempt to enroll the key in the incorrect format (firmware) ${sb_menu}= Get Secure Boot Menu Construction ${advanced_menu}= Enter Advanced Secure Boot Keys Management And Return Construction ${sb_menu} Enter Enroll DB Signature Using File In DB Options ${advanced_menu} - Enter Volume In File Explorer BAD_FORMAT - Select File In File Explorer DB.txt + Enter Volume In File Explorer BAD_INFLUE + Select File In File Explorer cert_fake.der Read From Terminal Until ERROR: Unsupported file type! *** Keywords *** Set Secure Boot State To Disabled + [Tags] robot:private Power On ${sb_menu}= Enter Secure Boot Menu And Return Construction Disable Secure Boot ${sb_menu} # Changes to Secure Boot menu take action immediately, so we can just reset Tianocore Reset System - -Prepare Test Files - IF "${MANUFACTURER}" == "QEMU" - Download To Host Cache - ... ${GOOD_KEYS_NAME} - ... ${GOOD_KEYS_URL} - ... ${GOOD_KEYS_SHA256} - Download To Host Cache - ... ${NOT_SIGNED_NAME} - ... ${NOT_SIGNED_URL} - ... ${NOT_SIGNED_SHA256} - Download To Host Cache - ... ${BAD_KEYS_NAME} - ... ${BAD_KEYS_URL} - ... ${BAD_KEYS_SHA256} - Download To Host Cache - ... ${BAD_FORMAT_NAME} - ... ${BAD_FORMAT_URL} - ... ${BAD_FORMAT_SHA256} - END diff --git a/dasharo-security/smm-bios-write-protection.robot b/dasharo-security/smm-bios-write-protection.robot index d7ef39a3b6..f79109fb9e 100644 --- a/dasharo-security/smm-bios-write-protection.robot +++ b/dasharo-security/smm-bios-write-protection.robot @@ -37,17 +37,17 @@ SMM001.001 SMM BIOS write protection enabling (Ubuntu) ... during the attempt of firmware flashing information about the ... SMM protection is returned. Skip If not ${TESTS_IN_UBUNTU_SUPPORT} - Skip If "${OPTIONS_LIB}" == "dcu" + Skip If "${OPTIONS_LIB}" == "options-lib_dcu" Power On ${setup_menu}= Enter Setup Menu Tianocore And Return Construction ${dasharo_menu}= Enter Dasharo System Features ${setup_menu} ${network_menu}= Enter Dasharo Submenu ${dasharo_menu} Dasharo Security Options Set Option State ${network_menu} Enable SMM BIOS write ${TRUE} Save Changes And Reset - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Get Flashrom From Cloud + ${out_flashrom}= Execute Command In Terminal flashrom -p internal Should Contain ${out_flashrom} SMM protection is enabled @@ -61,17 +61,16 @@ SMM002.001 SMM BIOS write protection disabling (Ubuntu) ... during the attempt of firmware flashing information about the ... SMM protection is returned. Skip If not ${TESTS_IN_UBUNTU_SUPPORT} - Skip If "${OPTIONS_LIB}" == "dcu" + Skip If "${OPTIONS_LIB}" == "options-lib_dcu" Power On ${setup_menu}= Enter Setup Menu Tianocore And Return Construction ${dasharo_menu}= Enter Dasharo System Features ${setup_menu} ${network_menu}= Enter Dasharo Submenu ${dasharo_menu} Dasharo Security Options Set Option State ${network_menu} Enable SMM BIOS write ${FALSE} Save Changes And Reset - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Get Flashrom From Cloud ${out_flashrom}= Execute Command In Terminal flashrom -p internal Should Not Contain ${out_flashrom} SMM protection is enabled Should Not Be Empty ${out_flashrom} diff --git a/dasharo-security/tpm-support.robot b/dasharo-security/tpm-support.robot index 67cb70b756..be0b305264 100644 --- a/dasharo-security/tpm-support.robot +++ b/dasharo-security/tpm-support.robot @@ -10,6 +10,8 @@ Library RequestsLibrary # stuff in all test cases Resource ../variables.robot Resource ../keywords.robot +Resource ../lib/tpm.robot +Resource ../lib/tpm2.robot Resource ../keys.robot # TODO: @@ -19,38 +21,106 @@ Resource ../keys.robot Suite Setup Run Keywords ... Prepare Test Suite ... AND -... Skip If not ${TPM_SUPPORT} TPM tests not supported +... Skip If ${TPM_SUPPORTED_VERSION} == None TPM tests not supported Suite Teardown Run Keyword ... Log Out And Close Connection *** Test Cases *** TPM001.001 TPM Support (firmware) - [Documentation] This test aims to verify that the TPM is initialized - ... correctly and the PCRs can be accessed from the firmware. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM001.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Get Cbmem From Cloud - ${out}= Execute Command In Terminal cbmem -L - Should Contain Any ${out} TPM2 log TCPA log + [Documentation] This test aims to verify that the TPM is initialized, + ... detected and logged correctly by FW via cbmem, directly in Ubuntu + Skip If '${DEFAULT_BOOT_OS_ID}' not in ${TESTED_LINUX_DISTROS} TPM001.001 not supported + Prepare TPM Test On Linux + ${result}= Run Keyword And Ignore Error Validate Expected TPM Chip Via Cbmem Console Log + IF '${result}[0]' == 'FAIL' + Log To Console \nChip detection failed, attempting cbmem log detection\n + Validate Expected TPM Version Via Cbmem TPM Eventlog + END + +TPM002.001 Verify TPM version (firmware) + [Documentation] This test aims to verify that the TPM version is + ... correctly recognized by the firmware. + Skip If '${DEFAULT_BOOT_OS_ID}' not in ${TESTED_LINUX_DISTROS} TPM002.001 not supported + Prepare TPM Test On Linux + ${result}= Run Keyword And Ignore Error Validate Expected TPM Chip Via Cbmem Console Log + IF '${result}[0]' == 'FAIL' + Log To Console \nChip detection failed, attempting cbmem log detection\n + Validate Expected TPM Version Via Cbmem TPM Eventlog + END -TPM001.002 TPM Support (Ubuntu) +TPM003.001 Check TPM Physical Presence Interface (firmware) + [Documentation] This test aims to verify that the TPM Physical Presence + ... Interface is supported by the firmware and the log can be detected + ... with cbmem within Ubuntu + Skip If '${DEFAULT_BOOT_OS_ID}' not in ${TESTED_LINUX_DISTROS} TPM003.001 not supported + Prepare TPM Test On Linux + ${out}= Execute Command In Terminal cbmem -1 | grep PPI + Should Contain ${out} PPI: Pending OS request + Should Contain ${out} PPI: OS response + +# TPM003.004 Change active PCR banks with TPM PPI (firmware) +# [Documentation] This test aims to verify that the TPM Physical Presence +# ... Interface is working properly in the firmware by changing active TPM PCR banks. +# Skip If not ${TPM_SUPPORTED_VERSION} == None TPM003.004 not supported +# Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM003.004 not supported +# TODO: https://docs.dasharo.com/unified-test-documentation/dasharo-security/200-tpm-support/#tpm003004-change-active-pcr-banks-with-tpm-ppi-firmware + +TPM001.201 TPM Support (Ubuntu) [Documentation] Check whether the TPM is initialized correctly and the ... PCRs can be accessed from the Linux OS. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM001.002 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Validate Any TPM + ... Previous IDs: TPM001.002 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} + Prepare TPM Test On Linux ${ENV_ID_UBUNTU} + Verify Presence Of Any PCRs Via Sysfs -TPM001.003 TPM Support (Windows) +TPM002.201 Verify TPM version (Ubuntu) + [Documentation] This test aims to verify that the TPM version is + ... correctly recognized by the operating system. + ... Previous IDs: TPM002.002 + [Tags] minimal-regression + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM002.101 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} TPM002.201 not supported + Prepare TPM Test On Linux ${ENV_ID_UBUNTU} + Validate Expected TPM Version Via Sysfs + +TPM003.201 Check TPM Physical Presence Interface (Ubuntu) + [Documentation] This test aims to verify that the TPM Physical Presence + ... Interface is correctly recognized by the operating system. + ... Previous IDs: TPM003.002 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} TPM003.201 not supported + Prepare TPM Test On Linux ${ENV_ID_UBUNTU} + Check TPM Physical Presence Interface + +TPM001.202 TPM Support (Fedora) + [Documentation] Check whether the TPM is initialized correctly and the + ... PCRs can be accessed from the Linux OS. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} TPM001.202 not supported + Prepare TPM Test On Linux ${ENV_ID_FEDORA} + Verify Presence Of Any PCRs Via Sysfs + +TPM002.202 Verify TPM version (Fedora) + [Documentation] This test aims to verify that the TPM version is + ... correctly recognized by the operating system. + [Tags] minimal-regression + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} TPM002.202 not supported + Prepare TPM Test On Linux ${ENV_ID_FEDORA} + Validate Expected TPM Version Via Sysfs + +TPM003.202 Check TPM Physical Presence Interface (Fedora) + [Documentation] This test aims to verify that the TPM Physical Presence + ... Interface is correctly recognized by the operating system. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} TPM003.202 not supported + Prepare TPM Test On Linux ${ENV_ID_FEDORA} + Check TPM Physical Presence Interface + +TPM001.301 TPM Support (Windows) [Documentation] Check whether the TPM is initialized correctly and the ... PCRs can be accessed from Windows. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} TPM001.003 not supported + ... Previous IDs: TPM001.003 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} TPM001.301 not supported Power On Login To Windows ${out}= Execute Command In Terminal get-tpm @@ -61,95 +131,133 @@ TPM001.003 TPM Support (Windows) Should Contain ${tpm_ready} True Should Contain ${tpm_enabled} True -TPM002.001 Verify TPM version (firmware) - [Documentation] This test aims to verify that the TPM version is - ... correctly recognized by the firmware. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM002.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Get Cbmem From Cloud - ${out}= Execute Command In Terminal cbmem -L - Should Contain Any ${out} TPM2 log TCPA log - -TPM002.002 Verify TPM version (Ubuntu) +TPM002.301 Verify TPM version (Windows) [Documentation] This test aims to verify that the TPM version is ... correctly recognized by the operating system. - [Tags] minimal-regression - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM002.002 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out}= Execute Command In Terminal cat /sys/class/tpm/tpm0/tpm_version_major - # TPM 2.0 and 1.2 - Should Contain Any ${out} 1 2 - -TPM002.003 Verify TPM version (Windows) - [Documentation] This test aims to verify that the TPM version is - ... correctly recognized by the operating system. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} TPM002.003 not supported + ... Previous IDs: TPM002.003 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} TPM002.301 not supported Power On Login To Windows ${out}= Execute Command In Terminal ... wmic /namespace:\\\\root\\cimv2\\security\\microsofttpm path win32_tpm get * /format:textvaluelist.xsl Should Contain ${out} SpecVersion=2.0 -TPM003.001 Check TPM Physical Presence Interface (firmware) - [Documentation] This test aims to verify that the TPM Physical Presence - ... Interface is supported by the firmware. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM003.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Get Cbmem From Cloud - ${out}= Execute Command In Terminal cbmem -1 | grep PPI - Should Contain ${out} PPI: Pending OS request - Should Contain ${out} PPI: OS response - -TPM003.002 Check TPM Physical Presence Interface (Ubuntu) - [Documentation] This test aims to verify that the TPM Physical Presence - ... Interface is correctly recognized by the operating system. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM003.002 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out}= Execute Command In Terminal cat /sys/class/tpm/tpm0/ppi/version - Should Contain Any ${out} 1.2 1.3 - -TPM003.003 Check TPM Physical Presence Interface (Windows) +TPM003.301 Check TPM Physical Presence Interface (Windows) [Documentation] This test aims to verify that the TPM Physical Presence ... Interface is correctly recognized by the operating system. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} TPM003.003 not supported + ... Previous IDs: TPM003.003 + Skip If not ${TESTS_IN_WINDOWS_SUPPORT} TPM003.301 not supported Power On Login To Windows ${out}= Execute Command In Terminal tpmtool getdeviceinformation Should Contain ${out} PPI Version: 1.3 -# TPM003.004 Change active PCR banks with TPM PPI (firmware) -# [Documentation] This test aims to verify that the TPM Physical Presence -# ... Interface is working properly in the firmware by changing active TPM PCR banks. -# Skip If not ${tpm_support} TPM003.004 not supported -# Skip If not ${tests_in_ubuntu_support} TPM003.004 not supported -# TODO: https://docs.dasharo.com/unified-test-documentation/dasharo-security/200-tpm-support/#tpm003004-change-active-pcr-banks-with-tpm-ppi-firmware +TPM003.101 Change active PCR banks with TPM PPI (EDK2 UEFI) + [Documentation] This test aims to verify that the TPM Physical Presence + ... Interface is working properly in the firmware by changing active TPM PCR banks. + ... Previous IDs: TPM003.004 + Skip If not ${TPM_SUPPORTED_VERSION} == 2 TPM003.101 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM003.101 not supported + Power On + Enter The TCG Configuration Menu + ${sha1_position}= Search For Option Not Visible After Entering Menu PCR Bank: SHA1 + ${sha256_position}= Search For Option Not Visible After Entering Menu PCR Bank: SHA256 + Reenter Menu + # Set all PCR Banks to True + ${target_option_index}= Search For Option Not Visible After Entering Menu TPM2 Operation + Reenter Menu + Press Key N Times And Enter ${target_option_index} ${ARROW_DOWN} + ${checkpoint}= Set Variable + ... \---------------------------------------------------------------------/ + ${tpm2_operation_menu}= Get Menu Construction ${checkpoint} 0 0 + Enter Submenu From Snapshot ${tpm2_operation_menu} TCG2 LogAllDigests + Save Changes And Reset + Enter The TCG Configuration Menu + # Order of checks below cannot be changed without changing desired TPM2 Banks states + # sha1 = True, sha256 = False + Press Key N Times And Enter ${sha256_position} ${ARROW_DOWN} + Check TPM2 Banks State After FW Changes ${TRUE} ${FALSE} + Execute Reboot Command + Enter The TCG Configuration Menu + # sha1 = False, sha256 = True + Press Key N Times And Enter ${sha256_position} ${ARROW_DOWN} + Reenter Menu + Press Key N Times And Enter ${sha1_position} ${ARROW_DOWN} + Check TPM2 Banks State After FW Changes ${FALSE} ${TRUE} + Execute Reboot Command + Enter The TCG Configuration Menu + # Get to the starting state: sha1 = True, sha256 = True + Press Key N Times And Enter ${sha1_position} ${ARROW_DOWN} + Check TPM2 Banks State After FW Changes ${TRUE} ${TRUE} + +TPM004.201 Check if the ChangeEPS works (Ubuntu) + [Documentation] Check if the `TPM2 ChangeEPS` setup menu option works properly. + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Verify Presence Of TPM Via Sysfs + Detect Or Install Package tpm2-tools + Flush TPM Contexts + Execute Linux Tpm2 Tools Command tpm2_createprimary -C e -c primary_key.ctx 60 + Execute Linux Tpm2 Tools Command tpm2_create -u key.pub -r key.priv -C primary_key.ctx + Flush TPM Contexts + Execute Linux Tpm2 Tools Command tpm2_load -C primary_key.ctx -u key.pub -r key.priv -c key.ctx + Execute Linux Command echo "my secret" > secret.data + Execute Linux Tpm2 Tools Command tpm2_sign -c key.ctx -o sig.rssa secret.data + Flush TPM Contexts + Execute Linux Tpm2 Tools Command tpm2_verifysignature -c key.ctx -s sig.rssa -m secret.data + Execute Linux Command rm -f primary_key.ctx sig.rssa secret.data + Execute Reboot Command + ${setup_menu}= Enter Setup Menu Tianocore And Return Construction + ${device_manager_menu}= Enter Submenu From Snapshot And Return Construction + ... ${setup_menu} + ... Device Manager + Enter Submenu From Snapshot + ... ${device_manager_menu} + ... TCG2 Configuration + ${target_option_index}= Search For Option Not Visible After Entering Menu TPM2 Operation + Reenter Menu + Press Key N Times And Enter ${target_option_index} ${ARROW_DOWN} + ${checkpoint}= Set Variable + ... \---------------------------------------------------------------------/ + ${tpm2_operation_menu}= Get Menu Construction ${checkpoint} 0 0 + Enter Submenu From Snapshot ${tpm2_operation_menu} TPM2 ChangeEPS + Save Changes And Reset + Read From Terminal Until + ... Press F12 to clear and change identity of the TPM + Press Key N Times 1 ${F12} + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Execute Linux Tpm2 Tools Command tpm2_createprimary -C e -c primary_key.ctx 60 + Flush TPM Contexts + ${result}= Run Keyword And Ignore Error Execute Linux Tpm2 Tools Command + ... tpm2_load -C primary_key.ctx -u key.pub -r key.priv -c key.ctx + Execute Linux Command rm -f primary_key.ctx key.pub key.priv key.ctx + IF '${result}[0]' == 'FAIL' + Should Contain ${result}[1] 0x1DF + ELSE + FAIL msg=tpm2_load should result in an error.\n + END *** Keywords *** -Validate Any TPM - [Documentation] Checks for TPM major version, and validates it. - ${tpm_ver}= Execute Command In Terminal cat /sys/class/tpm/tpm0/tpm_version_major - IF '${tpm_ver}' == '2' - Detect Or Install Package tpm2-tools - ${out}= Execute Command In Terminal tpm2_pcrread - Should Contain ${out} sha1: - Should Contain ${out} sha256: - ELSE IF '${tpm_ver}' == '1' - Detect Or Install Package tpm-tools - ${out}= Execute Command In Terminal tpm_selftest - Should Contain ${out} TPM Test Results: +Prepare TPM Test On Linux + [Documentation] Run common actions required for TPM tests in Linux + [Arguments] ${env_id}=${DEFAULT_BOOT_OS_ID} + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + Verify Presence Of TPM Via Sysfs + +Check TPM Physical Presence Interface + ${out}= Execute Command In Terminal cat /sys/class/tpm/tpm0/ppi/version + IF '${TPM_SUPPORTED_VERSION}' == '1' + Should Contain ${out} 1.2 + ELSE IF '${TPM_SUPPORTED_VERSION}' == '2' + Should Contain ${out} 1.3 ELSE - Fail No valid TPM version available. + Fail Invalid expected version, please verify config END diff --git a/dasharo-security/tpm2-commands.robot b/dasharo-security/tpm2-commands.robot index e7a57260a4..f08de2c9f3 100644 --- a/dasharo-security/tpm2-commands.robot +++ b/dasharo-security/tpm2-commands.robot @@ -10,6 +10,8 @@ Library RequestsLibrary # stuff in all test cases Resource ../variables.robot Resource ../keywords.robot +Resource ../lib/tpm.robot +Resource ../lib/tpm2.robot Resource ../keys.robot # TODO: @@ -234,51 +236,3 @@ TPMCMD011.001 Performing HMAC operation on the file (Ubuntu) Execute Linux Command rm -f hmac.out hmac.key secret.data primary_key.ctx key.pub key.priv Should Contain ${out1} hmac.out Should Not Contain ${out2} hmac.out - - -*** Keywords *** -Flush TPM Contexts - Execute Linux Tpm2 Tools Command tpm2_flushcontext -t - Execute Linux Tpm2 Tools Command tpm2_flushcontext -l - Execute Linux Tpm2 Tools Command tpm2_flushcontext -s - -Check Which TPM2 Banks Are Enabled - [Documentation] Checks which Bank is enabled, returns tuple (bool, bool) - ${out}= Execute Linux Command tpm2_getcap pcrs - ${sha1}= Run Keyword And Return Status - ... Should Contain - ... ${out} - ... sha1: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 ] - ${sha256}= Run Keyword And Return Status - ... Should Contain - ... ${out} - ... sha256: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 ] - RETURN ${sha1} ${sha256} - -Check If SHA1 And SHA256 Banks Are Enabled - ${sha1} ${sha256}= Check Which TPM2 Banks Are Enabled - Should Be True ${sha1} - Should Be True ${sha256} - -TPM2 Suite Setup - Prepare Test Suite - Skip If not ${TPM_SUPPORT} TPM tests not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM commands tests supported only on Ubuntu - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Detect Or Install Package tpm2-tools - ${passed}= Run Keyword And Return Status - ... Check If SHA1 And SHA256 Banks Are Enabled - IF not ${passed} - # Restore default allocations in case any bank was disabled and reboot - Execute Linux Command tpm2_pcrallocate - Execute Reboot Command - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - END - ${sha1_enabled} ${sha256_enabled}= Check Which TPM2 Banks Are Enabled - Set Suite Variable $SHA1_ENABLED ${sha1_enabled} - Set Suite Variable $SHA256_ENABLED ${sha256_enabled} diff --git a/dasharo-security/usb-stack.robot b/dasharo-security/usb-stack.robot index d46ed3c103..1b9a92fb68 100644 --- a/dasharo-security/usb-stack.robot +++ b/dasharo-security/usb-stack.robot @@ -31,11 +31,11 @@ USS001.001 Enable USB stack (firmware) ... the firmware level. Skip If not ${USB_STACK_SUPPORT} USS001.001 not supported Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} USS001.001 not supported - Skip If "${OPTIONS_LIB}" == "dcu" + Skip If "${OPTIONS_LIB}" == "options-lib_dcu" Set UEFI Option UsbDriverStack ${TRUE} Set UEFI Option UsbMassStorage ${TRUE} ${boot_menu}= Enter Boot Menu Tianocore And Return Construction - Check That USB Devices Are Detected ${boot_menu} + Check USB Stick Detection In Edk2 ${boot_menu} USS002.001 Disable USB stack (firmware) [Documentation] Check whether If the stack is deactivated, there will be @@ -43,11 +43,10 @@ USS002.001 Disable USB stack (firmware) ... the firmware level. Skip If not ${USB_STACK_SUPPORT} USS002.001 not supported Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} USS002.001 not supported - Skip If "${OPTIONS_LIB}" == "dcu" + Skip If "${OPTIONS_LIB}" == "options-lib_dcu" Set UEFI Option UsbMassStorage ${FALSE} Set UEFI Option UsbDriverStack ${FALSE} ${boot_menu}= Enter Boot Menu Tianocore And Return Construction - # Check That USB Devices Are Not Detected ${boot_menu} USS003.001 Enable USB Mass Storage (firmware) [Documentation] Check whether If the storage support is activated, there @@ -55,7 +54,7 @@ USS003.001 Enable USB Mass Storage (firmware) ... firmware level. Skip If not ${USB_MASS_STORAGE_SUPPORT} USS003.001 not supported Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} USS003.001 not supported - Skip If "${OPTIONS_LIB}" == "dcu" + Skip If "${OPTIONS_LIB}" == "options-lib_dcu" Power On ${setup_menu}= Enter Setup Menu Tianocore And Return Construction ${dasharo_menu}= Enter Dasharo System Features ${setup_menu} @@ -71,7 +70,7 @@ USS003.001 Enable USB Mass Storage (firmware) Set Option State ${usb_menu} Enable USB Mass Storage ${TRUE} Save Changes And Reset ${boot_menu}= Enter Boot Menu Tianocore And Return Construction - Check That USB Devices Are Detected ${boot_menu} + Check USB Stick Detection In Edk2 ${boot_menu} USS004.001 Disable USB Mass Storage (firmware) [Documentation] Check whether If the storage support is deactivated, @@ -79,7 +78,7 @@ USS004.001 Disable USB Mass Storage (firmware) ... firmware level. Skip If not ${USB_MASS_STORAGE_SUPPORT} USS004.001 not supported Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} USS004.001 not supported - Skip If "${OPTIONS_LIB}" == "dcu" + Skip If "${OPTIONS_LIB}" == "options-lib_dcu" Power On # Enable USB stack first to get mass storage option ${setup_menu}= Enter Setup Menu Tianocore And Return Construction @@ -96,4 +95,3 @@ USS004.001 Disable USB Mass Storage (firmware) Set Option State ${usb_menu} Enable USB Mass Storage ${FALSE} Save Changes And Reset ${boot_menu}= Enter Boot Menu Tianocore And Return Construction - # Check That USB Devices Are Not Detected ${boot_menu} diff --git a/dasharo-security/verified-boot.robot b/dasharo-security/verified-boot.robot index d2e9f79605..644684cfd3 100644 --- a/dasharo-security/verified-boot.robot +++ b/dasharo-security/verified-boot.robot @@ -11,7 +11,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../os-config/ubuntu-credentials.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -33,19 +32,12 @@ Test Setup Run Keyword ... Power On -*** Variables *** -# The fw_file_original is the fw_file received as an input to the test suite -${FW_FILE_ORIGINAL}= /home/${UBUNTU_USERNAME}/test-firmware.rom -# # The fw_file_resigned is the fw_file resigned with newly generated keys (so -# # booting it should trigger vboot recovery events) -${FW_FILE_RESIGNED}= /home/${UBUNTU_USERNAME}/test-firmware_resigned.rom - - *** Test Cases *** VBO006.002 Check whether the verstage was run [Documentation] Check whether the Verified Boot is enabled and ... functional. - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux Switch To Root User Skip If not ${TESTS_IN_UBUNTU_SUPPORT} VBO006.002 not supported @@ -57,7 +49,7 @@ VBO007.002 Boot from RW when correctly signed firmware is flashed ... Slot A/B if the signatures for firmware stored in vboot ... Slot A/B are correct. Skip If not ${TESTS_IN_UBUNTU_SUPPORT} VBO007.002 not supported - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${out_vboot}= Execute Command In Terminal ./dasharo-tools/vboot/workbuf_parse -1 | grep "boot mode" @@ -69,12 +61,20 @@ VBO008.001 Booting from recovery ... continue automatically after a 30s delay. Skip If not ${VERIFIED_BOOT_POPUP_SUPPORT} VBO008.002 not supported Skip If not ${TESTS_IN_UBUNTU_SUPPORT} VBO008.002 not supported - Boot System Or From Connected Disk ubuntu + + # setting 5 minutes time-out to prevent failure on platforms with + # either extended FW boot times, or recovery pop-up left. + Set DUT Response Timeout 300s + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Flash RW Sections Via Internal Programmer ${FW_FILE_RESIGNED} Execute Reboot Command - Boot System Or From Connected Disk ubuntu + + # setting 5 minutes time-out to prevent failure on platforms with + # extended FW boot times + Set DUT Response Timeout 300s + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${out}= Execute Command In Terminal cbmem -c | grep -i recovery @@ -87,17 +87,24 @@ VBO009.001 Recovery boot popup is displayed when incorrectly signed firmware is Skip If not ${VERIFIED_BOOT_POPUP_SUPPORT} VBO009.001 not supported Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} VBO009.001 not supported Skip If not ${TESTS_IN_UBUNTU_SUPPORT} VBO009.001 not supported - Boot System Or From Connected Disk ubuntu + + # setting 5 minutes time-out to prevent failure on platforms with + # either extended FW boot times, or recovery pop-up left. + Set DUT Response Timeout 300s + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Flash RW Sections Via Internal Programmer ${FW_FILE_RESIGNED} Execute Reboot Command - Set DUT Response Timeout 180s + + # setting 5 minutes time-out to prevent failure on platforms with + # extended FW boot times + Set DUT Response Timeout 300s ${recovery_popup}= Read From Terminal Until Press ENTER key to continue Should Contain ${recovery_popup} !!! WARNING !!! Should Contain ${recovery_popup} Recovery reason code: Should Contain ${recovery_popup} Recovery reason: - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux VBO009.001 Recovery boot popup is displayed when incorrectly signed firmware is flashed in RW_A (Semi-auto) @@ -119,7 +126,7 @@ VBO010.001 Recovery boot popup can be skipped Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} VBO010.001 not supported Read From Terminal Until Press ENTER key to continue Write Into Terminal ${ENTER} - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux VBO010.001 Recovery boot popup can be skipped (Semi-auto) @@ -144,13 +151,13 @@ VBO011.001 Recovery popup is not displayed when correctly signed firmware is fla Variable Should Exist ${FW_FILE} # 1. Start with flashing of correctly signed firmware Set DUT Response Timeout 180s - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Flash RW Sections Via Internal Programmer ${FW_FILE_ORIGINAL} FOR ${index} IN RANGE 2 Execute Reboot Command - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User END @@ -163,7 +170,7 @@ VBO011.001 Recovery popup is not displayed when correctly signed firmware is fla Execute Reboot Command Read From Terminal Until Press ENTER key to continue Write Into Terminal ${ENTER} - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${out_vboot}= Execute Command In Terminal ./dasharo-tools/vboot/workbuf_parse -1 | grep "boot mode" @@ -172,7 +179,7 @@ VBO011.001 Recovery popup is not displayed when correctly signed firmware is fla # 3. Flash again with correctly signed firmware Flash RW Sections Via Internal Programmer ${FW_FILE_ORIGINAL} Execute Reboot Command - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${out_vboot}= Execute Command In Terminal ./dasharo-tools/vboot/workbuf_parse -1 | grep "boot mode" @@ -190,13 +197,13 @@ VBO011.001 Recovery popup is not displayed when correctly signed firmware is fla Variable Should Exist ${FW_FILE} # 1. Start with flashing of correctly signed firmware Set DUT Response Timeout 180s - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Flash RW Sections Via Internal Programmer ${FW_FILE_ORIGINAL} FOR ${index} IN RANGE 2 Execute Reboot Command - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User END @@ -208,7 +215,7 @@ VBO011.001 Recovery popup is not displayed when correctly signed firmware is fla FOR ${index} IN RANGE 2 Execute Reboot Command Sleep 15s # Wait for the pop-up to disappear automatically - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${out_vboot}= Execute Command In Terminal ./dasharo-tools/vboot/workbuf_parse -1 | grep "boot mode" @@ -217,7 +224,7 @@ VBO011.001 Recovery popup is not displayed when correctly signed firmware is fla # 3. Flash again with correctly signed firmware Flash RW Sections Via Internal Programmer ${FW_FILE_ORIGINAL} Execute Reboot Command - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${out_vboot}= Execute Command In Terminal ./dasharo-tools/vboot/workbuf_parse -1 | grep "boot mode" @@ -229,12 +236,12 @@ VBO012.001 Self-signed binary is bootable without errors ... used by the end users are correct and don't cause bricks. Skip If not ${TESTS_IN_UBUNTU_SUPPORT} VBO012.001 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Flash RW Sections Via Internal Programmer ${FW_FILE_RESIGNED} Execute Reboot Command - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User @@ -263,10 +270,16 @@ Prepare Tools, Keys And Binaries Power On # TODO: store the disk boot entry in platform config, or figure out how # to handle UEFI boot entries in a reliable manner - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + + # The fw_file_original is the fw_file received as an input to the test suite + Set Suite Variable ${FW_FILE_ORIGINAL} /home/${DEVICE_OS_USERNAME}/test-firmware.rom + # The fw_file_resigned is the fw_file resigned with newly generated keys + # (so booting it should trigger vboot recovery events) + Set Suite Variable ${FW_FILE_RESIGNED} /home/${DEVICE_OS_USERNAME}/test-firmware_resigned.rom + Login To Linux Switch To Root User - Get Coreboot Tools From Cloud Install Docker Packages Generate Verified Boot Keys Resign Existing Firmware Image With Generated Keys diff --git a/dasharo-security/wifi-bluetooth-switch.robot b/dasharo-security/wifi-bluetooth-switch.robot index 657df77fc3..48998155e6 100644 --- a/dasharo-security/wifi-bluetooth-switch.robot +++ b/dasharo-security/wifi-bluetooth-switch.robot @@ -23,31 +23,71 @@ Suite Teardown Run Keyword *** Test Cases *** -WBS001.001 Wifi and Bluetooth card power switch disabled (Ubuntu) +WBS001.201 Wifi and Bluetooth card power switch disabled (Ubuntu) [Documentation] Checks whether Wifi + Bluetooth is detected by Linux ... after setting Enable Wi-Fi + BT radios option to false + ... Previous IDs: WBS001.001 Skip If not ${DASHARO_SECURITY_MENU_SUPPORT} - Skip If not ${WIFI_BLUETOOTH_CARD_SWITCH_SUPPORT} WBS001.001 not supported + Skip If not ${WIFI_BLUETOOTH_CARD_SWITCH_SUPPORT} WBS001.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} WBS001.201 not supported + Wifi And Bluetooth Card Power Switch Disabled ${ENV_ID_UBUNTU} + +WBS002.201 Wifi and Bluetooth card power switch enabled (Ubuntu) + [Documentation] Checks whether Wifi + Bluetooth is detected by Linux + ... after setting Enable Wi-Fi + BT radios option to true + ... Previous IDs: WBS002.001 + Skip If not ${DASHARO_SECURITY_MENU_SUPPORT} + Skip If not ${WIFI_BLUETOOTH_CARD_SWITCH_SUPPORT} WBS002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} WBS002.201 not supported + Wifi And Bluetooth Card Power Switch ${ENV_ID_UBUNTU} + +WBS001.202 Wifi and Bluetooth card power switch disabled (Fedora) + [Documentation] Checks whether Wifi + Bluetooth is detected by Linux + ... after setting Enable Wi-Fi + BT radios option to false + Skip If not ${DASHARO_SECURITY_MENU_SUPPORT} + Skip If not ${WIFI_BLUETOOTH_CARD_SWITCH_SUPPORT} WBS001.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} WBS001.202 not supported + Wifi And Bluetooth Card Power Switch Disabled ${ENV_ID_FEDORA} + +WBS002.202 Wifi and Bluetooth card power switch enabled (Fedora) + [Documentation] Checks whether Wifi + Bluetooth is detected by Linux + ... after setting Enable Wi-Fi + BT radios option to true + Skip If not ${DASHARO_SECURITY_MENU_SUPPORT} + Skip If not ${WIFI_BLUETOOTH_CARD_SWITCH_SUPPORT} WBS002.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} WBS002.202 not supported + Wifi And Bluetooth Card Power Switch ${ENV_ID_FEDORA} + + +*** Keywords *** +Wifi And Bluetooth Card Power Switch Disabled + [Documentation] Checks whether Wifi + Bluetooth is detected by Linux + ... after setting Enable Wi-Fi + BT radios option to false + [Tags] robot:private + [Arguments] ${os_id} + Power On + Boot System Or From Connected Disk ${os_id} Set UEFI Option EnableWifiBt ${FALSE} + Power On + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User - Detect Or Install Package pciutils - Detect Or Install Package usbutils ${wifi}= Check The Presence Of WiFi Card Should Not Be True ${wifi} ${bt}= Check The Presence Of Bluetooth Card Should Not Be True ${bt} -WBS002.001 Wifi and Bluetooth card power switch enabled (Ubuntu) +Wifi And Bluetooth Card Power Switch [Documentation] Checks whether Wifi + Bluetooth is detected by Linux ... after setting Enable Wi-Fi + BT radios option to true - Skip If not ${DASHARO_SECURITY_MENU_SUPPORT} - Skip If not ${WIFI_BLUETOOTH_CARD_SWITCH_SUPPORT} WBS002.001 not supported + [Tags] robot:private + [Arguments] ${os_id} + Power On + Boot System Or From Connected Disk ${os_id} Set UEFI Option EnableWifiBt ${TRUE} + Power On + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User - Detect Or Install Package pciutils - Detect Or Install Package usbutils ${wifi}= Check The Presence Of WiFi Card Should Be True ${wifi} ${bt}= Check The Presence Of Bluetooth Card diff --git a/dasharo-stability/capsule-update-files/CapsuleApp.efi.license b/dasharo-stability/capsule-update-files/CapsuleApp.efi.license new file mode 100644 index 0000000000..bdc2882bd8 --- /dev/null +++ b/dasharo-stability/capsule-update-files/CapsuleApp.efi.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 3mdeb + +SPDX-License-Identifier: Apache-2.0 diff --git a/dasharo-stability/capsule-update-files/romhole.license b/dasharo-stability/capsule-update-files/romhole.license new file mode 100644 index 0000000000..bdc2882bd8 --- /dev/null +++ b/dasharo-stability/capsule-update-files/romhole.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 3mdeb + +SPDX-License-Identifier: Apache-2.0 diff --git a/dasharo-stability/capsule-update.robot b/dasharo-stability/capsule-update.robot index c7ca494422..3736161a9e 100644 --- a/dasharo-stability/capsule-update.robot +++ b/dasharo-stability/capsule-update.robot @@ -40,12 +40,14 @@ ${FUM_DIALOG_BOTTOM}= The platform will automatically reboot and disable F *** Test Cases *** CUP001.001 Capsule Update With Wrong Keys [Documentation] Check that DUT rejects flashing a capsule signed with invalid certificate. - Boot Into UEFI Shell + Power On + Enter UEFI Shell ${original_bios_version}= Get BIOS Version Before update Perform Capsule Update wrong_cert.cap - Select UEFI Shell Boot Option + Enter UEFI Shell + ${updated_bios_version}= Get BIOS Version After update Should Be Equal ${original_bios_version} ${updated_bios_version} @@ -55,12 +57,14 @@ CUP001.001 Capsule Update With Wrong Keys CUP002.001 Capsule Update With Wrong GUID [Documentation] Check that DUT rejects flashing a capsule with invalid GUID. - Boot Into UEFI Shell + Power On + Enter UEFI Shell ${original_bios_version}= Get BIOS Version Before Update Perform Capsule Update invalid_guid.cap - Select UEFI Shell Boot Option + Enter UEFI Shell + ${updated_bios_version}= Get BIOS Version After Update Should Be Equal ${original_bios_version} ${updated_bios_version} @@ -82,13 +86,15 @@ CUP150.001 Capsule Update ... Please note that the test number is high on purpose. This test will flash FW! In future ... if additional test cases will be created - when running the whole suite - It will be good ... to keep the number of actual FW updates to minimum to prevent chip degradation. - Boot Into UEFI Shell + Power On + Enter UEFI Shell ${original_bios_version}= Get BIOS Version Before Update Perform Capsule Update valid_capsule.cap Check The Update Screen For The Correct UX - Select UEFI Shell Boot Option + Set DUT Response Timeout 5m + Enter UEFI Shell ${updated_bios_version}= Get BIOS Version After Update Should Not Be Equal ${original_bios_version} ${updated_bios_version} @@ -186,7 +192,8 @@ CUP250.001 Capsule Update Progress Bar - Default Logo # Bump the timeout for memory training Set DUT Response Timeout 5m Turn Off Active ME - Boot Into UEFI Shell + Power On + Enter UEFI Shell Perform Capsule Update valid_capsule.cap Check The Update Screen For The Correct UX @@ -229,15 +236,6 @@ Get Key To Press Log Found digit: ${digit} RETURN ${digit} -Select UEFI Shell Boot Option - ${boot_menu}= Enter Boot Menu Tianocore And Return Construction - Enter Submenu From Snapshot ${boot_menu} UEFI Shell - Read From Terminal Until Shell> - -Boot Into UEFI Shell - Power On - Select UEFI Shell Boot Option - Extract BIOS Version [Arguments] ${text} ${lines}= Split To Lines ${text} @@ -327,10 +325,10 @@ Perform Capsule Update Should Not Contain ${out} is not a valid capsule. Should Not Contain ${out} failed to query capsule capability Should Contain ${out} CapsuleApp: creating capsule descriptors at - Should Contain ${out} :\\capsule_testing\\> # Reset the system manually - Execute UEFI Shell Command reset 5m + Write Bare Into Terminal reset + Press Key N Times 1 ${ENTER} # Confirm update by following instructions of Firmware Update Mode dialog Read From Terminal Until ${FUM_DIALOG_TOP} @@ -370,14 +368,17 @@ Check If Capsule Files Are Present Enter Capsule Testing Folder ${fss}= Get FS From Uefi Shell FOR ${fs} IN @{fss} + Set Prompt For Terminal ${fs}:\\> ${out}= Execute UEFI Shell Command ${fs}: IF 'is not a valid mapping.' in '''${out}''' Fail Failed to find a file-system with capsule_testing/ END + Set Prompt For Terminal \\> ${out}= Execute UEFI Shell Command cd capsule_testing IF 'is not a directory.' not in '''${out}''' BREAK END + Set Prompt For Terminal ${fs}:\\capsule_testing\\> Get FS From Uefi Shell ${map}= Execute UEFI Shell Command map @@ -423,17 +424,10 @@ Display Preparation Instructions Prepare For Logo Persistence Test Log To Console PREPARE: Logo Persistence Test - Run rm -rf dcu - Run cp ${FW_FILE} dcu/coreboot.rom IF ${CUSTOM_LOGO_SUPPORT} == ${TRUE} - Download To Host Cache - ... logo.bmp - ... https://cloud.3mdeb.com/index.php/s/rsjCdz4wSNesLio/download - ... 6e5a6722955e4f78d947654630f27ff833703fbc04776ffed963c96617f6bb2a - ${local_path}= Join Path ${DL_CACHE_DIR} logo.bmp - Run cp ${local_path} dcu/logo.bmp + Run cp ${TEST_DATA_DIR}/dcu/logo.bmp dcu/logo.bmp ${result}= Run Process bash -c cd ./dcu; ./dcuc logo ./coreboot.rom -l ./logo.bmp Log ${result.stdout} Log ${result.stderr} @@ -442,7 +436,7 @@ Prepare For Logo Persistence Test Go To Ubuntu Prompt Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} IF '${DUT_CONNECTION_METHOD}' == 'pikvm' Set Suite Variable ${DUT_CONNECTION_METHOD} SSH END diff --git a/dasharo-stability/m2-wifi.robot b/dasharo-stability/m2-wifi.robot index 62f78b1f89..6139db19cd 100644 --- a/dasharo-stability/m2-wifi.robot +++ b/dasharo-stability/m2-wifi.robot @@ -33,7 +33,7 @@ Suite Teardown Run Keyword # ${out}= Execute Command In Terminal lspci | grep "Network controller:" # Should Match ${out} *${wifi_card_ubuntu}* # Scan for Wi-Fi in Linux -# Detect or install FWTS + # FOR ${INDEX} IN RANGE 0 ${stability_detection_reboot_iterations} # Power Cycle On # Boot operating system ubuntu @@ -45,97 +45,201 @@ Suite Teardown Run Keyword # END # Exit from root user -SMW002.001 Wi-fi connection after warm boot (Ubuntu) +SMW002.201 Wi-fi connection after warm boot (Ubuntu) [Documentation] Check whether the Wi-Fi card is detected and working ... correctly after performing a warm boot. - Skip If not ${M2_WIFI_SUPPORT} SMW002.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SMW002.001 not supported + ... Previous IDs: SMW002.001 + Skip If not ${M2_WIFI_SUPPORT} SMW002.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SMW002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SMW002.201 not supported Power On - Boot Operating System ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - ${out}= Execute Command In Terminal lspci | grep "Network controller:" - Should Match ${out} *${WIFI_CARD_UBUNTU}* - Scan For Wi-Fi In Linux - Detect Or Install FWTS - FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} - Perform Warmboot Using Rtcwake - Boot Operating System ubuntu - Login To Linux - Switch To Root User - ${out}= Execute Command In Terminal lspci | grep "Network controller:" - Should Match ${out} *${WIFI_CARD_UBUNTU}* - Scan For Wi-Fi In Linux - END + Wi-Fi Connection After Warm Boot Exit From Root User -SMW003.001 Wi-fi connection after reboot (Ubuntu) +SMW003.201 Wi-fi connection after reboot (Ubuntu) [Documentation] Check whether the Wi-Fi card is detected and working ... correctly after performing a reboot. - Skip If not ${M2_WIFI_SUPPORT} SMW003.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SMW003.001 not supported + ... Previous IDs: SMW003.001 + Skip If not ${M2_WIFI_SUPPORT} SMW003.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SMW003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SMW003.201 not supported Power On - Boot Operating System ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - ${out}= Execute Command In Terminal lspci | grep "Network controller:" - Should Match ${out} *${WIFI_CARD_UBUNTU}* - Scan For Wi-Fi In Linux - Detect Or Install FWTS - FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} - Execute Reboot Command - Boot Operating System ubuntu - Login To Linux - Switch To Root User - ${out}= Execute Command In Terminal lspci | grep "Network controller:" - Should Match ${out} *${WIFI_CARD_UBUNTU}* - Scan For Wi-Fi In Linux - END + Wi-Fi Connection After Reboot + Exit From Root User -SMW004.001 Wi-fi connection after suspension (Ubuntu) +SMW004.201 Wi-fi connection after suspension (Ubuntu) [Documentation] Check whether the Wi-Fi card is detected and working ... correctly after performing suspension. - Skip If not ${M2_WIFI_SUPPORT} SMW004.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SMW004.001 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SMW004.001 not supported - Wi-fi Connection After Suspension (Ubuntu) + ... Previous IDs: SMW004.001 + Skip If not ${M2_WIFI_SUPPORT} SMW004.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SMW004.201 not supported + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SMW004.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SMW004.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Wi-fi Connection After Suspension + Exit From Root User -SMW004.002 Wi-fi connection after suspension (Ubuntu) (S0ix) +SMW005.201 Wi-fi connection after suspension (Ubuntu) (S0ix) [Documentation] Check whether the Wi-Fi card is detected and working ... correctly after performing suspension. - Skip If not ${M2_WIFI_SUPPORT} SMW004.002 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SMW004.002 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SMW004.002 not supported + ... Previous IDs: SMW004.002 + Skip If not ${M2_WIFI_SUPPORT} SMW005.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SMW005.201 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SMW005.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SMW005.201 not supported Set Platform Sleep Type S0ix - Wi-fi Connection After Suspension (Ubuntu) S0ix + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Wi-fi Connection After Suspension S0ix + Exit From Root User -SMW004.003 Wi-fi connection after suspension (Ubuntu) (S3) +SMW006.201 Wi-fi connection after suspension (Ubuntu) (S3) [Documentation] Check whether the Wi-Fi card is detected and working ... correctly after performing suspension. - Skip If not ${M2_WIFI_SUPPORT} SMW004.003 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SMW004.003 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SMW004.002 not supported + ... Previous IDs: SMW004.003 + Skip If not ${M2_WIFI_SUPPORT} SMW006.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SMW006.201 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SMW006.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SMW006.201 not supported Set Platform Sleep Type S3 - Wi-fi Connection After Suspension (Ubuntu) S3 + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Wi-fi Connection After Suspension S3 + Exit From Root User +SMW002.202 Wi-fi connection after warm boot (Fedora) + [Documentation] Check whether the Wi-Fi card is detected and working + ... correctly after performing a warm boot. + ... Previous IDs: SMW002.001 + Skip If not ${M2_WIFI_SUPPORT} SMW002.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SMW002.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Wi-Fi Connection After Warm Boot + Exit From Root User -*** Keywords *** -Wi-fi Connection After Suspension (Ubuntu) - [Arguments] ${platform_sleep_type}=${EMPTY} +SMW003.202 Wi-fi connection after reboot (Fedora) + [Documentation] Check whether the Wi-Fi card is detected and working + ... correctly after performing a reboot. + ... Previous IDs: SMW003.202 + Skip If not ${M2_WIFI_SUPPORT} SMW003.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SMW003.202 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_FEDORA} Login To Linux - Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} Switch To Root User - Detect Or Install Package pciutils + Wi-Fi Connection After Reboot + Exit From Root User + +SMW004.202 Wi-fi connection after suspension (Fedora) + [Documentation] Check whether the Wi-Fi card is detected and working + ... correctly after performing suspension. + ... Previous IDs: SMW004.001 + Skip If not ${M2_WIFI_SUPPORT} SMW004.202 not supported + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SMW004.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SMW004.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Wi-fi Connection After Suspension + Exit From Root User + +SMW005.202 Wi-fi connection after suspension (Fedora) (S0ix) + [Documentation] Check whether the Wi-Fi card is detected and working + ... correctly after performing suspension. + ... Previous IDs: SMW004.002 + Skip If not ${M2_WIFI_SUPPORT} SMW005.202 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SMW005.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SMW005.202 not supported + Set Platform Sleep Type S0ix + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Wi-fi Connection After Suspension S0ix + Exit From Root User + +SMW006.202 Wi-fi connection after suspension (Fedora) (S3) + [Documentation] Check whether the Wi-Fi card is detected and working + ... correctly after performing suspension. + ... Previous IDs: SMW004.003 + Skip If not ${M2_WIFI_SUPPORT} SMW006.202 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SMW006.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SMW006.202 not supported + Set Platform Sleep Type S3 + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Wi-fi Connection After Suspension S3 + Exit From Root User + + +*** Keywords *** +Wi-fi Connection After Suspension + [Tags] robot:private + [Arguments] ${platform_sleep_type}=${EMPTY} + Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} + ${out}= Execute Command In Terminal lspci | grep "Network controller:" Should Match ${out} *${WIFI_CARD_UBUNTU}* Scan For Wi-Fi In Linux - Detect Or Install FWTS + FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} Perform Suspend Test Using FWTS ${out}= Execute Command In Terminal lspci | grep "Network controller:" Should Match ${out} *${WIFI_CARD_UBUNTU}* Scan For Wi-Fi In Linux END - Exit From Root User + +Wi-Fi Connection After Warm Boot + [Documentation] Check whether the Wi-Fi card is detected and working + ... correctly after performing a warm boot. + [Tags] robot:private + ${out}= Execute Command In Terminal lspci | grep "Network controller:" + Should Match ${out} *${WIFI_CARD_UBUNTU}* + Scan For Wi-Fi In Linux + + FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} + Perform Warmboot Using Rtcwake + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + ${out}= Execute Command In Terminal lspci | grep "Network controller:" + Should Match ${out} *${WIFI_CARD_UBUNTU}* + Scan For Wi-Fi In Linux + END + +Wi-Fi Connection After Reboot + [Documentation] Check whether the Wi-Fi card is detected and working + ... correctly after performing a reboot. + [Tags] robot:private + ${out}= Execute Command In Terminal lspci | grep "Network controller:" + Should Match ${out} *${WIFI_CARD_UBUNTU}* + Scan For Wi-Fi In Linux + + FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} + Execute Reboot Command + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + ${out}= Execute Command In Terminal lspci | grep "Network controller:" + Should Match ${out} *${WIFI_CARD_UBUNTU}* + Scan For Wi-Fi In Linux + END diff --git a/dasharo-stability/network-interface-after-suspend.robot b/dasharo-stability/network-interface-after-suspend.robot index e381f391b8..d4849b2c34 100644 --- a/dasharo-stability/network-interface-after-suspend.robot +++ b/dasharo-stability/network-interface-after-suspend.robot @@ -27,72 +27,168 @@ Suite Teardown Run Keyword *** Test Cases *** -NET002.001 Net controller after warmboot (Ubuntu) +NET002.201 Net controller after warmboot (Ubuntu) [Documentation] This test aims to verify that the network controller works and ... the platform is able to connect to the network after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NET001.001 not supported + ... Previous IDs: NET002.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NET002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} NET002.201 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - FOR ${ind} IN RANGE ${STABILITY_DETECTION_REBOOT_ITERATIONS} - Perform Warmboot Using Rtcwake - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${network_status}= Execute Command In Terminal ip link | grep -E 'enp' - Should Contain ${network_status} UP - END + Net Controller After Warmboot + Exit From Root User -NET003.001 Net controller after reboot (Ubuntu) +NET003.201 Net controller after reboot (Ubuntu) [Documentation] This test aims to verify that the network controller works and ... the platform is able to connect to the network after reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NET001.001 not supported + ... Previous IDs: NET003.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NET003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} NET003.201 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - FOR ${ind} IN RANGE ${STABILITY_DETECTION_REBOOT_ITERATIONS} - Execute Reboot Command - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${network_status}= Execute Command In Terminal ip link | grep -E 'enp' - Should Contain ${network_status} UP - END + Net Controller After Reboot + Exit From Root User -NET004.001 NET controller after suspend (Ubuntu) +NET004.201 NET controller after suspend (Ubuntu) [Documentation] This test aims to verify that the network controller works and the platform ... is able to connect to the network after suspend. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NET004.001 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} NET004.001 not supported - NET Controller After Suspend (Ubuntu) + ... Previous IDs: NET004.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NET004.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} NET004.201 not supported + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} NET004.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + NET Controller After Suspend + Exit From Root User -NET004.002 NET controller after suspend (Ubuntu) (S0ix) +NET005.201 NET controller after suspend (Ubuntu) (S0ix) [Documentation] This test aims to verify that the network controller works and the platform ... is able to connect to the network after suspend. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NET004.002 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} NET004.002 not supported + ... Previous IDs: NET04.002 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NET005.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} NET005.201 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} NET005.201 not supported Set Platform Sleep Type S0ix - NET Controller After Suspend (Ubuntu) S0ix + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + NET Controller After Suspend S0ix + Exit From Root User -NET004.003 NET controller after suspend (Ubuntu) (S3) +NET006.201 NET controller after suspend (Ubuntu) (S3) [Documentation] This test aims to verify that the network controller works and the platform ... is able to connect to the network after suspend. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NET004.003 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} NET004.003 not supported + ... Previous IDs: NET004.003 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} NET006.201 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} NET006.201 not supported Set Platform Sleep Type S3 - NET Controller After Suspend (Ubuntu) S3 + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + NET Controller After Suspend S3 + Exit From Root User +NET002.202 Net controller after warmboot (Fedora) + [Documentation] This test aims to verify that the network controller works and + ... the platform is able to connect to the network after reboot. + ... Previous IDs: NET005.003 + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} NET002.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Net Controller After Warmboot + Exit From Root User -*** Keywords *** -NET Controller After Suspend (Ubuntu) - [Arguments] ${platform_sleep_type}=${EMPTY} +NET003.202 Net controller after reboot (Fedora) + [Documentation] This test aims to verify that the network controller works and + ... the platform is able to connect to the network after reboot. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} NET003.202 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Net Controller After Reboot + Exit From Root User + +NET004.202 NET controller after suspend (Fedora) + [Documentation] This test aims to verify that the network controller works and the platform + ... is able to connect to the network after suspend. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} NET004.202 not supported + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} NET004.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} Login To Linux - Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} Switch To Root User + NET Controller After Suspend + Exit From Root User + +NET005.202 NET controller after suspend (Fedora) (S0ix) + [Documentation] This test aims to verify that the network controller works and the platform + ... is able to connect to the network after suspend. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} NET005.202 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} NET005.202 not supported + Set Platform Sleep Type S0ix + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + NET Controller After Suspend S0ix + Exit From Root User + +NET006.202 NET controller after suspend (Fedora) (S3) + [Documentation] This test aims to verify that the network controller works and the platform + ... is able to connect to the network after suspend. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} NET005.202 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} NET006.202 not supported + Set Platform Sleep Type S3 + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + NET Controller After Suspend S3 + Exit From Root User + + +*** Keywords *** +NET Controller After Suspend + [Tags] robot:private + [Arguments] ${platform_sleep_type}=${EMPTY} + Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} Perform Suspend Test Using FWTS - ${network_status}= Execute Command In Terminal ip link | grep -E 'enp' + ${network_status}= Execute Command In Terminal ip link | grep -E 'enp|eno' Should Contain ${network_status} UP + +Net Controller After Warmboot + [Documentation] This test aims to verify that the network controller works and + ... the platform is able to connect to the network after reboot. + [Tags] robot:private + FOR ${ind} IN RANGE ${STABILITY_DETECTION_REBOOT_ITERATIONS} + Perform Warmboot Using Rtcwake + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + ${network_status}= Execute Command In Terminal ip link | grep -E 'enp|eno' + Should Contain ${network_status} UP + END + +Net Controller After Reboot + [Documentation] This test aims to verify that the network controller works and + ... the platform is able to connect to the network after reboot. + [Tags] robot:private + FOR ${ind} IN RANGE ${STABILITY_DETECTION_REBOOT_ITERATIONS} + Execute Reboot Command + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + ${network_status}= Execute Command In Terminal ip link | grep -E 'enp|eno' + Should Contain ${network_status} UP + END diff --git a/dasharo-stability/nvme-detection.robot b/dasharo-stability/nvme-detection.robot index 7004581246..597c700ca1 100644 --- a/dasharo-stability/nvme-detection.robot +++ b/dasharo-stability/nvme-detection.robot @@ -45,79 +45,144 @@ Suite Teardown Run Keyword # END # Exit from root user -SNV0002.001 NVMe detection after warm boot (Ubuntu) +SNV002.201 NVMe detection after warm boot (Ubuntu) [Documentation] Check whether the NVMe disk is detected and working ... correctly after performing a warm boot. - Skip If not ${NVME_DETECTION_SUPPORT} SNV002.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SNV002.001 not supported + ... Previous IDs: SNV002.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SNV002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SNV002.201 not supported Power On - Boot Operating System ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - ${out}= List Devices In Linux pci - Should Contain ${out} ${DEVICE_NVME_DISK} - FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_WARMBOOT_ITERATIONS} - Perform Warmboot Using Rtcwake - Boot Operating System ubuntu - Login To Linux - Switch To Root User - ${out}= List Devices In Linux pci - Should Contain ${out} ${DEVICE_NVME_DISK} - END + NVMe Detection After Warm Boot + Exit From Root User -SNV003.001 NVMe detection after reboot (Ubuntu) +SNV003.201 NVMe detection after reboot (Ubuntu) [Documentation] Check whether the NVMe disk is detected and working ... correctly after performing a reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SNV003.001 not supported + ... Previous IDs: SNV003.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SNV003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SNV003.201 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - ${out}= List Devices In Linux pci - Should Contain ${out} ${DEVICE_NVME_DISK} - FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} - Execute Reboot Command - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out}= List Devices In Linux pci - Should Contain ${out} ${DEVICE_NVME_DISK} - END + NVMe Detection After Reboot + Exit From Root User -SNV004.001 NVMe detection after suspension (Ubuntu) +SNV004.201 NVMe detection after suspension (Ubuntu) [Documentation] Check whether the NVMe disk is correctly detected after ... performing suspension. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SNV004.001 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SNV004.001 not supported - NVMe Detection After Suspension (Ubuntu) + ... Previous IDs: SNV004.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SNV004.201 not supported + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SNV004.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SNV004.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + NVMe Detection After Suspension + Exit From Root User -SNV004.002 NVMe detection after suspension (Ubuntu) (S0ix) +SNV005.201 NVMe detection after suspension (Ubuntu) (S0ix) [Documentation] Check whether the NVMe disk is correctly detected after ... performing suspension. - Skip If not ${NVME_DETECTION_SUPPORT} SNV004.002 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SNV004.002 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SNV004.002 not supported + ... Previous IDs: SNV004.002 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SNV005.201 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SNV005.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SNV005.201 not supported Set Platform Sleep Type S0ix - NVMe Detection After Suspension (Ubuntu) S0ix + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + NVMe Detection After Suspension S0ix + Exit From Root User -SNV004.003 NVMe detection after suspension (Ubuntu) (S3) +SNV006.201 NVMe detection after suspension (Ubuntu) (S3) [Documentation] Check whether the NVMe disk is correctly detected after ... performing suspension. - Skip If not ${NVME_DETECTION_SUPPORT} SNV004.003 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SNV004.003 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SNV004.003 not supported + ... Previous IDs: SNV004.003 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SNV006.201 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SNV006.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SNV006.201 not supported Set Platform Sleep Type S3 - NVMe Detection After Suspension (Ubuntu) S3 + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + NVMe Detection After Suspension S3 + Exit From Root User +SNV002.202 NVMe detection after warm boot (Fedora) + [Documentation] Check whether the NVMe disk is detected and working + ... correctly after performing a warm boot. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SNV002.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + NVMe Detection After Warm Boot + Exit From Root User -*** Keywords *** -NVMe Detection After Suspension (Ubuntu) - [Arguments] ${platform_sleep_type}=${EMPTY} +SNV003.202 NVMe detection after reboot (Fedora) + [Documentation] Check whether the NVMe disk is detected and working + ... correctly after performing a reboot. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SNV003.202 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + NVMe Detection After Reboot + Exit From Root User + +SNV004.202 NVMe detection after suspension (Fedora) + [Documentation] Check whether the NVMe disk is correctly detected after + ... performing suspension. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SNV004.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SNV004.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} Login To Linux - Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} Switch To Root User + NVMe Detection After Suspension + Exit From Root User + +SNV005.202 NVMe detection after suspension (Fedora) (S0ix) + [Documentation] Check whether the NVMe disk is correctly detected after + ... performing suspension. + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SNV005.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SNV005.202 not supported + Set Platform Sleep Type S0ix + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + NVMe Detection After Suspension S0ix + Exit From Root User + +SNV006.202 NVMe detection after suspension (Fedora) (S3) + [Documentation] Check whether the NVMe disk is correctly detected after + ... performing suspension. + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SNV006.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SNV006.202 not supported + Set Platform Sleep Type S3 + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + NVMe Detection After Suspension S3 + Exit From Root User + + +*** Keywords *** +NVMe Detection After Suspension + [Documentation] Check whether the NVMe disk is correctly detected after + ... performing suspension. + [Tags] robot:private + [Arguments] ${platform_sleep_type}=${EMPTY} + Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} ${out}= List Devices In Linux pci Should Contain ${out} ${DEVICE_NVME_DISK} FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_SUSPEND_ITERATIONS} @@ -125,4 +190,33 @@ NVMe Detection After Suspension (Ubuntu) ${out}= List Devices In Linux pci Should Contain ${out} ${DEVICE_NVME_DISK} END - Exit From Root User + +NVMe Detection After Reboot + [Documentation] Check whether the NVMe disk is detected and working + ... correctly after performing a reboot. + [Tags] robot:private + ${out}= List Devices In Linux pci + Should Contain ${out} ${DEVICE_NVME_DISK} + FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} + Execute Reboot Command + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux pci + Should Contain ${out} ${DEVICE_NVME_DISK} + END + +NVMe Detection After Warm Boot + [Documentation] Check whether the NVMe disk is detected and working + ... correctly after performing a warm boot. + [Tags] robot:private + ${out}= List Devices In Linux pci + Should Contain ${out} ${DEVICE_NVME_DISK} + FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_WARMBOOT_ITERATIONS} + Perform Warmboot Using Rtcwake + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux pci + Should Contain ${out} ${DEVICE_NVME_DISK} + END diff --git a/dasharo-stability/power-on-keyword-stress.robot b/dasharo-stability/power-on-keyword-stress.robot index a3eaebce15..9667941576 100644 --- a/dasharo-stability/power-on-keyword-stress.robot +++ b/dasharo-stability/power-on-keyword-stress.robot @@ -55,7 +55,7 @@ Test Power On Kwd In Firmware Test Power On Kwd In OS Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Execute Command In Terminal sleep 10 diff --git a/dasharo-stability/tpm-detect-heads.robot b/dasharo-stability/tpm-detect-heads.robot index ea285d9664..d355ae8b2e 100644 --- a/dasharo-stability/tpm-detect-heads.robot +++ b/dasharo-stability/tpm-detect-heads.robot @@ -98,28 +98,3 @@ TPD003.004 Detect TPM after platform reboot (heads) FAIL \nTest case marked as Failed; ${failed_detects} iterations failed. END Check TPM PCRs Correctness Between Subsequent Boots ${pcrs_subsequent_boots} - -TPM001.002 TPM Support (Ubuntu) - [Documentation] This test aims to verify that the TPM is initialized - ... correctly and the PCRs can be accessed from the operating system. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM001.002 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Detect Or Install Package tpm2-tools - ${out}= Execute Linux Command tpm2_pcrread - Should Contain ${out} sha1: - Should Contain ${out} sha256: - Exit From Root User - -TPM001.003 TPM Support (Windows) - [Documentation] This test aims to verify that the TPM is initialized - ... correctly and the PCRs can be accessed from the operating system. - Skip If not ${TESTS_IN_WINDOWS_SUPPORT} TPM001.003 not supported - Power On - Login To Windows - ${out}= Execute Command In Terminal get-tpm - Should Contain ${out} TpmPresent${SPACE*16}: True strip_spaces=True - Should Contain ${out} TpmReady${SPACE*18}: True strip_spaces=True - Should Contain ${out} TpmEnabled${SPACE*16}: True strip_spaces=True diff --git a/dasharo-stability/tpm-detect.robot b/dasharo-stability/tpm-detect.robot index 74a494a8a8..892a1efe7f 100644 --- a/dasharo-stability/tpm-detect.robot +++ b/dasharo-stability/tpm-detect.robot @@ -17,45 +17,85 @@ Suite Teardown Run Keyword *** Test Cases *** -TPD003.001 Detect TPM after platform reboot (Ubuntu) +TPD003.201 Detect TPM after platform reboot (Ubuntu) [Documentation] This test aims to verify that the TPM is initialized ... correctly after the platform's reboot. - Skip If not ${TPM_DETECT_SUPPORT} TPD003.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPD003.001 not supported + ... Previous IDs: TPD003.001 + Skip If not ${TPM_DETECT_SUPPORT} TPD003.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPD003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} TPD003.201 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User + Detect TPM After Platform Reboot + Exit From Root User + +TPD004.201 Detect TPM after platform suspend (Ubuntu) + [Documentation] This test aims to verify that the TPM is initialized + ... correctly after the platform's reboot. + ... Previous IDs: TPD004.001 + Skip If not ${TPM_DETECT_SUPPORT} TPD004.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPD004.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} TPD004.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Detect TPM After Platform Suspend + Exit From Root User + +TPD003.202 Detect TPM after platform reboot (Fedora) + [Documentation] This test aims to verify that the TPM is initialized + ... correctly after the platform's reboot. + Skip If not ${TPM_DETECT_SUPPORT} TPD003.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} TPD003.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Detect TPM After Platform Reboot + Exit From Root User + +TPD004.202 Detect TPM after platform suspend (Fedora) + [Documentation] This test aims to verify that the TPM is initialized + ... correctly after the platform's reboot. + Skip If not ${TPM_DETECT_SUPPORT} TPD004.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} TPD004.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + Detect TPM After Platform Suspend + Exit From Root User + + +*** Keywords *** +Detect TPM After Platform Reboot + [Documentation] This test aims to verify that the TPM is initialized + ... correctly after the platform's reboot. + [Tags] robot:private ${out}= List Devices In Linux pci Should Contain ${out} ${DEVICE_NVME_DISK} - Detect Or Install Package tpm2-tools FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} Execute Reboot Command - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${BOOTED_OS_ID} Login To Linux Switch To Root User ${out}= Execute Command In Terminal tpm2_pcrread Should Contain ${out} sha1: Should Contain ${out} sha256: END - Exit From Root User -TPD004.001 Detect TPM after platform suspend (Ubuntu) +Detect TPM After Platform Suspend [Documentation] This test aims to verify that the TPM is initialized ... correctly after the platform's reboot. Skip If not ${tests_in_firmware_support} TPD001.001 not supported - Skip If not ${TPM_DETECT_SUPPORT} TPD001.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPD004.001 not supported - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User ${out}= List Devices In Linux pci Should Contain ${out} ${DEVICE_NVME_DISK} - Detect Or Install Package tpm2-tools + FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} Perform Suspend Test Using FWTS ${out}= Execute Command In Terminal tpm2_pcrread Should Contain ${out} sha1: Should Contain ${out} sha256: END - Exit From Root User diff --git a/dasharo-stability/usb-type-a-devices-detection.robot b/dasharo-stability/usb-type-a-devices-detection.robot index 8b9a458914..a1fb2230e2 100644 --- a/dasharo-stability/usb-type-a-devices-detection.robot +++ b/dasharo-stability/usb-type-a-devices-detection.robot @@ -47,79 +47,146 @@ Suite Teardown Run Keyword # END # Exit from root user -SUD002.001 USB devices detection after warm boot (Ubuntu) +SUD002.201 USB devices detection after warm boot (Ubuntu) [Documentation] Check whether the external USB devices are detected ... correctly after a warm boot. - Skip If not ${USB_TYPE-a_devices_detection_support} SUD002.001 not supported - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUD002.001 not supported + ... Previous IDs: SUD002.001 + Skip If not ${USB_TYPE-a_devices_detection_support} SUD002.201 not supported + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUD002.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SUD002.201 not supported Power On - Boot Operating System ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - ${out}= List Devices In Linux usb - Should Contain ${out} ${USB_DEVICE} - Detect Or Install FWTS - FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_WARMBOOT_ITERATIONS} - Perform Warmboot Using Rtcwake - Boot Operating System ubuntu - Login To Linux - Switch To Root User - ${out}= List Devices In Linux usb - Should Contain ${out} ${USB_DEVICE} - END + USB Devices Detection After Warm Boot Exit From Root User -SUD003.001 USB devices detection after reboot (Ubuntu) +SUD003.201 USB devices detection after reboot (Ubuntu) [Documentation] Check whether the external USB devices are detected ... correctly after a reboot. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUD003.001 not supported + ... Previous IDs: SUD003.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUD003.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SUD003.201 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - ${out}= List Devices In Linux usb - Should Contain ${out} ${USB_DEVICE} - FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} - Execute Reboot Command - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - ${out}= List Devices In Linux usb - Should Contain ${out} ${USB_DEVICE} - END + USB Devices Detection After Reboot + Exit From Root User -SUD004.001 USB devices detection after suspension (Ubuntu) +SUD004.201 USB devices detection after suspension (Ubuntu) [Documentation] Check whether the external USB devices are detected ... correctly after suspension. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUD004.001 not supported - Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUD004.001 not supported - USB Devices Detection After Suspension (Ubuntu) + ... Previous IDs: SUD004.001 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUD004.201 not supported + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUD004.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SUD004.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + USB Devices Detection After Suspension + Exit From Root User -SUD004.002 USB devices detection after suspension (Ubuntu) (S0ix) +SUD005.201 USB devices detection after suspension (Ubuntu) (S0ix) [Documentation] Check whether the external USB devices are detected ... correctly after suspension. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUD004.002 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUD004.002 not supported + ... Previous IDs: SUD004.002 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUD005.201 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUD005.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SUD005.201 not supported Set Platform Sleep Type S0ix - USB Devices Detection After Suspension (Ubuntu) S0ix + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + USB Devices Detection After Suspension S0ix + Exit From Root User -SUD004.003 USB devices detection after suspension (Ubuntu) (S3) +SUD006.201 USB devices detection after suspension (Ubuntu) (S3) [Documentation] Check whether the external USB devices are detected ... correctly after suspension. - Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUD004.003 not supported - Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUD004.003 not supported + ... Previous IDs: SUD004.003 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} SUD006.201 not supported + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUD006.201 not supported + Skip If '${ENV_ID_UBUNTU}' not in ${TESTED_LINUX_DISTROS} SUD006.201 not supported Set Platform Sleep Type S3 - USB Devices Detection After Suspension (Ubuntu) S3 + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + USB Devices Detection After Suspension S3 + Exit From Root User +SUD002.202 USB devices detection after warm boot (Fedora) + [Documentation] Check whether the external USB devices are detected + ... correctly after a warm boot. + Skip If not ${USB_TYPE-a_devices_detection_support} SUD002.201 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SUD002.201 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + USB Devices Detection After Warm Boot + Exit From Root User -*** Keywords *** -USB Devices Detection After Suspension (Ubuntu) - [Arguments] ${platform_sleep_type}=${EMPTY} +SUD003.202 USB devices detection after reboot (Fedora) + [Documentation] Check whether the external USB devices are detected + ... correctly after a reboot. + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SUD003.202 not supported Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + USB Devices Detection After Reboot + Exit From Root User + +SUD004.202 USB devices detection after suspension (Fedora) + [Documentation] Check whether the external USB devices are detected + ... correctly after suspension. + Skip If ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUD004.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SUD004.202 not supported + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} Login To Linux - Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} Switch To Root User + USB Devices Detection After Suspension + Exit From Root User + +SUD005.202 USB devices detection after suspension (Fedora) (S0ix) + [Documentation] Check whether the external USB devices are detected + ... correctly after suspension. + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUD005.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SUD005.202 not supported + Set Platform Sleep Type S0ix + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + USB Devices Detection After Suspension S0ix + Exit From Root User + +SUD006.202 USB devices detection after suspension (Fedora) (S3) + [Documentation] Check whether the external USB devices are detected + ... correctly after suspension. + Skip If not ${PLATFORM_SLEEP_TYPE_SELECTABLE} SUD006.202 not supported + Skip If '${ENV_ID_FEDORA}' not in ${TESTED_LINUX_DISTROS} SUD006.202 not supported + Set Platform Sleep Type S3 + Power On + Boot System Or From Connected Disk ${ENV_ID_FEDORA} + Login To Linux + Switch To Root User + USB Devices Detection After Suspension S3 + Exit From Root User + + +*** Keywords *** +USB Devices Detection After Suspension + [Documentation] Check whether the external USB devices are detected + ... correctly after suspension. + [Tags] robot:private + [Arguments] ${platform_sleep_type}=${EMPTY} + Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} ${out}= List Devices In Linux usb Should Contain ${out} ${USB_DEVICE} FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_SUSPEND_ITERATIONS} @@ -127,4 +194,34 @@ USB Devices Detection After Suspension (Ubuntu) ${out}= List Devices In Linux usb Should Contain ${out} ${USB_DEVICE} END - Exit From Root User + +USB Devices Detection After Warm Boot + [Documentation] Check whether the external USB devices are detected + ... correctly after a warm boot. + [Tags] robot:private + ${out}= List Devices In Linux usb + Should Contain ${out} ${USB_DEVICE} + + FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_WARMBOOT_ITERATIONS} + Perform Warmboot Using Rtcwake + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux usb + Should Contain ${out} ${USB_DEVICE} + END + +USB Devices Detection After Reboot + [Documentation] Check whether the external USB devices are detected + ... correctly after a reboot. + [Tags] robot:private + ${out}= List Devices In Linux usb + Should Contain ${out} ${USB_DEVICE} + FOR ${index} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} + Execute Reboot Command + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux usb + Should Contain ${out} ${USB_DEVICE} + END diff --git a/docs/README.md b/docs/README.md index 2ce9892574..e4b49a4c55 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,3 +1,9 @@ + + # OSFV documentation README Introducing new platform to the Open Source Firmware Validation infrastructure diff --git a/docs/adding-new-platforms.md b/docs/adding-new-platforms.md index d567beb4c8..bec2b2cab7 100644 --- a/docs/adding-new-platforms.md +++ b/docs/adding-new-platforms.md @@ -1,3 +1,9 @@ + + # Adding new platforms Depending on what type of platform you're adding, the instructions here will diff --git a/docs/config-parser.md b/docs/config-parser.md index 4f45676537..9880c7a07c 100644 --- a/docs/config-parser.md +++ b/docs/config-parser.md @@ -1,3 +1,9 @@ + + # Config parser ## Intro diff --git a/docs/contributing.md b/docs/contributing.md index 1a031859c3..e82fe57987 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1,3 +1,9 @@ + + # Contributing ## Code @@ -88,3 +94,75 @@ and add as guidelines: * Each new (or modified) file, test, keyword, must have a `[Documentation]` section. + +#### Public Keyword Documentation Requirements + +Public keywords are supposed to be called from other files, which import +it as a resource. They should be well documented to make them easier to use and +less prone to misusage and causing regression errors when modifying them. + +The documentation of a public keyword should contain: + +* A brief description of what the keyword does. +* The starting conditions that the keyword expects. Whether the DUT is power ON + or OFF, whether a specific OS is booted or not, what connection type is + required (SSH, Telnet/Serial), if any packages are required to be installed +* The arguments, their types and short descriptions of what the arguments are + for and what values can be passed in them. +* The return value, if it is used, what is it's type and what does it contain +* Effects, if the keyword shuts down the device, reboots it, logs in/out, + does anything, that could cause persistent effects or interfere with other + keywords' starting conditions. + +Example, that can be used as a template: + +```robotframework +Cowsay Keyword + [Documentation] + ... Saves a cowsay message of ``${input_text}`` to ``${out_file}`` + ... + ... === Requirements === + ... - The device has to be turned on + ... - Ubuntu has to be booted, logged in + ... - ``cowsay`` package to be installed + ... + ... === Arguments === + ... - ``${input_text}``: ``string`` - The text that will be used for the + ... \ cowsay message. Can be any string. + ... - ``${out_file}``: ``string`` - The file path under which the cowsay + ... \ message will be saved. Default: ``cowsay.txt``. Has to be a valid + ... \ path. Does not have to be absolute. + ... + ... === Return Value === + ... - ``string`` - The generated cowsay message + ... + ... === Effects === + ... - Creates ``${out_file}`` file with the cowsay message. Overwrites + ... \ the file if already exists. + [Arguments] ${input_text} ${out_file}="cowsay.txt" + + ${output}= Execute Command In Terminal cowsay ${input_text} | tee ${out_file} + RETURN ${output} +``` + +The documentation on robot documentation syntax can be found at [robotframework.org](http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#documentation-formatting). + +Note that the repository uses Robot Framework version 5.0, in which spaces need +to be escaped in keyword documentation, just like in the example. + +#### Private Keyword Documentation Requirements + +Private (local) keywords can be defined in both test suites and libraries +as a way to organize the code. Local keywords should be tagged with the +`robot:private` tag. Keywords with this tag are not supposed to be called +from the outside and don't need to be documented comprehensively. Calling a +keyword tagged as private causes a warning to appear in the logs. +Example private keyword: + +```robotframework +Hello World Printer Helper + [Documentation] Prints "Hello World!" to the RF console + [Tags] robot:private + + Log To Console Hello World! +``` diff --git a/docs/dts-tests.md b/docs/dts-tests.md index bfdebc2323..271a369246 100644 --- a/docs/dts-tests.md +++ b/docs/dts-tests.md @@ -1,3 +1,9 @@ + + # DTS tests This document describes current DTS tests coverage. Tests planned: @@ -26,17 +32,16 @@ Control variables: * `dts_ipxe_link`: useful if you are testing DTS which is not released yet. Just put here a link to your script which will load your DTS. By default DTS is being booted from `dl.3mdeb.com`; -* `dpp_logs_key`, `dpp_download_key`, `dpp_password`: for DPP credentials, if - tests need them. +* `dpp_email`, `dpp_password`: for DPP credentials, if tests need them. Launching example: ```bash -robot -b command_log.txt -v snipeit:no -L TRACE -v config:qemu -v rte_ip:127.0.0.1 -v boot_dts_from_ipxe_shell:True -v dts_ipxe_link:http://192.168.0.102:8080/ipxe -v dpp_logs_key:'LOGS_KEY' -v dpp_download_key:'DOWNLOAD_KEY' -v dpp_password:'PASSWORD' -t "E2E006.002*" dts/dts-e2e.robot +robot -b command_log.txt -v snipeit:no -L TRACE -v config:qemu -v rte_ip:127.0.0.1 -v boot_dts_from_ipxe_shell:True -v dts_ipxe_link:http://192.168.0.102:8080/ipxe -v dpp_email:'EMAIL' -v dpp_password:'PASSWORD' -t "E2E006.002*" dts/dts-e2e.robot ``` -> Note: replace `LOGS_KEY`, `DOWNLOAD_KEY` and `PASSWORD` with appropriate -> credentials if required. `http://192.168.0.102:8080/ipxe` with your DTS iPXE +> Note: replace `EMAIL` and `PASSWORD` with appropriate credentials if required. +> `http://192.168.0.102:8080/ipxe` with your DTS iPXE > script link. ## Unit tests diff --git a/docs/novacustom.md b/docs/novacustom.md index b6b47f2b2f..57520e3c96 100644 --- a/docs/novacustom.md +++ b/docs/novacustom.md @@ -1,3 +1,9 @@ + + # NovaCustom laptop workflow > Make sure to proceed with [Getting started section](../README.md#getting-started) @@ -5,14 +11,47 @@ first. A major hurdle when testing NVC laptops is the lack of an available serial console, which is the main mode of access for most of our other platforms. -So far, we have been testing our laptops over SSH with the help of -[DCU](https://github.com/Dasharo/dcu). -This approach, however, needs some prerequisites to be satisfied: +We have so far come up with two solutions to this problem. The one we currently +implement in our testing procedure is plugging an FTDI USB-TTL converter +into the DUT, and setting it as the serial console in the EDK2 setup menu. The +former method was testing our laptops over SSH with the help of +[DCU](https://github.com/Dasharo/dcu). You can find the instructions for both +approaches below. + +## FTDI converter + +The obvious prerequisite is that you have an FTDI FT232-based USB-TTL +converter. Currently, that's the only hardware that's been tested, and the +driver seems to be rather picky, so a random USB-TTL might not cut it. + +The steps are: + +* Plug the converter into the DUT +* Enable `Serial Console Redirection` from the `Dasharo System Features` menu +* Navigate to `Boot Maintenance Manager` -> `Console Options` +* Find and select the FTDI terminal device in each Console Input, Console + Output and Stderr menus. It will likely appear at the very end, the device + path should resemble + + ```text + PciRoot(0x0)/Pci(0x14,0x0)/USB(0x0,0x0)/Uart(115200,8,N,1)/TtyTerm() + ``` + +After that, the laptop can be used just like a regular platform with serial +console access. Just **make sure** you set up the OS'es to use the right +console, eg. `ttyUSB0`, not `ttyS1`. + +## SSH + DCU + +If you couldn't manage to get a hold of an FTDI converter, you will need to +set up SSH on the platform and change the UEFI options by reading, modifying +and writing back the NVRAM region with the help of DCU. -* If you have multiple OS'es on your platform, you need to ensure that the OS - you wish to test is set as the **first boot option**. Currently, switching - between OSes automatically is not supported. +* If you have multiple OS'es on your platform, you need to ensure that the + **first boot option** is set to a Linux system. Switching between OSes + automatically is only supported if the **first boot option** is a Linux + system. - When a test flashes the firmware, the bootorder will be restored to default. You can prevent this in two ways, although both of them require performing tests for different OS's separately: @@ -27,9 +66,14 @@ internal programmer. If any locks are present the flashing will fail. * Run tests with the target platform **powered on** and the target OS **booted**. * When adding a new laptop platform, make sure that `${OPTIONS_LIB}` is set to - `dcu` and `${POWER_CTRL}` is set to `none` in the config. + `options-lib_dcu` and `${POWER_CTRL}` is set to `none` in the config. * Docking station tests should be run separately because many checks are performed in the same way as on the internal ports. When testing a docking station make sure that the appliances are connected to the docking station and not directly to the device and the other way around. Otherwise false positives will be generated. +* Make sure to connect the laptop using an ethernet cable, not via WiFi. + Some Operating Systems use MAC randomization on ,or similar mechanisms, on + wireless interfaces, which is not being handled right now. This might lead to + losing connection when rebooting to another OS, as the DUT IP address is + configured as constant in platform configs. diff --git a/docs/qemu.md b/docs/qemu.md index 5baf4e105f..6f8373fdde 100644 --- a/docs/qemu.md +++ b/docs/qemu.md @@ -1,3 +1,9 @@ + + # QEMU workflow > Make sure to proceed with [Getting started section](../README.md#getting-started) @@ -24,7 +30,7 @@ environment variable (`DIR`). You may also decide to not use graphics user interface for QEMU. In that case choose mode `nographic`. If you run QEMU on a remote machine you may consider -to use mode `vnc` with default port for graphical output being `5900`. +using the `vnc` mode with default port for graphical output being `5900`. Dasharo (UEFI) in QEMU can be started with: @@ -60,3 +66,20 @@ robot -b command_log.txt -v snipeit:no -L TRACE -v config:qemu -v rte_ip:127.0.0 > Note: You do not have to reserve QEMU via `snipeit` therefore `-v snipeit:no` > is being used. Use QEMU config `-v config:qemu`, and, as a RTE IP, use > `127.0.0.1`. Test suite `dts/dts-tests.robot` is shown here as an example. + +## Connecting to the machine + +The machine's serial port is available over Telnet on `127.0.0.1:1234`. +You can connect to the serial port using telnet: + +```bash +telnet 127.0.0.1 1234 +``` + +The network connection to the machine is available on `127.0.0.1:5222` +For example, you can connect to the machine via SSH, if the booted OS +supports it: + +```bash +ssh 127.0.0.1 -p 5222 +``` diff --git a/docs/raptor-talos-2.md b/docs/raptor-talos-2.md index a1af8a930d..705b261f10 100644 --- a/docs/raptor-talos-2.md +++ b/docs/raptor-talos-2.md @@ -1,3 +1,9 @@ + + # RCS Talos II platform When running tests on Talos II platform use the following commands: diff --git a/docs/results.md b/docs/results.md index 2d91c97ff9..46121ba80b 100644 --- a/docs/results.md +++ b/docs/results.md @@ -1,3 +1,9 @@ + + # OSFV test results ## Publishing into spreadsheet diff --git a/docs/tests-naming-convention.md b/docs/tests-naming-convention.md new file mode 100644 index 0000000000..939d4b5c10 --- /dev/null +++ b/docs/tests-naming-convention.md @@ -0,0 +1,46 @@ + + +# Tests naming Convention + +The tests in the Open Source Firmware Validation repository use the following +naming convention: + +`.` + +where: +- `suite_id` - It's typically 3 to 4 letters, uppercase, identifies the + test suite. Should be related to what the test suite accomplishes. + Examples: +- `PSW001.001` - the `PSW` test suite tests the UEFI setup password functionality. + Name is clearly derived from the word `Password`. +- `CBO001.001` - the suite tests customizing the boot order. The name is an acronym + of `Custom Boot Order` +- `case_id` - It's a three digit number with leading zeros. Identifies test + cases in a test suite. Typically test cases are numbered incrementally + starting from `001`. + Examples: + + `VBO001.001` + + `VBO002.001` + + `VBO003.001` + + `VBO004.001` +- `environment_id` - A three digit number, unambiguously identifies the + environment in which the test case is performed. The IDs of environments + are separated into groups based on the leading digit: + + `1xx` - Firmware + Example: `101` - EDK2 UEFI + + `2xx` - Linux + Example: `201` - Ubuntu + + `3xx` - Windows + Example: `301` - Windows 11 + +All the `environment_id`s of all the tested environments are defined as +Robot Framework variables in the `os-config/environment-test-ids.robot` +file. + +**❗Note:** in old test cases the `environment_id` segment was used more +loosely. `environment_id`s with leading `0` don't use the +convention above. diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 11762525f0..ed0b4f6cb6 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -1,3 +1,9 @@ + + # Troubleshooting ## Tests fail on 'Suite Setup' - 'To Boot Directly' not found diff --git a/docs/uml/power-state-v0.1.0.puml b/docs/uml/power-state-v0.1.0.puml index 31f7177da6..542c806c36 100644 --- a/docs/uml/power-state-v0.1.0.puml +++ b/docs/uml/power-state-v0.1.0.puml @@ -1,3 +1,7 @@ +' SPDX-FileCopyrightText: 2024 3mdeb +' +' SPDX-License-Identifier: Apache-2.0 + @startuml title OSFV Power state requirements - v0.1.0\nHigh priority (tells us whether we can implement some form of automatic power control) diff --git a/docs/uml/power-supply-v0.1.0.puml b/docs/uml/power-supply-v0.1.0.puml index d472fe181f..ac04be09bb 100644 --- a/docs/uml/power-supply-v0.1.0.puml +++ b/docs/uml/power-supply-v0.1.0.puml @@ -1,3 +1,7 @@ +' SPDX-FileCopyrightText: 2024 3mdeb +' +' SPDX-License-Identifier: Apache-2.0 + @startuml title OSFV Power supply requirements - v0.1.0\nLow priority (tells us how we need to implement the connections, but does not limit the test scope) diff --git a/docs/uml/serial-v0.1.0.puml b/docs/uml/serial-v0.1.0.puml index 9e6116ccb9..1fafd67a24 100644 --- a/docs/uml/serial-v0.1.0.puml +++ b/docs/uml/serial-v0.1.0.puml @@ -1,3 +1,7 @@ +' SPDX-FileCopyrightText: 2024 3mdeb +' +' SPDX-License-Identifier: Apache-2.0 + @startuml title OSFV serial requirements - v0.1.0\nHigh priority (tells us whether we can execute any firmware-level tests at all, or just OS-level tests) diff --git a/docs/windows_hlk_setup.md b/docs/windows_hlk_setup.md index 6ee5f4547c..17d2b4a101 100644 --- a/docs/windows_hlk_setup.md +++ b/docs/windows_hlk_setup.md @@ -1,3 +1,9 @@ + + # Windows HLK - overview The Windows HLK (Hardware Lab Kit) is a test framework used to test hardware diff --git a/drive_letters.ps1 b/drive_letters.ps1 index 4eece23f29..0fc3b2eabf 100644 --- a/drive_letters.ps1 +++ b/drive_letters.ps1 @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + Get-WmiObject -Query "SELECT * FROM Win32_DiskDrive" | ForEach-Object { $disk = $_ $partitions = "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='$($disk.DeviceID)'} WHERE AssocClass = Win32_DiskDriveToDiskPartition" diff --git a/dts/dts-e2e.robot b/dts/dts-e2e.robot index bb623cd3ac..ec775e0c8d 100644 --- a/dts/dts-e2e.robot +++ b/dts/dts-e2e.robot @@ -12,44 +12,13 @@ Resource ../variables.robot Suite Setup Run Keywords ... Prepare Test Suite AND -... Skip If not ${DTS_SUPPORT} +... Skip If not ${DTS_SUPPORT} AND +... Power On And Enter DTS Shell AND +... Execute Linux Command systemctl start sshd Suite Teardown Run Keyword ... Log Out And Close Connection - - -*** Variables *** -# TODO: We should extend our keyword libs with keywords for DTS UI, these are -# first candidates. But before doing so - we need to establish some UI rules in -# DTS itself. -# DTS checkpoints: -${DTS_CHECKPOINT}= Enter an option: -${DTS_CONFIRM_CHECKPOINT}= Press Enter to continue -${HCL_REPORT_CHECKPOINT}= Please consider contributing to the "Hardware for Linux" project in the future. -${HCL_REPORT_SENDINGLOGS}= -... Do you want to support Dasharo development by sending us logs with your hardware configuration? [N/y] -${DTS_SPECIFICATION_WARN}= Does it match your actual specification? (Y|n) -${DTS_DEPLOY_WARN}= Do you want to deploy this Dasharo Firmware on your platform (Y|n) -${DTS_HW_PROBE_WARN}= Do you want to participate in this project? -${DTS_HEADS_SWITCH_QUESTION}= Would you like to switch to Dasharo heads firmware? (Y|n) -${DPP_PACKAGES_CHECKPOINT}= -... If you did not buy any DPP\npackages - feel free to continue.\n${DTS_CONFIRM_CHECKPOINT} -# DTS initial deployment menupoints: -${DTS_DCR_UEFI_MENUPOINT}= Community version -${DTS_DPP_UEFI_MENUPOINT}= DPP version (coreboot + UEFI) -${DTS_DPP_SEA_MENUPOINT}= DPP version (coreboot + SeaBIOS) -# Default DTS boot type, can be overwritten by CMD: -${DTS_BOOT_TYPE}= iPXE -# DTS options: -${DTS_HCL_OPT}= 1 -${DTS_DEPLOY_OPT}= 2 -${DTS_CREDENTIALS_OPT}= 4 -${DTS_DCR_UEFI_OPT}= c -${DTS_DPP_UEFI_OPT}= d -${DTS_DPP_SEA_OPT}= s -# DTS subscription checkpoints: -${DTS_NOACCESS_DPP_UEFI}= DPP version (coreboot + UEFI) available but you don't have access -${DTS_NOACCESS_DPP_SEABIOS}= DPP version (coreboot + SeaBIOS) available but you don't have access -${DTS_NOACCESS_DPP_HEADS}= DPP version (coreboot + Heads) available but you don't have access +Test Setup Prepare DTS Test +Test Teardown Teardown DTS Test *** Test Cases *** @@ -57,9 +26,6 @@ E2E001.001 HCL Report test [Documentation] Verify that HCL Report is being executed with all ... expected messages. The report should not fail even if it failed to ... collect some data, because it is responsible only for collecting. - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Prepare DTS for testing: Execute Command In Terminal export DTS_TESTING="true" Write Into Terminal dts-boot @@ -87,9 +53,6 @@ E2E002.001 NCM NV4XMB,ME,MZ initial deployment (legacy -> Coreboot + UEFI) - com ... of Dahsaro Firmware for NovaCustom NV4XMB,ME,MZ. This deployment ... should pass without credentials. [Tags] novacustom_comm - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="NV4XMB,ME,MZ" TEST_BOARD_MODEL="NV4XMB,ME,MZ" @@ -108,9 +71,6 @@ E2E002.002 NCM NS50_70MU initial deployment (legacy -> Coreboot + UEFI) - commun ... of Dahsaro Firmware for NovaCustom NS50_70MU. This deployment ... should pass without credentials. [Tags] novacustom_comm - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="NS50_70MU" TEST_BOARD_MODEL="NS50_70MU" @@ -129,9 +89,6 @@ E2E002.003 NCM NS5x_NS7xPU initial deployment (legacy -> Coreboot + UEFI) - comm ... of Dahsaro Firmware for NovaCustom NS5x_NS7xPU. This deployment ... should pass without credentials. [Tags] novacustom_comm - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="NS5x_NS7xPU" TEST_BOARD_MODEL="NS5x_NS7xPU" @@ -150,9 +107,6 @@ E2E002.004 NCM NV4xPZ initial deployment (legacy -> Coreboot + UEFI) - community ... of Dahsaro Firmware for NovaCustom NV4xPZ. This deployment ... should pass without credentials. [Tags] novacustom_comm - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="NV4xPZ" TEST_BOARD_MODEL="NV4xPZ" @@ -173,9 +127,6 @@ E2E002.005 NCM NV4xPZ transition (Coreboot + UEFI -> Coreboot + Heads) - DPP ver ... keys, so we expect no update will be provided, but a message ... encouraging subscription purchase should be visible. [Tags] novacustom_heads - # 1) Get into DTS - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="NV4xPZ" TEST_BOARD_MODEL="NV4xPZ" @@ -195,9 +146,6 @@ E2E002.006 NCM transition NV4xPZ (Coreboot + UEFI -> Heads) - DPP version, with ... We start from Dasharo (coreboot + UEFI) firmware with version that should ... allow for the transition. We insert correct DPP keys for heads variant. [Tags] novacustom_heads - # 1) Get into DTS - Power On And Enter DTS Shell - # 2) Emulate needed env.. We assume that transition is from Dasharo UEFI to # Dasharo HEAD, so we need to emulate appropriate EC firmware presence: Execute Command In Terminal @@ -208,7 +156,7 @@ E2E002.006 NCM transition NV4xPZ (Coreboot + UEFI -> Heads) - DPP version, with Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start update: Go Through Heads Transition @@ -222,9 +170,6 @@ E2E002.007 NCM V540_6x_TU initial deployment (legacy -> Coreboot + UEFI) - commu ... of Dahsaro Firmware for NovaCustom V540_6x_TU. This deployment ... should pass without credentials. [Tags] novacustom_comm - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="V54x_6x_TU" TEST_BOARD_MODEL="V540TU" @@ -244,9 +189,6 @@ E2E002.008 NCM V560_6x_TU initial deployment (legacy -> Coreboot + UEFI) - commu ... of Dahsaro Firmware for NovaCustom V560_6x_TU. This deployment ... should pass without credentials. [Tags] novacustom_comm - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="V54x_6x_TU" TEST_BOARD_MODEL="V560TU" @@ -266,9 +208,6 @@ E2E002.009 NCM V540TNC_TND_TNE initial deployment (legacy -> Coreboot + UEFI) - ... of Dahsaro Firmware for NovaCustom V540TNC_TND_TNE. This deployment ... should pass without credentials. [Tags] novacustom_comm - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="V5xTNC_TND_TNE" TEST_BOARD_MODEL="V540TNx" @@ -307,9 +246,6 @@ E2E002.010 NCM V560TNC_TND_TNE initial deployment (legacy -> Coreboot + UEFI) - ... of Dahsaro Firmware for NovaCustom V560TNC_TND_TNE. This deployment ... should pass without credentials. [Tags] novacustom_comm - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="V5xTNC_TND_TNE" TEST_BOARD_MODEL="V560TNx" @@ -357,9 +293,6 @@ E2E003.001 MSI PRO Z690-A DDR4 initial deployment (legacy -> Coreboot + UEFI) - ... of Dahsaro Firmware for MSI PRO Z690-A WIFI DDR4(MS-7D25)/PRO Z690-A ... WIFI DDR4(MS-7D25). This deployment should pass without credentials. [Tags] msi_comm - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="MS-7D25" TEST_BOARD_MODEL="PRO Z690-A WIFI DDR4(MS-7D25)" @@ -378,9 +311,6 @@ E2E003.002 MSI PRO Z690-A initial deployment (legacy -> Coreboot + UEFI) - commu ... of Dahsaro Firmware for MSI PRO Z690-A WIFI (MS-7D25)/PRO Z690-A ... (MS-7D25). This deployment should pass without credentials. [Tags] msi_comm - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="MS-7D25" TEST_BOARD_MODEL="PRO Z690-A WIFI (MS-7D25)" @@ -399,9 +329,6 @@ E2E003.003 MSI PRO Z690-A DDR-4 initial deployment (legacy -> Coreboot + UEFI) - ... of Dahsaro Firmware for MSI PRO Z690-A WIFI DDR4(MS-7D25)/PRO Z690-A ... (MS-7D25). This deployment should not pass without credentials. [Tags] msi_dpp - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="MS-7D25" TEST_BOARD_MODEL="PRO Z690-A WIFI DDR4(MS-7D25)" @@ -426,9 +353,6 @@ E2E003.004 MSI PRO Z690-A initial deployment (legacy -> Coreboot + UEFI) - DPP v ... of Dahsaro Firmware for MSI PRO Z690-A WIFI DDR4(MS-7D25)/PRO Z690-A ... DDR 4(MS-7D25). This deployment should not pass without credentials. [Tags] msi_dpp - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="MS-7D25" TEST_BOARD_MODEL="PRO Z690-A WIFI (MS-7D25)" @@ -453,9 +377,6 @@ E2E003.005 MSI PRO Z690-A DDR-4 initial deployment (legacy -> Coreboot + UEFI) - ... of Dahsaro Firmware for MSI PRO Z690-A WIFI DDR4(MS-7D25)/PRO Z690-A ... (MS-7D25). This deployment should pass with credentials. [Tags] msi_dpp - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="MS-7D25" TEST_BOARD_MODEL="PRO Z690-A WIFI DDR4(MS-7D25)" @@ -464,7 +385,7 @@ E2E003.005 MSI PRO Z690-A DDR-4 initial deployment (legacy -> Coreboot + UEFI) - Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start initial deployment: Go Through Initial Deployment DPP UEFI @@ -477,9 +398,6 @@ E2E003.006 MSI PRO Z690-A initial deployment (legacy -> Coreboot + UEFI) - DPP v ... of Dahsaro Firmware for MSI PRO Z690-A WIFI DDR4(MS-7D25)/PRO Z690-A ... DDR 4(MS-7D25). This deployment should pass with credentials. [Tags] msi_dpp - # 1) Get into DTS: - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="MS-7D25" TEST_BOARD_MODEL="PRO Z690-A WIFI (MS-7D25)" @@ -488,7 +406,7 @@ E2E003.006 MSI PRO Z690-A initial deployment (legacy -> Coreboot + UEFI) - DPP v Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start initial deployment: Go Through Initial Deployment DPP UEFI @@ -505,9 +423,6 @@ E2E003.007 MSI PRO Z690-A DDR-4 update (Coreboot + UEFI -> Coreboot + UEFI) - co ... more inf.. Therefore to test update via capsules - you have to ... provide credentials with access to capsules. [Tags] msi_comm - # 1) Get into DTS - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="MS-7D25" TEST_BOARD_MODEL="PRO Z690-A WIFI DDR4(MS-7D25)" @@ -519,9 +434,6 @@ E2E003.007 MSI PRO Z690-A DDR-4 update (Coreboot + UEFI -> Coreboot + UEFI) - co # 3) Start update: Go Through Update - # 4) The final step is rebooting: - Wait For Checkpoint Rebooting - E2E003.008 MSI PRO Z690-A update (Coreboot + UEFI -> Coreboot + UEFI) - community version [Documentation] Verify Dasharo (coreboot + UEFI) update logic on MSI PRO ... Z690-A WIFI(MS-7D25)/PRO Z690-A(MS-7D25). We start from Dasharo @@ -531,9 +443,6 @@ E2E003.008 MSI PRO Z690-A update (Coreboot + UEFI -> Coreboot + UEFI) - communit ... more inf.. Therefore to test update via capsules - you have to ... provide credentials with access to capsules. [Tags] msi_comm - # 1) Get into DTS - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="MS-7D25" TEST_BOARD_MODEL="PRO Z690-A WIFI (MS-7D25)" @@ -545,9 +454,6 @@ E2E003.008 MSI PRO Z690-A update (Coreboot + UEFI -> Coreboot + UEFI) - communit # 3) Start update: Go Through Update - # 4) The final step is rebooting: - Wait For Checkpoint Rebooting - E2E003.009 MSI PRO Z690-A DDR-4 update (Coreboot + UEFI -> Coreboot + UEFI) - DPP version, with credentials [Documentation] Verify Dasharo (coreboot + UEFI) update logic on MSI PRO ... Z690-A WIFI DDR4(MS-7D25)/PRO Z690-A DDR4(MS-7D25). We start from @@ -557,10 +463,6 @@ E2E003.009 MSI PRO Z690-A DDR-4 update (Coreboot + UEFI -> Coreboot + UEFI) - DP ... more inf.. Therefore to test update via capsules - you have to ... provide credentials with access to capsules. [Tags] msi_dpp - - # 1) Get into DTS - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="MS-7D25" TEST_BOARD_MODEL="PRO Z690-A WIFI DDR4(MS-7D25)" @@ -570,10 +472,10 @@ E2E003.009 MSI PRO Z690-A DDR-4 update (Coreboot + UEFI -> Coreboot + UEFI) - DP Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start update: - Go Through Update + Go Through Update Decline Heads # 5) The final step is rebooting: Wait For Checkpoint Rebooting @@ -587,10 +489,6 @@ E2E003.010 MSI PRO Z690-A update (Coreboot + UEFI -> Coreboot + UEFI) - DPP vers ... more inf.. Therefore to test update via capsules - you have to ... provide credentials with access to capsules. [Tags] msi_dpp - - # 1) Get into DTS - Power On And Enter DTS Shell - # 2) Emulate needed env.: Execute Command In Terminal ... export DTS_TESTING="true" TEST_SYSTEM_MODEL="MS-7D25" TEST_BOARD_MODEL="PRO Z690-A WIFI (MS-7D25)" @@ -600,15 +498,10 @@ E2E003.010 MSI PRO Z690-A update (Coreboot + UEFI -> Coreboot + UEFI) - DPP vers Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages - - # 4) Start update: - ${out}= Read From Terminal Until ${DTS_CHECKPOINT} - Write Into Terminal 2 - Log ${out} + Provide DPP Credentials # 4) Start update: - Go Through Update + Go Through Update Decline Heads # 5) The final step is rebooting: Wait For Checkpoint Rebooting @@ -620,8 +513,6 @@ E2E003.011 MSI PRO Z690-A DDR4 transition (Coreboot + UEFI -> heads) - without c ... insert no DPP keys, so we expect no update will be provided, but a ... message encouraging subscription purchase should be visible. [Tags] msi_heads - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -643,8 +534,6 @@ E2E003.012 MSI PRO Z690-A DDR4 transition (Coreboot + UEFI -> heads) - with cred ... UEFI) firmware with version that should allow for the transition. We ... insert correct DPP keys for heads variant. [Tags] msi_heads - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.. We assume that transition is from Dasharo UEFI to # Dasharo HEAD, so we need to emulate appropriate EC firmware presence: @@ -656,9 +545,9 @@ E2E003.012 MSI PRO Z690-A DDR4 transition (Coreboot + UEFI -> heads) - with cred Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials - # 4) Start update: + # 4) Start Heads transition: Go Through Heads Transition # 5) The final step is rebooting: @@ -671,8 +560,6 @@ E2E003.013 MSI PRO Z690-A transition (UEFI -> heads) - without credentials ... insert no DPP keys, so we expect no update will be provided, but a ... message encouraging subscription purchase should be visible. [Tags] msi_heads - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -694,8 +581,6 @@ E2E003.014 MSI PRO Z690-A transition (UEFI -> heads) - with credentials ... UEFI) firmware with version that should allow for the transition. We ... insert correct DPP keys for heads variant. [Tags] msi_heads - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.. We assume that transition is from Dasharo UEFI to # Dasharo HEAD, so we need to emulate appropriate EC firmware presence: @@ -707,9 +592,9 @@ E2E003.014 MSI PRO Z690-A transition (UEFI -> heads) - with credentials Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials - # 4) Start update: + # 4) Start Heads transition: Go Through Heads Transition # 5) The final step is rebooting: @@ -725,8 +610,6 @@ E2E004.001 Dell OptiPlex 7010 DPP initial deployment (legacy -> Coreboot + UEFI) ... 7010 without credentials provided. User should not have access and ... DTS should inform about it. [Tags] optiplex_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -753,8 +636,6 @@ E2E004.002 Dell Optiplex 7010 DPP initial deployment (legacy -> Coreboot + UEFI) ... 7010 with credentials provided. User should have access, and firmware ... should be deployed. [Tags] optiplex_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -764,7 +645,7 @@ E2E004.002 Dell Optiplex 7010 DPP initial deployment (legacy -> Coreboot + UEFI) Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start initial deployment: Go Through Initial Deployment DPP UEFI @@ -778,8 +659,6 @@ E2E004.003 Dell Optiplex 7010 DPP update (Coreboot + UEFI -> Coreboot + UEFI) - ... 7010 without credentials provided. User should not have access and ... DTS should inform about it. [Tags] optiplex_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -801,8 +680,6 @@ E2E004.004 Dell Optiplex 7010 DPP update (Coreboot + UEFI -> Coreboot + UEFI) - ... 7010 with credentials provided. User should have access, and firmware ... should be deployed. [Tags] optiplex_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -813,22 +690,17 @@ E2E004.004 Dell Optiplex 7010 DPP update (Coreboot + UEFI -> Coreboot + UEFI) - Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start update: Go Through Update - # 5) The final step is rebooting: - Wait For Checkpoint Rebooting - E2E004.005 Dell OptiPlex 9010 DPP initial deployment (legacy -> Coreboot + UEFI) - without credentials [Documentation] Checks whether a User will have access to initial ... deployment of Dasharo firmware (Coreboot + UEFI) for Dell Optiplex ... 9010 without credentials provided. User should not have access and ... DTS should inform about it. [Tags] optiplex_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -855,8 +727,6 @@ E2E004.006 Dell Optiplex 9010 DPP initial deployment (legacy -> Coreboot + UEFI) ... 9010 with credentials provided. User should have access, and firmware ... should be deployed. [Tags] optiplex_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -866,7 +736,7 @@ E2E004.006 Dell Optiplex 9010 DPP initial deployment (legacy -> Coreboot + UEFI) Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start initial deployment: Go Through Initial Deployment DPP UEFI @@ -880,8 +750,6 @@ E2E004.007 Dell Optiplex 9010 DPP update (Coreboot + UEFI -> Coreboot + UEFI) - ... 9010 without credentials provided. User should not have access and ... DTS should inform about it. [Tags] optiplex_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -903,8 +771,6 @@ E2E004.008 Dell Optiplex 9010 DPP update (Coreboot + UEFI -> Coreboot + UEFI) - ... 9010 with credentials provided. User should have access, and firmware ... should be deployed. [Tags] optiplex_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -915,14 +781,11 @@ E2E004.008 Dell Optiplex 9010 DPP update (Coreboot + UEFI -> Coreboot + UEFI) - Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start update: Go Through Update - # 5) The final step is rebooting: - Wait For Checkpoint Rebooting - ################################################################################ # PC Engines tests. Only APU2 is being tested, other APUs have the same # configuration, but different links, so testing them is not necessary: @@ -934,8 +797,6 @@ E2E005.001 PC Engines DPP initial deployment (legacy -> Coreboot + UEFI) - no cr ... and do not provide DPP credentials. There should be no access granted ... for the firmware without credentials. [Tags] pcengines_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -960,8 +821,6 @@ E2E005.002 PC Engines DPP initial deployment (legacy -> Coreboot + UEFI) - with ... PC Engines with credentials provided (these should be provided via ... CMD). [Tags] pcengines_dpp - # 1) Get into DTS: - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -970,7 +829,7 @@ E2E005.002 PC Engines DPP initial deployment (legacy -> Coreboot + UEFI) - with Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start initial deployment: Go Through Initial Deployment DPP UEFI @@ -982,9 +841,7 @@ E2E005.003 PC Engines DPP initial deployment (legacy -> Coreboot + SeaBIOS) - wi [Documentation] Verify DPP (coreboot + SeaBIOS) initial deployment logic ... on PC Engines. We start from legacy firmware and insert correct DPP keys ... for UEFI variant. - [Tags] pcengines_dpp - # 1) Get into DTS: - Power On And Enter DTS Shell + [Tags] pcengines_seabios # 2) Emulate needed env.: Execute Command In Terminal @@ -1008,9 +865,7 @@ E2E005.004 PC Engines DPP initial deployment (legacy -> Coreboot + SeaBIOS) - wi [Documentation] Verify DPP (coreboot + SeaBIOS) initial deployment logic ... on PC Engines. We start from legacy firmware and insert correct DPP ... keys for UEFI variant. - [Tags] pcengines_dpp - # 1) Get into DTS: - Power On And Enter DTS Shell + [Tags] pcengines_seabios # 2) Emulate needed env.: Execute Command In Terminal @@ -1019,7 +874,7 @@ E2E005.004 PC Engines DPP initial deployment (legacy -> Coreboot + SeaBIOS) - wi Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start initial deployment: Go Through Initial Deployment DPP SeaBIOS @@ -1037,8 +892,6 @@ E2E006.001 Odroid H4 initial deployment (legacy -> Coreboot + UEFI) - without cr ... without credentials provided. User should not have access and DTS ... should inform about it. [Tags] odroid_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -1065,8 +918,6 @@ E2E006.002 Odroid H4 DPP initial deployment (legacy -> Coreboot + UEFI) - with c ... credentials provided. User should have access, and firmware should be ... deployed. [Tags] odroid_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -1076,7 +927,7 @@ E2E006.002 Odroid H4 DPP initial deployment (legacy -> Coreboot + UEFI) - with c Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages + Provide DPP Credentials # 4) Start initial deployment: Go Through Initial Deployment DPP UEFI @@ -1090,8 +941,6 @@ E2E006.003 Odroid H4 update (Coreboot + UEFI -> Coreboot + UEFI) - without crede ... without credentials provided. User should not have access and DTS ... should inform about it. [Tags] odroid_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -1113,8 +962,6 @@ E2E006.004 Odroid H4 DPP update (Coreboot + UEFI -> Coreboot + UEFI) - with cred ... 9010 with credentials provided. User should have access, and firmware ... should be deployed. [Tags] odroid_dpp - # 1) Get into DTS - Power On And Enter DTS Shell # 2) Emulate needed env.: Execute Command In Terminal @@ -1125,133 +972,42 @@ E2E006.004 Odroid H4 DPP update (Coreboot + UEFI -> Coreboot + UEFI) - with cred Write Into Terminal dts-boot # 3) Provide DPP credentials: - Provide DPP Credentials Without Packages - - # 4) Start initial deployment: - Go Through Initial Deployment DPP UEFI + Provide DPP Credentials - # 5) The final step is rebooting: - Wait For Checkpoint Rebooting + # 4) Start update: + Go Through Update *** Keywords *** -Power On And Enter DTS Shell - [Documentation] This KW boots DTS using the method defined by user via - ... DTS_BOOT_TYPE or the default one. After booting DTS shell is being - ... entered. - # 1) Boot up to DTS UI: - Power On - Boot Dasharo Tools Suite ${DTS_BOOT_TYPE} - - # 2) Enter shell: - Write Into Terminal S +Prepare DTS Test + Start New DTS SSH Session In QEMU + +Teardown DTS Test + [Documentation] Close SSH session and cleanup all possible changes made + ... during test + Restore Initial DUT Connection Method + # not sure if it's needed if we don't want to keep multiple sessions in + # background + SSHLibrary.Close Connection Set Prompt For Terminal bash-5.2# - Read From Terminal Until Prompt - Set DUT Response Timeout 90s - -Provide DPP Credentials - [Documentation] This KW automatically writes DPP credentials into DTS UI. - ... The credentials should be set via CMD or file. - ${out}= Read From Terminal Until ${DTS_CHECKPOINT} - Write Bare Into Terminal ${DTS_CREDENTIALS_OPT} - - # Enter logs key: - Variable Should Exist ${DPP_LOGS_KEY} - Write Into Terminal ${DPP_LOGS_KEY} - # Enter download key: - Variable Should Exist ${DPP_DOWNLOAD_KEY} - Write Into Terminal ${DPP_DOWNLOAD_KEY} - # Enter password: - Variable Should Exist ${DPP_PASSWORD} - Write Into Terminal ${DPP_PASSWORD} - -Provide DPP Credentials Without Packages - [Documentation] This KW automatically writes DPP credentials that do not - ... have access to DPP packages into DTS UI and checks out a DPP package - ... warning. - Provide DPP Credentials - - Wait For Checkpoint And Press Enter ${DPP_PACKAGES_CHECKPOINT} - -Wait For Checkpoint - [Documentation] This KW waits for checkpoint (first argument) and logs - ... everything read up to the checkpoint. - [Arguments] ${checkpoint} - ${out}= Read From Terminal Until ${checkpoint} - Log ${out} - -Wait For Checkpoint And Write - [Documentation] This KW waits for checkpoint (first argument) - ... and writes specified answer (second argument), with logging all - ... output before the checkpoint. - [Arguments] ${checkpoint} ${to_write} - Wait For Checkpoint ${checkpoint} - Sleep 1s - Write Into Terminal ${to_write} - -Wait For Checkpoint And Press Enter - [Documentation] This KW waits for checkpoint (first argument) - ... and preses enter, with logging all output before the checkpoint. - [Arguments] ${checkpoint} - Wait For Checkpoint ${checkpoint} - Sleep 1s - Write Bare Into Terminal \r\n - -Go Through Initial Deployment - [Documentation] This KW goes through standard Dasharo initial deployment - ... choosing all needed menu options and answering all questions. The - ... only thing which needs to be specified - the Dasharo version to - ... deploy (first argument), available versions: DCR UEFI, DPP UEFI, DPP - ... SeaBIOS. - [Arguments] ${dasharo_version} - # 1) Select initial deployment: - Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DEPLOY_OPT} - - # 2) Wait for HCL report to do its work, might take some time: - Set DUT Response Timeout 5m - # Accept hw-probe question from HCL report: - Wait For Checkpoint And Write ${DTS_HW_PROBE_WARN} Y - Set DUT Response Timeout 30s - - # 3) Choose version to install: - IF '${dasharo_version}' == 'DCR UEFI' - Wait For Checkpoint ${DTS_DCR_UEFI_OPT}) ${DTS_DCR_UEFI_MENUPOINT} - Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DCR_UEFI_OPT} - ELSE IF '${dasharo_version}' == 'DPP UEFI' - Wait For Checkpoint ${DTS_DPP_UEFI_OPT}) ${DTS_DPP_UEFI_MENUPOINT} - Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DPP_UEFI_OPT} - ELSE IF '${dasharo_version}' == 'DPP SeaBIOS' - Wait For Checkpoint ${DTS_DPP_SEA_OPT}) ${DTS_DPP_SEA_MENUPOINT} - Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DPP_SEA_OPT} - ELSE - Fail No Dasharo version for initial deployment provided! - END - - # 4) Check out all warnings: - Wait For Checkpoint And Write ${DTS_SPECIFICATION_WARN} Y - Wait For Checkpoint And Write ${DTS_DEPLOY_WARN} Y - -Go Through Update - [Documentation] This KW goes through standard Dasharo update workflow - ... choosing all needed menu options and answering all questions. - # 1) Select initial deployment: - Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DEPLOY_OPT} - - # 2) Check out all warnings: - Wait For Checkpoint And Write ${DTS_SPECIFICATION_WARN} Y - Wait For Checkpoint And Write ${DTS_DEPLOY_WARN} Y - -Go Through Heads Transition - [Documentation] This KW goes through transition to Dasharo Heads choosing - ... all needed menu options and answering all questions. - # 1) Start update: - Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DEPLOY_OPT} - - # 2) Check out all warnings: - Wait For Checkpoint And Write ${DTS_HEADS_SWITCH_QUESTION} Y - Wait For Checkpoint And Write ${DTS_SPECIFICATION_WARN} Y - Wait For Checkpoint And Write ${DTS_DEPLOY_WARN} Y - - # 3) Check for Heads firmware deployment success: - Wait For Checkpoint Successfully switched to Dasharo Heads firmware - Wait For Checkpoint And Write ${DTS_CONFIRM_CHECKPOINT} 1 + Execute Linux Command rm -rf /etc/cloud-pass /root/.mc + +Start New DTS SSH Session In QEMU + [Documentation] Changes connection method to ssh and logs in to DTS + Set Global Variable ${DUT_CONNECTION_METHOD} SSH + Login To DTS Via SSH In QEMU + +Login To DTS Via SSH In QEMU + [Documentation] Modified 'Login to Linux via SSH' keyword with ip set to + ... localhost and port set to 5222. + [Arguments] ${timeout}=180 ${prompt}=root@DasharoToolsSuite:~# + SSHLibrary.Open Connection localhost port=5222 prompt=${prompt} + SSHLibrary.Set Client Configuration + ... timeout=${timeout} + ... term_type=vt100 + ... width=400 + ... height=100 + ... escape_ansi=True + ... newline=LF + Wait Until Keyword Succeeds 3x 1s + ... SSHLibrary.Login root diff --git a/get_results_from_logs.py b/get_results_from_logs.py index a17ca7b75c..9866bb4ac9 100644 --- a/get_results_from_logs.py +++ b/get_results_from_logs.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + import os import sys import xml.etree.ElementTree as ET diff --git a/keys-and-keywords/totp.py b/keys-and-keywords/totp.py index a14f0782da..974708e0ca 100644 --- a/keys-and-keywords/totp.py +++ b/keys-and-keywords/totp.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + import pyotp diff --git a/keys.robot b/keys.robot index 5d4ac777b4..abc652aa76 100644 --- a/keys.robot +++ b/keys.robot @@ -1,25 +1,30 @@ *** Variables *** -${ARROW_UP}= \x1b\x5b\x41 -${ARROW_DOWN}= \x1b\x5b\x42 -${ARROW_RIGHT}= \x1b\x5b\x43 -${ARROW_LEFT}= \x1b\x5b\x44 -${F1}= \x1b\x4f\x50 -${F2}= \x1b\x4f\x51 -${F3}= \x1b\x4f\x52 -${F4}= \x1b\x4f\x53 -${F5}= \x1b\x5b\x31\x35\x7e -${F6}= \x1b\x5b\x31\x37\x7e -${F7}= \x1b\x5b\x31\x38\x7e -${F8}= \x1b\x5b\x31\x39\x7e -${F9}= \x1b\x5b\x32\x30\x7e -${F10}= \x1b\x5b\x32\x31\x7e -${F11}= \x1b\x5b\x32\x33\x7e -${F12}= \x1b\x5b\x32\x34\x7e -${CTRL_B}= \x02 -${CTRL_C}= \x03 -${CTRL_D}= \x04 -${ESC}= \x1b -${ENTER}= \x0d -${BACKSPACE}= \x08 -${KEY_SPACE}= \x20 -${DELETE}= \x1b\x5b\x33\x7e +${ARROW_UP}= \x1b\x5b\x41 +${ARROW_DOWN}= \x1b\x5b\x42 +${ARROW_RIGHT}= \x1b\x5b\x43 +${ARROW_LEFT}= \x1b\x5b\x44 +${ARROW_UP_APP}= \x1b\x4f\x41 +${ARROW_DOWN_APP}= \x1b\x4f\x42 +${ARROW_RIGHT_APP}= \x1b\x4f\x43 +${ARROW_LEFT_APP}= \x1b\x4f\x44 +${F1}= \x1b\x4f\x50 +${F2}= \x1b\x4f\x51 +${F3}= \x1b\x4f\x52 +${F4}= \x1b\x4f\x53 +${F5}= \x1b\x5b\x31\x35\x7e +${F6}= \x1b\x5b\x31\x37\x7e +${F7}= \x1b\x5b\x31\x38\x7e +${F8}= \x1b\x5b\x31\x39\x7e +${F9}= \x1b\x5b\x32\x30\x7e +${F10}= \x1b\x5b\x32\x31\x7e +${F11}= \x1b\x5b\x32\x33\x7e +${F12}= \x1b\x5b\x32\x34\x7e +${CTRL_B}= \x02 +${CTRL_C}= \x03 +${CTRL_D}= \x04 +${ESC}= \x1b +${ENTER}= \x0d +${BACKSPACE}= \x08 +${KEY_SPACE}= \x20 +${DELETE}= \x1b\x5b\x33\x7e +${KEY_PLUS}= \x2b diff --git a/keywords.robot b/keywords.robot index 27d7aade99..afdeb0232e 100644 --- a/keywords.robot +++ b/keywords.robot @@ -1,24 +1,20 @@ *** Settings *** -Library Collections -Library OperatingSystem -Resource pikvm-rest-api/pikvm_comm.robot -Resource lib/bios/menus.robot -Resource lib/secure-boot-lib.robot -Resource lib/usb-hid-msc-lib.robot -Resource lib/dts-lib.robot -Resource lib/terminal.robot -Resource lib/esp-scanning-lib.robot -Resource lib/dl-cache.robot -Resource lib/dmidecode-lib.robot -Resource lib/docks.robot -Resource lib/flash.robot -Resource lib/self-tests.robot -Resource lib/sleep-lib.robot -Resource lib/CPU-performance-lib.robot -Resource lib/framework.robot -Resource lib/me.robot -Resource lib/network.robot -Variables platform-configs/fan-curve-config.yaml +Library Collections +Library OperatingSystem +Resource lib/bios/menus.robot +Resource lib/secure-boot-lib.robot +Resource lib/usb-hid-msc-lib.robot +Resource lib/dts-lib.robot +Resource lib/terminal.robot +Resource lib/esp-scanning-lib.robot +Resource lib/dmidecode-lib.robot +Resource lib/docks.robot +Resource lib/flash.robot +Resource lib/self-tests.robot +Resource lib/sleep-lib.robot +Resource lib/framework.robot +Resource lib/me.robot +Resource lib/network.robot *** Keywords *** @@ -53,12 +49,12 @@ Login To Linux ... 3x ... 0 ... Login To Linux Via SSH - ... ${DEVICE_UBUNTU_USERNAME} - ... ${DEVICE_UBUNTU_PASSWORD} + ... ${DEVICE_OS_USERNAME} + ... ${DEVICE_OS_PASSWORD} ELSE IF '${DUT_CONNECTION_METHOD}' == 'open-bmc' Login To Linux Via OBMC root root ELSE - Login To Linux Over Serial Console ${DEVICE_UBUNTU_USERNAME} ${DEVICE_UBUNTU_PASSWORD} + Login To Linux Over Serial Console ${DEVICE_OS_USERNAME} ${DEVICE_OS_PASSWORD} END Login To Linux Via OBMC @@ -74,7 +70,7 @@ Login To Linux Via OBMC Login To Windows [Documentation] Universal login to Windows. - Boot System Or From Connected Disk ${OS_WINDOWS} + Boot System Or From Connected Disk ${ENV_ID_WINDOWS} # TODO: We need a better way of switching between SSH and serial inside tests IF '${DUT_CONNECTION_METHOD}' == 'pikvm' Set Test Variable ${DUT_CONNECTION_METHOD} SSH @@ -83,7 +79,7 @@ Login To Windows Set Test Variable ${DUT_CONNECTION_METHOD} SSH END IF '${DUT_CONNECTION_METHOD}' == 'SSH' - Login To Windows Via SSH ${DEVICE_WINDOWS_USERNAME} ${DEVICE_WINDOWS_PASSWORD} + Login To Windows Via SSH ${DEVICE_OS_USERNAME} ${DEVICE_OS_PASSWORD} ELSE Fail Login to Windows not supported. DUT_CONNECTION_METHOD must be set to SSH. END @@ -121,14 +117,14 @@ Login To Linux Over Serial Console ... long we want to wait for the login prompt. [Arguments] ${username} ... ${password} - ... ${device_ubuntu_user_prompt}=${device_ubuntu_user_prompt} + ... ${device_os_user_prompt}=${device_os_user_prompt} ... ${timeout}=300 Set DUT Response Timeout ${timeout} seconds Telnet.Read Until login: Telnet.Write ${username} Telnet.Read Until Password: Telnet.Write ${password} - Telnet.Set Prompt ${device_ubuntu_user_prompt} prompt_is_regexp=False + Telnet.Set Prompt ${device_os_user_prompt} prompt_is_regexp=False Telnet.Read Until Prompt Login To Linux Via SSH @@ -136,7 +132,7 @@ Login To Linux Via SSH ... username and password respectively. The optional timeout ... parameter can be used to specify how long we want to ... wait for the login prompt. - [Arguments] ${username} ${password} ${timeout}=180 ${prompt}=${DEVICE_UBUNTU_USER_PROMPT} + [Arguments] ${username} ${password} ${timeout}=180 ${prompt}=${DEVICE_OS_USER_PROMPT} Should Not Be Empty ${DEVICE_IP} msg=DEVICE_IP variable must be defined # We need this when switching from PiKVM to SSH Remap Keys Variables From PiKVM @@ -156,8 +152,8 @@ Login To Windows Via SSH ... username and password respectively. The optional timeout ... parameter can be used to specify how long we want to ... wait for the login prompt. - [Arguments] ${username}=${DEVICE_WINDOWS_USERNAME} ${password}=${DEVICE_WINDOWS_PASSWORD} ${timeout}=180 - SSHLibrary.Open Connection ${DEVICE_IP} prompt=${DEVICE_WINDOWS_USER_PROMPT} + [Arguments] ${username}=${DEVICE_OS_USERNAME} ${password}=${DEVICE_OS_PASSWORD} ${timeout}=180 + SSHLibrary.Open Connection ${DEVICE_IP} prompt=${DEVICE_OS_USER_PROMPT} SSHLibrary.Set Client Configuration ... timeout=${timeout} ... term_type=vt100 @@ -181,7 +177,7 @@ Login To Windows Via SSH # power on - login procedure in single keyword, and use # Run Keyword Until Succeeds? Restore Initial DUT Connection Method - Boot System Or From Connected Disk ${OS_WINDOWS} + Boot System Or From Connected Disk ${ENV_ID_WINDOWS} Set Test Variable ${DUT_CONNECTION_METHOD} SSH END END @@ -199,15 +195,15 @@ Switch To Root User # the "sudo -S" to pass password from stdin does not work correctly with # the su command and we need to type in the password Write Into Terminal sudo su - Read From Terminal Until [sudo] password for ${DEVICE_UBUNTU_USERNAME}: - Write Into Terminal ${DEVICE_UBUNTU_PASSWORD} - Set Prompt For Terminal ${DEVICE_UBUNTU_ROOT_PROMPT} + Read From Terminal Until [sudo] password for ${DEVICE_OS_USERNAME}: + Write Into Terminal ${DEVICE_OS_PASSWORD} + Set Prompt For Terminal ${DEVICE_OS_ROOT_PROMPT} Read From Terminal Until Prompt Exit From Root User [Documentation] Exit from the root environment Write Into Terminal exit - Set Prompt For Terminal ${DEVICE_UBUNTU_USER_PROMPT} + Set Prompt For Terminal ${DEVICE_OS_USER_PROMPT} Read From Terminal Until Prompt Open Connection And Log In @@ -394,7 +390,7 @@ Get Current CONFIG Stop Index ... Returns -1 if CONFIG not found in variables.robot. [Arguments] ${config_list} ${start} ${length}= Get Length ${config_list} - ${index}= Set Variable ${start+1} + ${index}= Set Variable ${start} FOR ${config} IN @{config_list[${index}:]} ${result}= Evaluate ${config}.get("ip") IF '${result}'!='None' RETURN ${index} @@ -411,7 +407,7 @@ Get Current CONFIG Should Not Be Equal ${start} ${-1} msg=Current CONFIG not found in hw-matrix ${stop}= Get Current CONFIG Stop Index ${config_list} ${start} Should Not Be Equal ${stop} ${-1} msg=Current CONFIG not found in hw-matrix - ${config}= Get Slice From List ${config_list} ${start} ${stop} + ${config}= Get Slice From List ${config_list} ${start} ${stop+1} RETURN ${config} Get Current CONFIG Item @@ -433,77 +429,6 @@ Get Current CONFIG Item Param ${device}= Get Current CONFIG Item ${item} RETURN ${device.${param}} -Get Slot Count - [Documentation] Returns count parameter value from slot key specified in - ... the argument if found, otherwise return 0. - [Arguments] ${slot} - ${is_found}= Evaluate "count" in """${slot}""" - ${return}= Set Variable If - ... ${is_found}==False 0 - ... ${is_found}==True ${slot.count} - RETURN ${return} - -Get USB Slot Count - [Documentation] Returns count parameter value from USB slot key specified - ... in the argument if found, otherwise return 0. - [Arguments] ${slots} - ${is_found1}= Evaluate "USB_Storage" in """${slots.slot1}""" - ${is_found2}= Evaluate "USB_Storage" in """${slots.slot2}""" - IF ${is_found1}==True - ${count1}= Get Slot Count ${slots.slot1} - ELSE - ${count1}= Evaluate 0 - END - IF ${is_found2}==True - ${count2}= Get Slot Count ${slots.slot2} - ELSE - ${count2}= Evaluate 0 - END - ${sum}= Evaluate ${count1}+${count2} - RETURN ${sum} - -Get All USB - [Documentation] Returns number of attached USB storages in current CONFIG. - ${conf}= Get Current CONFIG ${CONFIG_LIST} - ${is_found}= Evaluate "USB_Storage" in """${conf}""" - IF ${is_found}==True - ${usb_count}= Get Current CONFIG Item Param USB_Storage count - ${count_usb}= Evaluate ${usb_count} - ELSE - ${usb_count}= Evaluate "" - ${count_usb}= Evaluate 0 - END - ${is_found}= Evaluate "USB_Expander" in """${conf}""" - IF ${is_found}==True - ${external}= Get Current CONFIG Item USB_Expander - ${external_count}= Get USB Slot Count ${external} - ELSE - ${external}= Evaluate "" - ${external_count}= Evaluate 0 - END - ${count}= Evaluate ${count_usb}+${external_count} - RETURN ${count} - -Prepare Lm-sensors - [Documentation] Install lm-sensors and probe sensors. - Detect Or Install Package lm-sensors - Execute Command In Terminal sudo sensors-detect --auto - IF '${PLATFORM}' == 'raptor-cs_talos2' - Execute Command In Terminal modprobe w83795 - END - -Get Fan Speed - [Documentation] Returns current fan speed as int. - # Detect or Install Package lm-sensors - # Execute Command In Terminal yes | sudo sensors-detect - # Execute Command In Terminal modprobe w83795 - ${speed}= Execute Command In Terminal sensors | grep fan1 - ${speed}= Get Lines Containing String ${speed} RPM) - ${speed_split}= Split String ${speed} - ${rpm}= Get From List ${speed_split} 1 - ${rpm}= Convert To Number ${rpm} - RETURN ${rpm} - Prepare Test Suite [Documentation] Keyword prepares Test Suite by importing specific ... platform configuration keywords and variables and @@ -552,24 +477,38 @@ Prepare Test Suite END IF '${CONFIG}' == 'rpi-3b' Verify Number Of Connected SD Wire Devices + Set Library Search Order ${CONFIG} ${OPTIONS_LIB} + Import Osfv Libraries [Documentation] Import osfv_cli libraries based on config and command ... line variables - IF '${OPTIONS_LIB}'=='dcu' RETURN + IF '${OPTIONS_LIB}'=='options-lib_dcu' RETURN Log ${SNIPEIT} IF '${SNIPEIT}' == 'yes' Import Library osfv.rf.snipeit_robot Import Library osfv.rf.rte_robot.RobotRTE ${RTE_IP} True - ELSE IF 'sonoff' == '${POWER_CTRL}' - Variable Should Exist ${SONOFF_IP} - # The last parameter is the DUT config name. It needs to be provided if - # it SnipeIT is not used; otherwise the library would not be able to - # determine the platform type. - Import Library osfv.rf.rte_robot.RobotRTE ${RTE_IP} False - ... ${SONOFF_IP} ${CONFIG} + IF 'pikvm' == '${INITIAL_DUT_CONNECTION_METHOD}' + ${pikvm_ip}= Snipeit Get PiKVM IP ${RTE_IP} + Import Library pikvm.client.PiKVMClient ${pikvm_ip} + END ELSE - Import Library osfv.rf.rte_robot.RobotRTE ${RTE_IP} False - ... config=${CONFIG} + IF 'sonoff' == '${POWER_CTRL}' + Variable Should Exist ${SONOFF_IP} + # The last parameter is the DUT config name. It needs to be provided if + # it SnipeIT is not used; otherwise the library would not be able to + # determine the platform type. + Import Library osfv.rf.rte_robot.RobotRTE ${RTE_IP} False + ... ${SONOFF_IP} ${CONFIG} + ELSE + Import Library osfv.rf.rte_robot.RobotRTE ${RTE_IP} False + ... config=${CONFIG} + END + IF 'pikvm' == '${INITIAL_DUT_CONNECTION_METHOD}' + Variable Should Exist + ... ${pikvm_ip} + ... PiKVM IP cannot be fetched from SnipeIT. Please provide it in the 'PIKVM_IP' variable + Import Library pikvm.client.PiKVMClient ${pikvm_ip} + END END Prepare To SSH Connection @@ -581,6 +520,9 @@ Prepare To SSH Connection ... the SSH protocol # tu leci zmiana, musimy brać platformy zgodnie z tym co zostało pobrane w dasharo Set Global Variable ${PLATFORM} ${CONFIG} + IF '${DEFAULT_BOOT_OS_ID}' + Import Variables ${CURDIR}/os-config/${DEFAULT_BOOT_OS_ID}-credentials.py + END SSHLibrary.Set Default Configuration timeout=60 seconds IF '${SNIPEIT}'=='no' RETURN @@ -641,14 +583,6 @@ Prepare To PiKVM Connection Remap Keys Variables To PiKVM Open Connection And Log In ${platform}= Get Current RTE Param platform - IF '${SNIPEIT}' == 'yes' - ${pikvm_ip}= Snipeit Get PiKVM IP ${RTE_IP} - Set Global Variable ${PIKVM_IP} - END - # If snipeit is set to "no", fetch it from command line - Variable Should Exist - ... ${PIKVM_IP} - ... PiKVM IP cannot be fetched from SnipeIT. Please provide it in the 'PIKVM_IP' variable Set Global Variable ${PLATFORM} Get DUT To Start State @@ -694,7 +628,7 @@ Remap Keys Variables From PiKVM Get DUT To Start State [Documentation] Clears telnet buffer and get Device Under Test to start - ... state (RTE Relay On). + ... state. Telnet.Read IF '${MANUFACTURER}' != 'QEMU' and '${CONFIG}' != 'no-rte' ${state}= Get Power Supply State @@ -712,7 +646,7 @@ Power Cycle On ... the DEFAULT_POWER_STATE_AFTER_FAIL variable defined in platform config. Variable Should Exist ${DEFAULT_POWER_STATE_AFTER_FAIL} - IF "${OPTIONS_LIB}"=="dcu" and "${POWER_CTRL}"=="none" + IF "${OPTIONS_LIB}"=="options-lib_dcu" and "${POWER_CTRL}"=="none" Execute Reboot Command Sleep 5s RETURN @@ -734,6 +668,18 @@ Power Cycle On END IF '${DEFAULT_POWER_STATE_AFTER_FAIL}' == 'Powered Off' Rte Power On + IF '${CHECK_POWER_LED_SUPPORT}' == '${TRUE}' + FOR ${i} IN RANGE 10 + ${out}= Rte Check Power Led + IF '${out}' == 'high' RETURN + Sleep 0.5s + END + IF '${out}' != 'high' + FAIL Power LED didn't light up! Setup needs manual verification, + ... or Power State After Power Failure is set incorrectly. + END + END + OBMC Power Cycle On [Documentation] Clears obmc-console-client buffer and perform full power ... cycle with Chassis and Host State Control @@ -751,38 +697,12 @@ Get Power Supply State ${state}= Rte Psu Get RETURN ${state} -Get Sound Devices Windows - [Documentation] Get and return all sound devices in Windows OS using - ... PowerShell - ${out}= Execute Command In Terminal - ... Get-PnpDevice -PresentOnly | Where-Object {$_.Class -match "Audio" -or $_.Name -match "Audio"} | Select-Object Name, Status - RETURN ${out} - Get USB Devices Windows [Documentation] Get and return all USB devices in Windows OS using ... PowerShell ${out}= Execute Command In Terminal Get-PnpDevice -PresentOnly | Where-Object { $_.InstanceId -match '^USB' } RETURN ${out} -Get CPU Temperature And CPU Fan Speed - [Documentation] Get the current CPU temperature in Celsius degrees and - ... the current CPU fan speed in rpms. - ${output}= Telnet.Execute Command sensors w83795g-i2c-1-2f |grep fan1 -A 16 - ${rpm}= Get Lines Containing String ${output} fan1 - ${rpm}= Split String ${rpm} ${SPACE} - ${rpm}= Get Substring ${rpm} -8 -7 - ${rpm}= Get From List ${rpm} 0 - ${rpm_value}= Convert To Integer ${rpm} - ${temperature}= Get Lines Containing String ${output} temp7 - ${temperature}= Split String ${temperature} ${SPACE} - ${temperature}= Get Substring ${temperature} -8 -7 - ${temperature}= Get From List ${temperature} 0 - ${temperature}= Remove String ${temperature} + - ${temperature}= Remove String ${temperature} ° - ${temperature}= Remove String ${temperature} C - ${temperature_value}= Convert To Number ${temperature} - RETURN ${rpm_value} ${temperature_value} - Execute Linux Command Without Output [Documentation] Execute linux command over serial console. Do not return ... standard output. There is one optional argument. The @@ -842,17 +762,24 @@ Execute Poweroff Command Execute Reboot Command [Documentation] Executes reboot command in given os - [Arguments] ${os}=linux + [Arguments] ${os}=linux ${assume_correct_boot}=${False} IF '${os}' == 'linux' + # if the OS cannot be chosen from the bootmanager and rebooting + # always boots the default one + IF '${OPTIONS_LIB}' == 'options-lib_dcu' and ${assume_correct_boot} == ${False} + Set Nextboot ${BOOTED_OS_ID} + Import Variables ${CURDIR}/os-config/${BOOTED_OS_ID}-credentials.py + Set Suite Variable ${BOOTED_OS_ID} ${BOOTED_OS_ID} + END Write Into Terminal reboot ELSE IF '${os}' == 'windows' Write Into Terminal shutdown /r /f /t 0 ELSE Fail Unknown OS: ${os} given as an argument. END - IF '${DUT_CONNECTION_METHOD}' == 'SSH' Sleep 30s - Set DUT Response Timeout 180 seconds + # We do not want to sleep if we switched to SSH only temporarily. Restore Initial DUT Connection Method + Set DUT Response Timeout 180 seconds Check Displays Windows [Documentation] Check and return all displays with PowerShell in Windows. @@ -910,16 +837,16 @@ Check Internal LCD Windows Check External HDMI In Linux [Documentation] Keyword checks if an external HDMI device is visible ... in Linux OS. - ${out}= Execute Linux Command cat /sys/class/drm/card*/* - - Should Contain ${out} connected + ${out}= Execute Linux Command cat /sys/class/drm/card*-HDMI-*/status + ${words}= Split To Lines ${out} + Should Contain ${words} connected Check External DP In Linux [Documentation] Keyword checks if an external Display Port device is ... visible in Linux OS. - ${out}= Execute Linux Command cat /sys/class/drm/card0-DP-1/status - Should Not Contain ${out} disconnected - Should Contain ${out} connected + ${out}= Execute Linux Command cat /sys/class/drm/card*-DP-*/status + ${words}= Split To Lines ${out} + Should Contain ${words} connected Device Detection In Linux [Documentation] Keyword checks if a given device name as a parameter is @@ -940,7 +867,7 @@ Check Charge Level In Linux Check Charging State In Linux [Documentation] Keyword checks the charging state in Linux OS. ${out}= Execute Linux Command cat /sys/class/power_supply/BAT0/status - Should Contain Any ${out} Charging Full + Should Contain Any ${out} Charging Full Not charging Check Charging State Not Charging In Linux [Documentation] Keyword checks if the battery state is Not charging @@ -957,7 +884,7 @@ Discharge The Battery Until Target Level In Linux [Documentation] Keyword stresses the CPU to discharge the battery until ... the target charge level is reached. [Arguments] ${target} - Detect Or Install Package stress-ng + WHILE True ${out}= Execute Command In Terminal cat /sys/class/power_supply/BAT0/capacity IF ${out} <= ${target} BREAK @@ -981,6 +908,13 @@ Charge Battery Until Target Level In Linux Run Keyword Unless ${out} == ${target} Log Could not charge battery to specified level within timeout. +Skip If Battery Level Below 30 Percent + ${battery_percentage}= Check Battery Percentage In Linux + IF ${battery_percentage} < 30 + Log To Console \nSkipping the test - Battery is to low. + Skip + END + Turn On ACPI CALL Module In Linux [Documentation] Keyword turns on acpi_call module in Linux OS. Execute Linux Command modprobe acpi_call @@ -1227,8 +1161,11 @@ Check If Package Is Installed [Documentation] Check whether the package, that is necessary to run the ... test case, has already been installed on the system. [Arguments] ${package} - ${output}= Execute Command In Terminal dpkg --list ${package} | cat - IF "no packages found matching" in """${output}""" or "" in """${output}""" or "dpkg was interrupted" in """${output}""" + ${apt_list_output}= Execute Command In Terminal apt list --installed 2> /dev/null | grep ${package} 60s + + ${package_regex}= Catenate SEPARATOR= ${package} \/.*installed.* + ${package_lines}= Get Lines Matching Regexp ${apt_list_output} ${package_regex} + IF "${package_lines}"=="${EMPTY}" ${is_installed}= Set Variable ${FALSE} ELSE ${is_installed}= Set Variable ${TRUE} @@ -1239,10 +1176,8 @@ Install Package [Documentation] Install the package, that is necessary to run the ... test case [Arguments] ${package} - Set DUT Response Timeout 600s - Write Into Terminal apt-get install --assume-yes ${package} - Read From Terminal Until Prompt - Set DUT Response Timeout 180s + Execute Command In Terminal apt-get update 120s + Execute Command In Terminal apt-get install --assume-yes ${package} 60s Download File [Documentation] Download file from the given URL. @@ -1263,7 +1198,7 @@ Login To Linux With Root Privileges ... platform type. IF '${DUT_CONNECTION_METHOD}' == 'SSH' Run Keywords - ... Login To Linux Via SSH ${DEVICE_UBUNTU_USERNAME} ${DEVICE_UBUNTU_PASSWORD} + ... Login To Linux Via SSH ${DEVICE_OS_USERNAME} ${DEVICE_OS_PASSWORD} ... AND ... Switch To Root User END @@ -1331,16 +1266,11 @@ Rescan Devices In Petitboot Write Bare Into Terminal ${ENTER} # To Do: read system log -Coldboot Via RTE Relay - [Documentation] Coldboot the DUT using RTE Relay. - Rte Relay Set off - Sleep 5s - Rte Relay on - Reboot Via OS Boot By Petitboot [Documentation] Reboot system with system installed on the DUT while ... already logged into Petitboot. - Boot From USB + ${usb_option}= Get USB Boot Option + Boot System Or From Connected Disk ${usb_option} Login To Linux Execute Linux Command reboot Sleep 60s @@ -1372,39 +1302,39 @@ Refresh Serial Screen In BIOS Editable Settings Menu Press Key N Times 1 ${F10} Press Key N Times 1 ${ESC} -Get Coreboot Tools From Cloud - [Documentation] Downloads required coreboot tools from cloud - Get Cbmem From Cloud - Get Flashrom From Cloud - Get Cbfstool From Cloud +Get Coreboot Tools + [Documentation] Set up required coreboot tools + Get Cbmem + Get Flashrom + Get Cbfstool -Get Cbmem From Cloud - [Documentation] Download cbmem from the cloud. +Get Cbmem + [Documentation] Set up cbmem on DUT. ${cbmem_path}= Set Variable /usr/local/bin/cbmem ${out_sha256sum}= Execute Command In Terminal sha256sum ${cbmem_path} ${sha256}= Set Variable ${out_sha256sum.split()}[0] IF '${sha256}' != '169c5a5a63699cb37cf08d1eff83e59f146ffa98cf283145f27adecc081ac3f6' - Download File https://cloud.3mdeb.com/index.php/s/C6LJMi4bWz3wzR9/download ${cbmem_path} + Send File To DUT ${TEST_DATA_DIR}/coreboot-tools/cbmem ${cbmem_path} Execute Command In Terminal chmod 777 ${cbmem_path} END -Get Flashrom From Cloud - [Documentation] Download flashrom from the cloud. +Get Flashrom + [Documentation] Set up flashrom on DUT. ${flashrom_path}= Set Variable /usr/local/bin/flashrom ${out_sha256sum}= Execute Command In Terminal sha256sum ${flashrom_path} ${sha256}= Set Variable ${out_sha256sum.split()}[0] IF '${sha256}' != '8e57fee6578dd31684da7f1afd6f5e5b1d964bb6db52b3a9ec038a7292802ae9' - Download File https://cloud.3mdeb.com/index.php/s/fsPNM8SpDjATMrW/download ${flashrom_path} + Send File To DUT ${TEST_DATA_DIR}/coreboot-tools/flashrom ${flashrom_path} Execute Command In Terminal chmod 777 ${flashrom_path} END -Get Cbfstool From Cloud - [Documentation] Download cbfstool from the cloud +Get Cbfstool + [Documentation] Set up cbfstool on DUT. ${cbfstool_path}= Set Variable /usr/local/bin/cbfstool ${out_sha256sum}= Execute Command In Terminal sha256sum ${cbfstool_path} ${sha256}= Set Variable ${out_sha256sum.split()}[0] IF '${sha256}' != 'e090051e71980620e6f2d2876532eb6fcf4346593260c0c1349a5be51181fb4f' - Download File https://cloud.3mdeb.com/index.php/s/ScCf8XFLZYWBE25/download ${cbfstool_path} + Send File To DUT ${TEST_DATA_DIR}/coreboot-tools/cbfstool ${cbfstool_path} Execute Command In Terminal chmod 777 ${cbfstool_path} END @@ -1425,11 +1355,7 @@ Clone Git Repository ELSE ${repo_path}= Extract Repository Name From URL ${repo_url} END - ${is_git_installed}= Check If Package Is Installed git - IF ${is_git_installed} != True - ${out_install}= Execute Command In Terminal apt install -y git - Should Not Contain ${out_install} Failed - END + Execute Command In Terminal rm -rf ${repo_path} ${out_clone}= Execute Command In Terminal git clone ${repo_url} ${location} Should Contain ${out_clone} Receiving objects: 100% @@ -1462,22 +1388,34 @@ Remove Entry From List Generate 1GB File In Windows [Documentation] Generates 1G file in Windows in .txt format. + Execute Command In Terminal + ... if (Test-Path test_file.txt) { Remove-Item test_file.txt } ${out}= Execute Command In Terminal fsutil file createnew test_file.txt 1073741824 Should Contain ${out} is created Get Drive Letter Of USB - [Documentation] Gets drive letter of attached USB, work with only one USB - ... attached. - ${drive_letter}= Execute Command In Terminal - ... (Get-Volume | where drivetype -eq removable | where filesystemtype -eq FAT32).driveletter - ${drive_letter}= Fetch From Left ${drive_letter} \r + [Documentation] Gets drive letter of attached USB, returns first letter + ... on list. + ${drive_letter_cmd}= Set Variable + ... (Get-Volume | where DriveType -eq removable | where FileSystemType -eq FAT32).DriveLetter + ${drive_count}= Execute Command In Terminal ${drive_letter_cmd}.Count + ${drive_count}= Fetch From Right ${drive_count} \n + IF ${drive_count} > 0 + ${drive_letter}= Execute Command In Terminal + ... ${drive_letter_cmd}\[0\] + ELSE + Fail Couldn't find any USB drive letter + END + ${drive_letter}= Fetch From Right ${drive_letter} \n RETURN ${drive_letter} Get Hash Of File [Documentation] Gets line with hash of file. [Arguments] ${path_file} ${out}= Execute Command In Terminal Get-FileHash -Path ${path_file} | Format-List - ${hash}= Get Lines Containing String ${out} Hash + ${start_index}= Call Method ${out} rindex Hash + ${hash}= Get Substring ${out} ${start_index} + ${hash}= Fetch From Left ${hash} \r RETURN ${hash} Identify Path To USB @@ -1493,156 +1431,12 @@ Identify Path To USB Set Local Variable ${usb_disk} ${disk} IF '${model_name}' == '${USB_MODEL}' BREAK END - ${out}= Execute Linux Command lsblk | grep ${usb_disk} | grep part | cat + ${out}= Execute Linux Command + ... lsblk --list --noheadings --output NAME,TYPE,PATH | grep ${usb_disk} | grep part ${split}= Split String ${out} - ${path_to_usb}= Get From List ${split} 7 + ${path_to_usb}= Get From List ${split} 2 RETURN ${path_to_usb} -Get Intel ME Mode State - [Documentation] Returns the current state of Intel ME mode. - [Arguments] ${menu_me} - ${menu_me}= Fetch From Right ${menu_me} < - ${actual_state}= Fetch From Left ${menu_me} > - RETURN ${actual_state} - -Calculate Smoothing - [Documentation] Compares the actual and expected value of the fan speed, - ... taking smoothing into account. - [Arguments] ${pwm} ${expected_speed_percentage} - ${pwm}= Evaluate float(${pwm}/2.55) - IF ${expected_speed_percentage} < 35 - ${smoothing}= Evaluate 1 - ELSE - ${smoothing}= Evaluate 6 - END - ${high_limit}= Evaluate ${expected_speed_percentage}+${smoothing} - ${low_limit}= Evaluate ${expected_speed_percentage}-${smoothing} - Log To Console \n ---------------------------------------------------------------- - Log To Console From PWM: ${pwm}% - Log To Console From Temp: ${expected_speed_percentage}% - Should Be True ${low_limit} < ${pwm} < ${high_limit} - -Get PWM Value - [Documentation] Returns current PWN value from hwmon. - # ../hwmon/hwmonX/pwm{1,2} - ${hwmon}= Execute Command In Terminal - ... ls /sys/devices/LNXSYSTM\:00/LNXSYBUS\:00/17761776\:00/hwmon | grep hwmon - ${pwm}= Execute Command In Terminal cat /sys/devices/LNXSYSTM:00/LNXSYBUS:00/17761776:00/hwmon/${hwmon}/pwm1 - ${pwm}= Convert To Number ${pwm} - RETURN ${pwm} - -Get Temperature CURRENT - [Documentation] Get current temperature from hwmon. - ${hwmon}= Execute Command In Terminal - ... ls /sys/devices/LNXSYSTM\:00/LNXSYBUS\:00/17761776\:00/hwmon | grep hwmon - ${temperature}= Execute Command In Terminal - ... cat /sys/devices/LNXSYSTM:00/LNXSYBUS:00/17761776:00/hwmon/${hwmon}/temp1_input - ${temperature}= Evaluate ${temperature[:2]} - ${temperature}= Convert To Number ${temperature} - RETURN ${temperature} - -Get RPM Value From System76 Acpi - [Documentation] Returns current RPM value of CPU fan form driver - ... system76_acpi. - ${speed}= Execute Command In Terminal sensors | grep "CPU fan" - ${speed_split}= Split String ${speed} - ${rpm}= Get From List ${speed_split} 2 - RETURN ${rpm} - -Disable Option In Submenu - [Documentation] Disables selected option in submenu provided in ${menu_construction} - [Arguments] ${menu_construction} ${option_str} - ${option}= Set Variable ${option_str[1:]} - ${line}= Get Matches ${menu_construction} *${option}* - TRY - Should Match Regexp ${line[0]} .*\\[\ \\].* - Refresh Serial Screen In BIOS Editable Settings Menu - EXCEPT - FOR ${element} IN @{menu_construction} - ${matches}= Run Keyword And Return Status - ... Should Match ${element} pattern=*${option}* - IF ${matches} - ${option}= Set Variable ${element} - BREAK - END - END - Strip String ${option} mode=left - ${system_index}= Get Index From List ${menu_construction} ${option} - Press Key N Times And Enter ${system_index} ${ARROW_DOWN} - Press Key N Times 1 ${F10} - Write Bare Into Terminal y - END - -Enable Option In USB Configuration Submenu - [Documentation] Enables option in USB Configuration SubMenu. - [Arguments] ${menu_construction} ${option} - ${line}= Get Matches ${menu_construction} *${option}* - TRY - Should Contain Match ${line} *[X]* - EXCEPT - FOR ${element} IN @{menu_construction} - ${matches}= Run Keyword And Return Status - ... Should Match ${element} pattern=*${option}* - IF ${matches} - ${option}= Set Variable ${element} - BREAK - END - END - Strip String ${option} mode=left - ${system_index}= Get Index From List ${menu_construction} ${option} - ${steps}= Evaluate ${system_index}-1 - Press Key N Times And Enter ${steps} ${ARROW_DOWN} - Write Bare Into Terminal ${F10} - Write Bare Into Terminal Y - END - -Disable Option In USB Configuration Submenu - [Documentation] Disables option in USB Configuration SubMenu. - [Arguments] ${menu_construction} ${option} - ${line}= Get Matches ${menu_construction} *${option}* - TRY - Should Not Contain Match ${line} *[X]* - EXCEPT - FOR ${element} IN @{menu_construction} - ${matches}= Run Keyword And Return Status - ... Should Match ${element} pattern=*${option}* - IF ${matches} - ${option}= Set Variable ${element} - BREAK - END - END - ${system_index}= Get Index From List ${menu_construction} ${option} - ${steps}= Evaluate ${system_index}-1 - Press Key N Times And Enter ${steps} ${ARROW_DOWN} - Write Bare Into Terminal ${F10} - Write Bare Into Terminal Y - END - -Enable Option In Submenu - [Documentation] Enables option in submenu - [Arguments] ${menu_construction} ${option_str} - ${option}= Set Variable ${option_str[1:]} - ${line}= Get Matches ${menu_construction} *${option}* - TRY - Should Not Match Regexp ${line[0]} .*\\[ \\].* - Refresh Serial Screen In BIOS Editable Settings Menu - EXCEPT - FOR ${element} IN @{menu_construction} - ${matches}= Run Keyword And Return Status - ... Should Match ${element} pattern=*${option}* - IF ${matches} - ${option}= Set Variable ${element} - BREAK - END - END - Strip String ${option} mode=left - ${system_index}= Get Index From List ${menu_construction} ${option} - ${steps}= Evaluate ${system_index}-1 - Press Key N Times And Enter ${steps} ${ARROW_DOWN} - Write Bare Into Terminal ${F10} - Write Bare Into Terminal Y - END - Get Current CONFIG List Param [Documentation] Returns current CONFIG list parameters specified in the ... arguments. @@ -1658,25 +1452,6 @@ Get Current CONFIG List Param END RETURN @{attached_usb_list} -Check That USB Devices Are Detected - [Documentation] Checks if the bootable USB devices are visible in the - ... boot menu. - [Arguments] ${boot_menu} - - @{attached_usb_list}= Get Current CONFIG List Param USB_Storage name - FOR ${stick} IN @{attached_usb_list} - # ${stick} should match with one element of ${boot_menu} - Should Contain Match ${boot_menu} *${stick}* - END - -Switch To Root User In Ubuntu Server - [Documentation] Switch to the root environment in Ubuntu Server. - Write Into Terminal sudo su - Read From Terminal Until [sudo] password for user: - Write Into Terminal ubuntuserver - Set Prompt For Terminal \# - Read From Terminal Until Prompt - Reboot In OPNsense [Documentation] Perform reboot in OPNsense. Write Into Terminal 6 diff --git a/lib/QemuMonitor.py b/lib/QemuMonitor.py index bfa09056a6..7f7e4a4084 100644 --- a/lib/QemuMonitor.py +++ b/lib/QemuMonitor.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + import json import os import socket diff --git a/lib/bios/menus.py b/lib/bios/menus.py index 8008419fc5..7cf76fec40 100644 --- a/lib/bios/menus.py +++ b/lib/bios/menus.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + import re from robot.api.deco import keyword diff --git a/lib/bios/menus.robot b/lib/bios/menus.robot index 31531bd561..8a7dbdb71b 100644 --- a/lib/bios/menus.robot +++ b/lib/bios/menus.robot @@ -4,12 +4,31 @@ Documentation Collection of keywords related to EDK2 menus Library Collections Library String Library ./menus.py +Resource ../terminal.robot +Resource ../../keys.robot +Resource ../../keywords.robot *** Keywords *** Enter Boot Menu Tianocore - [Documentation] Enter Boot Menu with tianocore boot menu key mapped in + [Documentation] + ... Enter Boot Menu with tianocore boot menu key mapped in ... keys list. + ... + ... === Requirements === + ... - Serial port connection has to be supported by the platform + ... - Has to be called in quick succession after powering on or rebooting in order to + ... \ react before the auto boot time-out passes + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - UEFI Boot menu is entered + Read From Terminal Until ${TIANOCORE_STRING} IF '${DUT_CONNECTION_METHOD}' == 'pikvm' Single Key PiKVM ${BOOT_MENU_KEY} @@ -23,7 +42,22 @@ Enter Boot Menu Tianocore END Get Boot Menu Construction - [Documentation] Keyword allows to get and return boot menu construction. + [Documentation] + ... Reads and returns the construction of the boot menu + ... + ... === Requirements === + ... - Boot menu has to be entered using ``Enter Boot Menu Tianocore`` + ... - The serial must not have been read after entering the boot menu + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... - ``string`` - The boot menu construction - entries, line by line + ... + ... === Effects === + ... - The boot menu is read from the serial buffer + ${menu}= Read From Terminal Until exit # Lines to strip: # TOP: @@ -66,14 +100,116 @@ Get Boot Menu Construction END RETURN ${construction} +Search For Option Not Visible After Entering Menu + [Documentation] + ... Reads the serial output in search for the first occurrence of + ... ${option} when it finds the function returns the + ... quantity of ${ARROW_DOWN} presses required to reach that ${option}. + ... It works only if the ${option} is not visible after entering menu. + ... + ... === Requirements === + ... - Boot menu has to be entered using ``Enter Boot Menu Tianocore`` + ... - The serial must not have been read after entering the boot menu + ... if the ${re_enter} is set to false. + ... + ... === Arguments === + ... ``${option}``: ``string`` The first line of the option you want + ... to find. In case options are split into multiple lines make sure to + ... put only the first line of the option as argument. + ... ``${re_enter}``: ``boolean`` - default ``${TRUE}``, skip reentering + ... menu at the start of the keyword when ``${FALSE}``. + ... + ... === Return Value === + ... - ``int`` - The quantity of ${ARROW_DOWN} presses required to + ... reach that ${option} + ... + ... === Effects === + ... - The submenu is read from the serial buffer + [Arguments] ${option} ${re_enter}=${TRUE} + + IF ${re_enter} Reenter Menu + ${menu}= Read From Terminal Until Exit + # Lines to strip: + # UP + # Devices List - in Device Manager + # BOTTOM + # v to move selection + ${construction}= Parse Menu Snapshot Into Construction ${menu} 1 3 + + # The maximum number of entries in boot menu is 11 right now. When we have + # more, the list can be scrolled. + + ${no_entries}= Get Length ${construction} + IF ${no_entries} >= 11 + Read From Terminal + # 50 is random number itassumes that you need lest than 50 arrow down + # clicks to go through entire menu + FOR ${key_down_qtty} IN RANGE 1 50 + Press Key N Times 1 ${ARROW_DOWN} + ${out}= Read From Terminal Until LCtrl+LAlt+F12=Save + ${contains}= Run Keyword And Ignore Error + ... Should Contain ${out} ${option} + IF '${contains}[0]' == 'PASS' + IF ${key_down_qtty} < 8 + FAIL msg=This option is visible after entering the menu. Use another keyword. + END + RETURN ${key_down_qtty} + END + END + # When the menu doesn't require scrolling. Then this KWD is not needed. + # Added for compatibility. + ELSE + # This is the only that has additional menu title + Remove Values From List ${construction} Devices List + ${key_down_qtty}= + ... Get Index Of Matching Option In Menu ${construction} ${option} + Should Not Be Equal As Integers ${key_down_qtty} -1 + ... msg=Option '${option}' not found in menu + RETURN ${key_down_qtty} + END + Fail msg=Option '${option}' not found in menu. + Enter Boot Menu Tianocore And Return Construction - [Documentation] Enters boot menu, returning menu construction + [Documentation] + ... Enters and returns the construction of the boot menu + ... + ... === Requirements === + ... - Serial port connection has to be supported by the platform + ... - Has to be called in quick succession after powering on or rebooting in order to + ... \ react before the auto boot time-out passes + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... - ``string`` - The boot menu construction - entries, line by line + ... + ... === Effects === + ... - UEFI Boot menu is entered + ... - The boot menu is read from the serial buffer + Enter Boot Menu Tianocore ${menu}= Get Boot Menu Construction RETURN ${menu} Enter Setup Menu Tianocore - [Documentation] Enter Setup Menu with key specified in platform-configs. + [Documentation] + ... Enter Setup Menu with key specified in platform-configs. + ... + ... === Requirements === + ... - Serial port connection has to be supported by the platform + ... - Has to be called in quick succession after powering on or rebooting in order to + ... \ react before the auto boot time-out passes + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - UEFI Setup menu is entered + Read From Terminal Until ${TIANOCORE_STRING} IF '${DUT_CONNECTION_METHOD}' == 'pikvm' Single Key PiKVM ${SETUP_MENU_KEY} @@ -82,8 +218,23 @@ Enter Setup Menu Tianocore END Get Setup Menu Construction - [Documentation] Keyword allows to get and return setup menu construction. + [Documentation] + ... Reads and returns the construction of the setup menu + ... + ... === Requirements === + ... - Setup menu has to be entered using ``Enter Setup Menu Tianocore`` + ... - The serial must not have been read after entering the setup menu + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... - ``string`` - The setup menu construction, line by line + ... + ... === Effects === + ... - The setup menu is read from the serial buffer [Arguments] ${checkpoint}=Select Entry + # Lines to strip: # TOP: # Standard PC (Q35 + ICH9 2009) @@ -95,15 +246,54 @@ Get Setup Menu Construction RETURN ${menu} Get Menu Construction - [Documentation] Keyword allows to get and return setup menu construction. + [Documentation] + ... Keyword allows to read and return setup menu construction. + ... + ... === Requirements === + ... - Boot or Setup menu has to be entered + ... - The serial must not have been read after entering the setup menu + ... + ... === Arguments === + ... - ``${checkpoint}``: ``string`` - text marking the end of the menu. + ... \ Text will be read from serial until ``${checkpoint}`` is read. + ... - ``${lines_top}``: ``integer`` - number of lines to be dropped from + ... \ the top of the menu + ... - ``${lines_bot}``: ``integer`` - number of lines to be dropped from + ... \ the bottom of the menu + ... + ... === Return Value === + ... - ``string`` - The setup menu construction, line by line + ... + ... === Effects === + ... - The setup menu is read from the serial buffer [Arguments] ${checkpoint}=ESC=exit ${lines_top}=1 ${lines_bot}=0 + Sleep 1s ${out}= Read From Terminal Until ${checkpoint} ${menu}= Parse Menu Snapshot Into Construction ${out} ${lines_top} ${lines_bot} RETURN ${menu} Parse Menu Snapshot Into Construction - [Documentation] Breaks grabbed menu data into lines. + [Documentation] + ... Parses the raw contents of the menu read from serial (Snapshot) + ... into lines with decorators removed (Construction) + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${menu}``: ``string`` - the raw menu contents, read directly from + ... \ the serial + ... - ``${lines_top}``: ``integer`` - number of lines to be dropped from + ... \ the top of the menu + ... - ``${lines_bot}``: ``integer`` - number of lines to be dropped from + ... \ the bottom of the menu + ... + ... === Return Value === + ... - ``string`` - The parsed setup menu contents, line by line + ... + ... === Effects === + ... None [Arguments] ${menu} ${lines_top} ${lines_bot} ${slice_start}= Set Variable ${lines_top} IF ${lines_bot} == 0 @@ -116,9 +306,12 @@ Parse Menu Snapshot Into Construction @{construction}= Create List FOR ${line} IN @{menu_lines} # Replace multiple spaces with a single one - ${line}= Replace String Using Regexp ${line} ${SPACE}+ ${SPACE} + # ${line}= Replace String Using Regexp ${line} ${SPACE}+ ${SPACE} # Remove leading and trailing spaces ${line}= Strip String ${line} + # Remove FreeBSD installer frames, this affect slicing process due to removing empty lines + # ${line}= Remove String ${line} x x + ${line}= Remove String Using Regexp ${line} (x x) # Drop leading and trailing pipes (e.g. in One Time Boot Menu) ${line}= Strip String ${line} characters=| # Remove leading and trailing spaces @@ -148,13 +341,52 @@ Parse Menu Snapshot Into Construction RETURN ${construction} Enter Setup Menu Tianocore And Return Construction - [Documentation] Enters Setup Menu and returns Setup Menu construction + [Documentation] + ... Enters Setup Menu and returns Setup Menu construction + ... + ... === Requirements === + ... - Serial port connection has to be supported by the platform + ... - Has to be called in quick succession after powering on or rebooting in order to + ... \ react before the auto boot time-out passes + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... - ``string`` - The setup menu construction, line by line + ... + ... === Effects === + ... - UEFI Setup menu is entered + ... - The setup menu is read from the serial buffer Enter Setup Menu Tianocore ${menu}= Get Setup Menu Construction RETURN ${menu} Get Submenu Construction + [Documentation] + ... Reads and returns the construction of a setup menu submenu + ... + ... === Requirements === + ... - A setup submenu was just entered + ... - The serial must not have been read after entering the submenu + ... + ... === Arguments === + ... - ``${checkpoint}``: ``string`` - text marking the end of the menu. + ... Text will be read from serial until ``${checkpoint}`` is read. + ... - ``${lines_top}``: ``integer`` - number of lines to be dropped from + ... \ the top of the menu + ... - ``${lines_bot}``: ``integer`` - number of lines to be dropped from + ... \ the bottom of the menu + ... - ``${opt_only}``: ``boolean`` - if ``${TRUE}``, filters the menu + ... \ for configurable UEFI options + ... + ... === Return Value === + ... - ``string`` - The setup menu construction, line by line + ... + ... === Effects === + ... - The setup submenu is read from the serial buffer [Arguments] ${checkpoint}=Esc=Exit ${lines_top}=1 ${lines_bot}=1 ${opt_only}="${FALSE}" + # In most cases, we need to strip two lines: # TOP: # Title line, such as: Dasharo System Features @@ -180,42 +412,126 @@ Get Submenu Construction RETURN ${submenu} Enter Submenu From Snapshot - [Documentation] Enter given Setup Menu Tianocore option after entering - ... Setup Menu Tianocore - [Arguments] ${menu} ${option} + [Documentation] + ... Enter given Setup Menu Tianocore option after entering Setup Menu + ... Tianocore + ... + ... === Requirements === + ... - A setup submenu was just entered + ... - The serial must not have been read after entering the submenu + ... + ... === Arguments === + ... - ``${menu}``: ``string`` - the submenu construction or snapshot + ... - ``${option}``: ``string`` - the name of the submenu to enter + ... - ``${cursor_key_mode}``: ``string`` - VT100 cursor key mode, APP for BSD + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - A setup submenu is entered + [Arguments] ${menu} ${option} ${cursor_key_mode}="ST" + ${index}= Get Index Of Matching Option In Menu ${menu} ${option} Should Not Be Equal As Integers ${index} -1 msg=Option ${option} not found in menu - Press Key N Times And Enter ${index} ${ARROW_DOWN} + IF ${cursor_key_mode} == "APP" + Press Key N Times And Enter ${index} ${ARROW_DOWN_APP} + ELSE + Press Key N Times And Enter ${index} ${ARROW_DOWN} + END Enter Submenu From Snapshot And Return Construction [Documentation] Enter given Setup Menu Tianocore option after entering - ... Setup Menu Tianocore + ... Setup Menu Tianocore and return it's construction + ... + ... === Requirements === + ... A menu/submenu had to be entered and read to pass as the ``${menu}`` + ... parameter + ... + ... === Arguments === + ... - ``${menu}``: ``string`` - the submenu construction or snapshot + ... - ``${option}``: ``string`` - the name of the submenu to enter + ... - ``${opt_only}``: ``boolean`` - if ``${TRUE}``, filters the returned + ... \ menu contents for configurable UEFI options + ... + ... === Return Value === + ... - ``string`` - The setup menu contents, line by line + ... + ... === Effects === + ... - A setup submenu is entered + ... - The setup submenu is read from the serial buffer [Arguments] ${menu} ${option} ${opt_only}=${FALSE} + Enter Submenu From Snapshot ${menu} ${option} ${submenu}= Get Submenu Construction opt_only=${opt_only} RETURN ${submenu} -Save BIOS Changes - [Documentation] This keyword saves introduced changes - Press Key N Times 1 ${F10} - Write Bare Into Terminal y - Enter Dasharo System Features + [Documentation] + ... Enters the ``Dasharo System Features`` submenu and returns it's + ... contents + ... + ... === Requirements === + ... - The UEFI Setup Menu main menu has to be entered + ... + ... === Arguments === + ... - ``${setup_menu}``: ``string`` - the menu construction or snapshot + ... - ``${option}``: ``string`` - the name of the submenu to enter + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - A setup submenu is entered [Arguments] ${setup_menu} + ${dasharo_menu}= Enter Submenu From Snapshot And Return Construction ... ${setup_menu} ... Dasharo System Features RETURN ${dasharo_menu} Enter Dasharo APU Configuration + [Documentation] + ... Enters the ``Dasharo APU Configuration`` submenu and returns it's + ... contents + ... + ... === Requirements === + ... - The UEFI Setup Menu main menu has to be entered + ... + ... === Arguments === + ... - ``${setup_menu}``: ``string`` - the menu construction or snapshot + ... - ``${option}``: ``string`` - the name of the submenu to enter + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - A setup submenu is entered [Arguments] ${setup_menu} + ${apu_menu}= Enter Submenu From Snapshot And Return Construction ... ${setup_menu} ... Dasharo APU Configuration RETURN ${apu_menu} -Enter Dasharo Submenu +Enter Dasharo Submenu # TODO redundant keyword, only used to change the default parameter + [Documentation] + ... Enters given Dasharo submenu and returns construction + ... + ... === Requirements === + ... - To be in the Dasharo setup menu + ... + ... === Arguments === + ... - ``${dasharo_menu}``: ``string`` - the menu construction or snapshot + ... - ``${option}``: ``string`` - the name of the submenu to enter + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - A setup submenu is entered [Arguments] ${dasharo_menu} ${option} + ${submenu}= Enter Submenu From Snapshot And Return Construction ... ${dasharo_menu} ... ${option} @@ -223,9 +539,24 @@ Enter Dasharo Submenu RETURN ${submenu} Get Index Of Matching Option In Menu - [Documentation] This keyword returns the index of element that matches - ... one in given menu + [Documentation] + ... This keyword returns the index of a line matching ``${option}`` in + ... ``${menu_construction}`` + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${menu_construction}``: ``string`` - the menu construction + ... - ``${option}``: ``string`` - the content to match + ... + ... === Return Value === + ... - ``integer`` - the index of the matched construction line + ... + ... === Effects === + ... None [Arguments] ${menu_construction} ${option} ${ignore_not_found_error}=${FALSE} + FOR ${element} IN @{menu_construction} ${matches}= Run Keyword And Return Status ... Should Match ${element} *${option}* @@ -241,14 +572,46 @@ Get Index Of Matching Option In Menu RETURN ${index} Press Key N Times And Enter - [Documentation] Enter specified in the first argument times the specified - ... in the second argument key and then press Enter. + [Documentation] + ... Enter the ``${key}`` ``${n}`` times and then Enter + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${n}``: ``string`` - number of times to enter the ``${key}`` + ... - ``${key}``: ``string`` - the key to enter + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The keyword itself causes no side effects + ... - Pressing the ``Enter`` key might cause multiple side effects + ... \ depending on the context [Arguments] ${n} ${key} + Press Key N Times ${n} ${key} Press Enter Press Enter - # Before entering new menu, make sure we get rid of all leftovers + [Documentation] + ... Presses the Enter key + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The keyword itself causes no side effects + ... - Pressing the ``Enter`` key might cause multiple side effects + ... \ depending on the context + Sleep 1s Read From Terminal IF '${DUT_CONNECTION_METHOD}' == 'pikvm' @@ -260,7 +623,22 @@ Press Enter Press Key N Times [Documentation] Enter specified in the first argument times the specified ... in the second argument key. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The keyword itself causes no side effects + ... - Pressing the ``${key}`` might cause multiple side effects + ... depending on the context and the key pressed [Arguments] ${n} ${key} + FOR ${index} IN RANGE 0 ${n} IF '${DUT_CONNECTION_METHOD}' == 'pikvm' Single Key PiKVM ${key} @@ -279,9 +657,25 @@ Press Key N Times END Get Option State - [Documentation] Gets menu construction and option name as arguments. - ... Returns option state, which can be: True, False, or numeric value. + [Documentation] + ... Returns the option state + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${menu}``: ``string`` - the menu construction + ... - ``${option}``: ``string`` - the option name + ... + ... === Return Value === + ... - ``string or boolean`` - the state of the option. + ... \ ``${TRUE}`` / ``${FALSE}`` if the option is boolean. + ... \ ``string`` otherwise + ... + ... === Effects === + ... None [Arguments] ${menu} ${option} + ${index}= Get Index Of Matching Option In Menu ${menu} ${option} ${value}= Get Value From Brackets ${menu}[${index}] ${len}= Get Length ${value} @@ -297,9 +691,23 @@ Get Option State RETURN ${state} Get Option Type - [Documentation] Accepts option state and returns option type. Option - ... type can be one of: bool, numeric, list. + [Documentation] + ... Determines the type of the option state value + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${state}``: ``string`` - the option state + ... + ... === Return Value === + ... - ``string`` - the type of the option. Can one of: + ... \ ``bool``, ``numeric``, ``list``. + ... + ... === Effects === + ... None [Arguments] ${state} + # This type of field can either be boolean ([X] or [ ]), or free entry # field. At first, find out which one is it. IF '${state}' == '${TRUE}' or '${state}' == '${FALSE}' @@ -316,9 +724,26 @@ Get Option Type RETURN ${type} Select State From List - [Documentation] Accepts a list of option and states (current and target). - ... Selects the target state. + [Documentation] Changes a option of list type to a given state + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${list}``: ``string`` - the selectable list options + ... - ``${current_state}``: ``string`` - the currently selected state + ... - ``${target_state}``: ``string`` - the state to wchich the option + ... \ will be changed + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The option state will be changed from ``${current_state}`` to ``${target_state}`` + ... - Causes a FAIL if the ``${current_state}`` or the ``${target_state}`` + ... \ are incorrect [Arguments] ${list} ${current_state} ${target_state} + # Calculate offset and direction ${current_index}= Get Index Of Matching Option In Menu ${list} ${current_state} Should Not Be Equal As Integers ${current_index} -1 @@ -336,10 +761,27 @@ Select State From List Press Key N Times And Enter ${offset} ${direction} Set Option State - [Documentation] Gets menu construction option name, and desired state - ... as arguments. Return TRUE if the option was changed and FALSE if - ... option was already in target state. + [Documentation] Changes the state of an option + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${menu}``: ``string`` - the submenu construction + ... - ``${option}``: ``string`` - the option name + ... - ``${target_state}``: ``string`` - the state to wchich the option + ... \ will be changed + ... + ... === Return Value === + ... - ``boolean`` - ${TRUE} if the state was changed. ${FALSE} if the + ... \ option was already in the target state + ... + ... === Effects === + ... - The option state will be changed to ``${target_state}`` + ... - Causes a FAIL if the ``${option}`` or the ``${target_state}`` + ... \ are incorrect. [Arguments] ${menu} ${option} ${target_state} + ${current_state}= Get Option State ${menu} ${option} IF '${current_state}' != '${target_state}' ${type}= Get Option Type ${current_state} @@ -371,29 +813,29 @@ Set Option State RETURN ${FALSE} END -Try To Insert Non-numeric Values Into Numeric Option - [Documentation] Check whether accepts only numeric values. - [Arguments] ${menu} ${option} - ${non_numeric_characters}= Set Variable - ... abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()`~<>,./?;:'\|""[]{}=+-_ - ${current_state}= Get Option State ${menu} ${option} - ${type}= Get Option Type ${current_state} - Enter Submenu From Snapshot ${menu} ${option} - IF '${type}' == 'numeric' - @{characters}= Split String To Characters ${non_numeric_characters} - FOR ${char} IN @{characters} - Log ${char} - Write Bare Into Terminal ${char} - Set DUT Response Timeout 3 - Read From Terminal Until !! - END - ELSE - Fail Wrong option type (not accept numeric value) - END - -Get IPXE Boot Menu Construction - [Documentation] Keyword allows to get and return iPXE menu construction. +Get IPXE Boot Menu Construction # TODO possibly redundant, as it only gives a default checkpoint value + [Documentation] + ... Keyword allows to get and return iPXE menu construction. + ... + ... === Requirements === + ... - The IPXE Boot menu was entered + ... - The serial must not have been read after entering the menu + ... + ... === Arguments === + ... - ``${lines_top}``: ``integer`` - number of lines to be dropped from + ... \ the top of the menu + ... - ``${lines_bot}``: ``integer`` - number of lines to be dropped from + ... \ the bottom of the menu + ... - ``${checkpoint}``: ``string`` - text marking the end of the menu. + ... Text will be read from serial until ``${checkpoint}`` is read. + ... + ... === Return Value === + ... - ``string`` - The IPXE menu construction, line by line + ... + ... === Effects === + ... - The IPXE menu is read from the serial buffer [Arguments] ${lines_top}=1 ${lines_bot}=0 ${checkpoint}=${EDK2_IPXE_CHECKPOINT} + ${menu}= Read From Terminal Until ${checkpoint} ${construction}= Parse Menu Snapshot Into Construction ${menu} ${lines_top} ${lines_bot} RETURN ${construction} @@ -410,6 +852,20 @@ Reset To Defaults Tianocore [Documentation] Resets all Tianocore options to defaults. It is invoked ... by pressing F9 and confirming with 'y' when in option ... setting menu. + ... + ... === Requirements === + ... - Must be called from a Tianocore setup submenu + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The UEFI setup options are restored to defaults + ... - The device gets rebooted + Tianocore Reset System ${main_menu}= Enter Setup Menu Tianocore And Return Construction Read From Terminal @@ -440,7 +896,23 @@ Reset To Defaults Tianocore # network boot just yet. Enter IPXE - [Documentation] Enter iPXE after device power cutoff. + [Documentation] + ... Enter iPXE menu + ... + ... === Requirements === + ... - Serial port connection has to be supported by the platform + ... - Has to be called in quick succession after powering on or rebooting in order to + ... \ react before the auto boot time-out passes + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The iPXE menu is entered + # TODO: problem with iPXE string (e.g. when 3 network interfaces are available) ${boot_menu}= Enter Boot Menu Tianocore And Return Construction Enter Submenu From Snapshot ${boot_menu} ${IPXE_BOOT_ENTRY} @@ -454,15 +926,45 @@ Enter IPXE Read From Terminal Until Prompt Exit From Current Menu - [Documentation] Exits from current menu, refreshing screen. + [Documentation] + ... Exits from current menu, refreshing screen. + ... + ... === Requirements === + ... - Must be called from a setup submenu + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - Flushes the serial buffer + ... - Exits from a submenu + # Before entering new menu, make sure we get rid of all leftovers Read From Terminal Press Key N Times 1 ${ESC} Reenter Menu - [Documentation] Returns to the previous menu and enters the same one - ... again + [Documentation] + ... Moves back and forth in the submenus structure + ... + ... === Requirements === + ... - Must be called from a setup submenu + ... + ... === Arguments === + ... - ``${forward}``: ``boolean`` - If ``${FALSE}`` - exits to parent and reeenters. + ... \ If ``${TRUE}`` - Enters the selected submenu and goes back. + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The current submenu reappears on the serial buffer + ... - The entered submenu is flushed from the serial buffer [Arguments] ${forward}=${FALSE} + IF ${forward} == True Press Enter Exit From Current Menu @@ -472,8 +974,23 @@ Reenter Menu END Reenter Menu And Return Construction - [Documentation] Enters the same menu again, returning updated menu construction + [Documentation] + ... Enters the same menu again, returning updated menu construction + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${forward}``: ``boolean`` - If ``${FALSE}`` - exits to parent and reeenters. + ... \ If ``${TRUE}`` - Enters the selected submenu and goes back. + ... + ... === Return Value === + ... - ``string`` - the current menu construction + ... + ... === Effects === + ... None [Arguments] ${forward}=${FALSE} + Reenter Menu ${forward} ${menu}= Get Submenu Construction RETURN ${menu} @@ -482,19 +999,48 @@ Reenter Menu And Return Construction Type In The Password [Documentation] Operation for typing in the password + ... The ``${keys_password}`` is written and confirmed with Enter + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${keys_password}``: ``string`` - the password + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... None [Arguments] ${keys_password} + + # TODO loop and defining the password as a list can be removed by + # passing ${interval} to `Write Bare Into Terminal` FOR ${key} IN @{keys_password} Write Bare Into Terminal ${key} Sleep 0.5s END - Press Key N Times 1 ${ENTER} + Press Enter # This should stay, maybe improved if needed Type In New Disk Password [Documentation] Types in new disk password when prompted. The actual ... password is passed as list of keys. + ... + ... === Requirements === + ... - New disk password prompt to be currently shown + ... + ... === Arguments === + ... - ``${keys_password}``: ``string`` - the password + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... None [Arguments] ${keys_password} + Read From Terminal Until your new password Sleep 0.5s # FIXME: Often the TCG OPAL test fails to enter Setup Menu after typing @@ -509,8 +1055,22 @@ Type In New Disk Password # This should stay, maybe improved if needed Type In BIOS Password - [Documentation] Types in password in general BIOS prompt + [Documentation] + ... Types in password in general BIOS prompt + ... + ... === Requirements === + ... - BIOS password prompt to be currently shown + ... + ... === Arguments === + ... - ``${keys_password}``: ``string`` - the password + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... None [Arguments] ${keys_password} + Read From Terminal Until password Sleep 0.5s Type In The Password ${keys_password} @@ -518,8 +1078,22 @@ Type In BIOS Password # This should stay, maybe improved if needed Type In Disk Password - [Documentation] Types in the disk password + [Documentation] + ... Types in the disk password + ... + ... === Requirements === + ... - Disk password prompt to be currently shown + ... + ... === Arguments === + ... - ``${keys_password}``: ``string`` - the password + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... None [Arguments] ${keys_password} + Read From Terminal Until Unlock Sleep 0.5s # FIXME: See a comment in: Type in new disk password @@ -530,8 +1104,24 @@ Type In Disk Password # This should stay, maybe improved if needed Remove Disk Password - [Documentation] Removes disk password + [Documentation] + ... Removes disk password + ... + ... === Requirements === + ... - Serial port connection has to be supported by the platform + ... - Has to be called in quick succession after powering on or rebooting in order to + ... \ react before the auto boot time-out passes + ... + ... === Arguments === + ... - ``${keys_password}``: ``string`` - the password + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... None [Arguments] ${keys_password} + ${setup_menu}= Enter Setup Menu Tianocore And Return Construction ${device_mgr_menu}= Enter Submenu From Snapshot And Return Construction ... ${setup_menu} @@ -553,6 +1143,21 @@ Remove Disk Password Press Key N Times 1 ${SETUP_MENU_KEY} Tianocore Reset System + [Documentation] + ... Performs a reboot from inside the Tianocore setup menu + ... + ... === Requirements === + ... - To be inside the setup menu + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - Platform is rebooted + # EDK2 interprets Alt + Ctrl + Del on USB keyboards as reset combination. # On serial console it is ESC R ESC r ESC R. IF '${DUT_CONNECTION_METHOD}' == 'SSH' @@ -569,7 +1174,22 @@ Tianocore Reset System END Save Changes - [Documentation] Saves current UEFI settings + [Documentation] + ... Saves Setup Menu changes + ... + ... === Requirements === + ... Must be in the setup menu + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The performed changes will be saved and applied. + ... \ Most options require a reboot to take effect. Some of them don't. + Press Key N Times 1 ${F10} Read From Terminal Until Save configuration changes? Sleep 1s @@ -577,14 +1197,48 @@ Save Changes Sleep 2s Save Changes And Reset - [Documentation] Saves current UEFI settings and restarts. + [Documentation] + ... Saves Setup Menu changes and rebootsthe platform + ... + ... === Requirements === + ... Must be in the setup menu + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The performed changes will be saved and applied. + ... - The platform will be rebooted to ensure all changes are applied. + Save Changes Tianocore Reset System Boot System Or From Connected Disk # robocop: disable=too-long-keyword - [Documentation] Tries to boot ${system_name}. If it is not possible then it tries + [Documentation] Tries to boot the the system with the ID of ${ENV_ID}. + ... If it is not possible then it tries ... to boot from connected disk set up in config - [Arguments] ${system_name} + ... + ... === Requirements === + ... - Has to be called in quick succession after powering on or rebooting in order to + ... \ react before the auto boot time-out passes + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - Boots into the selected OS + [Arguments] ${env_id} ${boot_menu}=NOT_SET + ${system_name}= Get From Dictionary ${ENV_ID_OS_BOOTMENU_NAMES} ${env_id} + + Set Suite Variable ${BOOTED_OS_ID} ${env_id} + Import Variables ${CURDIR}/../../os-config/${env_id}-credentials.py + IF '${DUT_CONNECTION_METHOD}' == 'SSH' RETURN IF '''${SEABIOS_BOOT_DEVICE}''' != '' @@ -594,12 +1248,24 @@ Boot System Or From Connected Disk # robocop: disable=too-long-keyword Write Bare Into Terminal ${SEABIOS_BOOT_DEVICE} RETURN END - ${menu_construction}= Enter Boot Menu Tianocore And Return Construction - # With ESP scanning feature boot entries are named differently: + + # Allow providing boot menu construction, if we are already in boot menu screen + # and want to boot into OS from there + IF '''${boot_menu}''' == 'NOT_SET' + ${menu_construction}= Enter Boot Menu Tianocore And Return Construction + ELSE + ${menu_construction}= Set Variable @{boot_menu} + END + + # When ESP scanning feature is there, boot entries are named differently than + # they used to IF ${ESP_SCANNING_SUPPORT} == ${TRUE} IF "${system_name}" == "ubuntu" ${system_name}= Set Variable Ubuntu END + IF "${system_name}" == "fedora" + ${system_name}= Set Variable Fedora + END IF "${system_name}" == "trenchboot" and "${MANUFACTURER}" == "QEMU" ${system_name}= Set Variable QEMU HARDDISK END @@ -634,17 +1300,78 @@ Boot System Or From Connected Disk # robocop: disable=too-long-keyword Press Key N Times And Enter ${system_index} ${ARROW_DOWN} Make Sure That Network Boot Is Enabled - [Documentation] This keywords checks that "Enable network boot" in + [Documentation] Checks that "Enable network boot" in ... "Networking Options" is enabled when present, so the network ... boot tests can be executed. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The ``NetworkBoot`` option will be set to ``Enabled`` + ... - The platform will be rebooted + ... - Performs a ``SKIP`` if ``NetworkBoot`` is not supported + IF not ${DASHARO_NETWORKING_MENU_SUPPORT} RETURN Set UEFI Option NetworkBoot ${TRUE} -Get Firmware Version From Tianocore Setup Menu - [Documentation] Keyword allows to read firmware version from Tianocore +Get Firmware Version From Tianocore Setup Menu # TODO unused + [Documentation] Reads the firmware version from Tianocore ... Setup menu header. + ... + ... === Requirements === + ... - Serial port connection has to be supported by the platform + ... - Has to be called in quick succession after powering on or rebooting in order to + ... \ react before the auto boot time-out passes + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... - ``string`` - The version of the firmware, as displayed in the Setup menu + ... + ... === Effects === + ... - The ``NetworkBoot`` option will be set to ``Enabled`` + ... - The platform will be rebooted + Enter Setup Menu Tianocore ${output}= Read From Terminal Until Select Entry ${firmware_line}= Get Lines Containing String ${output} Dasharo (coreboot+UEFI) ${firmware_version}= Get Regexp Matches ${firmware_line} v\\d{1,}\.\\d{1,}\.\\d{1,} RETURN ${firmware_version} + +Get USB Boot Option + [Documentation] Returns the full name of the first boot option + ... containing "USB" + ${menu}= Enter Setup Menu Tianocore And Return Construction + ${menu}= Enter Submenu From Snapshot And Return Construction + ... ${menu} + ... One Time Boot + Press Key N Times 1 ${ARROW_DOWN} + Read From Terminal + Press Key N Times 1 ${ARROW_UP} + FOR ${menu_option} IN @{menu} + ${screen}= Read From Terminal + ${start}= Call Method ${screen} index Device Path : + ${end}= Call Method ${screen} index F9\=Reset + ${screen}= Get Substring ${screen} ${start} ${end} + @{screen_lines}= Split To Lines ${screen} + ${side_text}= Set Variable ${EMPTY} + FOR ${index} ${line} IN ENUMERATE @{screen_lines} + ${len}= Get Length ${line} + IF ${len} < 54 CONTINUE + ${side_text}= Catenate ${side_text} ${line}[-25:] + END + ${side_text}= Remove String ${side_text} \n ${SPACE} + ${is_usb}= Run Keyword And Return Status + ... Should Contain ${side_text} USB ignore_case=${TRUE} + IF ${is_usb} RETURN ${menu_option} + Press Key N Times 1 ${ARROW_DOWN} + END + FAIL "No USB boot option found" diff --git a/lib/cbmem.robot b/lib/cbmem.robot index 7c4b16a25b..1734a24ecf 100644 --- a/lib/cbmem.robot +++ b/lib/cbmem.robot @@ -8,7 +8,6 @@ Resource ../keywords.robot Get Boot Time From Cbmem [Documentation] Calculates boot time based on cbmem timestamps # fix for LT1000 and protectli platforms (output without tabs) - Get Cbmem From Cloud ${out_cbmem}= Execute Command In Terminal cbmem -T Should Not Contain ... ${out_cbmem} diff --git a/lib/dcu.robot b/lib/dcu.robot index 0d7a3c231a..d4c3d216a6 100644 --- a/lib/dcu.robot +++ b/lib/dcu.robot @@ -52,15 +52,15 @@ DCU Logo Set In File DCU Variable Read SMMSTORE [Documentation] Read the UEFI SMMSTORE to work on the UEFI options in it [Arguments] ${out_file} - Get Flashrom From Cloud + Execute Command In Terminal flashrom -p internal -r coreboot.rom --fmap -i FMAP -i SMMSTORE &> /dev/null Execute Command In Terminal chmod 666 coreboot.rom - SSHLibrary.Get File coreboot.rom ${out_file} + Get File From DUT coreboot.rom ${out_file} DCU Variable Flash SMMSTORE [Documentation] Write the UEFI SMMSTORE to commit the changes [Arguments] ${fw_file} - SSHLibrary.Put File ${fw_file} coreboot.rom + Send File To DUT ${fw_file} coreboot.rom Execute Command In Terminal flashrom -p internal -w coreboot.rom --fmap -i SMMSTORE --noverify-all &> /dev/null DCU Variable Get UEFI Option From File @@ -78,30 +78,32 @@ DCU Variable Set UEFI Option In File [Documentation] Write an UEFI option value to FW file. [Arguments] ${fw_file} ${option_name} ${value} ${path} ${filename}= Split Path ${fw_file} - Run cp ${fw_file} dcu/${filename} + Run cp -f ${fw_file} dcu/${filename} ${value}= Convert Option Value To DCU Format ${value} ${result}= Run cd dcu; ./dcuc v ${filename} --set "${option_name}" --value "${value}" Log ${result} - Run cp dcu/${filename} ${fw_file} + Run cp -f dcu/${filename} ${fw_file} Should Contain ${result} Success DCU Variable Set UEFI Option In DUT [Documentation] Read, modify and flash the firmware with a new value of ... a UEFI option [Arguments] ${option_name} ${value} - DCU Variable Read SMMSTORE coreboot.rom - DCU Variable Set UEFI Option In File coreboot.rom ${option_name} ${value} - DCU Variable Flash SMMSTORE coreboot.rom + DCU Variable Read SMMSTORE tpm.rom + DCU Variable Set UEFI Option In File tpm.rom ${option_name} ${value} + DCU Variable Flash SMMSTORE tpm.rom Execute Reboot Command + Set Suite Variable ${BOOTED_OS_ID} ${DEFAULT_BOOT_OS_ID} + Import Variables ${CURDIR}/../os-config/${BOOTED_OS_ID}-credentials.py Sleep 20s DCU Variable Get UEFI Option From DUT [Documentation] Read the firmware and return a UEFI option value [Arguments] ${option_name} - DCU Variable Read SMMSTORE coreboot.rom - ${value}= DCU Variable Get UEFI Option From File coreboot.rom ${option_name} + DCU Variable Read SMMSTORE tpm.rom + ${value}= DCU Variable Get UEFI Option From File tpm.rom ${option_name} ${value}= Convert Option Value From DCU Format ${value} RETURN ${value} diff --git a/lib/dl-cache.robot b/lib/dl-cache.robot deleted file mode 100644 index 651e546cdd..0000000000 --- a/lib/dl-cache.robot +++ /dev/null @@ -1,33 +0,0 @@ -*** Settings *** -Documentation Collection of keywords for downloading local files - -Resource ../keywords.robot - - -*** Variables *** -${DL_CACHE_DIR}= ${CURDIR}/../dl-cache - - -*** Keywords *** -Download To Host Cache - [Arguments] ${local_file_name} ${url} ${sha256sum} - ${local_path}= Join Path ${DL_CACHE_DIR} ${local_file_name} - ${file_exists}= Run Keyword And Return Status - ... Should Exist ${local_path} - IF ${file_exists} - ${calculated_sha256sum}= Calculate Sha256 Sum ${local_path} - IF '${sha256sum}' == '${calculated_sha256sum}' - Log File ${local_file_name} already exists in dl-cache - RETURN - END - END - Log Downloading ${url} ... - ${wget_rc}= Run And Return RC wget -O ${local_path} ${url} - IF ${wget_rc} != 0 Fail Download failed with exit code: ${wget_rc} - -Calculate SHA256 Sum - [Arguments] ${file_path} - ${out}= Run sha256sum ${file_path} - ${out_splitted}= Split String ${out} - ${sha256sum}= Get From List ${out_splitted} 0 - RETURN ${sha256sum} diff --git a/lib/dts-lib.robot b/lib/dts-lib.robot index eb3673a5a9..50766ce3cb 100644 --- a/lib/dts-lib.robot +++ b/lib/dts-lib.robot @@ -1,5 +1,41 @@ *** Settings *** Resource terminal.robot +Resource bios/menus.robot +Resource ../keywords.robot + + +*** Variables *** +# TODO: We should extend our keyword libs with keywords for DTS UI, these are +# first candidates. But before doing so - we need to establish some UI rules in +# DTS itself. +# DTS checkpoints: +${DTS_CHECKPOINT}= Enter an option: +${DTS_CONFIRM_CHECKPOINT}= Press Enter to continue +${HCL_REPORT_CHECKPOINT}= Please consider contributing to the "Hardware for Linux" project in the future. +${HCL_REPORT_SENDINGLOGS}= +... Do you want to support Dasharo development by sending us logs with your hardware configuration? [N/y] +${DTS_SPECIFICATION_WARN}= Does it match your actual specification? (Y|n) +${DTS_DEPLOY_WARN}= Do you want to deploy this Dasharo Firmware on your platform (Y|n) +${DTS_HW_PROBE_WARN}= Do you want to participate in this project? +${DTS_HEADS_SWITCH_QUESTION}= Would you like to switch to Dasharo heads firmware? (Y|n) +${DTS_ME_WARN}= Skip ME flashing and proceed with BIOS/firmware flashing/updating? (Y|n) +# DTS initial deployment menupoints: +${DTS_DCR_UEFI_MENUPOINT}= Community version +${DTS_DPP_UEFI_MENUPOINT}= DPP version (coreboot + UEFI) +${DTS_DPP_SEA_MENUPOINT}= DPP version (coreboot + SeaBIOS) +# Default DTS boot type, can be overwritten by CMD: +${DTS_BOOT_TYPE}= iPXE +# DTS options: +${DTS_HCL_OPT}= 1 +${DTS_DEPLOY_OPT}= 2 +${DTS_CREDENTIALS_OPT}= 4 +${DTS_DCR_UEFI_OPT}= c +${DTS_DPP_UEFI_OPT}= d +${DTS_DPP_SEA_OPT}= s +# DTS subscription checkpoints: +${DTS_NOACCESS_DPP_UEFI}= Dasharo Pro Package version (coreboot + UEFI) is also available. +${DTS_NOACCESS_DPP_SEABIOS}= Dasharo Pro Package version (coreboot + SeaBIOS) is also available. +${DTS_NOACCESS_DPP_HEADS}= Dasharo Pro Package version (coreboot + Heads) is also available. *** Keywords *** @@ -23,10 +59,10 @@ Boot Dasharo Tools Suite Via IPXE Shell Set DUT Response Timeout 60s # 4) Try to boot via the link: - Write Bare Into Terminal chain ${dts_chain_link}\n 0.1 - Read From Terminal Until ${dts_chain_link}... - Read From Terminal Until ok + Write Bare Into Terminal chain ${dts_chain_link}\n Set DUT Response Timeout 5m + Read From Terminal Until .cpio.gz... + Read From Terminal Until ok Boot Dasharo Tools Suite Via IPXE Menu [Documentation] Boots DTS via option available in Dasharo iPXE menu. @@ -49,15 +85,10 @@ Boot Dasharo Tools Suite ... boot method (from USB or from iPXE) as parameter. [Arguments] ${dts_booting_method} IF '${dts_booting_method}'=='USB' + # Assuming ESP scanning works as supposed to, DTS on USB stick + # should generate such entry ${boot_menu}= Enter Boot Menu Tianocore And Return Construction - IF '${DUT_CONNECTION_METHOD}' == 'pikvm' - Enter Submenu From Snapshot ${boot_menu} PiKVM Composite KVM Device - ELSE IF '${MANUFACTURER}' == 'QEMU' - Enter Submenu From Snapshot ${boot_menu} Dasharo Tools Suite (on QEMU HARDDISK) - ELSE - # Requires specifying the USB model in the platform's config - Enter Submenu From Snapshot ${boot_menu} ${USB_MODEL} - END + Enter Submenu From Snapshot ${boot_menu} Dasharo Tools Suite ELSE IF '${dts_booting_method}'=='iPXE' IF ${BOOT_DTS_FROM_IPXE_SHELL} == ${TRUE} or ${NETBOOT_UTILITIES_SUPPORT} == ${TRUE} # DTS_IPXE_LINK can be defined before running tests, e.g. via CMD or @@ -67,7 +98,7 @@ Boot Dasharo Tools Suite Boot Dasharo Tools Suite Via IPXE Menu END ELSE - FAIL Unknown or improper connection method: ${dts_booting_method} + FAIL Unknown DTS boot method: ${dts_booting_method} END # For PiKVM devices, we have only input on serial, not output. The video and serial consoles are @@ -80,12 +111,11 @@ Boot Dasharo Tools Suite ... Read From Terminal Until Enter an option: Set Timeout ${old_timeout} # Enable SSH server and switch to SSH connection by writing on video console "in blind" - Write Into Terminal K - ${dut_connection_method}= Set Variable SSH + Write Bare Into Terminal K Set Global Variable ${DUT_CONNECTION_METHOD} SSH Login To Linux Via SSH Without Password root root@DasharoToolsSuite:~# # Spawn DTS menu on SSH console - Write Into Terminal dts + Write Into Terminal dts-boot END Read From Terminal Until Enter an option: Sleep 5s @@ -106,8 +136,8 @@ Check HCL Report Creation Enter Shell In DTS [Documentation] Keyword allows to drop to Shell in the Dasharo Tools ... Suite. - Write Into Terminal S - Set Prompt For Terminal bash-5.1# + Write Bare Into Terminal S + Set Prompt For Terminal bash-5.2# # These could be removed once routes priorities in DTS are resolved. Sleep 10 Press Enter @@ -118,8 +148,8 @@ Enter Shell In DTS Run EC Transition [Documentation] Keyword allows to run EC Transition procedure in the ... Dasharo Tools Suite. - Write Into Terminal 6 - Read From Trminal Until Enter an option: + Write Bare Into Terminal 6 + Read From Terminal Until Enter an option: Write Into Terminal 1 ${output}= Read From Terminal Until shut down Should Contain X Times ${output} VERIFIED 2 @@ -155,3 +185,162 @@ Remove Extra Default Route ${route_info}= Execute Command In Terminal ip route | grep ^default Log Default route via 172.16.0.1 dev ${devname[0]} removed END + +Power On And Enter DTS Shell + [Documentation] This KW boots DTS using the method defined by user via + ... DTS_BOOT_TYPE or the default one. After booting DTS shell is being + ... entered. + # 1) Boot up to DTS UI: + Power On + Boot Dasharo Tools Suite ${DTS_BOOT_TYPE} + + # 2) Enter shell: + Write Bare Into Terminal S + Set Prompt For Terminal bash-5.2# + Read From Terminal Until Prompt + Set DUT Response Timeout 90s + +Provide DPP Credentials + [Documentation] This KW automatically writes DPP credentials into DTS UI. + ... The credentials should be set via CMD or file. + Set DUT Response Timeout 120s + ${out}= Read From Terminal Until ${DTS_CHECKPOINT} + Write Bare Into Terminal ${DTS_CREDENTIALS_OPT} + + # Enter email: + Variable Should Exist ${DPP_EMAIL} + Write Into Terminal ${DPP_EMAIL} + # Enter password: + Variable Should Exist ${DPP_PASSWORD} + Write Into Terminal ${DPP_PASSWORD} + + Wait For Checkpoint And Press Enter ${DTS_CONFIRM_CHECKPOINT} + +Provide DPP Credentials Without Packages + [Documentation] This KW automatically writes DPP credentials that do not + ... have access to DPP packages into DTS UI and checks out a DPP package + ... warning. + Provide DPP Credentials + + Wait For Checkpoint And Press Enter ${DPP_PACKAGES_CHECKPOINT} + +Wait For Checkpoint + [Documentation] This KW waits for checkpoint (first argument) and logs + ... everything read up to the checkpoint. If regexp is ${True} then + ... treat checkpoint as regexp + [Arguments] ${checkpoint} ${regexp}=${FALSE} + IF ${regexp} + ${out}= Read From Terminal Until Regexp ${checkpoint} + ELSE + ${out}= Read From Terminal Until ${checkpoint} + END + Log ${out} + RETURN ${out} + +Wait For Checkpoint And Write + [Documentation] This KW waits for checkpoint (first argument) + ... and writes specified answer (second argument), with logging all + ... output before the checkpoint. + [Arguments] ${checkpoint} ${to_write} + ${out}= Wait For Checkpoint ${checkpoint} + Sleep 1s + Write Into Terminal ${to_write} + RETURN ${out} + +Wait For Checkpoint And Press Enter + [Documentation] This KW waits for checkpoint (first argument) + ... and preses enter, with logging all output before the checkpoint. + [Arguments] ${checkpoint} + ${out}= Wait For Checkpoint ${checkpoint} + Sleep 1s + Write Bare Into Terminal \r\n + RETURN ${out} + +Go Through Initial Deployment + [Documentation] This KW goes through standard Dasharo initial deployment + ... choosing all needed menu options and answering all questions. The + ... only thing which needs to be specified - the Dasharo version to + ... deploy (first argument), available versions: DCR UEFI, DPP UEFI, DPP + ... SeaBIOS. + [Arguments] ${dasharo_version} + # 1) Select initial deployment: + Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DEPLOY_OPT} + + # 2) Wait for HCL report to do its work, might take some time: + Set DUT Response Timeout 5m + # Accept hw-probe question from HCL report: + Wait For Checkpoint And Write ${DTS_HW_PROBE_WARN} Y + Set DUT Response Timeout 120s + + # 3) Choose version to install: + IF '${dasharo_version}' == 'DCR UEFI' + Wait For Checkpoint ${DTS_DCR_UEFI_OPT}) ${DTS_DCR_UEFI_MENUPOINT} + Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DCR_UEFI_OPT} + ELSE IF '${dasharo_version}' == 'DPP UEFI' + Wait For Checkpoint ${DTS_DPP_UEFI_OPT}) ${DTS_DPP_UEFI_MENUPOINT} + Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DPP_UEFI_OPT} + ELSE IF '${dasharo_version}' == 'DPP SeaBIOS' + Wait For Checkpoint ${DTS_DPP_SEA_OPT}) ${DTS_DPP_SEA_MENUPOINT} + Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DPP_SEA_OPT} + ELSE + Fail No Dasharo version for initial deployment provided! + END + + # 4) Check out all warnings: + Wait For Checkpoint And Write ${DTS_SPECIFICATION_WARN} Y + Wait For Checkpoint And Write ${DTS_DEPLOY_WARN} Y + +Go Through Update + [Documentation] This KW goes through standard Dasharo update workflow + ... choosing all needed menu options and answering all questions. + ... If ${skip_me} is set to ${TRUE} then keyword will go through update + ... Even if Intel ME cannot be updated + [Arguments] ${skip_me}=${FALSE} + Set DUT Response Timeout 120s + # 1) Select update: + Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DEPLOY_OPT} + + # 2) Check out all warnings: + Wait For Checkpoint And Write ${DTS_SPECIFICATION_WARN} Y + Wait For Checkpoint And Write ${DTS_DEPLOY_WARN} Y + Set DUT Response Timeout 5m + ${dts_me_warn_escaped}= Evaluate re.escape("""${DTS_ME_WARN}""") + ${checkpoint}= Wait For Checkpoint + ... ${dts_me_warn_escaped}|Rebooting regexp=${TRUE} + IF """${DTS_ME_WARN}""" in """${checkpoint}""" + IF ${skip_me} + Write Into Terminal Y + Wait For Checkpoint Rebooting + ELSE + Fail Cannot update Intel ME + END + END + +Go Through Heads Transition + [Documentation] This KW goes through transition to Dasharo Heads choosing + ... all needed menu options and answering all questions. + Set DUT Response Timeout 120s + # 1) Start update: + Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DEPLOY_OPT} + + # 2) Check out all warnings: + Wait For Checkpoint And Write ${DTS_HEADS_SWITCH_QUESTION} Y + Wait For Checkpoint And Write ${DTS_SPECIFICATION_WARN} Y + Wait For Checkpoint And Write ${DTS_DEPLOY_WARN} Y + + # 3) Check for Heads firmware deployment success: + Wait For Checkpoint Successfully switched to Dasharo Heads firmware + Wait For Checkpoint And Write ${DTS_CONFIRM_CHECKPOINT} 1 + +Go Through Update Decline Heads + [Documentation] This KW goes through standard Dasharo update workflow + ... choosing all needed menu options and answering all questions. It + ... declines switching to Heads firmware. + Set DUT Response Timeout 120s + # 1) Select initial deployment: + Wait For Checkpoint And Write ${DTS_CHECKPOINT} ${DTS_DEPLOY_OPT} + + # 2) Check out all warnings: + Wait For Checkpoint And Write ${DTS_HEADS_SWITCH_QUESTION} N + Wait For Checkpoint And Write ${DTS_SPECIFICATION_WARN} Y + Wait For Checkpoint And Write ${DTS_DEPLOY_WARN} Y diff --git a/lib/esp-scanning-lib.robot b/lib/esp-scanning-lib.robot index 62a46f8f8c..fb5a015357 100644 --- a/lib/esp-scanning-lib.robot +++ b/lib/esp-scanning-lib.robot @@ -5,10 +5,6 @@ Resource ../keywords.robot *** Variables *** -${TINYCORE_URL}= https://distro.ibiblio.org/tinycorelinux/14.x/x86/release/CorePlus-14.0.iso -${DTS_URL}= https://dl.3mdeb.com/open-source-firmware/DTS/v1.2.8/dts-base-image-v1.2.8.iso -${DISK_IMAGE_URL}= https://cloud.3mdeb.com/index.php/s/BwLyjHT9fRncXMY/download/image.img - # These are always installed, used in many different testing. We do not want # to remove them during the ESP scanning testing. @{SYSTEMS_ALWAYS_INSTALLED}= Windows Boot Manager (on @@ -34,27 +30,19 @@ Prepare EFI Partition With System Files Power On IF "${MANUFACTURER}" == "QEMU" - Download To Host Cache - ... image.img - ... ${DISK_IMAGE_URL} - ... 031560742d6b337ed684cfdb90d3c5eb48f13576f4751b33095e8d1566d72e83 - Add HDD To Qemu img_name=${DL_CACHE_DIR}/image.img + Add HDD To Qemu img_name=${TEST_DATA_DIR}/esp-scanning/esp-scanning-disk.img ELSE - IF "${DUT_CONNECTION_METHOD}" == "pikvm" - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Remove All Supported Systems From Efi - Execute Command In Terminal wget ${DISK_IMAGE_URL} -O image.img timeout=180s - Execute Command In Terminal mkdir /mnt/disk_image - Execute Command In Terminal losetup /dev/loop99 -P ./image.img - Execute Command In Terminal mount /dev/loop99p1 /mnt/disk_image - Execute Command In Terminal - ... rsync -a --ignore-existing --exclude /mnt/disk_image/EFI/Ubuntu /mnt/disk_image/EFI/Microsoft /mnt/disk_image/EFI/* /boot/efi/EFI/ - Execute Command In Terminal sync - ELSE - Skip unsupported - END + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Remove All Supported Systems From Efi + Send File To DUT ${TEST_DATA_DIR}/esp-scanning/esp-scanning-disk.img /tmp/image.img + Execute Command In Terminal mkdir /mnt/disk_image + Execute Command In Terminal losetup /dev/loop99 -P /tmp/image.img + Execute Command In Terminal mount /dev/loop99p1 /mnt/disk_image + Execute Command In Terminal + ... rsync -a --ignore-existing --exclude /mnt/disk_image/EFI/Ubuntu /mnt/disk_image/EFI/Microsoft /mnt/disk_image/EFI/* /boot/efi/EFI/ + Execute Command In Terminal sync END Clear Out EFI Partition @@ -67,14 +55,10 @@ Clear Out EFI Partition IF "${MANUFACTURER}" == "QEMU" Remove Drive From Qemu ELSE - IF "${DUT_CONNECTION_METHOD}" == "pikvm" - Boot System Or From Connected Disk ubuntu - Login To Linux - Switch To Root User - Remove All Supported Systems From Efi - ELSE - Skip unsupported - END + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Remove All Supported Systems From Efi END Remove All Supported Systems From Efi @@ -84,19 +68,3 @@ Remove All Supported Systems From Efi FOR ${dir} IN @{dirs} Execute Command In Terminal rm -r /boot/efi/EFI/${dir} END - -Prepare Required Files For Qemu - IF "${MANUFACTURER}" == "QEMU" - Download To Host Cache - ... dts-base-image-v1.2.8.iso - ... ${DTS_URL} - ... f42b59633dbcc16ecbd7c98a880c582c5235c22626d7204202c922f3a7fa231b - Download To Host Cache - ... esp-scanning.img - ... ${DISK_IMAGE_URL} - ... a0cf9c6cc561585b375a7416a5bdb98caad4c48d22f87098844b6e294a3c0aff - Download To Host Cache - ... CorePlus-14.0.iso - ... ${TINYCORE_URL} - ... 5c0c5c7c835070f0adcaeafad540252e9dd2935c02e57de6112fb92fb5d6f9c5 - END diff --git a/lib/fan_curve_tests/fan_curve_tests.py b/lib/fan_curve_tests/fan_curve_tests.py new file mode 100644 index 0000000000..07e479ec6c --- /dev/null +++ b/lib/fan_curve_tests/fan_curve_tests.py @@ -0,0 +1,86 @@ +# SPDX-FileCopyrightText: 2025 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +import os + +import matplotlib.pyplot as plt +import pandas +from robot.api.deco import keyword +from robot.libraries.BuiltIn import BuiltIn + + +@keyword("Plot Fan Curve") +def plot_fan_curve(file_path, title): + in_file = file_path + ".csv" + out_file = file_path + ".png" + + data = pandas.read_csv(in_file) + temp = data["temp"] + speed = data["speed"] + tolerance = data["tolerance"] + expected = data["expected"] + + plt.title(title) + plt.xlabel("CPU temperature [°C]") + plt.ylabel("Fan speed") + plt.errorbar(temp, speed, label="speed", fmt=".") + # plt.plot(temp, speed-tolerance, label="min", marker=".") + # plt.plot(temp, speed+tolerance, label="max", marker=".") + plt.errorbar( + temp, + expected, + yerr=tolerance, + label="expected", + fmt=".", + capsize=3, + capthick=0.5, + linewidth=0.5, + ) + plt.legend() + plt.savefig(out_file) + plt.clf() + + out_filename = os.path.basename(out_file) + return out_filename + + +def _get_over_tolerance(measurement): + diff = abs(measurement["speed"] - measurement["expected"]) + over_tolerance = max(diff - measurement["tolerance"], 0) + return over_tolerance + + +def _get_diff_from_tolerance(measurement): + diff = abs(measurement["speed"] - measurement["expected"]) + # Measurements that are in the tolerance are always better + # those outside tolerance. To order them according to that, the + # weight of anything over tolerance is increased + over_tolerance = _get_over_tolerance(measurement) * 1000 + # To also sort the measurements which fall into tolerance + return over_tolerance * 1000 + diff + + +@keyword("Count Failed Fan Measurements") +def count_failed_fan_measurements(measurements): + # RF passes a measurements as [measurements] + if type(measurements[0]) is list: + measurements = measurements[0] + + count = 0 + for m in measurements: + if _get_over_tolerance(m) > 0: + count += 1 + return count + + +@keyword("Filter Fan Measurements") +def filter_fan_measurements(measurements, percentile_drop): + # RF passes a measurements as [measurements] + if type(measurements[0]) is list: + measurements = measurements[0] + # sort by the amount of deviation from expected values + m_sorted = sorted(measurements, key=_get_diff_from_tolerance) + save_amount = int(len(m_sorted) - len(m_sorted) * percentile_drop / 100) + m_saved = m_sorted[:save_amount] + return m_saved diff --git a/lib/flash.robot b/lib/flash.robot index d359989bb1..c3005f1ca5 100644 --- a/lib/flash.robot +++ b/lib/flash.robot @@ -79,21 +79,27 @@ Flash Firmware FAIL Image size doesn't match the flash chip's size! END - IF "${OPTIONS_LIB}"=="dcu" - Make Sure That Flash Locks Are Disabled - Flash Via Internal Programmer ${fw_file} region='bios' - RETURN - END - IF '${FLASHING_METHOD}' == 'external' Rte Flash Write ${fw_file} ELSE IF '${FLASHING_METHOD}' == 'internal' Make Sure That Flash Locks Are Disabled + Power On + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User Flash Via Internal Programmer ${fw_file} region=bios ELSE Fail Flash firmware not implemented for platform config ${CONFIG} END + IF '''${POWER_CTRL}''' == '''none''' + Power On + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + Execute Reboot Command + END + # First boot after flashing may take longer than usual Set DUT Response Timeout 180s @@ -178,7 +184,12 @@ Read Firmware Rte Flash Read ${file} ELSE IF '${FLASHING_METHOD}' == 'internal' # TODO - Fail Read firmware not implemented for platform config ${CONFIG} + Power On + Boot System Or From Connected Disk ${DEFAULT_BOOT_OS_ID} + Login To Linux + Switch To Root User + Execute Command In Terminal flashrom -p internal --ifd -i bios -r coreboot.rom + Get File From DUT coreboot.rom ${file} ELSE Fail Read firmware not implemented for platform config ${CONFIG} END diff --git a/lib/framework.robot b/lib/framework.robot index 431ebb802d..187ee0d7f7 100644 --- a/lib/framework.robot +++ b/lib/framework.robot @@ -11,7 +11,7 @@ Depends On ... to the test as per ```Skip`` keyword. [Arguments] ${condition} ${reason}=${NONE} ${line}= Set Variable ${TEST_NAME.split()}[0] not supported - IF '${reason}' != ${NONE} + IF """${reason}""" != """${NONE}""" ${line}= Set Variable ${line}: ${reason} END Skip If not ${condition} ${line} diff --git a/lib/network.robot b/lib/network.robot index cda4312cdf..6556140e59 100644 --- a/lib/network.robot +++ b/lib/network.robot @@ -10,34 +10,66 @@ Resource ../keywords.robot Send File To DUT [Documentation] Sends file DUT and saves it at given location [Arguments] ${source_path} ${target_path} + ${filename}= Evaluate os.path.basename(r"${target_path}") + ${tmp_target}= Set Variable /tmp/${filename} ${hash_source}= Run md5sum ${source_path} | cut -d ' ' -f 1 IF '${DUT_CONNECTION_METHOD}' == 'Telnet' IF '${MANUFACTURER}' == 'QEMU' Set Local Variable ${ip_address} localhost Set Local Variable ${port} 5222 ELSE + Wait Until Keyword Succeeds 5x 10s + ... Get Hostname Ip ${ip_address}= Get Hostname Ip Set Local Variable ${port} 22 END Execute Command In Terminal rm -f ${target_path} SSHLibrary.Open Connection ${ip_address} port=${port} - SSHLibrary.Login ${DEVICE_UBUNTU_USERNAME} ${DEVICE_UBUNTU_PASSWORD} - SSHLibrary.Put File ${source_path} ${target_path} + SSHLibrary.Login ${DEVICE_OS_USERNAME} ${DEVICE_OS_PASSWORD} + SSHLibrary.Put File ${source_path} ${tmp_target} SSHLibrary.Close Connection ELSE - SSHLibrary.Put File ${source_path} ${target_path} + SSHLibrary.Put File ${source_path} ${tmp_target} END - ${hash_target}= Execute Command In Terminal md5sum ${target_path} | cut -d ' ' -f 1 + ${hash_target}= Execute Command In Terminal md5sum ${tmp_target} | cut -d ' ' -f 1 + ${hash_target}= Strip String ${hash_target} + Should Be Equal ${hash_source} ${hash_target} msg=File was not correctly sent to DUT + + ${issuer}= Execute Command In Terminal whoami + IF '${issuer}' != 'root' Switch To Root User + Execute Command In Terminal mv ${tmp_target} ${target_path} + Execute Command In Terminal chown ${issuer}:${issuer} ${target_path} + IF '${issuer}' != 'root' Exit From Root User + +Get File From DUT + [Documentation] Downloads a file from DUT and saves it at given location + [Arguments] ${source_path} ${target_path} + Run rm -f ${target_path} + ${hash_source}= Execute Command In Terminal md5sum ${source_path} | cut -d ' ' -f 1 + + IF '${DUT_CONNECTION_METHOD}' == 'Telnet' + IF '${MANUFACTURER}' == 'QEMU' + Set Local Variable ${ip_address} localhost + Set Local Variable ${port} 5222 + ELSE + Wait Until Keyword Succeeds 5x 10s + ... Get Hostname Ip + ${ip_address}= Get Hostname Ip + Set Local Variable ${port} 22 + END + SSHLibrary.Open Connection ${ip_address} port=${port} + SSHLibrary.Login ${DEVICE_OS_USERNAME} ${DEVICE_OS_PASSWORD} + SSHLibrary.Get File ${source_path} ${target_path} + SSHLibrary.Close Connection + ELSE + SSHLibrary.Get File ${source_path} ${target_path} + END + ${hash_target}= Run md5sum ${target_path} | cut -d ' ' -f 1 ${hash_target}= Strip String ${hash_target} Should Be Equal ${hash_source} ${hash_target} msg=File was not correctly sent to DUT Get Hostname Ip [Documentation] Returns local IP address of the DUT. - # TODO: We do not necessarily need Internet to be reachable for the internal - # addresses to be assigned. But if it is, the local IPs are definitely - # already in place. - Wait Until Keyword Succeeds 5x 1s - ... Check Internet Connection On Linux ${out_hostname}= Execute Command In Terminal hostname -I Should Not Contain ${out_hostname} link is not ready ${ip_address}= String.Get Regexp Matches ${out_hostname} \\b(?:192\\.168|10\\.0)\\.\\d{1,3}\\.\\d{1,3}\\b @@ -46,7 +78,9 @@ Get Hostname Ip Check Internet Connection On Linux [Documentation] Check internet connection on Linux. - ${out}= Execute Linux Command ping -c 4 google-public-dns-a.google.com + Wait Until Keyword Succeeds 5x 10s + ... Get Hostname Ip + ${out}= Execute Command In Terminal ping -c 4 google-public-dns-a.google.com Should Contain ${out} , 0% packet loss Check Internet Connection On Windows @@ -56,19 +90,14 @@ Check Internet Connection On Windows Scan For Wi-Fi In Linux [Documentation] Turn on Wi-Fi then scan in search of company network. - Execute Linux Command Without Output nmcli radio wifi on - Write Into Terminal nmcli device wifi rescan - Set DUT Response Timeout 60 seconds - Write Into Terminal nmcli device wifi list - Read From Terminal Until ${3_MDEB_WIFI_NETWORK} - Write Into Terminal q + Execute Command In Terminal nmcli radio wifi on + Execute Command In Terminal nmcli device wifi rescan + ${out}= Execute Command In Terminal nmcli --fields SSID device wifi list | cat + Should Contain ${out} ${3_MDEB_WIFI_NETWORK} Scan For Bluetooth In Linux [Documentation] Turn on Bluetooth then scan in search of company network. - ${out}= Execute Linux Command bluetoothctl power on + ${out}= Execute Command In Terminal bluetoothctl power on Should Contain ${out} Changing power on succeeded - Set DUT Response Timeout 60 seconds - Write Into Terminal bluetoothctl --timeout 60 scan on - Sleep 5 - ${out}= Read From Terminal Until Prompt + ${out}= Execute Command In Terminal bluetoothctl --timeout 60 scan on timeout=70s Should Contain Any ${out} Discovery started SetDiscoveryFilter success diff --git a/lib/options/dcu.robot b/lib/options/options-lib_dcu.robot similarity index 62% rename from lib/options/dcu.robot rename to lib/options/options-lib_dcu.robot index edeb5c3c78..67c71216a0 100644 --- a/lib/options/dcu.robot +++ b/lib/options/options-lib_dcu.robot @@ -17,14 +17,19 @@ Resource ../dcu.robot *** Keywords *** Set UEFI Option [Documentation] Set an UEFI option to a value. + ... The device has to be ON and logged in to Ubuntu [Arguments] ${option_name} ${value} + Login To Linux + Switch To Root User DCU Variable Set UEFI Option In DUT ${option_name} ${value} - Execute Reboot Command Sleep 20s Get UEFI Option [Documentation] Read an UEFI option value. + ... The device has to be ON and logged in to Ubuntu [Arguments] ${option_name} + Login To Linux + Switch To Root User ${out}= DCU Variable Get UEFI Option From DUT ${option_name} RETURN ${out} @@ -34,6 +39,9 @@ Reset UEFI Options To Defaults Get UEFI Boot Manager Entries [Documentation] Read list of UEFI boot manager + ... The device does not need to be logged in to Ubuntu if $DUT_CONNETION_METHOD == SSH. + ... If $DUT_CONNETION_METHOD == Telnet, then the device must be logged + ... off, and the login prompt must be available in the Telnet buffer. Login To Linux Switch To Root User @@ -43,32 +51,34 @@ Get UEFI Boot Manager Entries Measure Coldboot Time [Documentation] Performs a measurement of average coldboot - ... boot time + ... boot. Not supported in this variant of options lib. Skip Coldboot not supported without serial connection Measure Warmboot Time - [Documentation] Performs a measurement of warmboot - ... boot time - [Arguments] ${iterations} + [Documentation] Performs a measurement of warmboot boot time + ... The device does not need to be logged in to Ubuntu if $DUT_CONNETION_METHOD == SSH. + ... If $DUT_CONNETION_METHOD == Telnet, then the device must be logged + ... off, and the login prompt must be available in the Telnet buffer. + [Arguments] ${iterations} ${os_id}=${BOOTED_OS_ID} ${durations}= Create List Log To Console \n FOR ${index} IN RANGE 0 ${iterations} + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User - # Using "Execute Command In Terimal" will cause the test to wait + # Using "Execute Command In Terminal" will cause the test to wait # for command prompt to appear before continuing but the prompt # will not appear again until we Login after reboot, so the test # would hang here and fail. # Sometimes it may take long to shutdown all systemd services, # so the waiting times have to be excessive to avoid false negatives. - Write Into Terminal rtcwake -m off -s 60 - - Set DUT Response Timeout 300s + Perform Warmboot Using Rtcwake + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${boot_time}= Get Boot Time From Cbmem @@ -80,17 +90,20 @@ Measure Warmboot Time RETURN ${min} ${max} ${average} ${stddev} Measure Reboot Time - [Documentation] Performs a measurement of reboot - ... boot time - [Arguments] ${iterations} + [Documentation] Performs a measurement of reboot boot time + ... The device does not need to be logged in to Ubuntu if $DUT_CONNETION_METHOD == SSH. + ... If $DUT_CONNETION_METHOD == Telnet, then the device must be logged + ... off, and the login prompt must be available in the Telnet buffer. + [Arguments] ${iterations} ${os_id}=${BOOTED_OS_ID} ${durations}= Create List Log To Console \n - FOR ${index} IN RANGE 0 ${iterations} - Login To Linux - Switch To Root User + Boot System Or From Connected Disk ${os_id} + Login To Linux + Switch To Root User + FOR ${index} IN RANGE 0 ${iterations} Execute Reboot Command Sleep 10s @@ -115,22 +128,24 @@ Make Sure That Flash Locks Are Disabled Power On Login To Linux Switch To Root User - Get Flashrom From Cloud ${out_flashrom}= Execute Command In Terminal flashrom -p internal Should Not Contain ${out_flashrom} read-only Login To Windows Power On - Boot System Or From Connected Disk ${OS_WINDOWS} + Boot System Or From Connected Disk ${ENV_ID_WINDOWS} + Sleep 60s + Login To Windows Via SSH ${DEVICE_OS_USERNAME} ${DEVICE_OS_PASSWORD} -Boot System Or From Connected Disk - [Documentation] Keyword makes the DUT to reboot in chosen OS. There is a requirement for DUT to always reboot to Ubuntu. - [Arguments] ${os} - ${os_boot_id}= Set Variable ${EMPTY} - ${os}= Convert To Lower Case ${os} +Set Nextboot + [Documentation] Sets the OS of choice to be booted first on the next + ... reboot. Not persistent, only changes the first boot option for + ... one boot. + [Arguments] ${env_id} - Login To Linux - Switch To Root User + ${os_boot_id}= Set Variable ${EMPTY} + ${os_bootentry_name}= Get From Dictionary ${ENV_ID_OS_BOOTMENU_NAMES} ${env_id} + ${os_bootentry_name}= Convert To Lower Case ${os_bootentry_name} ${boot_entries}= Execute Command In Terminal efibootmgr @@ -140,28 +155,53 @@ Boot System Or From Connected Disk ${tmp}= Encode String To Bytes ${line} ASCII errors=replace ${line}= Decode Bytes To String ${tmp} ASCII errors=replace ${line}= Get Substring ${line} 0 150 - ${line}= Convert To Lower Case ${line} - IF '${os}' in '${line}' + IF '${os_bootentry_name}' in '${line}' ${os_boot_id}= Set Variable ${line} BREAK END END + IF '${os_boot_id}' != '${EMPTY}' ${id}= Get Substring ${os_boot_id} 4 8 Execute Command In Terminal efibootmgr --bootnext ${id} - Sleep 1s - Write Into Terminal reboot - Sleep 30s ELSE Fail Os entry not found END +Boot System Or From Connected Disk + [Documentation] Keyword makes the DUT to reboot in chosen OS. + [Arguments] ${env_id} + + IF '${BOOTED_OS_ID}'.startswith('3') # Windows + Execute Reboot Command windows + Boot System Or From Connected Disk ${DEFAULT_BOOT_OS_ID} + END + + ${os_boot_id}= Set Variable ${EMPTY} + ${os_bootentry_name}= Get From Dictionary ${ENV_ID_OS_BOOTMENU_NAMES} ${env_id} + + Import Variables ${CURDIR}/../../os-config/${BOOTED_OS_ID}-credentials.py + Login To Linux + Switch To Root User + + IF '${BOOTED_OS_ID}' == '${env_id}' + Log Target OS already booted + RETURN + END + + ${os_boot_id}= Set Nextboot ${env_id} + Write Into Terminal reboot + + Import Variables ${CURDIR}/../../os-config/${env_id}-credentials.py + Set Suite Variable ${BOOTED_OS_ID} ${env_id} + Sleep 30s + Login To Windows Via SSH [Documentation] Login to Windows via SSH by using provided arguments as ... username and password respectively. - [Arguments] ${username}=${DEVICE_WINDOWS_USERNAME} ${password}=${DEVICE_WINDOWS_PASSWORD} ${timeout}=180 - SSHLibrary.Open Connection ${DEVICE_IP} prompt=${DEVICE_WINDOWS_USER_PROMPT} + [Arguments] ${username}=${DEVICE_OS_USERNAME} ${password}=${DEVICE_OS_PASSWORD} ${timeout}=180 + SSHLibrary.Open Connection ${DEVICE_IP} prompt=${DEVICE_OS_USER_PROMPT} SSHLibrary.Set Client Configuration ... timeout=${timeout} ... term_type=vt100 diff --git a/lib/options/uefi-setup-menu.robot b/lib/options/options-lib_uefi-setup-menu.robot similarity index 92% rename from lib/options/uefi-setup-menu.robot rename to lib/options/options-lib_uefi-setup-menu.robot index 0a5d056ee0..25591a1197 100644 --- a/lib/options/uefi-setup-menu.robot +++ b/lib/options/options-lib_uefi-setup-menu.robot @@ -14,6 +14,7 @@ Set UEFI Option [Documentation] Set an UEFI option to a value. ... TODO: Only works with options following the submenu/submenu/option ... pattern (e.g. all Dasharo System Features options). + ... Uses the ``Power On`` keyword. [Arguments] ${option_name} ${value} Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} Can not configure UEFI settings on this platform. @@ -31,6 +32,7 @@ Set UEFI Option ${menu}= Enter Submenu From Snapshot And Return Construction ... ${menu} ... ${option_path[${i}]} + ... ${TRUE} END Set Option State ${menu} ${option_path[${path_len}-1]} ${value} @@ -40,6 +42,7 @@ Get UEFI Option [Documentation] Set an UEFI option to a value. ... TODO: Only works with options following the submenu/submenu/option ... pattern (e.g. all Dasharo System Features options). + ... Uses the ``Power On`` keyword [Arguments] ${option_name} Skip If not ${TESTS_IN_FIRMWARE_SUPPORT} Can not configure UEFI settings on this platform. @@ -57,6 +60,7 @@ Get UEFI Option ${menu}= Enter Submenu From Snapshot And Return Construction ... ${menu} ... ${option_path[${i}]} + ... ${TRUE} END ${state}= Get Option State ${menu} ${option_path[${path_len}-1]} @@ -80,14 +84,14 @@ Get UEFI Boot Manager Entries Measure Coldboot Time [Documentation] Performs a measurement of coldboot ... boot time - [Arguments] ${iterations} + [Arguments] ${iterations} ${os_id}=${BOOTED_OS_ID} Skip If '${POWER_CTRL}' == 'none' Coldboot automatic tests not supported ${durations}= Create List Log To Console \n # Do one more iteration than requested, as we may hit first boot which is always longer. FOR ${index} IN RANGE 0 ${iterations}+1 - Power Cycle On power_button=${TRUE} - Boot System Or From Connected Disk ubuntu + Power Cycle On + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${boot_time}= Get Boot Time From Cbmem @@ -102,13 +106,13 @@ Measure Coldboot Time Measure Warmboot Time [Documentation] Performs a measurement of warmboot ... boot time - [Arguments] ${iterations} + [Arguments] ${iterations} ${os_id}=${BOOTED_OS_ID} ${durations}= Create List Log To Console \n # Do one more iteration than requested, as we may hit first boot which is always longer. FOR ${index} IN RANGE 0 ${iterations}+1 Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${boot_time}= Get Boot Time From Cbmem @@ -123,7 +127,7 @@ Measure Warmboot Time Measure Reboot Time [Documentation] Performs a measurement of reboot ... boot time - [Arguments] ${iterations} + [Arguments] ${iterations} ${os_id}=${BOOTED_OS_ID} Power On ${average}= Set Variable 0 @@ -131,7 +135,7 @@ Measure Reboot Time Log To Console \n # Do one more iteration than requested, as we may hit first boot which is always longer. FOR ${index} IN RANGE 0 ${iterations}+1 - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${os_id} Login To Linux Switch To Root User ${boot_time}= Get Boot Time From Cbmem diff --git a/lib/options/options.robot b/lib/options/options.robot new file mode 100644 index 0000000000..b0b310882a --- /dev/null +++ b/lib/options/options.robot @@ -0,0 +1,203 @@ +*** Settings *** +Documentation Library for UEFI configuration using Dasharo Configuration +... Utility tool. Commonly used when serial port is not +... available. + +Library Collections +Library OperatingSystem +Library Process +Library String +Library SSHLibrary +Resource ../terminal.robot +Resource ../../keywords.robot +Resource ../cbmem.robot +Resource ../dcu.robot + + +*** Keywords *** +Set UEFI Option + [Documentation] + ... Sets an UEFI option. + ... Implementations in ``/lib/options/`` + ... At this moment the implementations are not completely device-agnostic + ... and might have additional requirements/side effects. Check the + ... implementations' documentation for details. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${option_name}``: ``string`` - The name of the UEFI option. Can + ... be one of the names defined in lib/bios/menus.py "getoptionpath" + ... dictionary + ... - ``${value}``: ``string or boolean`` - The value to set. + ... - For boolean options: either ``${TRUE}`` or ``${FALSE}`` + ... - For numeric options: a numeric string, like ``1234`` + ... - For lists: the exact value of the list item, like ``Set UEFI Option ActiveECores All active`` + ... + ... === Return Value === + ... - ``boolean`` - The result. ``${TRUE}`` if options was changed, ``${FALSE}`` + ... if it was not. ``${FALSE}`` can mean that the option was already in the + ... requested state. + ... + ... === Effects === + ... - The device gets rebooted + ... - The UEFI option ``${option_name}`` is set to ``${value}`` + [Arguments] ${option_name} ${value} + + Fail Not implemented + +Get UEFI Option + [Documentation] + ... Gets the value of an UEFI option. + ... Implementations in ``/lib/options/`` + ... At this moment the implementations are not completely device-agnostic + ... and might have additional requirements/side effects. Check the + ... implementations' documentation for details. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${option_name}``: ``string`` - The name of the UEFI option. Can + ... be one of the names defined in ``lib/bios/menus.py`` ``getoptionpath`` + ... dictionary + ... + ... === Return Value === + ... - ``string or boolean`` - The value of the option. + ... - Boolean ``${TRUE}``/``${FALSE}`` for boolean options + ... - String for numeric and list options + ... + ... === Effects === + ... - The device might get rebooted, depending on implementation + [Arguments] ${option_name} + Fail Not implemented + +Reset UEFI Options To Defaults + [Documentation] + ... Resets all the UEFI options to their default values + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - All the UEFI options are reset to the defaults. Make sure the + ... default value of ``SerialRedirection`` is set to Enabled if using + ... Telnet/Serial + ... - The device gets rebooted + Fail Not implemented + +Get UEFI Boot Manager Entries + [Documentation] + ... Reads the Boot Manager entries + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... - ``string`` - The boot menu entries, separated with newlines + ... + ... === Effects === + ... - The device might get rebooted, depending on implementation + Fail Not implemented + +Measure Coldboot Time + [Documentation] + ... Performs a measurement of average coldboot + ... boot time + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${iterations}``: ``integer`` - the amount of coldboots + ... - ``${os_id}``: ``integer`` - the ID of an OS on which the + ... \ measurements are to be gathered + ... + ... === Return Value === + ... - ``float`` - MIN coldboot time + ... - ``float`` - MAX coldboot time + ... - ``float`` - Average coldboot time + ... - ``float`` - Standard deviation of the coldboot time + ... + ... === Effects === + ... - The device will be rebooted ${iterations} times + [Arguments] ${iterations} ${os_id}=${BOOTED_OS_ID} + Skip Coldboot not supported without serial connection + +Measure Warmboot Time + [Documentation] + ... Performs a measurement of average warmboot + ... boot time + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${iterations}``: ``integer`` - the amount of warmboots + ... to be tested + ... - ``${os_id}``: ``integer`` - the ID of an OS on which the + ... \ measurements are to be gathered + ... + ... === Return Value === + ... - ``float`` - MIN warmboot time + ... - ``float`` - MAX warmboot time + ... - ``float`` - Average warmboot time + ... - ``float`` - Standard deviation of the warmboot time + ... + ... === Effects === + ... - The device will be rebooted ${iterations} times + [Arguments] ${iterations} ${os_id}=${BOOTED_OS_ID} + Fail Not implemented + +Measure Reboot Time + [Documentation] + ... Performs a measurement of average reboot + ... boot time + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... - ``${iterations}``: ``integer`` - the amount of reboots + ... to be tested + ... - ``${os_id}``: ``integer`` - the ID of an OS on which the + ... \ measurements are to be gathered + ... + ... === Return Value === + ... - ``float`` - MIN reboot time + ... - ``float`` - MAX reboot time + ... - ``float`` - Average reboot time + ... - ``float`` - Standard deviation of the reboot time + ... + ... === Effects === + ... - The device will be rebooted ${iterations} times + [Arguments] ${iterations} ${os_id}=${BOOTED_OS_ID} + Fail Not implemented + +Make Sure That Flash Locks Are Disabled + [Documentation] Makes sure that all flash locks are disabled in the UEFI + ... settings. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... - The device will get rebooted + ... - Causes a FAIL if disabling locks is not possible + Fail Not implemented diff --git a/lib/performance/common.robot b/lib/performance/common.robot new file mode 100644 index 0000000000..52c3523b20 --- /dev/null +++ b/lib/performance/common.robot @@ -0,0 +1,84 @@ +*** Settings *** +Documentation Common header for OSFV Performance Library + +Library Collections +Library DateTime +Library OperatingSystem +Library Process +Library String +Library RequestsLibrary +Library SSHLibrary +Resource ../platform/power.robot +Resource ../../variables.robot +Resource ../../keywords.robot +Resource ../../keys.robot + + +*** Variables *** +# Phoronix Test Suite download variables +${PTS_LATEST_URL}= +... https://github.com/phoronix-test-suite/phoronix-test-suite/archive/refs/tags/v10.8.4.zip +${PTS_DOWNLOAD_PATH}= C:\pts\pts.zip +${PTS_EXTRACT_PATH}= C:\pts-extracted\ +# Phoronix Test Suite test results +${PTS_RESULTS_DIR_WINDOWS}= C:\pts\test-results\ +${PTS_RESULTS_DIR_LINUX}= ~/.phoronix-test-suite/test-results +${PTS_RESULTS_DIR_LINUX_ROOT}= /var/lib/phoronix-test-suite/test-results + + +*** Keywords *** +Detect Or Install Phoronix Test Suite On Ubuntu + [Documentation] Detects and installs PTS if it is missing on Ubuntu. + # Get and store current user, so we can seamlessly get root perms if missing + ${curr_user}= Execute Command In Terminal whoami + IF '${curr_user}' != 'root' Switch To Root User + Detect Or Install Package php-cli + Detect Or Install Package php-xml + + ${out}= Execute Command In Terminal test -f /usr/bin/phoronix-test-suite && echo "PTS Installed" + IF '${out}' != 'PTS Installed' + Execute Command In Terminal wget ${PTS_LATEST_URL} 60 + Execute Command In Terminal unzip -q -o v10.8.4.zip 120 + ${out}= Execute Command In Terminal + ... cd phoronix-test-suite-10.8.4 && ./install-sh && cd .. 120 + Should Contain ${out} Phoronix Test Suite Installation Completed + Execute Command In Terminal + ... rm v10.8.4.zip && rm -r phoronix-test-suite-10.8.4 + END + IF '${curr_user}' != 'root' Exit From Root User + +Detect Or Install Phoronix Test Suite On Windows + [Documentation] Detects and installs PTS for Windows 11 via powershell. + ${out}= Execute Command In Terminal Test-Path -Path C:\phoronix-test-suite + IF '${out}' != 'True' + Execute Command In Terminal + ... Invoke-WebRequest -Uri ${PTS_LATEST_URL} -OutFile ${PTS_DOWNLOAD_PATH} 60 + Execute Command In Terminal + ... Expand-Archive -Path ${PTS_DOWNLOAD_PATH} -DestinationPath ${PTS_EXTRACT_PATH} -Force 60 + Execute Command In Terminal + ... Start-Process -FilePath ${PTS_EXTRACT_PATH}\install.bat -NoNewWindow -Wait 300 + Execute Command In Terminal + ... Remove-Item -Path ${PTS_DOWNLOAD_PATH} -Force + Execute Command In Terminal + ... Remove-Item -Path ${PTS_EXTRACT_PATH} -Force + END + +Setup Phoronix Batch Mode + [Documentation] Configure batch mode required for more automated tests. + Write Into Terminal phoronix-test-suite batch-setup + Read From Terminal Until Save test results when in batch mode (Y/n): + Write Into Terminal y + # Yes, this option for some reason has upper/lower case swapped... + Read From Terminal Until Open the web browser automatically when in batch mode (y/N): + Write Into Terminal n + Read From Terminal Until Auto upload the results to OpenBenchmarking.org (Y/n): + Write Into Terminal n + Read From Terminal Until Prompt for test identifier (Y/n): + Write Into Terminal n + Read From Terminal Until Prompt for test description (Y/n): + Write Into Terminal n + Read From Terminal Until Prompt for saved results file-name (Y/n): + Write Into Terminal n + Read From Terminal Until Run all test options (Y/n): + Write Into Terminal n + Read From Terminal Until Prompt diff --git a/lib/CPU-performance-lib.robot b/lib/performance/cpu.robot similarity index 52% rename from lib/CPU-performance-lib.robot rename to lib/performance/cpu.robot index 6bc2326fb5..8afd875af3 100644 --- a/lib/CPU-performance-lib.robot +++ b/lib/performance/cpu.robot @@ -1,3 +1,9 @@ +*** Settings *** +Documentation CPU header for OSFV Performance Library + +Resource common.robot + + *** Keywords *** Get CPU Frequency MAX [Documentation] Get max CPU Frequency. @@ -21,11 +27,6 @@ Get CPU Frequency MIN ${freq}= Evaluate ${freq}-100 RETURN ${freq} -Get CPU Temperature CURRENT - [Documentation] Get current CPU temperature. - ${temperature}= Execute Command In Terminal sensors 2>/dev/null | awk -F '[+°]' '/Package id 0:/ {printf $2}' - RETURN ${temperature} - Get CPU Frequencies In Ubuntu [Documentation] Get all CPU frequencies in Ubuntu OS. Keyword returns ... list of current CPU frequencies @@ -40,7 +41,7 @@ Get CPU Frequencies In Ubuntu END RETURN @{frequency_list} -Check If CPU Not Stuck On Initial Frequency In Ubuntu +Check If CPU Not Stuck On Initial Frequency In Linux [Documentation] Check that CPU not stuck on initial frequency. ${are_frequencies_equal}= Set Variable ${TRUE} @{frequencies}= Get CPU Frequencies In Ubuntu @@ -89,72 +90,14 @@ Check CPU Frequency In Windows Stress Test [Documentation] Proceed with the stress test. - [Arguments] ${time}=60s - Detect Or Install Package stress-ng - Execute Command In Terminal stress-ng --cpu $(nproc) --timeout ${time} &> /dev/null & disown - -Check Power Supply - ${laptop_platform}= Check The Platform Is A Laptop - Set Suite Variable ${LAPTOP_PLATFORM} ${laptop_platform} - IF ${LAPTOP_PLATFORM} - IF ${TESTS_IN_UBUNTU_SUPPORT} - ${bat0_present} ${ac_online} ${usb_pd_online}= Check Power Supply On Linux - ELSE IF ${TESTS_IN_WINDOWS_SUPPORT} - ${bat0_present} ${ac_online} ${usb_pd_online}= Check Power Supply On Windows - ELSE IF ${HEADS_PAYLOAD_SUPPORT} - Log Check Power Supply on Heads not implemented yet ERROR - ELSE - Fail Fail: Check Power Supply is not implemented enough - END - Set Suite Variable ${BATTERY_PRESENT} ${bat0_present} - Set Suite Variable ${AC_CONNECTED} ${ac_online} - Set Suite Variable ${USB-PD_CONNECTED} ${usb_pd_online} - END - -Check The Platform Is A Laptop - ${laptop_platform}= Run Keyword And Return Status Should Contain Any ${PLATFORM} novacustom tuxedo - RETURN ${laptop_platform} - -Check Power Supply On Linux - Power On - Boot System Or From Connected Disk ubuntu - Login To Linux - ${bat0_present_raw}= Execute Command In Terminal cat /sys/class/power_supply/BAT0/present - ${bat0_present}= Run Keyword And Return Status Should Be Equal ${bat0_present_raw} 1 - - ${ac_online_raw}= Execute Command In Terminal cat /sys/class/power_supply/AC/online - Should Not Contain ${ac_online_raw} No such file or directory - ${ac_online}= Run Keyword And Return Status Should Be Equal ${ac_online_raw} 1 - - # FIXME: USB-PD detection is not yet possible. - ${usb_pd_online_raw}= Execute Command In Terminal cat /sys/class/power_supply/USB-PD/online - Log 'cat /sys/class/power_supply/USB-PD/online' not implemented yet, if implemented, remove # WARN - # Should Not Contain ${usb_pd_online_raw} No such file or directory - ${usb_pd_online}= Run Keyword And Return Status Should Be Equal ${usb_pd_online_raw} 1 - - RETURN ${bat0_present} ${ac_online} ${usb_pd_online} - -Check Power Supply On Windows - Power On - Login To Windows - ${raw_output}= Execute Command In Terminal (Get-WmiObject Win32_Battery).BatteryStatus - ${bat0_present}= Run Keyword And Return Status Should Not Be Empty ${raw_output} - - # ${ac_online_raw}= Execute Command In Terminal (Get-WmiObject Win32_Battery).BatteryStatus - ${ac_online_empty}= Run Keyword And Return Status Should Be Empty ${raw_output} - ${ac_online_equal_2}= Run Keyword And Return Status Should Be Equal ${raw_output} 2 - # IF ${ac_online_raw_empty} or ${ac_online_raw_equal_2} - # Set Local Variable ${AC_ONLINE}= ${TRUE} - # END - ${ac_online}= Set Variable If - ... ${ac_online_empty} ${TRUE} - ... ${ac_online_equal_2} ${TRUE} + [Arguments] ${time}=60s ${workers}=$(nproc) ${load_percent}=100 ${start_delay_seconds}=0 - # FIXME: USB-PD detection is not yet possible. - Log Check power supply USB-PD not implemented yet WARN - ${usb_pd_online}= Run Keyword And Return Status - ... Should Be Equal - ... ${raw_output} - ... insert the correct USB-PD detection method here + ${cmd}= Catenate $( + ... pkill stress-ng; + ... sleep ${start_delay_seconds}; + ... stress-ng --cpu ${workers} --cpu-load ${load_percent} --timeout ${time} -q &> /dev/null + ... ) & disown + Execute Command In Terminal ${cmd} - RETURN ${bat0_present} ${ac_online} ${usb_pd_online} +Stress Test Stop + Execute Command In Terminal pkill stress-ng diff --git a/lib/performance/gpu.robot b/lib/performance/gpu.robot new file mode 100644 index 0000000000..fd7b23499d --- /dev/null +++ b/lib/performance/gpu.robot @@ -0,0 +1,58 @@ +*** Settings *** +Documentation GPU header for OSFV Performance Library + +Library Dialogs +Resource common.robot + + +*** Keywords *** +Run Unigine Superposition On Ubuntu + [Documentation] Wrapper for PTS. Run suite, gather and process + ... results. It assumes DUT is logged in into regular user + ... account on Ubuntu + [Arguments] ${test_run_name}=gpu_test${CURRENT_DATE} + + # Required for graphical benchmarking over ssh + Execute Manual Step Please ensure DUT has active desktop session + ... by logging into Gnome Desktop. + ${cmd}= Set Variable DISPLAY=:0 + + IF ${NVIDIA_GRAPHICS_CARD_SUPPORT} + ${cmd}= Catenate ${cmd} + ... __GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1 + ${cmd}= Catenate ${cmd} + ... __VK_LAYER_NV_optimus=NVIDIA_only VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json + END + + ${cmd}= Catenate ${cmd} + ... phoronix-test-suite batch-run + ${cmd}= Catenate ${cmd} + ... unigine-super RESULT_NAME=${test_run_name} + + Write Into Terminal ${cmd} + # Test options + Read From Terminal Until Resolution: + # 1: 800 x 600 2: 1024 x 768 3: 1280 x 1024 + # 4: 1600 x 1200 5: 1920 x 1080 6: 1920 x 1200 + Write Into Terminal 5 # Full HD 1920 x 1080 + Read From Terminal Until Mode: + # 1 : Fullscreen 2: Windowed + Write Into Terminal 2 # Test in-window performance + Read From Terminal Until Quality: + # 1: Low 2: Medium 3: High 4: Ultra + Write Into Terminal 2 # Medium preset + # Test takes around 11 minutes, but will repeat runs if deviation is too high, + # therefore we give almost 3x that time to ensure it has enough to rerun + Set DUT Response Timeout 1800 + ${out}= Read From Terminal Until Prompt + Should Contain ${out} Average: + ... Benchmark did not produce results + ${lines}= Split String ${out} \n + FOR ${line} IN @{lines} + IF '''Average''' in '''${line}''' + ${parts}= Split String ${line} + ${value}= Get From List ${parts} 1 + RETURN ${value} + END + END + Fail Could not acquire results diff --git a/lib/platform/boot.robot b/lib/platform/boot.robot new file mode 100644 index 0000000000..c5600ed2de --- /dev/null +++ b/lib/platform/boot.robot @@ -0,0 +1,167 @@ +*** Settings *** +Documentation Common header for OSFV boot management + +Library Collections +Library OperatingSystem +Library Process +Library String +Library RequestsLibrary +Library SSHLibrary +Resource ../../variables.robot +Resource ../../keywords.robot +Resource ../../keys.robot + + +*** Keywords *** +Set Selected OS As First In Boot Order Via EDK2 + [Documentation] Uses EDK2 menu to select given OS as first in + ... boot menu. + ... + ... === Requirements === + ... - Serial port connection has to be supported by the platform + ... - Must be within Dasharo's main UEFI firmware setup + ... + ... === Arguments === + ... - ``${os}``: ``string`` - ENV_ID of the OS we want to boot + ... + ... === Return Value === + ... - None + ... + ... === Effects === + ... - OS specified by ENV_ID will be priority during subsequent boots + ... - Resets the DUT via EDK2 reset + [Arguments] ${os} + ${system_name}= Get From Dictionary ${ENV_ID_OS_BOOTMENU_NAMES} ${os} + + # When ESP scanning feature is there, boot entries are named differently than + # they used to + IF ${ESP_SCANNING_SUPPORT} == ${TRUE} + IF "${system_name}" == "ubuntu" + ${system_name}= Set Variable Ubuntu + ELSE IF "${system_name}" == "fedora" + ${system_name}= Set Variable Fedora + ELSE IF "${system_name}" == "trenchboot" and "${MANUFACTURER}" == "QEMU" + ${system_name}= Set Variable QEMU HARDDISK + END + END + + ${menu}= Get Setup Menu Construction + ${menu}= Enter Submenu From Snapshot And Return Construction + ... ${menu} + ... Boot Maintenance Manager + ${menu}= Enter Submenu From Snapshot And Return Construction + ... ${menu} + ... Boot Options + ${menu}= Enter Submenu From Snapshot And Return Construction + ... ${menu} + ... Change Boot Order + Press Enter + ${os_list_raw}= Read From Terminal Until ---/ + ${os_list}= Extract Strings From Frame ${os_list_raw} + ${first_item}= Set Variable ${os_list}[0] + ${is_first}= Run Keyword And Return Status Should Contain ${first_item} ${system_name} + + IF '${is_first}' == 'False' + ${index}= Set Variable -1 + FOR ${i} ${item} IN ENUMERATE @{os_list} + ${item_lower}= Convert To Lowercase ${item} + ${system_lower}= Convert To Lowercase ${system_name} + ${found}= Run Keyword And Return Status Should Contain ${item_lower} ${system_lower} + IF '${found}' == 'True' + ${index}= Set Variable ${i} + BREAK + END + END + + Should Not Be Equal As Integers ${index} -1 + ... System name '${system_name}' not found in boot menu list + + Press Key N Times ${index} ${ARROW_DOWN} + Press Key N Times ${index} ${KEY_PLUS} + Press Enter + Write Bare Into Terminal ${F10} + Sleep 1s + Write Bare Into Terminal y + # Return to main menu + Press Key N Times 3 ${ESC} + Sleep 1s + # Issue reset in the menu + Press Key N Times 2 ${ARROW_DOWN} + Press Enter + END + +Set Selected OS As First In Boot Order Via Efibootmgr + [Documentation] Uses Ubuntu and efibootmgr to select boot prioroty + ... + ... === Requirements === + ... - Connection to DUT must be established. + ... - Platform must boot Ubuntu to access efibootmgr + ... + ... === Arguments === + ... - ``${os}``: ``string`` - ENV_ID of the OS we want to boot + ... + ... === Return Value === + ... - None + ... + ... === Effects === + ... - OS specified by ENV_ID will be priority during subsequent + [Arguments] ${os} + ${system_name}= Get From Dictionary ${ENV_ID_OS_BOOTMENU_NAMES} ${os} + + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + + ${os_boot_id}= Execute Linux Command + ... efibootmgr | grep -i "${system_name}" | awk 'NR==1 {print $1}' | sed 's/Boot//g' | sed 's/*//g' + Should Not Be Empty ${os_boot_id} + + ${order_check}= Execute Linux Command + ... efibootmgr | grep "BootOrder: ${os_boot_id}" + + # Trim the boot list to exclude target OS + IF '${order_check}' == '${EMPTY}' + ${boot_order_trimmed}= Execute Linux Command + ... efibootmgr | grep "BootOrder" | awk '{print $2}' | sed -e 's/,${os_boot_id}//g' + Should Not Be Empty ${boot_order_trimmed} + + ${set_order_cmd}= Set Variable efibootmgr -o + ${set_order_cmd}= Catenate ${set_order_cmd} + ... ${os_boot_id},${boot_order_trimmed} + + ${out}= Execute Linux Command ${set_order_cmd} + Should Contain ${out} BootOrder: ${os_boot_id} + END + +Verify Selected OS As First In Boot Order Via EDK2 + [Documentation] Uses dasharo edk2 boot menu to check first OS + ... in the boot order + ... === Requirements === + ... - Must be run in quick succession after Powering On + ... + ... === Arguments === + ... - ``${os}``: ``string`` - ENV_ID of the OS we want to check + ... + ... === Return Value === + ... - None + ... + ... === Effects === + ... - Fails if specified OS is not first boot entry + [Arguments] ${os} + ${system_name}= Get From Dictionary ${ENV_ID_OS_BOOTMENU_NAMES} ${os} + + # When ESP scanning feature is there, boot entries are named differently than + # they used to + IF ${ESP_SCANNING_SUPPORT} == ${TRUE} + IF "${system_name}" == "ubuntu" + ${system_name}= Set Variable Ubuntu + ELSE IF "${system_name}" == "fedora" + ${system_name}= Set Variable Fedora + ELSE IF "${system_name}" == "trenchboot" and "${MANUFACTURER}" == "QEMU" + ${system_name}= Set Variable QEMU HARDDISK + END + END + + ${boot_menu}= Enter Boot Menu Tianocore And Return Construction + ${top_os}= Get From List ${boot_menu} 0 + Should Contain ${top_os} ${system_name} diff --git a/lib/platform/power.robot b/lib/platform/power.robot new file mode 100644 index 0000000000..27e48ecb63 --- /dev/null +++ b/lib/platform/power.robot @@ -0,0 +1,107 @@ +*** Settings *** +Documentation Common header for OSFV Power management keywords + +Library Collections +Library OperatingSystem +Library Process +Library String +Library RequestsLibrary +Library SSHLibrary +Resource ../../variables.robot +Resource ../../keywords.robot +Resource ../../keys.robot + + +*** Keywords *** +Check Power Supply + ${laptop_platform}= Check The Platform Is A Laptop + Set Suite Variable ${LAPTOP_PLATFORM} ${laptop_platform} + IF ${LAPTOP_PLATFORM} + IF ${TESTS_IN_UBUNTU_SUPPORT} + ${bat0_present} ${ac_online} ${usb_pd_online}= Check Power Supply On Linux + ELSE IF ${TESTS_IN_WINDOWS_SUPPORT} + ${bat0_present} ${ac_online} ${usb_pd_online}= Check Power Supply On Windows + ELSE IF ${HEADS_PAYLOAD_SUPPORT} + Log Check Power Supply on Heads not implemented yet ERROR + ELSE + Fail Fail: Check Power Supply is not implemented enough + END + Set Suite Variable ${BATTERY_PRESENT} ${bat0_present} + Set Suite Variable ${AC_CONNECTED} ${ac_online} + Set Suite Variable ${USB-PD_CONNECTED} ${usb_pd_online} + END + +Check The Platform Is A Laptop + ${laptop_platform}= Run Keyword And Return Status Should Contain Any ${PLATFORM} novacustom tuxedo + RETURN ${laptop_platform} + +Check Power Supply On Linux + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + ${bat0_present_raw}= Execute Command In Terminal cat /sys/class/power_supply/BAT0/present + ${bat0_present}= Run Keyword And Return Status Should Be Equal ${bat0_present_raw} 1 + + ${ac_online_raw}= Execute Command In Terminal cat /sys/class/power_supply/AC/online + Should Not Contain ${ac_online_raw} No such file or directory + ${ac_online}= Run Keyword And Return Status Should Be Equal ${ac_online_raw} 1 + + # FIXME: USB-PD detection is not yet possible. + ${usb_pd_online_raw}= Execute Command In Terminal cat /sys/class/power_supply/USB-PD/online + Log 'cat /sys/class/power_supply/USB-PD/online' not implemented yet, if implemented, remove # WARN + # Should Not Contain ${usb_pd_online_raw} No such file or directory + ${usb_pd_online}= Run Keyword And Return Status Should Be Equal ${usb_pd_online_raw} 1 + + RETURN ${bat0_present} ${ac_online} ${usb_pd_online} + +Check Power Supply On Windows + Power On + Login To Windows + ${raw_output}= Execute Command In Terminal (Get-WmiObject Win32_Battery).BatteryStatus + ${bat0_present}= Run Keyword And Return Status Should Not Be Empty ${raw_output} + + # ${ac_online_raw}= Execute Command In Terminal (Get-WmiObject Win32_Battery).BatteryStatus + ${ac_online_empty}= Run Keyword And Return Status Should Be Empty ${raw_output} + ${ac_online_equal_2}= Run Keyword And Return Status Should Be Equal ${raw_output} 2 + # IF ${ac_online_raw_empty} or ${ac_online_raw_equal_2} + # Set Local Variable ${AC_ONLINE}= ${TRUE} + # END + ${ac_online}= Set Variable If + ... ${ac_online_empty} ${TRUE} + ... ${ac_online_equal_2} ${TRUE} + + # FIXME: USB-PD detection is not yet possible. + Log Check power supply USB-PD not implemented yet WARN + ${usb_pd_online}= Run Keyword And Return Status + ... Should Be Equal + ... ${raw_output} + ... insert the correct USB-PD detection method here + + RETURN ${bat0_present} ${ac_online} ${usb_pd_online} + +Check Battery Level On Linux + [Documentation] Returns a battery level as percentage. + ${power_level}= Execute Command In Terminal + ... cat /sys/class/power_supply/BAT0/capacity + Should Not Contain ${power_level} No such file or directory + RETURN ${power_level} + +Check Battery Level On Windows + [Documentation] Returns a battery level as percentage. + ${power_level}= Execute Command In Terminal + ... (Get-WmiObject -Class Win32_Battery).EstimatedChargeRemaining + Should Not Be Empty ${power_level} + RETURN ${power_level} + +Power Cycle Into Ubuntu + Power On + Boot System Or From Connected Disk 201 + Login To Linux + +Power Cycle Into Windows + Power On + Login To Windows + +Power Cycle Into Firmware Setup + Power On + Enter Setup Menu Tianocore diff --git a/lib/power-after-fail-lib.robot b/lib/power-after-fail-lib.robot index 6fbddd74dc..2eb2a56d9d 100644 --- a/lib/power-after-fail-lib.robot +++ b/lib/power-after-fail-lib.robot @@ -2,23 +2,19 @@ Documentation Collection of keywords related to the Power State After ... Power Fail option +Library terminal + *** Keywords *** Simulate Power Failure - [Documentation] This keyword simulates a power failure to the DUT, - ... preferably using sonoff. If it's unavailable, the fallback is RTE. + [Documentation] This keyword simulates a power failure to the DUT. + ... It is using osfv_cli libraries which control the power + ... via a RTE relay or a sonoff. # Use 15 seconds delay because if power is absent for less than roughly 10 # seconds the platform powers on regardless of the settings (original # firmware behaves the same) and waiting 10 seconds doesn't produce stable # results. - IF 'sonoff' == '${POWER_CTRL}' - Sonoff Off - Sleep 15s - Read From Terminal - Sonoff On - ELSE - Rte Relay Toggle - Sleep 15s - Read From Terminal - Rte Relay Toggle - END + Rte Psu Off + Sleep 15s + Read From Terminal + Rte Psu On diff --git a/lib/sd-wire.robot b/lib/sd-wire.robot index 517206fab6..3bffc4f9cd 100644 --- a/lib/sd-wire.robot +++ b/lib/sd-wire.robot @@ -1,4 +1,7 @@ *** Settings *** +Library Collections +Library String +Library SSHLibrary Library ../keywords.robot diff --git a/lib/secure-boot-lib.robot b/lib/secure-boot-lib.robot index f5e6e1a167..c33f008a12 100644 --- a/lib/secure-boot-lib.robot +++ b/lib/secure-boot-lib.robot @@ -205,8 +205,17 @@ Enter Volume In File Explorer Press Key N Times 1 ${ENTER} END -Select File In File Explorer - [Documentation] Select the given file +Enter Boot From File + [Documentation] Navigates from Tianocore Setup Menu + ... to Boot Maintenance Manager and to Boot From File + ${setup_menu}= Enter Setup Menu Tianocore And Return Construction + ${boot_maintenance_mgr_menu}= Enter Submenu From Snapshot And Return Construction + ... ${setup_menu} + ... Boot Maintenance Manager + Enter Submenu From Snapshot ${boot_maintenance_mgr_menu} Boot From File + +Execute File In File Explorer + [Documentation] Execute the given file (with ENTER key) [Arguments] ${target_file} # 1. Select desired file ${files}= Get Submenu Construction @@ -214,6 +223,12 @@ Select File In File Explorer ${index}= Get Index Of Matching Option In Menu ${files} ${target_file} # FIXME: We must add 1 due to empty selecatble space in File Manager Press Key N Times And Enter ${index}+1 ${ARROW_DOWN} + +Select File In File Explorer + [Documentation] Select the given file + [Arguments] ${target_file} + # 1. Select desired file + Execute File In File Explorer ${target_file} # 2. Save Changes ${enroll_sig_menu}= Get Submenu Construction # Unselectable filename appears between options after file was selected @@ -224,19 +239,20 @@ Select File In File Explorer Enter UEFI Shell [Documentation] Boots into UEFI Shell. Should be called after Power On or ... reboot + Set Prompt For Terminal Shell> ${boot_menu}= Enter Boot Menu Tianocore And Return Construction Enter Submenu From Snapshot ${boot_menu} UEFI Shell - Read From Terminal Until Shell> + Read From Terminal Until Prompt Sleep 1s Execute File In UEFI Shell # UEFI shell has different line ending than the one we have set for the # Telnet connection. We cannot change it while the connection is open. [Arguments] ${file} + Set Prompt For Terminal FS0:\\> ${out}= Execute UEFI Shell Command fs0: - Should Contain ${out} FS0:\\> ${out}= Execute UEFI Shell Command ${file} - Should Contain ${out} FS0:\\> + Set Prompt For Terminal Shell> RETURN ${out} Restore Secure Boot Defaults diff --git a/lib/sensors/sensors.robot b/lib/sensors/sensors.robot new file mode 100644 index 0000000000..5ab98e8fe1 --- /dev/null +++ b/lib/sensors/sensors.robot @@ -0,0 +1,152 @@ +*** Settings *** +Documentation This library defines keywords for reading sensor data from +... devices. It might need to be mostly scrapped and implemented as keywords +... defined in the platform configs if it turns out that this process +... differs too much depending on the platform. + +Resource ../terminal.robot + + +*** Keywords *** +Prepare Sensors + [Documentation] Do any preparation work needed for accessing sensors + + # Might only do this when any method is said to be lm-sensors. + Power On + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + Import Variables ${CURDIR}/../../platform-configs/${SENSORS_CONFIG_FILE} + ${cpu_temperature_measurement_method}= Get From Dictionary ${CPU_TEMPERATURE_MEASUREMENT} method + ${fan_pwm_measurement_method}= Get From Dictionary ${FAN_PWM_MEASUREMENT} method + ${fan_rpm_measurement_method}= Get From Dictionary ${FAN_RPM_MEASUREMENT} method + + ${lm_sensors_used}= Catenate + ... '''${cpu_temperature_measurement_method}''' == '''system76-acpi''' or + ... '''${cpu_temperature_measurement_method}''' == '''lm-sensors''' or + ... '''${fan_rpm_measurement_method}''' != '''lm-sensors''' or + ... '''${fan_pwm_measurement_method}''' == '''lm-sensors''' + ${lm_sensors_used}= Evaluate ${lm_sensors_used} + + FOR ${module} IN @{SENSORS_KERNEL_MODULES} + ${module_name}= Get From Dictionary ${module} module + ${force_id}= Get From Dictionary ${module} force_id + ${optional_force_id}= Set Variable ${EMPTY} + IF '''${force_id}''' != '''none''' + ${optional_force_id}= Set Variable force_id=${force_id} + END + Execute Command In Terminal modprobe ${module_name} ${optional_force_id} + END + + IF ${lm_sensors_used} == ${TRUE} + Execute Command In Terminal sudo sensors-detect --auto + END + +Get CPU Temperature + [Documentation] Get current CPU temperature. Might need preparing the + ... sensors using `Prepare Sensors` keyword. + ${cpu_temperature_measurement_method}= Get From Dictionary ${CPU_TEMPERATURE_MEASUREMENT} method + IF '''${cpu_temperature_measurement_method}''' == '''lm-sensors''' + ${temperature}= Execute Command In Terminal + ... sensors 2>/dev/null | awk -F '[+°]' '/Package id 0:/ {printf $2}' + RETURN ${temperature} + ELSE IF '${cpu_temperature_measurement_method}' == 'hwmon' + ${cpu_temperature_measurement_hwmon_path}= Get From Dictionary + ... ${CPU_TEMPERATURE_MEASUREMENT} + ... hwmon_path + + ${temperature}= Execute Command In Terminal + ... cat ${cpu_temperature_measurement_hwmon_path} + ${temperature}= Evaluate ${temperature[:2]} + ${temperature}= Convert To Number ${temperature} + RETURN ${temperature} + ELSE + Fail Wrong platform configuration. CPU_TEMPERATURE_MEASUREMENT["method"] + ... is of unknown value ${cpu_temperature_measurement_method}. + END + +Get Fan Speed + [Documentation] Get PWM or RPM depending on argument + [Arguments] ${mode} # Can be "rpm" or "pwm" + IF """${mode}""" == "rpm" + ${v}= Get Fan RPM + RETURN ${v} + ELSE IF """${mode}""" == "pwm" + ${v}= Get Fan PWM + RETURN ${v} + ELSE + Fail Invalid fan speed measurement mode "${mode}" + END + +Get Fan PWM + [Documentation] Get current CPU fan PWM + ${fan_pwm_measurement_method}= Get From Dictionary ${FAN_PWM_MEASUREMENT} method + IF '''${fan_pwm_measurement_method}''' == '''none''' + Fail Wrong platform configuration. FAN_PWM_MEASUREMENT["method"] is + ... none. Either it should be changed or this test should not be + ... performed on this platform. + ELSE IF '''${fan_pwm_measurement_method}''' == '''hwmon''' + ${fan_pwm_measurement_hwmon_path}= Get From Dictionary ${FAN_PWM_MEASUREMENT} hwmon_path + ${pwm}= Execute Command In Terminal + ... cat ${fan_pwm_measurement_hwmon_path} + ${pwm}= Convert To Number ${pwm} + RETURN ${pwm} + ELSE + Fail Wrong platform configuration. FAN_PWM_MEASUREMENT["method"] is + ... of unknown value ${fan_pwm_measurement_method}. + END + +Get Fan RPM + [Documentation] Get current CPU fan RPM + ${fan_rpm_measurement_method}= Get From Dictionary ${FAN_RPM_MEASUREMENT} method + IF '''${fan_rpm_measurement_method}''' == '''lm-sensors''' + ${fan_rpm_measurement_sensor}= Get From Dictionary ${FAN_RPM_MEASUREMENT} lm_sensors_sensor_name + IF '''${fan_rpm_measurement_sensor}''' == '''none''' + Fail + ... FAN_RPM_MEASUREMENT["lm_sensors_sensor_name"] mustn't be "none" if FAN_RPM_MEASUREMENT["method"] is "lm-sensors" + END + ${rpm}= Execute Linux Command + ... sensors ${fan_rpm_measurement_sensor} 2> /dev/null | grep -E 'fan1' | tr -s ' ' | cut -d ' ' -f2 + ${rpm}= Convert To Integer ${rpm} + RETURN ${rpm} + ELSE IF '''${fan_rpm_measurement_method}''' == '''system76-acpi''' + ${speed}= Execute Command In Terminal sensors | grep "CPU fan" + ${speed_split}= Split String ${speed} + ${rpm}= Get From List ${speed_split} 2 + RETURN ${rpm} + ELSE IF '''${fan_rpm_measurement_method}''' == '''none''' + Fail Wrong platform configuration. FAN_RPM_MEASUREMENT["method"] is + ... none. Either it should be changed or this test should not be + ... performed on this platform. + ELSE + Fail Wrong platform configuration. FAN_RPM_MEASUREMENT["method"] is + ... of unknown value ${fan_rpm_measurement_method}. + END + +Is Fan PWM Measurement Supported + ${fan_pwm_measurement_method}= Get From Dictionary ${FAN_PWM_MEASUREMENT} method + IF '''${fan_pwm_measurement_method}''' == '''none''' + RETURN ${FALSE} + END + RETURN ${TRUE} + +Is Fan RPM Measurement Supported + ${fan_rpm_measurement_method}= Get From Dictionary ${FAN_RPM_MEASUREMENT} method + IF '''${fan_rpm_measurement_method}''' == '''none''' + RETURN ${FALSE} + END + RETURN ${TRUE} + +Get Fan Measurement Unit Name + [Documentation] Returns "pwm" or "rpm" depending on which is supported + ... on the DUT. If both are, then "pwm" takes priority. + ${pwm_support}= Is Fan PWM Measurement Supported + ${rpm_support}= Is Fan RPM Measurement Supported + IF ${pwm_support} + RETURN pwm + ELSE IF ${rpm_support} + RETURN rpm + ELSE + Fail + ... Invalid device configuration. CUSTOM_FAN_CURVE_X_MODE_SUPPORT is True, but fan speed measurement method is `none` + END diff --git a/lib/sleep-lib.robot b/lib/sleep-lib.robot index 648b744a79..71a200c2d0 100644 --- a/lib/sleep-lib.robot +++ b/lib/sleep-lib.robot @@ -1,6 +1,8 @@ *** Settings *** Documentation Collection of keywords related to System Sleep States +Resource ../keywords.robot + *** Keywords *** Check If Platform Sleep Type Can Be Selected @@ -112,9 +114,10 @@ Perform Hibernation Test Using FWTS ... test by using Firmware Test Suite tool [Arguments] ${test_duration}=40 ${is_hibernation_performed_correctly}= Set Variable ${FALSE} + IF '${POWER_CTRL}' == 'none' Set Nextboot ${BOOTED_OS_ID} Execute Command In Terminal fwts s4 -f -r /tmp/hibernation_test_log.log Sleep ${test_duration}s - Boot Operating System ubuntu + Boot System Or From Connected Disk ${BOOTED_OS_ID} Login To Linux Switch To Root User ${test_result}= Execute Command In Terminal cat /tmp/hibernation_test_log.log @@ -138,6 +141,7 @@ Perform Warmboot Using Rtcwake # would hang here and fail. # Sometimes it may take long to shutdown all systemd services, # so the waiting times have to be excessive to avoid false negatives. + IF '${POWER_CTRL}' == 'none' Set Nextboot ${BOOTED_OS_ID} Write Into Terminal rtcwake -m off -s 60 Set DUT Response Timeout 300s Sleep 60s diff --git a/lib/terminal.robot b/lib/terminal.robot index e2ae35cb4a..f66aca465f 100644 --- a/lib/terminal.robot +++ b/lib/terminal.robot @@ -3,13 +3,31 @@ Documentation Generic keywords for reading/writing into terminal. Library Collections Library String +Library Telnet +Library SSHLibrary +Resource bios/menus.robot *** Keywords *** Set Prompt For Terminal - [Documentation] Universal keyword to set the prompt (used in Read Until - ... prompt keyword) regardless of the used method of - ... connection to the DUT (Telnet or SSH). + [Documentation] + ... Universal keyword to set the prompt (used in ``Read Until Prompt`` + ... keyword) regardless of the used method of + ... connection to the DUT. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... ``${prompt}``: ``string`` - The prompt text + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... The prompt is changed in the currently used connection library + ... according to ``${DUT_CONNECTION_METHOD}`` platform config + ... variable. [Arguments] ${prompt} IF '${DUT_CONNECTION_METHOD}' == 'Telnet' Telnet.Set Prompt ${prompt} prompt_is_regexp=False @@ -24,9 +42,24 @@ Set Prompt For Terminal END Set DUT Response Timeout - [Documentation] Universal keyword to set the timeout (used for operations + [Documentation] + ... Universal keyword to set the timeout (used for operations ... that expect some output to appear) regardless of the - ... used method of connection to the DUT (Telnet or SSH). + ... used method of connection to the DUT. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... ``${timeout}``: ``string`` - The time in Robot Framework time format + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... The timeout is changed in the currently used connection library + ... according to ``${DUT_CONNECTION_METHOD}`` platform config + ... variable. [Arguments] ${timeout} IF '${DUT_CONNECTION_METHOD}' == 'Telnet' Telnet.Set Timeout ${timeout} @@ -41,9 +74,22 @@ Set DUT Response Timeout END Read From Terminal - [Documentation] Universal keyword to read the console output regardless - ... of the used method of connection to the DUT - ... (Telnet or SSH). + [Documentation] + ... Universal keyword to read the console output regardless + ... of the used method of connection to the DUT. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... ``string`` - All the text from the terminal buffer, from the last + ... time it was cleared, up to the moment the keyword is called + ... + ... === Effects === + ... The terminal buffer is read and consequently cleared IF '${DUT_CONNECTION_METHOD}' == 'Telnet' ${output}= Telnet.Read ELSE IF '${DUT_CONNECTION_METHOD}' == 'SSH' @@ -58,9 +104,26 @@ Read From Terminal RETURN ${output} Read From Terminal Until - [Documentation] Universal keyword to read the console output until the + [Documentation] + ... Universal keyword to read the console output until the ... defined text occurs regardless of the used method of - ... connection to the DUT (Telnet or SSH). + ... connection to the DUT. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... ``${expected}``: ``string`` - The text up to which the terminal + ... will be read + ... + ... === Return Value === + ... ``string`` - All the text from the terminal buffer, from the last + ... time it was cleared, up to the moment ``${expected}`` is found, or + ... the timeout passes + ... + ... === Effects === + ... The terminal buffer is read and consequently cleared up until + ... ${expected}. Everything after ``${expected}`` stays in the buffer. [Arguments] ${expected} IF '${DUT_CONNECTION_METHOD}' == 'Telnet' ${output}= Telnet.Read Until ${expected} @@ -76,9 +139,24 @@ Read From Terminal Until RETURN ${output} Read From Terminal Until Prompt - [Documentation] Universal keyword to read the console output until the + [Documentation] + ... Universal keyword to read the console output until the ... defined prompt occurs regardless of the used method of - ... connection to the DUT (Telnet or SSH). + ... connection to the DUT. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... None + ... + ... === Return Value === + ... ``string`` - All the text from the terminal buffer, from the last + ... time it was cleared, up to the moment the prompt is found, or + ... the timeout passes + ... + ... === Effects === + ... The terminal buffer is read and consequently cleared IF '${DUT_CONNECTION_METHOD}' == 'SSH' or '${DUT_CONNECTION_METHOD}' == 'open-bmc' ${output}= SSHLibrary.Read Until Prompt strip_prompt=${TRUE} ${output}= Strip String ${output} characters=\n\r @@ -96,9 +174,27 @@ Read From Terminal Until Prompt RETURN ${output} Read From Terminal Until Regexp - [Documentation] Universal keyword to read the console output until the + [Documentation] + ... Universal keyword to read the console output until the ... defined regexp occurs regardless of the used method of - ... connection to the DUT (Telnet or SSH). + ... connection to the DUT. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... ``${regexp}``: ``string`` - The regular expression up to which the + ... terminal will be read + ... + ... === Return Value === + ... ``string`` - All the text from the terminal buffer, from the last + ... time it was cleared, up to the moment ``${regexp}`` is matched, or + ... the timeout passes + ... + ... === Effects === + ... The terminal buffer is read and consequently cleared up until + ... the matched ``${regex}``. Everything after the match stays in the + ... buffer. [Arguments] ${regexp} IF '${DUT_CONNECTION_METHOD}' == 'Telnet' ${output}= Telnet.Read Until Regexp ${regexp} @@ -114,8 +210,22 @@ Read From Terminal Until Regexp RETURN ${output} Write Into Terminal - [Documentation] Universal keyword to write text to console regardless of - ... the used method of connection to the DUT (Telnet, PiKVM or SSH). + [Documentation] + ... Universal keyword to write text and a newline to console regardless + ... of the used method of connection to the DUT. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... ``${text}``: ``string`` - The text to write + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... The ``${text}`` is written to the terminal, followed by a newline + ... character [Arguments] ${text} IF '${DUT_CONNECTION_METHOD}' == 'Telnet' Telnet.Write ${text} @@ -132,8 +242,20 @@ Write Into Terminal Write Bare Into Terminal [Documentation] Universal keyword to write bare text (without new line ... mark) to console regardless of the used method of - ... connection to the DUT (Telnet, PiKVM or SSH). - [Arguments] ${text} ${interval}=${NULL} + ... connection to the DUT. + ... + ... === Requirements === + ... None + ... + ... === Arguments === + ... ``${text}``: ``string`` - The text to write + ... + ... === Return Value === + ... None + ... + ... === Effects === + ... The ``${text}`` is written to the terminal + [Arguments] ${text} ${interval}=None IF '${DUT_CONNECTION_METHOD}' == 'Telnet' Telnet.Write Bare ${text} ${interval} ELSE IF '${DUT_CONNECTION_METHOD}' == 'SSH' @@ -148,10 +270,28 @@ Write Bare Into Terminal Execute Command In Terminal [Documentation] Universal keyword to execute command regardless of the - ... used method of connection to the DUT (Telnet or SSH). + ... used method of connection to the DUT (Telnet or SSH). The DUT Response + ... Timeout is changed to ``${timeout}`` and not restored. + ... + ... === Requirements === + ... The command prompt has to be set using ``Set Prompt For Terminal`` + ... + ... === Arguments === + ... - ``${command}``: ``string`` - The command to execute + ... - ``${timeout}``: ``string`` = ``30s`` - The DUT Response Timeout for + ... \ executing the command + ... + ... === Return Value === + ... ``string`` - The full command output, or up to the time ``${timeout}`` + ... passes. + ... + ... === Effects === + ... The ``${command}`` is written to the terminal and the keyword waits + ... until the execution ends or ``${timeout}`` passes. [Arguments] ${command} ${timeout}=30s Set DUT Response Timeout ${timeout} IF '${DUT_CONNECTION_METHOD}' == 'Telnet' + Telnet.Read ${output}= Telnet.Execute Command ${command} strip_prompt=True ELSE Write Into Terminal ${command} @@ -162,14 +302,53 @@ Execute Command In Terminal RETURN ${output} Execute UEFI Shell Command - [Documentation] Universal keyword to execute command in Shell. - [Arguments] ${command} ${timeout}=30s ${uefi_shell_input_latency}=3 + [Documentation] + ... Executes a command in UEFI Shell. For some reason, text longer than + ... 16 chars would repeatedly get truncated, regardless of delay + ... compensation. So, this keywords splits the input into chunks of max. + ... 15 characters. + ... + ... === Requirements === + ... - The UEFI shell has to be entered first. + ... - The command prompt has to be set using ``Set Prompt For Terminal`` + ... + ... === Arguments === + ... - ``${command}``: ``string`` - The command to execute + ... - ``${timeout}``: ``string`` = ``30s`` - The DUT Response Timeout for + ... \ executing the command + ... - ``${uefi_shell_input_latency}``: ``integer`` - additional delay + ... \ in milliseconds for every entered character. Used to make sure the + ... \ whole command is written down before pressing ``Enter``, as the + ... \ UEFI shell might sometimes be slow to register the input. + ... + ... === Return Value === + ... ``string`` - The full command output, or up to the time ``${timeout}`` + ... passes. + ... + ... === Effects === + ... The ``${command}`` is written to the terminal in chunks and the keyword waits + ... until the execution ends or ``${timeout}`` passes. + [Arguments] ${command} ${timeout}=30s ${uefi_shell_input_latency}=40 Set DUT Response Timeout ${timeout} ${length}= Get Length ${command} - ${timeout}= Evaluate ${length} * ${uefi_shell_input_latency} - Write Bare Into Terminal ${command} - Sleep ${timeout}ms + ${input_delay}= Evaluate ${length} * ${uefi_shell_input_latency} + + # Split command into chunks of max 15 characters + ${chunks}= Create List + ${index}= Convert To Integer 0 + WHILE ${index} < ${length} + ${end_index}= Evaluate ${index} + 15 + ${chunk}= Evaluate "${command}"[${index}:${end_index}] + Append To List ${chunks} ${chunk} + ${index}= Set Variable ${end_index} + END + + # Write each chunk separately + FOR ${chunk} IN @{chunks} + Write Bare Into Terminal ${chunk} + Sleep ${uefi_shell_input_latency}ms + END + Press Enter - Sleep 1s - ${output}= Read From Terminal + ${output}= Read From Terminal Until Prompt RETURN ${output} diff --git a/lib/tpm.robot b/lib/tpm.robot index 610231da27..f42b46e33b 100644 --- a/lib/tpm.robot +++ b/lib/tpm.robot @@ -67,3 +67,56 @@ Validate PCRs Against Event Log Should Contain ${hash} ${sha_hash} ignore_case=${TRUE} END END + +Validate Expected TPM Version Via Sysfs + [Documentation] Checks if detected major TPM version matches the expected + ... value. + ${tpm_ver}= Execute Command In Terminal cat /sys/class/tpm/tpm0/tpm_version_major + IF '${TPM_SUPPORTED_VERSION}' != '${tpm_ver}' + Fail Platform TPM version mismatch + END + +Validate Expected TPM Chip Via Cbmem Console Log + [Documentation] Check that correct TPM chip is found while FW boots + ${tpm_chip_found}= Execute Command In Terminal cbmem -1 | grep -i "Found TPM" + Should Contain ${tpm_chip_found} ${TPM_EXPECTED_CHIP} + +Validate Expected TPM Version Via Cbmem TPM Eventlog + [Documentation] Check if appropriate log is created by FW + ${out}= Execute Command In Terminal cbmem -L + IF '${TPM_SUPPORTED_VERSION}' == '1' + Should Contain ${out} TCPA log + ELSE IF '${TPM_SUPPORTED_VERSION}' == '2' + Should Contain ${out} TPM2 log + ELSE + Fail Invalid expected version, please verify config + END + +Verify Presence Of TPM Via Sysfs + [Documentation] Use sysfs interface to detect presence of TPM + ... in the system. + ${tpm_presence}= Execute Command In Terminal test -d /sys/class/tpm/tpm0 && echo "Found TPM" + Should Contain ${tpm_presence} Found TPM + +Verify Presence Of Any PCRs Via Sysfs + [Documentation] Check sysfs interface for presence of any PCR + ${pcr_state}= Execute Command In Terminal ls /sys/class/tpm/tpm0/pcr-sha* &>/dev/null && echo "Found PCRs" + Should Contain ${pcr_state} Found PCRs + +Enter The TCG Configuration Menu + [Documentation] Following a reboot triggered outside of this KWD, + ... enters the TCG or TCG2 Configuration menu. + ${setup_menu}= Enter Setup Menu Tianocore And Return Construction + ${device_manager_menu}= Enter Submenu From Snapshot And Return Construction + ... ${setup_menu} + ... Device Manager + + IF 'TCG2 Configuration' in '''${device_manager_menu}''' + Enter Submenu From Snapshot + ... ${device_manager_menu} + ... TCG2 Configuration + ELSE + Enter Submenu From Snapshot + ... ${device_manager_menu} + ... TCG Configuration + END diff --git a/lib/tpm2.robot b/lib/tpm2.robot new file mode 100644 index 0000000000..246aebb61b --- /dev/null +++ b/lib/tpm2.robot @@ -0,0 +1,63 @@ +*** Settings *** +Library OperatingSystem +Library String + + +*** Keywords *** +Flush TPM Contexts + Execute Linux Tpm2 Tools Command tpm2_flushcontext -t + Execute Linux Tpm2 Tools Command tpm2_flushcontext -l + Execute Linux Tpm2 Tools Command tpm2_flushcontext -s + +Check Which TPM2 Banks Are Enabled + [Documentation] Checks which Bank is enabled, returns tuple (bool, bool) + ${out}= Execute Linux Command tpm2_getcap pcrs + ${sha1}= Run Keyword And Return Status + ... Should Contain + ... ${out} + ... sha1: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 ] + ${sha256}= Run Keyword And Return Status + ... Should Contain + ... ${out} + ... sha256: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 ] + RETURN ${sha1} ${sha256} + +Check If SHA1 And SHA256 Banks Are Enabled + ${sha1} ${sha256}= Check Which TPM2 Banks Are Enabled + Should Be True ${sha1} + Should Be True ${sha256} + +TPM2 Suite Setup + Prepare Test Suite + Skip If '${TPM_SUPPORTED_VERSION}' != '2' TPM commands tests supported only TPM2 + Skip If not ${TESTS_IN_UBUNTU_SUPPORT} TPM commands tests supported only on Ubuntu + Power On + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + Verify Presence Of TPM Via Sysfs + Detect Or Install Package tpm2-tools + ${passed}= Run Keyword And Return Status + ... Check If SHA1 And SHA256 Banks Are Enabled + IF not ${passed} + # Restore default allocations in case any bank was disabled and reboot + Execute Linux Command tpm2_pcrallocate + Execute Reboot Command + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + END + ${sha1_enabled} ${sha256_enabled}= Check Which TPM2 Banks Are Enabled + Set Suite Variable $SHA1_ENABLED ${sha1_enabled} + Set Suite Variable $SHA256_ENABLED ${sha256_enabled} + +Check TPM2 Banks State After FW Changes + [Documentation] Verifies the state of TPM Banks. Fails test if they are different than input. + [Arguments] ${sha1_desired} ${sha256_desired} + Save Changes And Reset + Read From Terminal Until Press F12 to change the boot measurements to use PCR bank(s) of the TPM + Press Key N Times 1 ${F12} + Prepare TPM Test On Linux + ${sha1} ${sha256}= Check Which TPM2 Banks Are Enabled + Should Be Equal ${sha1} ${sha1_desired} + Should Be Equal ${sha256} ${sha256_desired} diff --git a/lib/usb-hid-msc-lib.robot b/lib/usb-hid-msc-lib.robot index 3f4019d341..3bbeae1c8e 100644 --- a/lib/usb-hid-msc-lib.robot +++ b/lib/usb-hid-msc-lib.robot @@ -2,34 +2,76 @@ Library OperatingSystem +*** Variables *** +# A list of USB boot device entries that may appear in the Dasharo edk2 boot +# menu. This way we do not care that much which particular stick is connected +# to the DUT. This is not perfect, as we might lose some information there, +# but it's been really problematic so far to track the USB devices in platform +# configs. What is more, we may have one platform config and multiple instances +# of the same physical devices setup in the lab, with slightly different USB +# sticks. +# +# We may also decide that we always put DTS stick, and test booting with that. +# Thanks to ESP scanning, we always generate similar entry like: +# "Dasharo Tools Suite (on USB XXXX)" + +@{USB_DEVICES_IN_EDK2}= Dasharo Tools Suite + + *** Keywords *** -Upload And Mount DTS Flash ISO - [Documentation] Mounts a bootable ISO as flash USB. Currently - ... only the Qubes OS ISO seems to work for the platform. - Upload Image To PiKVM ${PIKVM_IP} dts-base-image-v1.2.8.iso - ... https://dl.3mdeb.com/open-source-firmware/DTS/v1.2.8/dts-base-image-v1.2.8.iso - Mount Image On PiKVM ${PIKVM_IP} dts-base-image-v1.2.8.iso - -Download ISO And Mount As USB - [Documentation] Mounts the desired ISO as USB stick, - ... either via PiKVM or Qemu - [Arguments] ${img_path} ${img_url} ${img_sha256sum} - - ${img_dir} ${img_name}= Split Path ${img_path} - - Download To Host Cache - ... ${img_name} - ... ${img_url} - ... ${img_sha256sum} - - IF "${MANUFACTURER}" == "QEMU" - Remove Drive From Qemu - Add USB To Qemu img_name=${img_path} - ELSE - IF "${DUT_CONNECTION_METHOD}" == "pikvm" - Upload Image To PiKVM ${PIKVM_IP} ${img_url} ${img_name} - Mount Image On PiKVM ${PIKVM_IP} ${img_name} +Mount USB Disk Image + [Documentation] Mounts USB disk image - either from URL or from local file. + [Arguments] ${img_source} ${upload_type}=file ${required}=${TRUE} + + # FXIME: Currently works only for QEMU and PiKVM. Remove when support for + # other methods is added. + IF "${MANUFACTURER}" != "QEMU" or "${DUT_CONNECTION_METHOD}" != "pikvm" + RETURN + END + + # TODO:: Move to interface approach, not IF/ELSE tree + IF "${upload_type}" == "file" + ${img_dir} ${img_name}= Split Path ${img_source} + + IF "${MANUFACTURER}" == "QEMU" + Remove Drive From Qemu + Add USB To Qemu img_name=${img_source} + ELSE IF "${DUT_CONNECTION_METHOD}" == "pikvm" + Upload Image To PiKVM ${img_source} ${img_name} ${upload_type} + Mount Image On PiKVM ${img_name} ELSE - Skip unsupported + # For setups with no real ability to mount USB Disk, we may decide whether we assume that certain USB Disk is prepared beforehand, or we skip the test. + Log To Console Mounting USB Disk Image at runtime is not supported on this platform. + IF ${required} + Log To Console + ... Image marked as required. Make sure that USB drive with image: ${img_source} is already prepared and connected to the DUT. + ELSE + Skip Image not marked as required, skipping test case. + END END + ELSE IF "${upload_type}" == "url" + Fail + ... "upload_type=url argument for Mount USB Disk Image is not implemented right now. + ... We prefer to store all test data in osfv-test-data repo instead of downloading them at runtime in tests." + ELSE + Fail "Unsupported upload_type argument for Mount USB Disk Image" + END + +Check USB Stick Detection In Edk2 + [Documentation] Checks if the bootable USB devices are visible in the + ... boot menu. + [Arguments] ${boot_menu} + Set Local Variable ${found} ${FALSE} + + FOR ${stick} IN @{USB_DEVICES_IN_EDK2} + ${found}= Run Keyword And Return Status Should Contain Match ${boot_menu} *${stick}* + IF '${found}' == '${TRUE}' BREAK END + + IF '${found}' == '${FALSE}' + Log To Console + ... None of the known USB sticks have been found in the boot menu. If a stick is connected, you might need to update USB_DEVICES_IN_EDK2 variable. + Log ${boot_menu} + END + + RETURN ${found} diff --git a/lib/utc.robot b/lib/utc.robot new file mode 100644 index 0000000000..82444eafad --- /dev/null +++ b/lib/utc.robot @@ -0,0 +1,595 @@ +*** Comments *** +# robocop: disable=unused-argument + + +*** Settings *** +Library Collections +Library OperatingSystem +Library Process +Library String +Library Telnet timeout=20 seconds connection_timeout=120 seconds +Library SSHLibrary timeout=90 seconds +Library RequestsLibrary +# TODO: maybe have a single file to include if we need to include the same +# stuff in all test cases +Resource ../variables.robot +Resource ../keywords.robot +Resource ../keys.robot +Resource ../lib/me.robot +Resource ../lib/docks.robot +Resource options/options-lib_dcu.robot + + +*** Keywords *** +Prepare UTC Test Suite + Set Suite Variable ${UTC_CURRENT_ME_STATE} unknown + +Ensure ME State + [Arguments] ${me_state} + IF '${me_state}' != '${UTC_CURRENT_ME_STATE}' + IF '${me_state}' == 'Enabled' + Set UEFI Option MeMode Enabled + ELSE + Set UEFI Option MeMode Disabled (HAP) + END + Set Suite Variable ${UTC_CURRENT_ME_STATE} ${me_state} + END + Boot System Or From Connected Disk ${BOOTED_OS_ID} + Login To Linux + Switch To Root User + ${actual_me_state}= Check ME Out + Should Contain ${actual_me_state} ${me_state} + Exit From Root User + +# Not automated +# Usb Type-A Charging Capability +# [Arguments] ${env_id} ${me_state} ${dock_name} + +# Not automated +# Thunderbolt 4 Usb Type-C Power Output +# [Arguments] ${env_id} ${me_state} ${dock_name} + +Usb Type-C Pd Power Input + [Arguments] ${env_id} ${me_state} ${dock_name} + Ensure ME State ${me_state} + Power On + IF '${env_id}'.startswith('2') # Linux + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + Check Charging State In Linux + Exit From Root User + ELSE IF '${env_id}'.startswith('3') # Windows + Login To Windows + Check Charging State In Windows + ELSE + Fail Not implemented on ENV_ID ${env_id} + END + +Usb Type-C Display Output + [Arguments] ${env_id} ${me_state} ${dock_name} + Ensure ME State ${me_state} + Power On + IF '${env_id}'.startswith('2') # Linux + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux usb + Should Contain ${out} ${CLEVO_USB_C_HUB} + Exit From Root User + ELSE + Fail Not implemented on ENV_ID ${env_id} + END + +Usb Type-C Docking Station Hdmi Display + [Arguments] ${env_id} ${me_state} ${dock_name} + Ensure ME State ${me_state} + Power On + IF '${env_id}'.startswith('2') # Linux + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + IF '${dock_name}' == 'WL-UMD05 Pro Rev.E' + # dp alt mode + Check PCON On MST Hub In Linux + ELSE # Exact models not specified right now, add more branches later + # Thunderbolt + Check Display Port On Hub In Linux HDMI + END + Exit From Root User + ELSE IF '${env_id}'.startswith('3') # Windows + Login To Windows + Check Docking Station HDMI Windows + ELSE + Fail Not implemented on ENV_ID ${env_id} + END + +Usb Type-C Docking Station Dp Display + [Arguments] ${env_id} ${me_state} ${dock_name} + Ensure ME State ${me_state} + Power On + IF '${env_id}'.startswith('2') # Linux + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + IF '${dock_name}' == 'WL-UMD05 Pro Rev.E' + # dp alt mode + Check DP Port On MST Hub In Linux + ELSE # Exact models not specified right now, add more branches later + # Thunderbolt + Check Display Port On Hub In Linux DP + END + Exit From Root User + ELSE IF '${env_id}'.startswith('3') # Windows + Login To Windows + Check Docking Station DP Windows + ELSE + Fail Not implemented on ENV_ID ${env_id} + END + +# Not automated +# Usb Type-C Docking Station Triple Display +# [Arguments] ${env_id} ${me_state} ${dock_name} + +Usb Type-C Docking Station Usb Devices Recognition + [Arguments] ${env_id} ${me_state} ${dock_name} + Ensure ME State ${me_state} + Power On + IF '${env_id}'.startswith('2') # Linux + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux usb + Should Contain ${out} SanDisk + Exit From Root User + ELSE IF '${env_id}'.startswith('3') # Windows + Login To Windows + ${out}= Execute Command In Terminal + ... Get-PnpDevice -PresentOnly | Where-Object { $_.InstanceId -match '^USB' } + Should Contain ${out} OK${SPACE*9}DiskDrive${SPACE*8}USB${SPACE*2}SanDisk + ELSE + Fail Not implemented on ENV_ID ${env_id} + END + +Usb Type-C Docking Station Usb Keyboard + [Arguments] ${env_id} ${me_state} ${dock_name} + Ensure ME State ${me_state} + Power On + IF '${env_id}'.startswith('2') # Linux + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux usb + Should Contain ${out} ${DEVICE_USB_KEYBOARD} + Exit From Root User + ELSE IF '${env_id}'.startswith('3') # Windows + Login To Windows + ${out}= Execute Command In Terminal Get-CimInstance win32_KEYBOARD + Should Contain ${out} Description${SPACE*17}: USB Input Device strip_spaces=True + ELSE + Fail Not implemented on ENV_ID ${env_id} + END + +# Not automated +# Usb Type-C Docking Station Upload 1Gb File On Usb Storage +# [Arguments] ${env_id} ${me_state} ${dock_name} + +Usb Type-C Docking Station Ethernet Connection + [Arguments] ${env_id} ${me_state} ${dock_name} + Ensure ME State ${me_state} + Power On + IF '${env_id}'.startswith('2') # Linux + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + Check Internet Connection On Linux + Exit From Root User + ELSE IF '${env_id}'.startswith('3') # Windows + Login To Windows + Check Internet Connection On Windows + ELSE + Fail Not implemented on ENV_ID ${env_id} + END + +Usb Type-C Docking Station Audio Recognition + [Arguments] ${env_id} ${me_state} ${dock_name} + Ensure ME State ${me_state} + Power On + IF '${env_id}'.startswith('2') # Linux + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${out}= List Devices In Linux usb + Should Contain ${out} ${EXTERNAL_HEADSET} + Exit From Root User + ELSE + Fail Not implemented on ENV_ID ${env_id} + END + +# Not automated +# Usb Type-C Docking Station Audio Playback +# [Arguments] ${env_id} ${me_state} ${dock_name} + +# Not automated +# Usb Type-C Docking Station Audio Capture +# [Arguments] ${env_id} ${me_state} ${dock_name} + +Usb Type-C Docking Station Sd Card Reader Detection + [Arguments] ${env_id} ${me_state} ${dock_name} + Ensure ME State ${me_state} + Power On + IF '${env_id}'.startswith('2') # Linux + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${disks}= Identify Disks In Linux + Should Match str(${disks}) pattern=*SD* + Exit From Root User + ELSE IF '${env_id}'.startswith('3') # Windows + Login To Windows + ${out}= Execute Command In Terminal + ... Get-PnpDevice -Status "OK" -Class "DiskDrive" | ForEach-Object { $_.FriendlyName } + @{lines}= Split To Lines ${out} + FOR ${disk} IN @{lines} + ${disk}= Replace String Using Regexp ${disk} ${SPACE}+ ${SPACE} + TRY + Should Contain Any ${disk} ${DOCKING_STATION_MODEL_1} ${DOCKING_STATION_MODEL_2} + EXCEPT + Log ${disk} is not SD Card + END + END + ELSE + Fail Not implemented on ENV_ID ${env_id} + END + +Usb Type-C Docking Station Sd Card Read/Write + [Arguments] ${env_id} ${me_state} ${dock_name} + Ensure ME State ${me_state} + Power On + IF '${env_id}'.startswith('2') # Linux + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${path}= Identify Path To SD Card In Linux + FOR ${disk} IN @{path} + Check Read Write To External Drive In Linux ${disk} + END + Exit From Root User + ELSE IF '${env_id}'.startswith('3') # Windows + Login To Windows + ${drive_letter}= Identify Path To SD Card In Windows + Check Read Write To External Drive In Windows ${drive_letter} + ELSE + Fail Not implemented on ENV_ID ${env_id} + END +# Not automated +# Usb Type-C Pd Current Limiting +# [Arguments] ${env_id} ${me_state} ${dock_name} + +Docking Station Detection After Coldboot + [Arguments] ${env_id} ${me_state} ${dock_name} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Ensure ME State ${me_state} + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${out_after_reboot}= Execute Linux Command uptime --since + Detect Docking Station In Linux ${dock_name} + Set Global Variable ${FAILED_DETECTION} 0 + FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_COLDBOOT_ITERATIONS} + Log To Console Cold boot iteration ${iteration+1}/${STABILITY_DETECTION_COLDBOOT_ITERATIONS} + TRY + ${out_before_reboot}= Execute Linux Command uptime --since + WHILE '${out_before_reboot}' == '${out_after_reboot}' + Power Cycle On + Login To Linux + Switch To Root User + ${out_after_reboot}= Execute Linux Command uptime --since + Detect Docking Station In Linux ${dock_name} + END + EXCEPT + ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 + END + END + IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' + FAIL \n ${failed_detection} iterations failed. + END + Log To Console \nAll iterations passed. + +Docking Station Detection After Warmboot + [Arguments] ${env_id} ${me_state} ${dock_name} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Ensure ME State ${me_state} + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${out_after_reboot}= Execute Linux Command uptime --since + Detect Docking Station In Linux ${dock_name} + Set Global Variable ${FAILED_DETECTION} 0 + FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_WARMBOOT_ITERATIONS} + Log To Console Warm boot iteration ${iteration+1}/${STABILITY_DETECTION_WARMBOOT_ITERATIONS} + TRY + ${out_before_reboot}= Execute Linux Command uptime --since + WHILE '${out_before_reboot}' == '${out_after_reboot}' + Perform Warmboot Using Rtcwake + Login To Linux + Switch To Root User + ${out_after_reboot}= Execute Linux Command uptime --since + Detect Docking Station In Linux ${dock_name} + END + EXCEPT + ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 + END + END + IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' + FAIL \n ${failed_detection} iterations failed. + END + Log To Console \nAll iterations passed. + +Docking Station Detection After Reboot + [Arguments] ${env_id} ${me_state} ${dock_name} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Ensure ME State ${me_state} + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + Detect Docking Station In Linux ${dock_name} + Set Global Variable ${FAILED_DETECTION} 0 + FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} + Log To Console Reboot iteration ${iteration+1}/${STABILITY_DETECTION_REBOOT_ITERATIONS} + TRY + Execute Reboot Command + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + Detect Docking Station In Linux ${dock_name} + EXCEPT + ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 + END + END + IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' + FAIL \n ${failed_detection} iterations failed. + END + Log To Console \nAll iterations passed. + +Docking Station Detection After Suspend + [Arguments] ${env_id} ${me_state} ${dock_name} ${platform_sleep_type}=${EMPTY} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Ensure ME State ${me_state} + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} + Switch To Root User + Detect Docking Station In Linux ${dock_name} + Set Global Variable ${FAILED_DETECTION} 0 + FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_SUSPEND_ITERATIONS} + Log To Console + ... Suspend ${platform_sleep_type} iteration ${iteration+1}/${STABILITY_DETECTION_SUSPEND_ITERATIONS} + Perform Suspend Test Using FWTS + TRY + Detect Docking Station In Linux ${dock_name} + EXCEPT message + Evaluate ${FAILED_DETECTION}= ${FAILED_DETECTION}+1 + END + END + IF '${FAILED_DETECTION}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' + FAIL \n ${FAILED_DETECTION} iterations failed. + END + Log To Console \nAll iterations passed. + +Docking Station Detection After Suspend (S0Ix) + [Arguments] ${env_id} ${me_state} ${dock_name} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Docking Station Detection After Suspend ${env_id} ${me_state} ${dock_name} S0Ix + +Docking Station Detection After Suspend (S3) + [Arguments] ${env_id} ${me_state} ${dock_name} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Docking Station Detection After Suspend ${env_id} ${me_state} ${dock_name} S3 + +Docking Station Detection After Coldboot Then Hotplug + [Arguments] ${env_id} ${me_state} ${dock_name} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Ensure ME State ${me_state} + Pause Execution In Console Please make sure the docking station is disconnected and press ENTER + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${out_after_reboot}= Execute Linux Command uptime --since + ${out_before_reboot}= Execute Linux Command uptime --since + Run Keyword And Expect Error * does not contain * Detect Docking Station In Linux ${dock_name} + Set Global Variable ${FAILED_DETECTION} 0 + WHILE '${out_before_reboot}' == '${out_after_reboot}' + Log To Console Coldboot the DUT manually + # coldboot - msi ./sonoff, protectli RteCtrl -rel, novacustom ??? + Pause Execution In Console Do power cut-off, reconnect and press ENTER. + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${out_after_reboot}= Execute Linux Command uptime --since + Run Keyword And Expect Error + ... * does not contain * + ... Detect Docking Station In Linux + ... ${dock_name} + END + FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_COLDBOOT_ITERATIONS} + Log To Console Hotplug after Cold boot iteration ${iteration+1}/${STABILITY_DETECTION_COLDBOOT_ITERATIONS} + TRY + Pause Execution In Console Connect docking station ${dock_name} and press ENTER. + Detect Docking Station In Linux ${dock_name} + Pause Execution In Console Disconnect docking station ${dock_name} and press ENTER. + Run Keyword And Expect Error + ... * does not contain * + ... Detect Docking Station In Linux + ... ${dock_name} + EXCEPT + ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 + END + END + IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' + FAIL \n ${failed_detection} iterations failed. + END + Log To Console \nAll iterations passed. + +Docking Station Detection After Warmboot Then Hotplug + [Arguments] ${env_id} ${me_state} ${dock_name} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Ensure ME State ${me_state} + Pause Execution In Console Please make sure the docking station is disconnected and press ENTER + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${out_after_reboot}= Execute Linux Command uptime --since + ${out_before_reboot}= Execute Linux Command uptime --since + Run Keyword And Expect Error * does not contain * Detect Docking Station In Linux ${dock_name} + Set Global Variable ${FAILED_DETECTION} 0 + WHILE '${out_before_reboot}' == '${out_after_reboot}' + Perform Warmboot Using Rtcwake + Pause Execution In Console Press power button on platform and press ENTER. + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + ${out_after_reboot}= Execute Linux Command uptime --since + Run Keyword And Expect Error + ... * does not contain * + ... Detect Docking Station In Linux + ... ${dock_name} + END + FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_WARMBOOT_ITERATIONS} + Log To Console Hotplug after Warm boot iteration ${iteration+1}/${STABILITY_DETECTION_WARMBOOT_ITERATIONS} + TRY + Pause Execution In Console Connect docking station ${dock_name} and press ENTER. + Detect Docking Station In Linux ${dock_name} + Pause Execution In Console Disconnect docking station ${dock_name} and press ENTER. + Run Keyword And Expect Error + ... * does not contain * + ... Detect Docking Station In Linux + ... ${dock_name} + EXCEPT + ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 + END + END + IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' + FAIL \n ${failed_detection} iterations failed. + END + Log To Console \nAll iterations passed. + +Docking Station Detection After Reboot Then Hotplug + [Arguments] ${env_id} ${me_state} ${dock_name} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Ensure ME State ${me_state} + Pause Execution In Console Please make sure the docking station is disconnected and press ENTER + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + Run Keyword And Expect Error * does not contain * Detect Docking Station In Linux ${dock_name} + Set Global Variable ${FAILED_DETECTION} 0 + Execute Reboot Command + Boot System Or From Connected Disk ${env_id} + Login To Linux + Switch To Root User + FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_REBOOT_ITERATIONS} + Log To Console Hotplug after Reboot iteration ${iteration+1}/${STABILITY_DETECTION_REBOOT_ITERATIONS} + TRY + Pause Execution In Console Connect docking station ${dock_name} and press ENTER. + Detect Docking Station In Linux ${dock_name} + Pause Execution In Console Disconnect docking station ${dock_name} and press ENTER. + Run Keyword And Expect Error + ... * does not contain * + ... Detect Docking Station In Linux + ... ${dock_name} + EXCEPT + ${failed_detection}= Evaluate ${FAILED_DETECTION} + 1 + END + END + IF '${failed_detection}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' + FAIL \n ${failed_detection} iterations failed. + END + Log To Console \nAll iterations passed. + +Docking Station Detection After Suspend Then Hotplug + [Arguments] ${env_id} ${me_state} ${dock_name} ${platform_sleep_type}=${EMPTY} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Ensure ME State ${me_state} + Power On + Boot System Or From Connected Disk ${env_id} + Login To Linux + Check Platform Sleep Type Is Correct On Linux ${platform_sleep_type} + Switch To Root User + Run Keyword And Expect Error * does not contain * Detect Docking Station In Linux ${dock_name} + Set Global Variable ${FAILED_DETECTION} 0 + Perform Suspend Test Using FWTS + FOR ${iteration} IN RANGE 0 ${STABILITY_DETECTION_SUSPEND_ITERATIONS} + Log To Console + ... Hotplug after Suspend ${platform_sleep_type} iteration ${iteration+1}/${STABILITY_DETECTION_SUSPEND_ITERATIONS} + TRY + Pause Execution In Console Connect docking station ${dock_name} and press ENTER. + Detect Docking Station In Linux ${dock_name} + Pause Execution In Console Disconnect docking station ${dock_name} and press ENTER. + Run Keyword And Expect Error + ... * does not contain * + ... Detect Docking Station In Linux + ... ${dock_name} + EXCEPT message + Evaluate ${FAILED_DETECTION}= ${FAILED_DETECTION}+1 + END + END + IF '${FAILED_DETECTION}' > '${ALLOWED_DOCKING_STATION_DETECT_FAILS}' + FAIL \n ${FAILED_DETECTION} iterations failed. + END + Log To Console \nAll iterations passed. + +Docking Station Detection After Suspend Then Hotplug (S0Ix) + [Arguments] ${env_id} ${me_state} ${dock_name} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Ensure ME State ${me_state} + Docking Station Detection After Suspend ${env_id} ${me_state} ${dock_name} S0Ix + +Docking Station Detection After Suspend Then Hotplug (S3) + [Arguments] ${env_id} ${me_state} ${dock_name} + IF not '${env_id}'.startswith('2') + Fail Not implemented on ENV_ID ${env_id} + END + Ensure ME State ${me_state} + Docking Station Detection After Suspend ${env_id} ${me_state} ${dock_name} S3 + +Pause Execution In Console + [Documentation] Pauses execution until user press ENTER. + [Tags] robot:private + [Arguments] ${message}= Press ENTER to continue... + Run notify-send "Please execute Manual Step in ${TEST_NAME}" # GUI message + Run echo -ne '\007' # ASCII BEL (\007) + Log To Console ${message} + Run read ignore + Log To Console Manual step confirmed diff --git a/os-config/201-credentials.py b/os-config/201-credentials.py new file mode 100644 index 0000000000..5207372a36 --- /dev/null +++ b/os-config/201-credentials.py @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: 2025 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +DEVICE_OS_USERNAME = "ubuntu" +DEVICE_OS_PASSWORD = "ubuntu" +DEVICE_OS_HOSTNAME = "3mdeb" + +DEVICE_OS_USER_PROMPT = f"{DEVICE_OS_USERNAME}@{DEVICE_OS_HOSTNAME}:~$" +DEVICE_OS_ROOT_PROMPT = f"root@{DEVICE_OS_HOSTNAME}:/home/{DEVICE_OS_USERNAME}#" diff --git a/os-config/202-credentials.py b/os-config/202-credentials.py new file mode 100644 index 0000000000..d6a1698171 --- /dev/null +++ b/os-config/202-credentials.py @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: 2025 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +DEVICE_OS_USERNAME = "linux" +DEVICE_OS_PASSWORD = "linux" +DEVICE_OS_HOSTNAME = "3mdeb" + +DEVICE_OS_USER_PROMPT = f"[{DEVICE_OS_USERNAME}@{DEVICE_OS_HOSTNAME} ~]$" +DEVICE_OS_ROOT_PROMPT = f"[root@{DEVICE_OS_HOSTNAME} {DEVICE_OS_USERNAME}]#" diff --git a/os-config/301-credentials.py b/os-config/301-credentials.py new file mode 100644 index 0000000000..7381e0ea71 --- /dev/null +++ b/os-config/301-credentials.py @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: 2025 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +DEVICE_OS_USERNAME = "user" +DEVICE_OS_PASSWORD = "windows" + +DEVICE_OS_USER_PROMPT = f"PS C:\\Users\\{DEVICE_OS_USERNAME}>" +DEVICE_OS_ROOT_PROMPT = f"PS C:\\Users\\{DEVICE_OS_USERNAME}>" diff --git a/os-config/502-credentials.py b/os-config/502-credentials.py new file mode 100644 index 0000000000..bc2e862245 --- /dev/null +++ b/os-config/502-credentials.py @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: 2025 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +DEVICE_OS_USERNAME = "pfsense" +DEVICE_OS_PASSWORD = "pfsense" +DEVICE_OS_HOSTNAME = pfSense.home.arpa + +DEVICE_OS_USER_PROMPT = f"{DEVICE_OS_USERNAME}@{DEVICE_OS_HOSTNAME}:~$" +DEVICE_OS_ROOT_PROMPT = f"root@{DEVICE_OS_HOSTNAME}:/home/{DEVICE_OS_USERNAME}#" diff --git a/os-config/ansible/linux-packages-playbook.yaml b/os-config/ansible/linux-packages-playbook.yaml new file mode 100644 index 0000000000..fe2fabcf27 --- /dev/null +++ b/os-config/ansible/linux-packages-playbook.yaml @@ -0,0 +1,55 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +- name: Common tasks + hosts: host + become: true + tasks: + - name: Load package names + ansible.builtin.include_vars: "{{os_id}}-packages.yaml" + - name: Install packages + ansible.builtin.package: + name: + - "{{package_network_manager}}" + - "{{package_lm_sensors}}" + - "{{package_flashrom}}" + - "{{package_libpci_dev}}" + - "{{package_alsa_utils}}" + - "{{package_cpuid}}" + - "{{package_dmidecode}}" + - "{{package_acpi_call}}" + - "{{package_libinput_tools}}" + - "{{package_iperf3}}" + - "{{package_fwts}}" + - "{{package_util_linux}}" + - "{{package_smartmontools}}" + - "{{package_ffmeg}}" + - "{{package_usbutils}}" + - "{{package_tpm2_tools}}" + state: present + - name: Install coreboot tools files + ansible.builtin.copy: + src: "{{ item.src }}" + dest: /usr/bin/ + mode: 755 + loop: + - src: "./../../osfv-test-data/coreboot-tools/flashrom" + - src: "./../../osfv-test-data/coreboot-tools/cbmem" + - src: "./../../osfv-test-data/coreboot-tools/cbfstool" + + - name: Gnome turn off automatic suspend on AC + ansible.builtin.command: gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0 + - name: Gnome turn off automatic suspend on battery + ansible.builtin.command: gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 0 + - name: Gnome turn off automatic screen lock + ansible.builtin.command: gsettings set org.gnome.desktop.session idle-delay 0 + - name: Systemd turn off suspend + ansible.builtin.command: systemctl mask suspend.target + +- name: OS specific tasks + hosts: host + become: true + tasks: + - name: Include OS specific tasks + ansible.builtin.include_tasks: "os-specific-tasks/{{ os_id }}.yaml" diff --git a/os-config/ansible/os-specific-tasks/201.yaml b/os-config/ansible/os-specific-tasks/201.yaml new file mode 100644 index 0000000000..740e9bbae0 --- /dev/null +++ b/os-config/ansible/os-specific-tasks/201.yaml @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +- name: Prepare UEFI Shell components + ansible.builtin.copy: + src: "{{ item.src }}" + dest: /tmp/ + mode: 755 + loop: + - src: "./../../../osfv-test-data/uefi-shell/Shell.efi" + - src: "./../../../osfv-test-data/uefi-shell/deploy-shell-efi.sh" + +- name: Install UEFI Shell + ansible.builtin.command: /tmp/deploy-shell-efi.sh /tmp/Shell.efi diff --git a/os-config/ansible/os-specific-tasks/202.yaml b/os-config/ansible/os-specific-tasks/202.yaml new file mode 100644 index 0000000000..726811d464 --- /dev/null +++ b/os-config/ansible/os-specific-tasks/202.yaml @@ -0,0 +1,40 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +# acpi_call package is not available in fedora repos +- name: "Download acpi_call rpm package" + ansible.builtin.get_url: + url: https://github.com/MiMillieuh/acpi_call-fedora/releases/download/1.2.2-1/acpi_call-1.2.2-1.x86_64.rpm + dest: /tmp/acpi_call.rpm + +- name: "Install acpi_call rpm package" + ansible.builtin.dnf: + name: /tmp/acpi_call.rpm + state: present + disable_gpg_check: true + +- name: "Autoload acpi_call module" + ansible.builtin.copy: + dest: /etc/modules-load.d/acpi_call.conf + content: acpi_call + +# spi_intel_pci module conflicts with flashrom +- name: Blacklist spi_intel_pci module + ansible.builtin.copy: + dest: /etc/modprobe.d/osfv-blacklist.conf + content: blacklist spi_intel_pci + +- name: Unload spi_intel_pci module + ansible.builtin.command: modprobe -r spi_intel_pci + +# The WiFi/Bt cards of MTL laptops don't work on Fedora 41 with 6.13 kernel +- name: Get default kernel + ansible.builtin.command: grubby --default-kernel + register: default_kernel_version +- name: Get default index + ansible.builtin.command: grubby --default-index + register: default_kernel_index +- name: Downgrade default kernel + ansible.builtin.command: grubby --set-default-index {{ default_kernel_index.stdout | int + 1 }} + when: '"6.13" in default_kernel_version.stdout' diff --git a/os-config/ansible/vars/201-packages.yaml b/os-config/ansible/vars/201-packages.yaml new file mode 100644 index 0000000000..fef28b4671 --- /dev/null +++ b/os-config/ansible/vars/201-packages.yaml @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +package_network_manager: network-manager +package_lm_sensors: lm-sensors +package_flashrom: flashrom +package_pciutils: pciutils +package_libpci_dev: libpci-dev +package_alsa_utils: alsa-utils +package_cpuid: cpuid +package_dmidecode: dmidecode +package_acpi_call: acpi-call +package_libinput_tools: libinput-tools +package_iperf3: iperf3 +package_fwts: fwts +package_util_linux: util-linux +package_smartmontools: smartmontools +package_ffmeg: ffmpeg +package_usbutils: usbutils +package_tpm2_tools: tpm2-tools +package_ethtool: ethtool +package_stress_ng: stress-ng diff --git a/os-config/ansible/vars/202-packages.yaml b/os-config/ansible/vars/202-packages.yaml new file mode 100644 index 0000000000..8a9981f5bf --- /dev/null +++ b/os-config/ansible/vars/202-packages.yaml @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +package_network_manager: NetworkManager +package_lm_sensors: lm_sensors +package_flashrom: flashrom +package_pciutils: pciutils +package_libpci_dev: pciutils-devel +package_alsa_utils: alsa-utils +package_cpuid: cpuid +package_dmidecode: dmidecode +package_acpi_call: bash # TODO, not available in dnf? +package_libinput_tools: libinput-utils +package_iperf3: iperf3 +package_fwts: fwts +package_util_linux: util-linux +package_smartmontools: smartmontools +package_ffmeg: ffmpeg +package_usbutils: usbutils +package_tpm2_tools: tpm2-tools +package_ethtool: ethtool +package_stress_ng: stress-ng diff --git a/os-config/environment-test-ids.py b/os-config/environment-test-ids.py new file mode 100644 index 0000000000..85b9af8fc7 --- /dev/null +++ b/os-config/environment-test-ids.py @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: 2025 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +# 1xx - Firmware +ENV_ID_EDK2 = "101" +ENV_ID_SEABIOS = "102" +ENV_ID_IPXE = "103" +ENV_ID_HEADS = "104" + +# 2xx - Linux +ENV_ID_UBUNTU = "201" +ENV_ID_FEDORA = "202" +ENV_ID_QUBES = "203" +ENV_ID_TRENCHBOOT = "204" + +# 3xx - Windows +ENV_ID_WINDOWS = "301" + +# 5xx - BSD +ENV_ID_FREEBSD = "501" +ENV_ID_PFSENSE = "502" +ENV_ID_OPNSENSE = "503" + +ENV_ID_OS_BOOTMENU_NAMES = { + ENV_ID_UBUNTU: "ubuntu", + ENV_ID_FEDORA: "fedora", + ENV_ID_WINDOWS: "Windows Boot", + ENV_ID_TRENCHBOOT: "trenchboot", +} diff --git a/os-config/ubuntu-credentials.robot b/os-config/ubuntu-credentials.robot deleted file mode 100644 index a1c4719e92..0000000000 --- a/os-config/ubuntu-credentials.robot +++ /dev/null @@ -1,11 +0,0 @@ -*** Variables *** -# TODO: we still cannot have stable username/password/hostname -# across installations. At least hostname has been defined, and -# username and hostname variables are used in the prompts. Before, -# we needed to change them in prompts as well. -${UBUNTU_USERNAME}= ubuntu -${UBUNTU_PASSWORD}= ubuntu -${UBUNTU_HOSTNAME}= 3mdeb - -${UBUNTU_USER_PROMPT}= ${UBUNTU_USERNAME}@${UBUNTU_HOSTNAME}:~$ -${UBUNTU_ROOT_PROMPT}= root@${UBUNTU_HOSTNAME}:/home/${UBUNTU_USERNAME}# diff --git a/os-config/windows-credentials.robot b/os-config/windows-credentials.robot deleted file mode 100644 index f114c32d61..0000000000 --- a/os-config/windows-credentials.robot +++ /dev/null @@ -1,5 +0,0 @@ -*** Variables *** -${WINDOWS_USERNAME}= user -${WINDOWS_PASSWORD}= windows - -${WINDOWS_USER_PROMPT}= PS C:\\Users\\${WINDOWS_USERNAME}> diff --git a/osfv-test-data b/osfv-test-data new file mode 160000 index 0000000000..18d809f79a --- /dev/null +++ b/osfv-test-data @@ -0,0 +1 @@ +Subproject commit 18d809f79ad30c9d7e142c46ee6b92f0e0decc2e diff --git a/pikvm-rest-api b/pikvm-rest-api index 529d434c1a..1a1cc579a2 160000 --- a/pikvm-rest-api +++ b/pikvm-rest-api @@ -1 +1 @@ -Subproject commit 529d434c1ac884f3cc5fa2e1a451829e95a83a0d +Subproject commit 1a1cc579a286fe82aaa2eccea69f96223712664d diff --git a/platform-configs/fan-curve-config.yaml b/platform-configs/fan-curve-config.yaml deleted file mode 100644 index 013a216820..0000000000 --- a/platform-configs/fan-curve-config.yaml +++ /dev/null @@ -1,19 +0,0 @@ -temperature_curve_silent: - - range: [0, 65] - evaluation: [20, 25] - - - range: [65, 75] - evaluation: [25, 35] - - - range: [75, 100] - evaluation: [35, 100] - -temperature_curve_performance: - - range: [0, 55] - evaluation: [25, 35] - - - range: [55, 75] - evaluation: [35, 60] - - - range: [75, 100] - evaluation: [60, 100] diff --git a/platform-configs/include/default.robot b/platform-configs/include/default.robot index 2e39a32314..fab75d4cee 100644 --- a/platform-configs/include/default.robot +++ b/platform-configs/include/default.robot @@ -1,7 +1,6 @@ *** Settings *** -Resource ../../os-config/windows-credentials.robot -Resource ../../os-config/ubuntu-credentials.robot -Resource ../../lib/options/${OPTIONS_LIB}.robot +Resource ../../lib/options/${OPTIONS_LIB}.robot +Variables ../../os-config/environment-test-ids.py *** Variables *** @@ -15,7 +14,7 @@ ${FLASH_SIZE}= ${TBD} ${FLASH_LENGTH}= ${TBD} ${TIANOCORE_STRING}= to boot directly ${BOOT_MENU_KEY}= ${F11} -${SETUP_MENU_KEY}= Delete +${SETUP_MENU_KEY}= ${DELETE} ${BOOT_MENU_STRING}= Please select boot device: ${SETUP_MENU_STRING}= Select Entry ${IPXE_BOOT_ENTRY}= iPXE Network Boot @@ -30,25 +29,30 @@ ${INTERNAL_PROGRAMMER_CHIPNAME}= "Opaque flash chip" ${FLASHING_METHOD}= external ${SNIPEIT}= yes ${SEABIOS_BOOT_DEVICE}= ${EMPTY} +${CHECK_POWER_LED_SUPPORT}= ${TRUE} + +# Should semi auto tests be performed +${SEMI_AUTO}= ${FALSE} + +# Hello, world! +${HELLO_EFI_STRING}= UEFI Hello, Dasharo Universe! +${SB_ERROR_STRING}= The image signature is invalid or missing! # See: https://github.com/Dasharo/dasharo-issues/issues/614 ${LAPTOP_EC_SERIAL_WORKAROUND}= ${FALSE} # Library config # Option library: UEFI configuration variable backend. -# - uefi-setup-menu: Will set options via the UEFI Setup menu (serial) +# - options-lib_uefi-setup-menu: Will set options via the UEFI Setup menu (serial) # - dcu: Will use Dasharo Configuration Utility to configure options. -${OPTIONS_LIB}= uefi-setup-menu +${OPTIONS_LIB}= options-lib_uefi-setup-menu # OS config -${DEVICE_WINDOWS_USERNAME}= ${WINDOWS_USERNAME} -${DEVICE_WINDOWS_PASSWORD}= ${WINDOWS_PASSWORD} -${DEVICE_WINDOWS_USER_PROMPT}= ${WINDOWS_USER_PROMPT} +${DEVICE_OS_USERNAME}= ${TBD} +${DEVICE_OS_PASSWORD}= ${TBD} +${DEVICE_OS_USER_PROMPT}= ${TBD} +${DEVICE_OS_ROOT_PROMPT}= ${TBD} -${DEVICE_UBUNTU_USERNAME}= ${UBUNTU_USERNAME} -${DEVICE_UBUNTU_PASSWORD}= ${UBUNTU_PASSWORD} -${DEVICE_UBUNTU_USER_PROMPT}= ${UBUNTU_USER_PROMPT} -${DEVICE_UBUNTU_ROOT_PROMPT}= ${UBUNTU_ROOT_PROMPT} ${3_MDEB_WIFI_NETWORK}= 3mdeb_Laboratorium ${FW_VERSION}= ${TBD} @@ -63,12 +67,10 @@ ${DMIDECODE_TYPE}= ${TBD} ${DEVICE_USB_KEYBOARD}= ${TBD} ${DEVICE_NVME_DISK}= ${TBD} -${DEVICE_AUDIO1}= ${TBD} -${DEVICE_AUDIO2}= ${TBD} -${DEVICE_AUDIO1_WIN}= ${TBD} ${WIFI_CARD_UBUNTU}= ${TBD} ${USB_MODEL}= ${TBD} ${USB_DEVICE}= ${TBD} +@{ATTACHED_USB}= ${TBD} ${FLASHROM_FLAGS}= ${TBD} @@ -78,6 +80,7 @@ ${TESTS_IN_UBUNTU_SUPPORT}= ${FALSE} ${TESTS_IN_DEBIAN_SUPPORT}= ${FALSE} ${TESTS_IN_WINDOWS_SUPPORT}= ${FALSE} ${TESTS_IN_METATB_SUPPORT}= ${FALSE} +${TESTS_IN_HEADS_SUPPORT}= ${FALSE} # Regression test flags ${DASHARO_SECURITY_MENU_SUPPORT}= ${FALSE} @@ -106,7 +109,6 @@ ${USB_DISKS_DETECTION_SUPPORT}= ${FALSE} ${USB_KEYBOARD_DETECTION_SUPPORT}= ${FALSE} ${USB_CAMERA_DETECTION_SUPPORT}= ${FALSE} ${USB_TYPE_C_DISPLAY_SUPPORT}= ${FALSE} -${UEFI_SHELL_SUPPORT}= ${FALSE} ${UEFI_COMPATIBLE_INTERFACE_SUPPORT}= ${FALSE} ${IPXE_BOOT_SUPPORT}= ${FALSE} ${NVME_DISK_SUPPORT}= ${FALSE} @@ -117,6 +119,8 @@ ${WIRELESS_CARD_BLUETOOTH_SUPPORT}= ${FALSE} ${NVIDIA_GRAPHICS_CARD_SUPPORT}= ${FALSE} ${AUDIO_SUBSYSTEM_SUPPORT}= ${FALSE} ${EXTERNAL_HEADSET_SUPPORT}= ${FALSE} +${INTERNAL_AUDIO_SUPPORT}= ${FALSE} +${HDMI_AUDIO_SUPPORT}= ${FALSE} ${SUSPEND_AND_RESUME_SUPPORT}= ${FALSE} ${SERIAL_NUMBER_VERIFICATION}= ${FALSE} ${SERIAL_FROM_MAC}= ${FALSE} @@ -173,9 +177,11 @@ ${WATCHDOG_SUPPORT}= ${FALSE} ${DCU_UUID_SUPPORT}= ${FALSE} ${DCU_SERIAL_SUPPORT}= ${FALSE} ${ROMHOLE_SUPPORT}= ${FALSE} - +${IR_CAMERA_SUPPORT}= ${FALSE} +${ACPI_CAMERA_SWITCH_SUPPORT}= ${TRUE} # Test module: dasharo-security -${TPM_SUPPORT}= ${FALSE} +${TPM_SUPPORTED_VERSION}= ${NONE} +${TPM_EXPECTED_CHIP}= FILL_WITH_CORRECT_VALUE_BEFORE_TESTING ${VERIFIED_BOOT_SUPPORT}= ${FALSE} ${VERIFIED_BOOT_POPUP_SUPPORT}= ${FALSE} ${MEASURED_BOOT_SUPPORT}= ${FALSE} @@ -198,9 +204,18 @@ ${CPU_FREQUENCY_MEASURE}= ${FALSE} ${PLATFORM_STABILITY_CHECKING}= ${FALSE} ${CUSTOM_FAN_CURVE_SILENT_MODE_SUPPORT}= ${FALSE} ${CUSTOM_FAN_CURVE_PERFORMANCE_MODE_SUPPORT}= ${FALSE} +${CUSTOM_FAN_CURVE_OFF_MODE_SUPPORT}= ${FALSE} +${DGPU_ONLY_SUPPORT}= ${FALSE} +# Variables used in lib/sensors to determine platform-specific methods of +# measuring temperatures, fans etc. +${SENSORS_CONFIG_FILE}= include/sensors/default-sensors-config.yaml +${CUSTOM_FAN_CURVE_FILE}= ${TBD} ${ETH_PERF_PAIR_1_G}= ${FALSE} ${ETH_PERF_PAIR_2_G}= ${FALSE} ${ETH_PERF_PAIR_10_G}= ${FALSE} +${DISK_IO_PERFORMANCE_TESTS}= ${FALSE} +${CPU_PERFORMANCE_TESTS_SUPPORT}= ${FALSE} +${GPU_PERFORMANCE_TESTS_SUPPORT}= ${FALSE} ${MAX_ACCEPTABLE_AVERAGE_COLDBOOT_TIME_S}= 10 ${MAX_ACCEPTABLE_COLDBOOT_TIME_STD_DEV_S}= 10 ${MAX_ACCEPTABLE_COLDBOOT_TIME_S}= 20 @@ -210,6 +225,7 @@ ${MAX_ACCEPTABLE_WARMBOOT_TIME_S}= 20 ${MAX_ACCEPTABLE_AVERAGE_REBOOT_TIME_S}= 10 ${MAX_ACCEPTABLE_REBOOT_TIME_STD_DEV_S}= 10 ${MAX_ACCEPTABLE_REBOOT_TIME_S}= 20 +${FAST_AND_QUIET_BOOT_SUPPORT}= ${FALSE} # Test module: dasharo-stab ${M2_WIFI_SUPPORT}= ${FALSE} @@ -268,14 +284,20 @@ ${STABILITY_DETECTION_WARMBOOT_ITERATIONS}= 2 ${STABILITY_DETECTION_REBOOT_ITERATIONS}= 5 ${STABILITY_DETECTION_SUSPEND_ITERATIONS}= 5 ${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE}= NetworkBoot +${ETH_PORTS}= ${EMPTY} + +@{TESTED_LINUX_DISTROS}= ${ENV_ID_UBUNTU} +${DEFAULT_BOOT_OS_ID}= ${ENV_ID_UBUNTU} +${BOOTED_OS_ID}= ${DEFAULT_BOOT_OS_ID} + +${USE_ANSIBLE}= ${TRUE} *** Keywords *** Power On Default - [Documentation] Keyword clears terminal buffer and sets Device Under Test - ... into Power On state using RTE OC buffers. Implementation - ... must be compatible with the theory of operation of a - ... specific platform. + [Documentation] The default implementation of the Power On keyword. + ... Keyword clears terminal buffer and sets Device Under Test + ... into Power On state using RTE OC buffers. Restore Initial DUT Connection Method IF '${DUT_CONNECTION_METHOD}' == 'SSH' RETURN Sleep 2s diff --git a/platform-configs/include/msi-z690-common.robot b/platform-configs/include/msi-z690-common.robot index d7dcc8378f..ff565bbfaf 100644 --- a/platform-configs/include/msi-z690-common.robot +++ b/platform-configs/include/msi-z690-common.robot @@ -25,6 +25,7 @@ ${POWER_CTRL}= sonoff ${FLASH_VERIFY_METHOD}= none ${WIFI_CARD}= ${TBD} ${MAX_CPU_TEMP}= 80 +${CHECK_POWER_LED_SUPPORT}= ${FALSE} ${DMIDECODE_MANUFACTURER}= Micro-Star International Co., Ltd. ${DMIDECODE_VENDOR}= 3mdeb @@ -33,9 +34,6 @@ ${DMIDECODE_TYPE}= Desktop ${DEVICE_USB_KEYBOARD}= SiGma Micro Keyboard TRACER Gamma Ivory ${DEVICE_NVME_DISK}= Non-Volatile memory controller -${DEVICE_AUDIO1}= ALC897 -${DEVICE_AUDIO2}= Alderlake HDMI -${DEVICE_AUDIO1_WIN}= Realtek High Definition Audio ${WIFI_CARD_UBUNTU}= ${TBD} ${USB_MODEL}= Kingston ${USB_DEVICE}= Multifunction Composite Gadget @@ -63,7 +61,6 @@ ${EXTERNAL_DISPLAY_PORT_SUPPORT}= ${TRUE} ${CUSTOM_LOGO_SUPPORT}= ${TRUE} ${USB_DISKS_DETECTION_SUPPORT}= ${TRUE} ${USB_KEYBOARD_DETECTION_SUPPORT}= ${TRUE} -${UEFI_SHELL_SUPPORT}= ${TRUE} ${UEFI_COMPATIBLE_INTERFACE_SUPPORT}= ${TRUE} ${IPXE_BOOT_SUPPORT}= ${TRUE} ${NVME_DISK_SUPPORT}= ${TRUE} @@ -90,7 +87,7 @@ ${SATA_SUPPORT}= ${TRUE} ${RESET_TO_DEFAULTS_SUPPORT}= ${TRUE} # Test module: dasharo-security -${TPM_SUPPORT}= ${TRUE} +${TPM_SUPPORTED_VERSION}= 2 ${VERIFIED_BOOT_SUPPORT}= ${TRUE} ${VERIFIED_BOOT_POPUP_SUPPORT}= ${TRUE} ${MEASURED_BOOT_SUPPORT}= ${TRUE} @@ -114,8 +111,11 @@ ${USB_TYPE-A_DEVICES_DETECTION_SUPPORT}= ${TRUE} ${NETWORK_INTERFACE_AFTER_SUSPEND_SUPPORT}= ${TRUE} ${CAPSULE_UPDATE_SUPPORT}= ${TRUE} ${ROMHOLE_SUPPORT}= ${TRUE} +${USB_DETECTION_ITERATIONS_NUMBER}= 5 +${BOOT_FROM_USB_ITERATIONS_NUMBER}= 5 *** Keywords *** Power On + [Documentation] Implementation of keywords.Power On Power On Default diff --git a/platform-configs/include/novacustom-adl.robot b/platform-configs/include/novacustom-adl.robot index 366e11d294..5c3b02b0c0 100644 --- a/platform-configs/include/novacustom-adl.robot +++ b/platform-configs/include/novacustom-adl.robot @@ -11,11 +11,6 @@ ${DEF_THREADS_TOTAL}= 16 ${DEF_ONLINE_CPU}= 0-15 ${DEF_SOCKETS}= 1 -# Audio -${DEVICE_AUDIO1}= ALC256 -${DEVICE_AUDIO2}= Alderlake-P HDMI -${DEVICE_AUDIO1_WIN}= Realtek High Definition Audio - # Connectivity ${WIFI_CARD}= Intel(R) Wi-Fi 6 AX201 160MHz ${WIFI_CARD_UBUNTU}= Intel Corporation Alder Lake-P PCH CNVi WiFi (rev 01) diff --git a/platform-configs/include/novacustom-common.robot b/platform-configs/include/novacustom-common.robot index c73e28ba8d..5bf4130a82 100644 --- a/platform-configs/include/novacustom-common.robot +++ b/platform-configs/include/novacustom-common.robot @@ -19,11 +19,12 @@ ${IPXE_BOOT_ENTRY}= iPXE Network Boot ${EDK2_IPXE_CHECKPOINT}= iPXE Shell ${MANUFACTURER}= ${TBD} ${CPU}= ${TBD} -${POWER_CTRL}= sonoff +${POWER_CTRL}= none ${FLASH_VERIFY_METHOD}= none ${MAX_CPU_TEMP}= 82 ${AUTO_BOOT_TIME_OUT_DEFAULT_VALUE}= 6 ${FLASHING_METHOD}= internal +${CHECK_POWER_LED_SUPPORT}= ${FALSE} ${DMIDECODE_SERIAL_NUMBER}= N/A ${DMIDECODE_MANUFACTURER}= Notebook @@ -31,8 +32,6 @@ ${DMIDECODE_VENDOR}= 3mdeb ${DMIDECODE_FAMILY}= Not Applicable ${DMIDECODE_TYPE}= Notebook -${OPTIONS_LIB}= dcu - ${DEVICE_USB_KEYBOARD}= Logitech, Inc. Keyboard K120 ${CLEVO_USB_C_HUB}= 4-port ${3_MDEB_WIFI_NETWORK}= 3mdeb_abr @@ -41,9 +40,6 @@ ${TESTS_IN_FIRMWARE_SUPPORT}= ${FALSE} ${TESTS_IN_UBUNTU_SUPPORT}= ${TRUE} ${TESTS_IN_WINDOWS_SUPPORT}= ${FALSE} -${DEVICE_UBUNTU_USER_PROMPT}= ${UBUNTU_USER_PROMPT} -${DEVICE_UBUNTU_ROOT_PROMPT}= ${UBUNTU_ROOT_PROMPT} - # Regression test flags ${DASHARO_SECURITY_MENU_SUPPORT}= ${TRUE} ${DASHARO_USB_MENU_SUPPORT}= ${TRUE} @@ -54,13 +50,13 @@ ${DASHARO_POWER_MGMT_MENU_SUPPORT}= ${TRUE} # Test module: dasharo-compatibility ${CUSTOM_BOOT_MENU_KEY_SUPPORT}= ${TRUE} ${CUSTOM_SETUP_MENU_KEY_SUPPORT}= ${TRUE} +${CPU_TESTS_SUPPORT}= ${TRUE} ${INTERNAL_LCD_DISPLAY_SUPPORT}= ${TRUE} ${EXTERNAL_HDMI_DISPLAY_SUPPORT}= ${TRUE} ${EC_AND_SUPER_IO_SUPPORT}= ${TRUE} ${CUSTOM_LOGO_SUPPORT}= ${TRUE} ${USB_CAMERA_DETECTION_SUPPORT}= ${TRUE} ${USB_TYPE_C_DISPLAY_SUPPORT}= ${TRUE} -${UEFI_SHELL_SUPPORT}= ${TRUE} ${UEFI_COMPATIBLE_INTERFACE_SUPPORT}= ${TRUE} ${IPXE_BOOT_SUPPORT}= ${TRUE} ${NVME_DISK_SUPPORT}= ${TRUE} @@ -70,6 +66,7 @@ ${WIRELESS_CARD_WIFI_SUPPORT}= ${TRUE} ${WIRELESS_CARD_BLUETOOTH_SUPPORT}= ${TRUE} ${AUDIO_SUBSYSTEM_SUPPORT}= ${TRUE} ${EXTERNAL_HEADSET_SUPPORT}= ${TRUE} +${INTERNAL_AUDIO_SUPPORT}= ${TRUE} ${SUSPEND_AND_RESUME_SUPPORT}= ${TRUE} ${FIRMWARE_NUMBER_VERIFICATION}= ${TRUE} ${PRODUCT_NAME_VERIFICATION}= ${TRUE} @@ -88,7 +85,7 @@ ${DOCKING_STATION_NET_INTERFACE}= ${TRUE} ${DOCKING_STATION_HDMI}= ${TRUE} ${DOCKING_STATION_DISPLAY_PORT}= ${TRUE} ${UPLOAD_ON_USB_SUPPORT}= ${TRUE} -${FAN_SPEED_MEASURE_SUPPORT}= ${FALSE} +${FAN_SPEED_MEASURE_SUPPORT}= ${TRUE} ${DOCKING_STATION_SD_CARD_READER_SUPPORT}= ${TRUE} ${BOOT_BLOCKING_SUPPORT}= ${TRUE} ${HIBERNATION_AND_RESUME_SUPPORT}= ${TRUE} @@ -97,9 +94,11 @@ ${RESET_TO_DEFAULTS_SUPPORT}= ${FALSE} ${DEFAULT_POWER_STATE_AFTER_FAIL}= Powered Off ${DTS_FIRMWARE_FLASHING_SUPPORT}= ${TRUE} ${DTS_EC_FLASHING_SUPPORT}= ${TRUE} +${ACPI_DRIVER_SUPPORT}= ${TRUE} +${ACPI_CAMERA_SWITCH_SUPPORT}= ${FALSE} # Test module: dasharo-security -${TPM_SUPPORT}= ${TRUE} +${TPM_SUPPORTED_VERSION}= 2 ${VERIFIED_BOOT_SUPPORT}= ${TRUE} ${VERIFIED_BOOT_POPUP_SUPPORT}= ${TRUE} ${MEASURED_BOOT_SUPPORT}= ${TRUE} @@ -123,6 +122,9 @@ ${PLATFORM_STABILITY_CHECKING}= ${TRUE} ${CUSTOM_FAN_CURVE_SILENT_MODE_SUPPORT}= ${FALSE} ${CUSTOM_FAN_CURVE_PERFORMANCE_MODE_SUPPORT}= ${FALSE} ${TEMPERATURE_TEST_DURATION}= 3600 +${DISK_IO_PERFORMANCE_TESTS}= ${TRUE} +${CPU_PERFORMANCE_TESTS_SUPPORT}= ${TRUE} +${FAST_AND_QUIET_BOOT_SUPPORT}= ${TRUE} # Test module: dasharo-stability ${M2_WIFI_SUPPORT}= ${TRUE} @@ -131,29 +133,26 @@ ${USB_TYPE-A_DEVICES_DETECTION_SUPPORT}= ${TRUE} ${TPM_DETECT_SUPPORT}= ${TRUE} ${NETWORK_INTERFACE_AFTER_SUSPEND_SUPPORT}= ${TRUE} +${STABILITY_DETECTION_COLDBOOT_ITERATIONS}= 2 +${STABILITY_DETECTION_WARMBOOT_ITERATIONS}= 2 +${STABILITY_DETECTION_REBOOT_ITERATIONS}= 2 +${STABILITY_DETECTION_SUSPEND_ITERATIONS}= 2 + ${L2_CACHE_SUPPORT}= ${TRUE} *** Keywords *** Power On - [Documentation] Keyword clears SSH buffer and sets Device Under Test - ... into Power On state from Mechanical Off. (coldboot) For example: - ... sonoff, RTE relays. + [Documentation] Implementation of keywords.Power On IF "${POWER_CTRL}"=="none" RETURN - Restore Initial DUT Connection Method Power Cycle On - Sleep 2s - RteCtrl Set OC GPIO 12 low - Sleep 1s - RteCtrl Set OC GPIO 12 high-z - # TODO make these generic Configure Wake In Linux [Documentation] Keyword prepares platform for wake by platform specific ... wake method. # Enable wake by magic packet - Detect Or Install Package ethtool + Execute Linux Command ethtool -s ${WOL_INTERFACE} wol g Wake Up diff --git a/platform-configs/include/novacustom-mtl.robot b/platform-configs/include/novacustom-mtl.robot index 47027a19fd..43d737aad7 100644 --- a/platform-configs/include/novacustom-mtl.robot +++ b/platform-configs/include/novacustom-mtl.robot @@ -10,14 +10,9 @@ ${DEF_CORES_PER_SOCKET}= 16 ${DEF_THREADS_PER_CORE}= 2 ${DEF_THREADS_TOTAL}= 22 # TODO: remove, the value below can be inferred from the one above -${DEF_ONLINE_CPU}= 0-7 +${DEF_ONLINE_CPU}= 0-21 ${DEF_SOCKETS}= 1 -# Audio -${DEVICE_AUDIO1}= ALC245 -${DEVICE_AUDIO2}= Intel Meteor Lake HDMI -${DEVICE_AUDIO1_WIN}= Realtek High Definition Audio - # Connectivity ${WIFI_CARD}= Intel(R) Wi-Fi 6 AX201 160MHz ${WIFI_CARD_UBUNTU}= Intel Corporation Meteor Lake PCH CNVi WiFi (rev 20) diff --git a/platform-configs/include/novacustom-tgl.robot b/platform-configs/include/novacustom-tgl.robot index d898bf5967..d3ed4a60dc 100644 --- a/platform-configs/include/novacustom-tgl.robot +++ b/platform-configs/include/novacustom-tgl.robot @@ -11,11 +11,6 @@ ${DEF_THREADS_TOTAL}= ${TBD} ${DEF_ONLINE_CPU}= 0-7 ${DEF_SOCKETS}= 1 -# Audio -${DEVICE_AUDIO1}= ALC293 -${DEVICE_AUDIO2}= Tigerlake HDMI -${DEVICE_AUDIO1_WIN}= Realtek High Definition Audio - # Connectivity ${WIFI_CARD}= Intel(R) Wi-Fi 6 AX201 160MHz ${WIFI_CARD_UBUNTU}= Intel Corporation Wi-Fi 6 AX201 (rev 20) @@ -25,7 +20,7 @@ ${BLUETOOTH_CARD_UBUNTU}= Intel Corp. AX201 Bluetooth ${WEBCAM_UBUNTU}= Chicony Electronics Co., Ltd Chicony USB2.0 Camera # DMI -${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v1.5.2 +${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v1.6.0-rc1 # TODO verify ${DMIDECODE_RELEASE_DATE}= 03/17/2022 diff --git a/platform-configs/include/optiplex-common.robot b/platform-configs/include/optiplex-common.robot index 0f77045ff8..df1b3001ac 100644 --- a/platform-configs/include/optiplex-common.robot +++ b/platform-configs/include/optiplex-common.robot @@ -16,6 +16,7 @@ ${SETUP_MENU_KEY}= ${F2} ${IPXE_BOOT_ENTRY}= Network Boot and Utilities ${POWER_CTRL}= sonoff ${MAX_CPU_TEMP}= 80 +${CHECK_POWER_LED_SUPPORT}= ${FALSE} ${DMIDECODE_VENDOR}= 3mdeb ${DMIDECODE_FAMILY}= N/A @@ -42,7 +43,6 @@ ${EXTERNAL_DISPLAY_PORT_SUPPORT}= ${TRUE} ${CUSTOM_LOGO_SUPPORT}= ${TRUE} ${USB_DISKS_DETECTION_SUPPORT}= ${TRUE} ${USB_KEYBOARD_DETECTION_SUPPORT}= ${TRUE} -${UEFI_SHELL_SUPPORT}= ${TRUE} ${UEFI_COMPATIBLE_INTERFACE_SUPPORT}= ${TRUE} ${IPXE_BOOT_SUPPORT}= ${TRUE} ${NVME_DISK_SUPPORT}= ${TRUE} @@ -66,7 +66,9 @@ ${DCU_UUID_SUPPORT}= ${TRUE} ${DCU_SERIAL_SUPPORT}= ${TRUE} # Test module: dasharo-security -${TPM_SUPPORT}= ${TRUE} +${TPM_SUPPORTED_VERSION}= 1 +# Cannot acquire tpm chip with cbmem on Optiplex platforms +${TPM_EXPECTED_CHIP}= N/A ${MEASURED_BOOT_SUPPORT}= ${TRUE} ${SECURE_BOOT_SUPPORT}= ${TRUE} ${USB_MASS_STORAGE_SUPPORT}= ${TRUE} @@ -96,4 +98,5 @@ ${HIBERNATION_AND_RESUME_SUPPORT}= ${TRUE} *** Keywords *** Power On + [Documentation] Implementation of keywords.Power On Power On Default diff --git a/platform-configs/include/pcengines.robot b/platform-configs/include/pcengines.robot index 5d5dcb7929..b963d1e7b4 100644 --- a/platform-configs/include/pcengines.robot +++ b/platform-configs/include/pcengines.robot @@ -38,6 +38,7 @@ ${DMIDECODE_VENDOR}= 3mdeb ${DMIDECODE_FAMILY}= N/A # TODO ${DMIDECODE_TYPE}= Desktop +${INTERNAL_PROGRAMMER_CHIPNAME}= W25Q64BV/W25Q64CV/W25Q64FV # Supported test environments ${TESTS_IN_FIRMWARE_SUPPORT}= ${TRUE} @@ -52,7 +53,6 @@ ${CUSTOM_BOOT_MENU_KEY_SUPPORT}= ${TRUE} ${CUSTOM_SETUP_MENU_KEY_SUPPORT}= ${TRUE} ${EC_AND_SUPER_IO_SUPPORT}= ${TRUE} ${USB_DISKS_DETECTION_SUPPORT}= ${TRUE} -${UEFI_SHELL_SUPPORT}= ${TRUE} ${UEFI_COMPATIBLE_INTERFACE_SUPPORT}= ${TRUE} ${IPXE_BOOT_SUPPORT}= ${TRUE} ${SD_CARD_READER_SUPPORT}= ${TRUE} @@ -82,7 +82,7 @@ ${MINI_PC_IE_SLOT_SUPPORT}= ${TRUE} ${APU_CONFIGURATION_MENU_SUPPORT}= ${TRUE} # Test module: dasharo-security -${TPM_SUPPORT}= ${TRUE} +${TPM_SUPPORTED_VERSION}= 2 ${VERIFIED_BOOT_SUPPORT}= ${TRUE} ${VERIFIED_BOOT_POPUP_SUPPORT}= ${TRUE} ${MEASURED_BOOT_SUPPORT}= ${TRUE} diff --git a/platform-configs/include/protectli-common.robot b/platform-configs/include/protectli-common.robot index 03ef611509..67608aef6c 100644 --- a/platform-configs/include/protectli-common.robot +++ b/platform-configs/include/protectli-common.robot @@ -18,8 +18,7 @@ ${EDK2_IPXE_CHECKPOINT}= Advanced ${MANUFACTURER}= ${TBD} ${CPU}= ${TBD} ${POWER_CTRL}= RteCtrl -${FLASH_VERIFY_METHOD}= tianocore-shell -${FLASH_VERIFY_OPTION}= UEFI Shell +${FLASH_VERIFY_METHOD}= none ${DMIDECODE_SERIAL_NUMBER}= N/A ${DMIDECODE_MANUFACTURER}= Protectli @@ -51,7 +50,6 @@ ${CUSTOM_NETWORK_BOOT_ENTRIES_SUPPORT}= ${TRUE} ${EXTERNAL_HDMI_DISPLAY_SUPPORT}= ${TRUE} ${EXTERNAL_DISPLAY_PORT_SUPPORT}= ${TRUE} ${CUSTOM_LOGO_SUPPORT}= ${TRUE} -${UEFI_SHELL_SUPPORT}= ${TRUE} ${UEFI_COMPATIBLE_INTERFACE_SUPPORT}= ${TRUE} ${NETBOOT_UTILITIES_SUPPORT}= ${TRUE} ${WIRELESS_CARD_SUPPORT}= ${TRUE} @@ -75,9 +73,11 @@ ${USB_DISKS_DETECTION_SUPPORT}= ${TRUE} ${USB_KEYBOARD_DETECTION_SUPPORT}= ${TRUE} ${DCU_UUID_SUPPORT}= ${TRUE} ${DCU_SERIAL_SUPPORT}= ${TRUE} +${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE}= UsbMassStorage +${HDMI_AUDIO_SUPPORT}= ${TRUE} # Test module: dasharo-security -${TPM_SUPPORT}= ${TRUE} +${TPM_SUPPORTED_VERSION}= 2 ${SECURE_BOOT_SUPPORT}= ${TRUE} ${SECURE_BOOT_DEFAULT_STATE}= Disabled ${USB_STACK_SUPPORT}= ${TRUE} @@ -113,9 +113,9 @@ ${TEMPERATURE_TEST_DURATION}= 3600 # Interval between the following readings in temperature measure tests ${TEMPERATURE_TEST_MEASURE_INTERVAL}= 1 # Custom fan curve tests duration in minutes -${CUSTOM_FAN_CURVE_TEST_DURATION}= 30 -# Interval between the following readings in custom fan curve tests -${CUSTOM_FAN_CURVE_MEASURE_INTERVAL}= 1 +${CUSTOM_FAN_CURVE_TEST_DURATION}= 2 +# Delay between tests to allow the cpu to cool down +${CUSTOM_FAN_CURVE_COOLDOWN_SECONDS}= 5 # Maximum fails during during performing test suite usb-boot.robot ${ALLOWED_FAILS_USB_BOOT}= 0 # Maximum fails during during performing test suite usb-detect.robot @@ -135,6 +135,7 @@ ${STABILITY_DETECTION_SUSPEND_ITERATIONS}= 5 *** Keywords *** Power On + [Documentation] Implementation of keywords.Power On Power On Default Check Coreboot Components Measurement diff --git a/platform-configs/include/protectli-v1x10.robot b/platform-configs/include/protectli-v1x10.robot index 93ebd0f4d2..ecb885346a 100644 --- a/platform-configs/include/protectli-v1x10.robot +++ b/platform-configs/include/protectli-v1x10.robot @@ -16,8 +16,6 @@ ${MAX_CPU_TEMP}= 77 ${E_MMC_NAME}= BJTD4R -${DEVICE_AUDIO1}= Jasperlake HDMI - ${DMIDECODE_SERIAL_NUMBER}= N/A ${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v ${DMIDECODE_RELEASE_DATE}= ${EMPTY} diff --git a/platform-configs/include/protectli-vp24xx.robot b/platform-configs/include/protectli-vp24xx.robot index 39e9ae39b7..438fa549fe 100644 --- a/platform-configs/include/protectli-vp24xx.robot +++ b/platform-configs/include/protectli-vp24xx.robot @@ -12,3 +12,5 @@ ${MAX_CPU_TEMP}= 95 ${DMIDECODE_MANUFACTURER}= Protectli ${DMIDECODE_VENDOR}= 3mdeb ${DMIDECODE_FAMILY}= Vault Pro + +${SENSORS_CONFIG_FILE}= include/sensors/default-sensors-config.yaml diff --git a/platform-configs/include/protectli-vp32xx.robot b/platform-configs/include/protectli-vp32xx.robot index fa96e7839e..a3d74f9a80 100644 --- a/platform-configs/include/protectli-vp32xx.robot +++ b/platform-configs/include/protectli-vp32xx.robot @@ -4,6 +4,11 @@ Resource protectli-common.robot *** Variables *** -${FLASH_SIZE}= ${16*1024*1024} +${FLASH_SIZE}= ${16*1024*1024} -${MAX_CPU_TEMP}= 82 +${MAX_CPU_TEMP}= 82 +${DEVICE_USB_KEYBOARD}= Logitech, Inc. Keyboard K120 +${ETHERNET_ID}= 8086:125c +@{ETH_PERF_PAIR_2_G}= enp2s0 enp4s0 + +${SENSORS_CONFIG_FILE}= include/sensors/default-sensors-config.yaml diff --git a/platform-configs/include/protectli-vp46xx.robot b/platform-configs/include/protectli-vp46xx.robot index 03c539df92..e5ea79e9a9 100644 --- a/platform-configs/include/protectli-vp46xx.robot +++ b/platform-configs/include/protectli-vp46xx.robot @@ -6,9 +6,6 @@ Resource protectli-common.robot *** Variables *** ${FLASH_SIZE}= ${16*1024*1024} -${DEVICE_AUDIO1}= ALC897 -${DEVICE_AUDIO2}= Kabylake HDMI -${DEVICE_AUDIO1_WIN}= High Definition Audio Device ${INITIAL_CPU_FREQUENCY}= 2600 ${MAX_CPU_TEMP}= 82 ${WATCHDOG_SUPPORT}= ${TRUE} @@ -20,3 +17,5 @@ ${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v1.2.0 ${DMIDECODE_RELEASE_DATE}= 03/13/2024 @{ETH_PERF_PAIR_2_G}= enp5s0 enp6s0 + +${ETHERNET_ID}= 8086:15f3 diff --git a/platform-configs/include/protectli-vp66xx.robot b/platform-configs/include/protectli-vp66xx.robot index cb3fc55e61..1571101204 100644 --- a/platform-configs/include/protectli-vp66xx.robot +++ b/platform-configs/include/protectli-vp66xx.robot @@ -4,21 +4,29 @@ Resource protectli-common.robot *** Variables *** -${FLASH_SIZE}= ${16*1024*1024} +${FLASH_SIZE}= ${16*1024*1024} +${INITIAL_CPU_FREQUENCY}= 2600 +${MAX_CPU_TEMP}= 82 -${DEVICE_AUDIO1}= Alderlake-P HDMI -${DEVICE_AUDIO1_WIN}= High Definition Audio Device -${INITIAL_CPU_FREQUENCY}= 2600 -${MAX_CPU_TEMP}= 82 +${CPU_P_CORES_MAX}= 2 +${CPU_E_CORES_MAX}= 8 -${CPU_P_CORES_MAX}= 2 -${CPU_E_CORES_MAX}= 8 +${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v0.9.0 +${DMIDECODE_RELEASE_DATE}= 07/01/2024 -${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v0.9.0 -${DMIDECODE_RELEASE_DATE}= 07/01/2024 +${EMMC_SUPPORT}= ${FALSE} +${HYPER_THREADING_SUPPORT}= ${TRUE} +${INTEL_HYBRID_ARCH_SUPPORT}= ${TRUE} +@{ETH_PERF_PAIR_2_G}= enp5s0 enp6s0 +@{ETH_PERF_PAIR_10_G}= enp2s0f0 enp2s0f1 -${EMMC_SUPPORT}= ${FALSE} -${HYPER_THREADING_SUPPORT}= ${TRUE} -${INTEL_HYBRID_ARCH_SUPPORT}= ${TRUE} -@{ETH_PERF_PAIR_2_G}= enp5s0 enp6s0 -@{ETH_PERF_PAIR_10_G}= enp2s0f0 enp2s0f1 +${ETHERNET_ID}= 8086:125c + +${CUSTOM_FAN_CURVE_PERFORMANCE_MODE_SUPPORT}= ${TRUE} +${CUSTOM_FAN_CURVE_SILENT_MODE_SUPPORT}= ${TRUE} +${CUSTOM_FAN_CURVE_OFF_MODE_SUPPORT}= ${TRUE} + +# Variables used in lib/sensors to determine platform-specific methods of +# measuring temperatures, fans etc. +${SENSORS_CONFIG_FILE}= include/sensors/protectli-vp66xx-sensors-config.yaml +${CUSTOM_FAN_CURVE_FILE}= include/sensors/protectli-vp66xx-fan-curve-config.yaml diff --git a/platform-configs/include/sensors/default-sensors-config.yaml b/platform-configs/include/sensors/default-sensors-config.yaml new file mode 100644 index 0000000000..ce06e74211 --- /dev/null +++ b/platform-configs/include/sensors/default-sensors-config.yaml @@ -0,0 +1,41 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +# example_sensor_measurement: +# # Can be one of {`lm-sensors`, `hwmon`, `system76-acpi`, `none`} depending on measured value and device +# - method: none +# # Abosule path to hwmon file representing the sensor +# # Has to be set if PWM measurement method is hwmon +# # example: /sys/devices/LNXSYSTM\:00/LNXSYBUS\:00/17761776\:00/hwmon/hwmon0/pwm1 +# hwmon_path: none +# # The name of the sensor in `sensors` command if method +# # is set to lm-sensors. For example `w83795g-i2c-1-2f`. `none` if lm-sensors +# # is not used or no filtering of the command output by sensor name is needed +# lm_sensors_sensor_name: none + +cpu_temperature_measurement: +# Can be one of {`lm-sensors`, `hwmon`, `none`} + method: lm-sensors + hwmon_path: none + lm_sensors_sensor_name: none + +fan_pwm_measurement: +# Can be one of {`hwmon`, `none`} + method: none + hwmon_path: none + lm_sensors_sensor_name: none + +fan_rpm_measurement: +# Can be one of {`lm-sensors`, `system76-acpi`, `none`} + method: none + hwmon_path: none + lm_sensors_sensor_name: none + +# Kernel modules that might need to be enabled using modprobe in order to use +# the sensors. +sensors_kernel_modules: + # name of the kernel module + - module: none + # optional force_id arg for modprobe + force_id: none diff --git a/platform-configs/include/sensors/protectli-vp66xx-fan-curve-config.yaml b/platform-configs/include/sensors/protectli-vp66xx-fan-curve-config.yaml new file mode 100644 index 0000000000..2bcd20725e --- /dev/null +++ b/platform-configs/include/sensors/protectli-vp66xx-fan-curve-config.yaml @@ -0,0 +1,63 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 +temperature_curve_settings: + percentile_drop: 10 + acceptable_invalid_percent: 10 + +temperature_curve_silent: + - range: [0, 40] + evaluation_pwm: [0, 1] + tolerance_pwm: 6 + evaluation_rpm: [250, 250] + tolerance_rpm: 250 + + - range: [40, 50] + evaluation_pwm: [20, 35] + tolerance_pwm: 6 + evaluation_rpm: [700, 700] # Anywhere between 0 and 1100 + 300 tolerance + tolerance_rpm: 700 + + - range: [50, 85] + evaluation_pwm: [35, 100] + tolerance_pwm: 6 + evaluation_rpm: [1100, 2900] + tolerance_rpm: 300 + + - range: [85, 100] + evaluation_pwm: [100, 100] + tolerance_pwm: 6 + evaluation_rpm: [3100, 3100] + tolerance_rpm: 400 + +temperature_curve_performance: + - range: [0, 30] + evaluation_pwm: [0, 1] + tolerance_pwm: 6 + evaluation_rpm: [250, 250] + tolerance_rpm: 250 + + - range: [30, 40] + evaluation_pwm: [0, 40] + tolerance_pwm: 6 + evaluation_rpm: [1000, 1000] + tolerance_rpm: 1000 + + - range: [40, 75] + evaluation_pwm: [40, 100] + tolerance_pwm: 6 + evaluation_rpm: [2000, 3400] + tolerance_rpm: 300 + + - range: [75, 100] + evaluation_pwm: [100, 100] + tolerance_pwm: 6 + evaluation_rpm: [3300, 3300] + tolerance_rpm: 400 + +temperature_curve_off: + - range: [0, 100] + evaluation_pwm: [0, 1] + tolerance_pwm: 6 + evaluation_rpm: [250, 250] + tolerance_rpm: 150 diff --git a/platform-configs/include/sensors/protectli-vp66xx-sensors-config.yaml b/platform-configs/include/sensors/protectli-vp66xx-sensors-config.yaml new file mode 100644 index 0000000000..ff7ba4390a --- /dev/null +++ b/platform-configs/include/sensors/protectli-vp66xx-sensors-config.yaml @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +cpu_temperature_measurement: + method: lm-sensors + hwmon_path: none + lm_sensors_sensor_name: none + +fan_pwm_measurement: + method: none + hwmon_path: none + lm_sensors_sensor_name: none + +fan_rpm_measurement: + method: lm-sensors + hwmon_path: none + lm_sensors_sensor_name: it8786-isa-0a20 + +sensors_kernel_modules: + - module: it87 + force_id: '0x8786' diff --git a/platform-configs/minnowboard-turbot.robot b/platform-configs/minnowboard-turbot.robot index 7f1452743c..c2ac97748f 100644 --- a/platform-configs/minnowboard-turbot.robot +++ b/platform-configs/minnowboard-turbot.robot @@ -37,4 +37,5 @@ ${CUSTOM_BOOT_MENU_KEY_SUPPORT}= ${TRUE} *** Keywords *** Power On + [Documentation] Implementation of keywords.Power On Power On Default diff --git a/platform-configs/msi-pro-z690-a-ddr5.robot b/platform-configs/msi-pro-z690-a-ddr5.robot index bec0ae400a..a917d08611 100644 --- a/platform-configs/msi-pro-z690-a-ddr5.robot +++ b/platform-configs/msi-pro-z690-a-ddr5.robot @@ -9,8 +9,6 @@ ${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) ${FW_VERSION} ${DMIDECODE_PRODUCT_NAME}= MS-7D25 ${DMIDECODE_RELEASE_DATE}= 09/27/2024 -${DEVICE_AUDIO2}= Raptorlake HDMI - ${CPU_MAX_FREQUENCY}= 5200 ${CPU_MIN_FREQUENCY}= 300 diff --git a/platform-configs/msi-pro-z690-a-wifi-ddr4.robot b/platform-configs/msi-pro-z690-a-wifi-ddr4.robot index 8670fcbed7..d736c590cc 100644 --- a/platform-configs/msi-pro-z690-a-wifi-ddr4.robot +++ b/platform-configs/msi-pro-z690-a-wifi-ddr4.robot @@ -19,8 +19,6 @@ ${WIRELESS_CARD_BLUETOOTH_SUPPORT}= ${TRUE} ${CPU_MAX_FREQUENCY}= 5000 ${CPU_MIN_FREQUENCY}= 300 -${DEVICE_AUDIO2}= Raptorlake HDMI - # We have 2 such platforms in the lab and options below are suitable only for one of them as they have different CPUs. ${DEF_THREADS_PER_CORE}= 2 ${DEF_THREADS_TOTAL}= 28 diff --git a/platform-configs/msi-pro-z790-p-ddr5.robot b/platform-configs/msi-pro-z790-p-ddr5.robot index 7cea92b33a..cfa76afe7d 100644 --- a/platform-configs/msi-pro-z790-p-ddr5.robot +++ b/platform-configs/msi-pro-z790-p-ddr5.robot @@ -11,5 +11,3 @@ ${DMIDECODE_RELEASE_DATE}= 11/27/2023 ${CPU_MAX_FREQUENCY}= 5200 ${CPU_MIN_FREQUENCY}= 300 - -${DEVICE_AUDIO2}= Raptorlake HDMI diff --git a/platform-configs/novacustom-ns50mu.robot b/platform-configs/novacustom-ns50mu.robot index 71e7848c39..df6b6daae3 100644 --- a/platform-configs/novacustom-ns50mu.robot +++ b/platform-configs/novacustom-ns50mu.robot @@ -4,28 +4,34 @@ Resource include/novacustom-common.robot *** Variables *** +${INITIAL_DUT_CONNECTION_METHOD}= Telnet +${DUT_CONNECTION_METHOD}= Telnet +${POWER_CTRL}= sonoff + # CPU -${CPU}= Intel(R) Core(TM) i7-1165G7 CPU +${CPU}= Intel(R) Core(TM) i7-1165G7 CPU # Test configuration -${3_MDEB_WIFI_NETWORK}= 3mdeb_abr -${CLEVO_BATTERY_CAPACITY}= 3200*1000 -${CLEVO_DISK}= Samsung SSD 980 PRO -${CLEVO_USB_C_HUB}= 4-port -${DEVICE_NVME_DISK}= Non-Volatile memory controller -${DEVICE_USB_KEYBOARD}= Logitech, Inc. Keyboard K120 -${DMIDECODE_PRODUCT_NAME}= NS50_70MU -${EXTERNAL_HEADSET}= USB PnP Audio Device -${USB_DEVICE}= SanDisk -${USB_MODEL}= USB Flash Memory -${CPU_MAX_FREQUENCY}= 4800 -${CPU_MIN_FREQUENCY}= 300 +${3_MDEB_WIFI_NETWORK}= 3mdeb_abr +${CLEVO_BATTERY_CAPACITY}= 3200*1000 +${CLEVO_DISK}= Samsung SSD 980 PRO +${CLEVO_USB_C_HUB}= 4-port +${DEVICE_NVME_DISK}= Non-Volatile memory controller +${DEVICE_USB_KEYBOARD}= Logitech, Inc. Keyboard K120 +${DMIDECODE_PRODUCT_NAME}= NS50_70MU +${EXTERNAL_HEADSET}= USB PnP Audio Device +${USB_DEVICE}= SanDisk +${USB_MODEL}= USB Flash Memory +${CPU_MAX_FREQUENCY}= 4800 +${CPU_MIN_FREQUENCY}= 300 # dasharo-compability ${FW_NO_EC_SYNC_DOWNLOAD_LINK}= -... https://dl.3mdeb.com/open-source-firmware/Dasharo/novacustom_ns5x_tgl/v1.5.1/novacustom_ns5x_tgl_v1.5.1.rom +... https://dl.3mdeb.com/open-source-firmware/Dasharo/novacustom_ns5x_tgl/v1.5.1/novacustom_ns5x_tgl_v1.5.1.rom ${EC_NO_SYNC_DOWNLOAD_LINK}= -... https://dl.3mdeb.com/open-source-firmware/Dasharo/novacustom_ns5x_tgl/v1.5.1/novacustom_ns5x_tgl_ec_v1.5.1.rom -${FW_NO_EC_SYNC_VERSION}= v1.5.1 -${EC_NO_SYNC_VERSION}= 2023-10-31_f148431 -${POWER_CTRL}= none +... https://dl.3mdeb.com/open-source-firmware/Dasharo/novacustom_ns5x_tgl/v1.5.1/novacustom_ns5x_tgl_ec_v1.5.1.rom +${FW_NO_EC_SYNC_VERSION}= v1.5.1 +${EC_NO_SYNC_VERSION}= 2023-10-31_f148431 + +${TESTS_IN_FIRMWARE_SUPPORT}= ${TRUE} +@{TESTED_LINUX_DISTROS}= ${ENV_ID_UBUNTU} diff --git a/platform-configs/novacustom-ns50pu.robot b/platform-configs/novacustom-ns50pu.robot index 66b9ce0b75..df2ea3f2d5 100644 --- a/platform-configs/novacustom-ns50pu.robot +++ b/platform-configs/novacustom-ns50pu.robot @@ -20,3 +20,5 @@ ${USB_DEVICE}= Kingston ${USB_MODEL}= USB Flash Memory ${CPU_MAX_FREQUENCY}= 4500 ${CPU_MIN_FREQUENCY}= 300 + +${OPTIONS_LIB}= options-lib_dcu diff --git a/platform-configs/novacustom-ns70mu.robot b/platform-configs/novacustom-ns70mu.robot index 015637dbe6..6ab5d86edb 100644 --- a/platform-configs/novacustom-ns70mu.robot +++ b/platform-configs/novacustom-ns70mu.robot @@ -28,3 +28,5 @@ ${EC_NO_SYNC_DOWNLOAD_LINK}= ... https://dl.3mdeb.com/open-source-firmware/Dasharo/novacustom_ns5x_tgl/v1.5.1/novacustom_ns5x_tgl_ec_v1.5.1.rom ${FW_NO_EC_SYNC_VERSION}= v1.5.1 ${EC_NO_SYNC_VERSION}= 2023-10-31_f148431 + +${OPTIONS_LIB}= options-lib_dcu diff --git a/platform-configs/novacustom-ns70pu.robot b/platform-configs/novacustom-ns70pu.robot index 6b60065604..86f9523163 100644 --- a/platform-configs/novacustom-ns70pu.robot +++ b/platform-configs/novacustom-ns70pu.robot @@ -20,3 +20,5 @@ ${USB_DEVICE}= Kingston ${USB_MODEL}= USB Flash Memory ${CPU_MAX_FREQUENCY}= 4500 ${CPU_MIN_FREQUENCY}= 300 + +${OPTIONS_LIB}= options-lib_dcu diff --git a/platform-configs/novacustom-nv41mb.robot b/platform-configs/novacustom-nv41mb.robot index f7fcb4c9e3..1e19758ea5 100644 --- a/platform-configs/novacustom-nv41mb.robot +++ b/platform-configs/novacustom-nv41mb.robot @@ -21,3 +21,4 @@ ${CPU_MAX_FREQUENCY}= 4800 ${CPU_MIN_FREQUENCY}= 300 ${NVIDIA_GRAPHICS_CARD_SUPPORT}= ${TRUE} +${OPTIONS_LIB}= options-lib_dcu diff --git a/platform-configs/novacustom-nv41mz.robot b/platform-configs/novacustom-nv41mz.robot index 299eb1c99c..6cfc3bd481 100644 --- a/platform-configs/novacustom-nv41mz.robot +++ b/platform-configs/novacustom-nv41mz.robot @@ -20,3 +20,5 @@ ${USB_DEVICE}= SanDisk ${USB_MODEL}= USB Flash Memory ${CPU_MAX_FREQUENCY}= 4800 ${CPU_MIN_FREQUENCY}= 300 + +${OPTIONS_LIB}= options-lib_dcu diff --git a/platform-configs/novacustom-nv41pz.robot b/platform-configs/novacustom-nv41pz.robot index 5e167891f9..6dc9a7f00a 100644 --- a/platform-configs/novacustom-nv41pz.robot +++ b/platform-configs/novacustom-nv41pz.robot @@ -27,3 +27,8 @@ ${POWER_CTRL}= none ${USB_STACK_SUPPORT}= ${TRUE} ${TESTS_IN_WINDOWS_SUPPORT}= ${FALSE} + +${TPM_SUPPORTED_VERSION}= 2 +${TPM_EXPECTED_CHIP}= SLB9670 + +${OPTIONS_LIB}= options-lib_dcu diff --git a/platform-configs/novacustom-v540tnd.robot b/platform-configs/novacustom-v540tnd.robot index f0616cedb4..513ff693ba 100644 --- a/platform-configs/novacustom-v540tnd.robot +++ b/platform-configs/novacustom-v540tnd.robot @@ -14,8 +14,7 @@ ${EXTERNAL_HEADSET}= USB PnP Audio Device ${CPU_MAX_FREQUENCY}= 4800 ${CPU_MIN_FREQUENCY}= 200 -${NVIDIA_GRAPHICS_CARD_SUPPORT}= ${TRUE} - +${DGPU_ONLY_SUPPORT}= ${TRUE} ${TESTS_IN_WINDOWS_SUPPORT}= ${FALSE} # change windows/ubuntu support depending ${TESTS_IN_UBUNTU_SUPPORT}= ${TRUE} # on which OS is first in the boot order @@ -25,7 +24,6 @@ ${WEBCAM_UBUNTU}= Chicony Electronics Co., Ltd Chi ${MINI_PC_IE_SLOT_SUPPORT}= ${TRUE} ${WIFI_CARD}= ... Network controller: Intel Corporation Meteor Lake PCH CNVi WiFi (rev 20) -${CPU_TESTS_SUPPORT}= ${TRUE} ${USB_DEVICE}= SanDisk ${ME_STATICALLY_DISABLED}= ${TRUE} ${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v0.9.1-rc5 @@ -35,3 +33,42 @@ ${CLEVO_USB_C_HUB}= Thunderbolt 4 Dock ${DOCKING_STATION_USB_C_CHARGING_SUPPORT}= ${TRUE} ${DOCKING_STATION_AUDIO_SUPPORT}= ${TRUE} ${VERIFIED_BOOT_SUPPORT}= ${TRUE} + +${TPM_SUPPORTED_VERSION}= 2 +${TPM_EXPECTED_CHIP}= SLB9672 + +# performance +${ZIP_MULTI_COMPRESSION}= 63476 # MIPS +${ZIP_MULTI_DECOMPRESSION}= 39336 # MIPS +${CRAY_5_K_RENDER}= 654.5 # sec +${CRAY_4_K_RENDER}= 356.9 # sec +${CRAY_1080_P_RENDER}= 90.8 # sec +${COREMARK_SINGLE}= 400079.5 # iterations/s + +# disk i-o +${UBU_SEQ_READ_QUEUED}= 4677 # MB/s +${UBU_SEQ_WRITE_QUEUED}= 1878.5 # MB/s +${UBU_SEQ_READ_NONQUE}= 2232.5 # MB/s +${UBU_SEQ_WRITE_NONQUE}= 1884.7 # MB/s +${UBU_RAND_READ_QUEUED}= 823 # MB/s +${UBU_RAND_WRITE_QUEUED}= 917.3 # MB/s +${UBU_RAND_READ_NONQUE}= 68.6 # MB/s +${UBU_RAND_WRITE_NONQUE}= 272.1 # MB/s + +${WIN_SEQ_READ_QUEUED}= 7119.5 # MB/s +${WIN_SEQ_WRITE_QUEUED}= 6511.4 # MB/s +${WIN_SEQ_READ_NONQUE}= 5001.2 # MB/s +${WIN_SEQ_WRITE_NONQUE}= 5475.5 # MB/s +${WIN_RAND_READ_QUEUED}= 886.5 # MB/s +${WIN_RAND_WRITE_QUEUED}= 461.3 # MB/s +${WIN_RAND_READ_NONQUE}= 82.8 # MB/s +${WIN_RAND_WRITE_NONQUE}= 239.6 # MB/s + +# GPU Performance +# Reference config: Medium preset, 1920x1080, Windowed +${GPU_PERFORMANCE_TESTS_SUPPORT}= ${TRUE} +${NVIDIA_GRAPHICS_CARD_SUPPORT}= ${TRUE} +${UNIGINE_SUPERPOSITION_RESULT_AC}= 94.4 # FPS +${UNIGINE_SUPERPOSITION_RESULT_BAT}= 21.9 # FPS + +${OPTIONS_LIB}= options-lib_dcu diff --git a/platform-configs/novacustom-v540tu.robot b/platform-configs/novacustom-v540tu.robot index d1e812ce9b..8b19eafe8f 100644 --- a/platform-configs/novacustom-v540tu.robot +++ b/platform-configs/novacustom-v540tu.robot @@ -1,18 +1,64 @@ *** Settings *** -Resource include/novacustom-common.robot Resource include/novacustom-mtl.robot +Resource include/novacustom-common.robot *** Variables *** # CPU -${CPU}= Intel(R) Core(TM) Ultra 7 155H +${CPU}= Intel(R) Core(TM) Ultra 7 155H + +${3_MDEB_WIFI_NETWORK}= 3mdeb_abr +${DEVICE_NVME_DISK}= Non-Volatile memory controller +${DEVICE_USB_KEYBOARD}= Logitech, Inc. Keyboard K120 +${DMIDECODE_PRODUCT_NAME}= V540TU +${EXTERNAL_HEADSET}= JMTek, LLC. USB Audio +${CPU_MAX_FREQUENCY}= 4800 +${CPU_MIN_FREQUENCY}= 300 + +${OPTIONS_LIB}= options-lib_dcu +${POWER_CTRL}= none + +${DEFAULT_BOOT_OS_ID}= ${ENV_ID_UBUNTU} +@{TESTED_LINUX_DISTROS}= ${ENV_ID_UBUNTU} ${ENV_ID_FEDORA} +${CLEVO_USB_C_HUB}= Billboard Device +${USB_DEVICE}= Linux + +# performance +${ZIP_MULTI_COMPRESSION}= 63476 # MIPS +${ZIP_MULTI_DECOMPRESSION}= 39336 # MIPS +${CRAY_5_K_RENDER}= 654.5 # sec +${CRAY_4_K_RENDER}= 356.9 # sec +${CRAY_1080_P_RENDER}= 90.8 # sec +${COREMARK_SINGLE}= 400079.5 # iterations/s + +# disk i-o +${UBU_SEQ_READ_QUEUED}= 4677 # MB/s +${UBU_SEQ_WRITE_QUEUED}= 1878.5 # MB/s +${UBU_SEQ_READ_NONQUE}= 2232.5 # MB/s +${UBU_SEQ_WRITE_NONQUE}= 1884.7 # MB/s +${UBU_RAND_READ_QUEUED}= 823 # MB/s +${UBU_RAND_WRITE_QUEUED}= 917.3 # MB/s +${UBU_RAND_READ_NONQUE}= 68.6 # MB/s +${UBU_RAND_WRITE_NONQUE}= 272.1 # MB/s + +${WIN_SEQ_READ_QUEUED}= 7119.5 # MB/s +${WIN_SEQ_WRITE_QUEUED}= 6511.4 # MB/s +${WIN_SEQ_READ_NONQUE}= 5001.2 # MB/s +${WIN_SEQ_WRITE_NONQUE}= 5475.5 # MB/s +${WIN_RAND_READ_QUEUED}= 886.5 # MB/s +${WIN_RAND_WRITE_QUEUED}= 461.3 # MB/s +${WIN_RAND_READ_NONQUE}= 82.8 # MB/s +${WIN_RAND_WRITE_NONQUE}= 239.6 # MB/s + +${CLEVO_BATTERY_CAPACITY}= 4643000 # /sys/class/power_supply/BAT0/charge_full + +# GPU Performance +# Reference config: Medium preset, 1920x1080, Windowed +${GPU_PERFORMANCE_TESTS_SUPPORT}= ${TRUE} +${UNIGINE_SUPERPOSITION_RESULT_AC}= 20.6 # FPS +${UNIGINE_SUPERPOSITION_RESULT_BAT}= 20.3 # FPS -${3_MDEB_WIFI_NETWORK}= 3mdeb_abr -${DEVICE_NVME_DISK}= Non-Volatile memory controller -${DEVICE_USB_KEYBOARD}= Logitech, Inc. Keyboard K120 -${DMIDECODE_PRODUCT_NAME}= V540TU -${EXTERNAL_HEADSET}= USB PnP Audio Device -${CPU_MAX_FREQUENCY}= 4800 -${CPU_MIN_FREQUENCY}= 300 -${NVIDIA_GRAPHICS_CARD_SUPPORT}= ${FALSE} +*** Keywords *** +Power On + Novacustom-common.Power On diff --git a/platform-configs/novacustom-v560tnd.robot b/platform-configs/novacustom-v560tnd.robot index ca2e010bdd..b1cd1f89ec 100644 --- a/platform-configs/novacustom-v560tnd.robot +++ b/platform-configs/novacustom-v560tnd.robot @@ -14,11 +14,51 @@ ${EXTERNAL_HEADSET}= USB PnP Audio Device ${CPU_MAX_FREQUENCY}= 4800 ${CPU_MIN_FREQUENCY}= 200 -${NVIDIA_GRAPHICS_CARD_SUPPORT}= ${TRUE} - ${TESTS_IN_WINDOWS_SUPPORT}= ${FALSE} # change windows/ubuntu support depending ${TESTS_IN_UBUNTU_SUPPORT}= ${TRUE} # on which OS is first in the boot order ${USB_DETECTION_ITERATIONS_NUMBER}= 3 ${BOOT_FROM_USB_ITERATIONS_NUMBER}= 3 ${WIFI_CARD}= Intel(R) Wi-Fi 6E AX211 160MHz +${CLEVO_USB_C_HUB}= Thunderbolt 4 Dock + +${OPTIONS_LIB}= options-lib_dcu +${POWER_CTRL}= none + +${DGPU_ONLY_SUPPORT}= ${TRUE} + +${DISK_IO_PERFORMANCE_TESTS}= ${TRUE} + +# performance +${ZIP_MULTI_COMPRESSION}= 79729 # MIPS +${ZIP_MULTI_DECOMPRESSION}= 52410 # MIPS +${CRAY_5_K_RENDER}= 585.333 # sec +${CRAY_4_K_RENDER}= 326.895 # sec +${CRAY_1080_P_RENDER}= 80.547 # sec +${COREMARK_SINGLE}= 407451.446 # iterations/s + +# disk i-o +${UBU_SEQ_READ_QUEUED}= 5953.5 # MB/s +${UBU_SEQ_WRITE_QUEUED}= 5728.6 # MB/s +${UBU_SEQ_READ_NONQUE}= 4357.4 # MB/s +${UBU_SEQ_WRITE_NONQUE}= 4293.5 # MB/s +${UBU_RAND_READ_QUEUED}= 5944.8 # MB/s +${UBU_RAND_WRITE_QUEUED}= 5634.1 # MB/s +${UBU_RAND_READ_NONQUE}= 3653.9 # MB/s +${UBU_RAND_WRITE_NONQUE}= 4083.7 # MB/s + +${WIN_SEQ_READ_QUEUED}= ${EMPTY} # MB/s +${WIN_SEQ_WRITE_QUEUED}= ${EMPTY} # MB/s +${WIN_SEQ_READ_NONQUE}= ${EMPTY} # MB/s +${WIN_SEQ_WRITE_NONQUE}= ${EMPTY} # MB/s +${WIN_RAND_READ_QUEUED}= ${EMPTY} # MB/s +${WIN_RAND_WRITE_QUEUED}= ${EMPTY} # MB/s +${WIN_RAND_READ_NONQUE}= ${EMPTY} # MB/s +${WIN_RAND_WRITE_NONQUE}= ${EMPTY} # MB/s + +# GPU Performance +# Reference config: Medium preset, 1920x1080, Windowed +${GPU_PERFORMANCE_TESTS_SUPPORT}= ${TRUE} +${NVIDIA_GRAPHICS_CARD_SUPPORT}= ${TRUE} +${UNIGINE_SUPERPOSITION_RESULT_AC}= 104.5 # FPS +${UNIGINE_SUPERPOSITION_RESULT_BAT}= 24.0 # FPS diff --git a/platform-configs/novacustom-v560tne.robot b/platform-configs/novacustom-v560tne.robot index ca2e010bdd..9e02795aeb 100644 --- a/platform-configs/novacustom-v560tne.robot +++ b/platform-configs/novacustom-v560tne.robot @@ -14,11 +14,47 @@ ${EXTERNAL_HEADSET}= USB PnP Audio Device ${CPU_MAX_FREQUENCY}= 4800 ${CPU_MIN_FREQUENCY}= 200 -${NVIDIA_GRAPHICS_CARD_SUPPORT}= ${TRUE} - ${TESTS_IN_WINDOWS_SUPPORT}= ${FALSE} # change windows/ubuntu support depending ${TESTS_IN_UBUNTU_SUPPORT}= ${TRUE} # on which OS is first in the boot order ${USB_DETECTION_ITERATIONS_NUMBER}= 3 ${BOOT_FROM_USB_ITERATIONS_NUMBER}= 3 ${WIFI_CARD}= Intel(R) Wi-Fi 6E AX211 160MHz +${DGPU_ONLY_SUPPORT}= ${TRUE} +${CLEVO_USB_C_HUB}= Thunderbolt 4 Dock + +# performance +${ZIP_MULTI_COMPRESSION}= 79729 # MIPS +${ZIP_MULTI_DECOMPRESSION}= 52410 # MIPS +${CRAY_5_K_RENDER}= 585.333 # sec +${CRAY_4_K_RENDER}= 326.895 # sec +${CRAY_1080_P_RENDER}= 80.547 # sec +${COREMARK_SINGLE}= 407451.446 # iterations/s + +# disk i-o +${UBU_SEQ_READ_QUEUED}= 5953.5 # MB/s +${UBU_SEQ_WRITE_QUEUED}= 5728.6 # MB/s +${UBU_SEQ_READ_NONQUE}= 4357.4 # MB/s +${UBU_SEQ_WRITE_NONQUE}= 4293.5 # MB/s +${UBU_RAND_READ_QUEUED}= 5944.8 # MB/s +${UBU_RAND_WRITE_QUEUED}= 5634.1 # MB/s +${UBU_RAND_READ_NONQUE}= 3653.9 # MB/s +${UBU_RAND_WRITE_NONQUE}= 4083.7 # MB/s + +${WIN_SEQ_READ_QUEUED}= ${EMPTY} # MB/s +${WIN_SEQ_WRITE_QUEUED}= ${EMPTY} # MB/s +${WIN_SEQ_READ_NONQUE}= ${EMPTY} # MB/s +${WIN_SEQ_WRITE_NONQUE}= ${EMPTY} # MB/s +${WIN_RAND_READ_QUEUED}= ${EMPTY} # MB/s +${WIN_RAND_WRITE_QUEUED}= ${EMPTY} # MB/s +${WIN_RAND_READ_NONQUE}= ${EMPTY} # MB/s +${WIN_RAND_WRITE_NONQUE}= ${EMPTY} # MB/s + +# GPU Performance +# Reference config: Medium preset, 1920x1080, Windowed +${GPU_PERFORMANCE_TESTS_SUPPORT}= ${TRUE} +${NVIDIA_GRAPHICS_CARD_SUPPORT}= ${TRUE} +${UNIGINE_SUPERPOSITION_RESULT_AC}= 114 # FPS +${UNIGINE_SUPERPOSITION_RESULT_BAT}= 26.2 # FPS + +${OPTIONS_LIB}= options-lib_dcu diff --git a/platform-configs/novacustom-v560tu.robot b/platform-configs/novacustom-v560tu.robot index a1b5d8de2a..67b2842faa 100644 --- a/platform-configs/novacustom-v560tu.robot +++ b/platform-configs/novacustom-v560tu.robot @@ -5,26 +5,61 @@ Resource include/novacustom-mtl.robot *** Variables *** # CPU -${CPU}= Intel(R) Core(TM) Ultra 5 125H -${DEF_CORES_PER_SOCKET}= 14 -${DEF_THREADS_TOTAL}= 18 - -${3_MDEB_WIFI_NETWORK}= 3mdeb_abr -${DEVICE_NVME_DISK}= Non-Volatile memory controller -${DEVICE_USB_KEYBOARD}= Logitech, Inc. Keyboard K120 -${DMIDECODE_PRODUCT_NAME}= V54x_6x_TU -${EXTERNAL_HEADSET}= USB PnP Audio Device -${CPU_MAX_FREQUENCY}= 4500 -${CPU_MIN_FREQUENCY}= 300 -${BLUETOOTH_CARD_UBUNTU}= 8087:0033 -${NVIDIA_GRAPHICS_CARD_SUPPORT}= ${FALSE} -${WEBCAM_UBUNTU}= USB2.0 Camera - -${POWER_CTRL}= none -${SNIPEIT}= no -${FLASH_SIZE}= 33554432 - -${TESTS_IN_WINDOWS_SUPPORT}= ${FALSE} -${TESTS_IN_UBUNTU_SUPPORT}= ${TRUE} -${USB_STACK_SUPPORT}= ${TRUE} -${CLEVO_BATTERY_CAPACITY}= 4602000 +${CPU}= Intel(R) Core(TM) Ultra 5 125H +${DEF_CORES_PER_SOCKET}= 14 +${DEF_THREADS_TOTAL}= 18 + +${3_MDEB_WIFI_NETWORK}= 3mdeb_abr +${DEVICE_NVME_DISK}= Non-Volatile memory controller +${DEVICE_USB_KEYBOARD}= Logitech, Inc. Keyboard K120 +${DMIDECODE_PRODUCT_NAME}= V54x_6x_TU +${EXTERNAL_HEADSET}= USB PnP Audio Device +${CPU_MAX_FREQUENCY}= 4500 +${CPU_MIN_FREQUENCY}= 300 +${BLUETOOTH_CARD_UBUNTU}= 8087:0033 +${WEBCAM_UBUNTU}= USB2.0 Camera +${CLEVO_USB_C_HUB}= Thunderbolt 4 Dock + +${POWER_CTRL}= none +${SNIPEIT}= no +${FLASH_SIZE}= 33554432 + +${TESTS_IN_WINDOWS_SUPPORT}= ${FALSE} +${TESTS_IN_UBUNTU_SUPPORT}= ${TRUE} +${USB_STACK_SUPPORT}= ${TRUE} +${CLEVO_BATTERY_CAPACITY}= 4602000 + +# performance reference for processor ultra 5 125h +${ZIP_MULTI_COMPRESSION}= 15923 # MIPS +${ZIP_MULTI_DECOMPRESSION}= 12245 # MIPS +${CRAY_5_K_RENDER}= 2210.755 # sec +${CRAY_4_K_RENDER}= 1349.461 # sec +${CRAY_1080_P_RENDER}= 308.289 # sec +${COREMARK_SINGLE}= 92891.774 # iterations/s + +# disk i-o +${UBU_SEQ_READ_QUEUED}= 5953.5 # MB/s +${UBU_SEQ_WRITE_QUEUED}= 5728.6 # MB/s +${UBU_SEQ_READ_NONQUE}= 4357.4 # MB/s +${UBU_SEQ_WRITE_NONQUE}= 4293.5 # MB/s +${UBU_RAND_READ_QUEUED}= 5944.8 # MB/s +${UBU_RAND_WRITE_QUEUED}= 5634.1 # MB/s +${UBU_RAND_READ_NONQUE}= 3653.9 # MB/s +${UBU_RAND_WRITE_NONQUE}= 4083.7 # MB/s + +${WIN_SEQ_READ_QUEUED}= ${EMPTY} # MB/s +${WIN_SEQ_WRITE_QUEUED}= ${EMPTY} # MB/s +${WIN_SEQ_READ_NONQUE}= ${EMPTY} # MB/s +${WIN_SEQ_WRITE_NONQUE}= ${EMPTY} # MB/s +${WIN_RAND_READ_QUEUED}= ${EMPTY} # MB/s +${WIN_RAND_WRITE_QUEUED}= ${EMPTY} # MB/s +${WIN_RAND_READ_NONQUE}= ${EMPTY} # MB/s +${WIN_RAND_WRITE_NONQUE}= ${EMPTY} # MB/s + +# GPU Performance +# Reference config: Medium preset, 1920x1080, Windowed +${GPU_PERFORMANCE_TESTS_SUPPORT}= ${TRUE} +${UNIGINE_SUPERPOSITION_RESULT_AC}= 24.5 # FPS +${UNIGINE_SUPERPOSITION_RESULT_BAT}= 23.5 # FPS + +${OPTIONS_LIB}= options-lib_dcu diff --git a/platform-configs/odroid-h4-plus.robot b/platform-configs/odroid-h4-plus.robot index 87fb7d2b47..f72507c4c0 100644 --- a/platform-configs/odroid-h4-plus.robot +++ b/platform-configs/odroid-h4-plus.robot @@ -3,63 +3,110 @@ Resource include/default.robot *** Variables *** -${INITIAL_DUT_CONNECTION_METHOD}= pikvm -${DUT_CONNECTION_METHOD}= pikvm -${FLASH_SIZE}= ${16*1024*1024} -${FLASH_LENGTH}= ${TBD} -${MANUFACTURER}= Hardkernel -${CPU}= Intel(R) N97 -${POWER_CTRL}= RteCtrl -${FLASH_VERIFY_METHOD}= tianocore-shell -${WIFI_CARD}= ${TBD} -${MAX_CPU_TEMP}= ${TBD} -${FW_VERSION}= ${TBD} -${DMIDECODE_SERIAL_NUMBER}= 123456789 -${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v0.9.0-rc1 -${DMIDECODE_PRODUCT_NAME}= ODROID-H4 -${DMIDECODE_RELEASE_DATE}= ${TBD} -${DMIDECODE_MANUFACTURER}= HARDKERNEL -${DMIDECODE_VENDOR}= ${TBD} -${DMIDECODE_FAMILY}= Default String -${DMIDECODE_TYPE}= Desktop -${DEVICE_USB_KEYBOARD}= ${TBD} -${DEVICE_NVME_DISK}= Samsung Electronics Co Ltd Device a80c -${DEVICE_AUDIO1}= HDA Intel PCH # codespell:ignore -${DEVICE_AUDIO2}= ${TBD} -${DEVICE_AUDIO1_WIN}= ${TBD} -${WIFI_CARD_UBUNTU}= ${TBD} -${USB_MODEL}= ${TBD} -${USB_DEVICE}= ${TBD} -${FLASHROM_FLAGS}= ${TBD} -${TESTS_IN_FIRMWARE_SUPPORT}= ${TRUE} -${TESTS_IN_UBUNTU_SUPPORT}= ${TRUE} -${TESTS_IN_WINDOWS_SUPPORT}= ${TRUE} -${CUSTOM_BOOT_MENU_KEY_SUPPORT}= ${TRUE} +${INITIAL_DUT_CONNECTION_METHOD}= Telnet +${DUT_CONNECTION_METHOD}= Telnet +${FLASH_SIZE}= ${16*1024*1024} +${FLASH_LENGTH}= ${TBD} +${MANUFACTURER}= Hardkernel +${CPU}= Intel(R) N97 +${POWER_CTRL}= RteCtrl +${FLASH_VERIFY_METHOD}= tianocore-shell +${MAX_CPU_TEMP}= 105 +${FW_VERSION}= v0.9.0-rc3 +${DMIDECODE_SERIAL_NUMBER}= 123456789 +${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v0.9.0-rc3 +${DMIDECODE_PRODUCT_NAME}= ODROID-H4 +${DMIDECODE_RELEASE_DATE}= 12/10/2024 +${DMIDECODE_MANUFACTURER}= HARDKERNEL +${DMIDECODE_VENDOR}= 3mdeb +${DMIDECODE_FAMILY}= Default String +${DMIDECODE_TYPE}= Desktop +${DEVICE_USB_KEYBOARD}= Logitech, Inc. Keyboard K120 +${DEVICE_NVME_DISK}= Non-Volatile memory controller +${CLEVO_DISK}= Samsung SSD 990 PRO 1TB +${USB_DEVICE}= Multifunction Composite Gadget +${FLASHROM_FLAGS}= ${TBD} +${TESTS_IN_FIRMWARE_SUPPORT}= ${TRUE} +${TESTS_IN_UBUNTU_SUPPORT}= ${TRUE} +${CUSTOM_BOOT_MENU_KEY_SUPPORT}= ${TRUE} +${CUSTOM_SETUP_MENU_KEY_SUPPORT}= ${TRUE} +${DCU_UUID_SUPPORT}= ${TRUE} +${DCU_SERIAL_SUPPORT}= ${TRUE} +${CUSTOM_LOGO_SUPPORT}= ${TRUE} +${DCU_SUPPORTED_BOOLEAN_SMMSTORE_VARIABLE}= ${EMPTY} +${ETH_PORTS}= ${EMPTY} +${USB_DISKS_DETECTION_SUPPORT}= ${TRUE} +${USB_KEYBOARD_DETECTION_SUPPORT}= ${TRUE} +${NVME_DISK_SUPPORT}= ${TRUE} +${EMMC_SUPPORT}= ${TRUE} +${AUDIO_SUBSYSTEM_SUPPORT}= ${TRUE} +${EXTERNAL_HEADSET_SUPPORT}= ${TRUE} +${EXTERNAL_HDMI_DISPLAY_SUPPORT}= ${TRUE} +${EXTERNAL_DISPLAY_PORT_SUPPORT}= ${TRUE} -${INITIAL_CPU_FREQUENCY}= 800 -${PLATFORM_CPU_SPEED}= 3,60 -${CPU_MIN_FREQUENCY}= 800 -${CPU_MAX_FREQUENCY}= 3600 -${PLATFORM_RAM_SPEED}= 4800 -${PLATFORM_RAM_SIZE}= 8192 -${E_MMC_NAME}= PJ3032 -${DEF_THREADS_TOTAL}= 4 -${DEF_THREADS_PER_CORE}= 1 -${DEF_CORES_PER_SOCKET}= 4 -${DEF_SOCKETS}= 1 -${DEF_ONLINE_CPU}= 0-3 -${FLASH_VERIFY_OPTION}= UEFI Shell # Selected One Time Boot option -${RESET_TO_DEFAULTS_SUPPORT}= ${TRUE} -${TPM_SUPPORT}= ${TRUE} -${IPXE_BOOT_SUPPORT}= ${TRUE} -${FIRMWARE_NUMBER_VERIFICATION}= ${TRUE} -${PRODUCT_NAME_VERIFICATION}= ${TRUE} -${WIRELESS_CARD_WIFI_SUPPORT}= ${TRUE} -${PLATFORM_STABILITY_CHECKING}= ${TRUE} -${ONLY_FLASH_BIOS}= ${TRUE} -${AUTO_BOOT_TIME_OUT_DEFAULT_VALUE}= 2 +${INITIAL_CPU_FREQUENCY}= 800 +${PLATFORM_CPU_SPEED}= 2.0 +${CPU_MIN_FREQUENCY}= 800 +${CPU_MAX_FREQUENCY}= 3600 +${PLATFORM_RAM_SPEED}= 4800 +${PLATFORM_RAM_SIZE}= 8192 +${E_MMC_NAME}= PJ3032 +${DEF_THREADS_TOTAL}= 4 +${DEF_THREADS_PER_CORE}= 1 +${DEF_CORES_PER_SOCKET}= 4 +${DEF_SOCKETS}= 1 +${DEF_ONLINE_CPU}= 0-3 +${FLASH_VERIFY_OPTION}= UEFI Shell # Selected One Time Boot option +${L2_CACHE_SUPPORT}= ${TRUE} +${L3_CACHE_SUPPORT}= ${TRUE} +${RESET_TO_DEFAULTS_SUPPORT}= ${TRUE} +${IPXE_BOOT_SUPPORT}= ${TRUE} +${DASHARO_NETWORKING_MENU_SUPPORT}= ${TRUE} +${SERIAL_NUMBER_VERIFICATION}= ${TRUE} +${RELEASE_DATE_VERIFICATION}= ${TRUE} +${MANUFACTURER_VERIFICATION}= ${TRUE} +${FIRMWARE_NUMBER_VERIFICATION}= ${TRUE} +${PRODUCT_NAME_VERIFICATION}= ${TRUE} +${VENDOR_VERIFICATION}= ${TRUE} +${CUSTOM_NETWORK_BOOT_ENTRIES_SUPPORT}= ${TRUE} +${ONLY_FLASH_BIOS}= ${TRUE} +${UEFI_COMPATIBLE_INTERFACE_SUPPORT}= ${TRUE} +${CPU_TESTS_SUPPORT}= ${TRUE} +${DASHARO_POWER_MGMT_MENU_SUPPORT}= ${TRUE} +${ESP_SCANNING_SUPPORT}= ${TRUE} +${SUSPEND_AND_RESUME_SUPPORT}= ${TRUE} +${AUTO_BOOT_TIME_OUT_DEFAULT_VALUE}= 2 +${USB_DETECTION_ITERATIONS_NUMBER}= 5 +${BOOT_FROM_USB_ITERATIONS_NUMBER}= 5 + +# Dasharo performance +${CPU_FREQUENCY_MEASURE}= ${TRUE} +${SERIAL_BOOT_MEASURE}= ${TRUE} +${CPU_TEMPERATURE_MEASURE}= ${TRUE} +${PLATFORM_STABILITY_CHECKING}= ${TRUE} + +# Dasharo security +${TPM_SUPPORTED_VERSION}= 2 +${TPM_DETECT_SUPPORT}= ${TRUE} +${VERIFIED_BOOT_SUPPORT}= ${TRUE} +${BIOS_LOCK_SUPPORT}= ${TRUE} +${DASHARO_SECURITY_MENU_SUPPORT}= ${TRUE} +${SECURE_BOOT_SUPPORT}= ${TRUE} +${UEFI_PASSWORD_SUPPORT}= ${TRUE} +${DASHARO_USB_MENU_SUPPORT}= ${TRUE} +${SMM_WRITE_PROTECTION_SUPPORT}= ${TRUE} +${VERIFIED_BOOT_POPUP_SUPPORT}= ${TRUE} +${MEASURED_BOOT_SUPPORT}= ${TRUE} +${USB_STACK_SUPPORT}= ${TRUE} +${USB_MASS_STORAGE_SUPPORT}= ${TRUE} + +# Dasharo stability +${NVME_DETECTION_SUPPORT}= ${TRUE} +${USB_TYPE-A_DEVICES_DETECTION_SUPPORT}= ${TRUE} +${STABILITY_DETECTION_SUSPEND_ITERATIONS}= 5 *** Keywords *** Power On + [Documentation] Implementation of keywords.Power On Power On Default diff --git a/platform-configs/optiplex-7010.robot b/platform-configs/optiplex-7010.robot index c961a43a33..92f974843f 100644 --- a/platform-configs/optiplex-7010.robot +++ b/platform-configs/optiplex-7010.robot @@ -24,7 +24,6 @@ ${DEF_CPU}= 2 ${DRAM_SIZE}= ${16384} ${PLATFORM_RAM_SIZE}= 16384 -${DEVICE_AUDIO1}= DA Intel PCH ${DMIDECODE_PRODUCT_NAME}= OptiPlex 9010 ${DMIDECODE_SERIAL_NUMBER}= 123456789 ${DMIDECODE_MANUFACTURER}= Dell Inc. diff --git a/platform-configs/protectli-v1210.robot b/platform-configs/protectli-v1210.robot index 85824c100b..f4b7d7ce3d 100644 --- a/platform-configs/protectli-v1210.robot +++ b/platform-configs/protectli-v1210.robot @@ -15,3 +15,4 @@ ${PLATFORM_RAM_SIZE}= 4096 @{ETH_PORTS}= 64-62-66-2f-00-12 ... 64-62-66-2f-00-13 ${ETHERNET_ID}= 8086:125c +@{ETH_PERF_PAIR_2_G}= eno0 eno1 diff --git a/platform-configs/protectli-v1211.robot b/platform-configs/protectli-v1211.robot index b3da8cf58c..2506ddcb4b 100644 --- a/platform-configs/protectli-v1211.robot +++ b/platform-configs/protectli-v1211.robot @@ -15,3 +15,4 @@ ${PLATFORM_RAM_SIZE}= 8192 @{ETH_PORTS}= 64-62-66-2f-07-d2 ... 64-62-66-2f-07-d3 ${ETHERNET_ID}= 8086:125c +@{ETH_PERF_PAIR_2_G}= eno0 eno1 diff --git a/platform-configs/protectli-vp2410.robot b/platform-configs/protectli-vp2410.robot index 09aef0c436..05c7ff92e7 100644 --- a/platform-configs/protectli-vp2410.robot +++ b/platform-configs/protectli-vp2410.robot @@ -13,12 +13,11 @@ ${INITIAL_CPU_FREQUENCY}= 2000 ${MAX_CPU_TEMP}= 77 ${CPU_MAX_FREQUENCY}= 2800 ${CPU_MIN_FREQUENCY}= 300 +${CHECK_POWER_LED_SUPPORT}= ${False} # eMMC driver support ${E_MMC_NAME}= 8GTF4R -@{ATTACHED_USB}= @{EMPTY} - ${DMIDECODE_SERIAL_NUMBER}= N/A ${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v ${DMIDECODE_PRODUCT_NAME}= VP2410 @@ -42,3 +41,10 @@ ${PLATFORM_RAM_SPEED}= 2400 ${PLATFORM_RAM_SIZE}= 8192 @{ETH_PERF_PAIR_1_G}= enp2s0 enp3s0 + +@{ETH_PORTS}= 64-62-66-21-03-b8 +... 64-62-66-21-03-b9 +... 64-62-66-21-03-ba +... 64-62-66-21-03-bb + +${ETHERNET_ID}= 8086:1539 diff --git a/platform-configs/protectli-vp2420.robot b/platform-configs/protectli-vp2420.robot index fb43859cd4..5d2be09413 100644 --- a/platform-configs/protectli-vp2420.robot +++ b/platform-configs/protectli-vp2420.robot @@ -8,27 +8,51 @@ ${FLASHING_METHOD}= internal # eMMC driver support ${E_MMC_NAME}= 8GTF4R + ${DMIDECODE_SERIAL_NUMBER}= N/A -${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v1.2.0 +${DMIDECODE_FIRMWARE_VERSION}= +... Dasharo (coreboot+UEFI) v1.2.1-rc3 ${DMIDECODE_PRODUCT_NAME}= VP2420 -${DMIDECODE_RELEASE_DATE}= 10/12/2023 -${DMIDECODE_TYPE}= N/A +${DMIDECODE_RELEASE_DATE}= 1/13/2025 +${DMIDECODE_TYPE}= Desktop ${CPU_MAX_FREQUENCY}= 2700 ${CPU_MIN_FREQUENCY}= 300 ${WATCHDOG_SUPPORT}= ${TRUE} +${DEF_THREADS_TOTAL}= 4 +${DEF_THREADS_PER_CORE}= 1 +${DEF_CORES_PER_SOCKET}= 4 +${DEF_SOCKETS}= 1 +${DEF_ONLINE_CPU}= 0-3 + +${PLATFORM_CPU_SPEED}= 2.00 +${PLATFORM_RAM_SPEED}= 2933 +${PLATFORM_RAM_SIZE}= 8192 + +${WIFI_CARD}= Qualcomm Atheros QCA61x4A Wireless Network Adapter +${WIFI_CARD_UBUNTU}= Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter + @{ETH_PERF_PAIR_2_G}= enp3s0 enp4s0 +@{ETH_PORTS}= 00-e0-67-1c-29-79 +... 00-e0-67-1c-29-7a +... 00-e0-67-1c-29-7b +... 00-e0-67-1c-29-7c + +${ETHERNET_ID}= 8086:15f3 +${NVME_DISK_SUPPORT}= ${FALSE} + +${TPM_EXPECTED_CHIP}= SLB9670 + *** Keywords *** Flash Protectli VP2420 Internal Make Sure That Flash Locks Are Disabled Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Get Flashrom From Cloud Send File To DUT ${FW_FILE} /tmp/dasharo.rom Flash Via Internal Programmer /tmp/dasharo.rom "bios" diff --git a/platform-configs/protectli-vp2430.robot b/platform-configs/protectli-vp2430.robot index 2d58c11c35..ef569b9536 100644 --- a/platform-configs/protectli-vp2430.robot +++ b/platform-configs/protectli-vp2430.robot @@ -9,18 +9,16 @@ ${FLASHING_METHOD}= external # eMMC driver support ${E_MMC_NAME}= BJTD4R -@{ATTACHED_USB}= ${TBD} - ${DMIDECODE_SERIAL_NUMBER}= 123456789 -${DMIDECODE_FIRMWARE_VERSION}= N/A +${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v0.9.0-rc2 ${DMIDECODE_PRODUCT_NAME}= VP2430 -${DMIDECODE_RELEASE_DATE}= N/A +${DMIDECODE_RELEASE_DATE}= 12/17/2024 ${DMIDECODE_TYPE}= Desktop ${CPU_MAX_FREQUENCY}= 3400 ${CPU_MIN_FREQUENCY}= 700 -${WATCHDOG_SUPPORT}= ${TRUE} +${WATCHDOG_SUPPORT}= ${FALSE} ${DEF_THREADS_TOTAL}= 4 ${DEF_THREADS_PER_CORE}= 1 @@ -28,17 +26,29 @@ ${DEF_CORES_PER_SOCKET}= 4 ${DEF_SOCKETS}= 1 ${DEF_ONLINE_CPU}= 0-3 -${PLATFORM_CPU_SPEED}= 0,80 # get-robot-variables suggests 3,40, but 0,80 is what setup menu shows +${PLATFORM_CPU_SPEED}= 0.80 # get-robot-variables suggests 3,40, but 0,80 is what setup menu shows ${PLATFORM_RAM_SPEED}= 4800 -${PLATFORM_RAM_SIZE}= 16384 +${PLATFORM_RAM_SIZE}= 49152 ${CPU}= Intel(R) N100 -${DEVICE_AUDIO1}= Alderlake-P HDMI -${DEVICE_AUDIO1_WIN}= ${TBD} -# On Windows: "Killer(R) Wi-Fi 6 AX1650x 160MHz Wireless Network Adapter (200NGW)" -${WIFI_CARD}= -... ${TBD} +${WIFI_CARD}= Qualcomm Atheros QCA61x4A Wireless Network Adapter +${WIFI_CARD_UBUNTU}= Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32) +${BLUETOOTH_CARD_UBUNTU}= Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32) ${USB_MODEL}= SanDisk ${USB_DEVICE}= SanDisk -${BLUETOOTH_CARD_UBUNTU}= Intel Corp. AX200 Bluetooth +@{ATTACHED_USB}= SanDisk + +${ESP_SCANNING_SUPPORT}= ${TRUE} +@{ETH_PORTS}= 00-e0-97-1b-00-47 +... 00-e0-97-1b-00-48 +... 00-e0-97-1b-00-49 +... 00-e0-97-1b-00-4a +@{ETH_PERF_PAIR_2_G}= enp3s0 enp4s0 + +${ETHERNET_ID}= 8086:125c + +${TPM_EXPECTED_CHIP}= SLB9670 +${SATA_SUPPORT}= ${TRUE} +${CLEVO_DISK}= KINGSTON SNV3S500G +${DEVICE_NVME_DISK}= Non-Volatile memory controller: Kingston Technology Company diff --git a/platform-configs/protectli-vp3210.robot b/platform-configs/protectli-vp3210.robot index f648ee8ad5..c278f1507f 100644 --- a/platform-configs/protectli-vp3210.robot +++ b/platform-configs/protectli-vp3210.robot @@ -3,4 +3,41 @@ Resource include/protectli-vp32xx.robot *** Variables *** -${DMIDECODE_PRODUCT_NAME}= VP3210 +${INITIAL_CPU_FREQUENCY}= 700 +${PLATFORM_CPU_SPEED}= 0.80 +${CPU_MIN_FREQUENCY}= 700 +${CPU_MAX_FREQUENCY}= 3400 +${PLATFORM_RAM_SPEED}= 4800 +${PLATFORM_RAM_SIZE}= 16384 + +${WIFI_CARD}= Qualcomm Atheros QCA61x4A Wireless Network Adapter +${WIFI_CARD_UBUNTU}= Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter +${BLUETOOTH_CARD_UBUNTU}= Qualcomm Atheros Communications AR3012 Bluetooth 4.0 + +${E_MMC_NAME}= BJTD4R +${CPU}= Intel(R) N100 + +${DMIDECODE_MANUFACTURER}= Protectli +${DMIDECODE_SERIAL_NUMBER}= 123456789 +${DMIDECODE_PRODUCT_NAME}= VP3210 +${DMIDECODE_FAMILY}= Vault Pro +${DMIDECODE_TYPE}= Desktop +${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v0.9.0-rc10 +${DMIDECODE_RELEASE_DATE}= 03/14/2025 +${DEF_THREADS_TOTAL}= 4 +${DEF_THREADS_PER_CORE}= 1 +${DEF_CORES_PER_SOCKET}= 4 +${DEF_SOCKETS}= 1 +${DEF_ONLINE_CPU}= 0-3 +${DEVICE_AUDIO1}= Alderlake-P HDMI +${DEVICE_AUDIO2}= ${EMPTY} +${DEVICE_AUDIO1_WIN}= High Definition Audio Controller + +${DEVICE_NVME_DISK}= Non-Volatile memory controller +${CLEVO_DISK}= N/A + +@{ETH_PORTS}= 64-62-66-23-90-47 +... 64-62-66-23-90-48 + +${TPM_SUPPORTED_VERSION}= 2 +${TPM_EXPECTED_CHIP}= SLB9670 diff --git a/platform-configs/protectli-vp3230.robot b/platform-configs/protectli-vp3230.robot index 7da6c1b738..fc083a1bf3 100644 --- a/platform-configs/protectli-vp3230.robot +++ b/platform-configs/protectli-vp3230.robot @@ -27,16 +27,21 @@ ${DMIDECODE_SERIAL_NUMBER}= 123456789 ${DMIDECODE_PRODUCT_NAME}= VP3230 ${DMIDECODE_FAMILY}= Vault Pro ${DMIDECODE_TYPE}= Desktop -${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v0.9.0-rc4 -${DMIDECODE_RELEASE_DATE}= 11/13/2024 +${DMIDECODE_FIRMWARE_VERSION}= Dasharo (coreboot+UEFI) v0.9.0-rc10 +${DMIDECODE_RELEASE_DATE}= 03/14/2025 ${DEF_THREADS_TOTAL}= 8 ${DEF_THREADS_PER_CORE}= 1 ${DEF_CORES_PER_SOCKET}= 8 ${DEF_SOCKETS}= 1 ${DEF_ONLINE_CPU}= 0-7 -${DEVICE_AUDIO1}= Alderlake-P HDMI -${DEVICE_AUDIO2}= ${EMPTY} -${DEVICE_AUDIO1_WIN}= High Definition Audio Controller -${DEVICE_NVME_DISK}= N/A -${CLEVO_DISK}= N/A +${DEVICE_NVME_DISK}= Phison Electronics Corporation PS5019-E19 +${CLEVO_DISK}= Protectli 256GB M.2 + +@{ETH_PORTS}= 64-62-66-23-8f-19 +... 64-62-66-23-8f-1a + +${TPM_SUPPORTED_VERSION}= 2 +${TPM_EXPECTED_CHIP}= SLB9670 + +@{ETH_PERF_PAIR_2_G}= enp2s0 enp4s0 diff --git a/platform-configs/protectli-vp4630.robot b/platform-configs/protectli-vp4630.robot index e3acb9ecf1..80c71a4a8e 100644 --- a/platform-configs/protectli-vp4630.robot +++ b/platform-configs/protectli-vp4630.robot @@ -19,3 +19,10 @@ ${DMIDECODE_PRODUCT_NAME}= VP4630 ${CPU_MAX_FREQUENCY}= 4200 ${CPU_MIN_FREQUENCY}= 300 + +@{ETH_PORTS}= 00-e0-97-1b-99-50 +... 00-e0-97-1b-99-51 +... 00-e0-97-1b-99-52 +... 00-e0-97-1b-99-53 +... 00-e0-97-1b-99-54 +... 00-e0-97-1b-99-55 diff --git a/platform-configs/protectli-vp4650.robot b/platform-configs/protectli-vp4650.robot index f7225b6d89..3224df5347 100644 --- a/platform-configs/protectli-vp4650.robot +++ b/platform-configs/protectli-vp4650.robot @@ -20,3 +20,13 @@ ${DMIDECODE_PRODUCT_NAME}= VP4650 ${CPU_MAX_FREQUENCY}= 4300 ${CPU_MIN_FREQUENCY}= 300 + +@{ETH_PORTS}= 64-62-66-21-42-91 +... 64-62-66-21-42-90 +... 64-62-66-21-42-8f +... 64-62-66-21-42-8e +... 64-62-66-21-42-8d +... 64-62-66-21-42-8c + +${TPM_SUPPORTED_VERSION}= 2 +${TPM_EXPECTED_CHIP}= SLB9665 diff --git a/platform-configs/protectli-vp4670.robot b/platform-configs/protectli-vp4670.robot index 4af43fb30c..8ed5ea2e5a 100644 --- a/platform-configs/protectli-vp4670.robot +++ b/platform-configs/protectli-vp4670.robot @@ -20,3 +20,11 @@ ${DMIDECODE_PRODUCT_NAME}= VP4670 ${CPU_MAX_FREQUENCY}= 5000 ${CPU_MIN_FREQUENCY}= 300 + +# Ethernet ports for V2.0A (we have 2 in lab at the moment of me writing this) +@{ETH_PORTS}= 64-62-66-22-93-db +... 64-62-66-22-93-dc +... 64-62-66-22-93-dd +... 64-62-66-22-93-de +... 64-62-66-22-93-df +... 64-62-66-22-93-e0 diff --git a/platform-configs/protectli-vp6650.robot b/platform-configs/protectli-vp6650.robot index f71176a907..4cff4db4a2 100644 --- a/platform-configs/protectli-vp6650.robot +++ b/platform-configs/protectli-vp6650.robot @@ -23,3 +23,13 @@ ${CPU_MAX_FREQUENCY}= 4400 ${PLATFORM_CPU_SPEED}= 2.50 ${PLATFORM_RAM_SPEED}= 4200 ${PLATFORM_RAM_SIZE}= 65536 + +@{ETH_PORTS}= 64-62-66-22-84-f5 +... 64-62-66-22-84-f6 +... 64-62-66-22-84-f7 +... 64-62-66-22-84-f8 + + +*** Keywords *** +Power On + Protectli-common.Power On diff --git a/platform-configs/protectli-vp6670.robot b/platform-configs/protectli-vp6670.robot index 3c1fbcc57c..909b656c3d 100644 --- a/platform-configs/protectli-vp6670.robot +++ b/platform-configs/protectli-vp6670.robot @@ -15,6 +15,7 @@ ${WIFI_CARD_UBUNTU}= ${TBD} ${LTE_CARD}= ${TBD} ${DEVICE_NVME_DISK}= Non-Volatile memory controller ${USB_MODEL}= SanDisk +@{ATTACHED_USB}= Wilk USB ${DMIDECODE_PRODUCT_NAME}= VP6670 @@ -29,4 +30,3 @@ ${PLATFORM_RAM_SIZE}= 32768 ... 64-62-66-22-89-9a ... 64-62-66-22-89-9b ... 64-62-66-22-89-9c -${ETHERNET_ID}= 8086:125c diff --git a/platform-configs/qemu-selftests.robot b/platform-configs/qemu-selftests.robot index d6f62d5947..cd9d9c833e 100644 --- a/platform-configs/qemu-selftests.robot +++ b/platform-configs/qemu-selftests.robot @@ -45,9 +45,5 @@ ${DASHARO_MEMORY_MENU_SUPPORT}= ${TRUE} *** Keywords *** Power On - [Documentation] Keyword clears telnet buffer and sets Device Under Test - ... into Power On state using RTE OC buffers. Implementation - ... must be compatible with the theory of operation of a - ... specific platform. Read From Terminal Qemu Monitor.System Reset diff --git a/platform-configs/qemu.robot b/platform-configs/qemu.robot index dd5bdf0016..8950e5258f 100644 --- a/platform-configs/qemu.robot +++ b/platform-configs/qemu.robot @@ -45,7 +45,6 @@ ${CUSTOM_NETWORK_BOOT_ENTRIES_SUPPORT}= ${TRUE} ${CUSTOM_LOGO_SUPPORT}= ${TRUE} ${USB_DISKS_DETECTION_SUPPORT}= ${TRUE} ${USB_KEYBOARD_DETECTION_SUPPORT}= ${TRUE} -${UEFI_SHELL_SUPPORT}= ${TRUE} ${IPXE_BOOT_SUPPORT}= ${TRUE} ${AUDIO_SUBSYSTEM_SUPPORT}= ${TRUE} ${FIRMWARE_NUMBER_VERIFICATION}= ${TRUE} @@ -61,7 +60,7 @@ ${RESET_TO_DEFAULTS_SUPPORT}= ${TRUE} ${ESP_SCANNING_SUPPORT}= ${TRUE} # Test module: dasharo-security -${TPM_SUPPORT}= ${TRUE} +${TPM_SUPPORTED_VERSION}= 2 ${VERIFIED_BOOT_SUPPORT}= ${TRUE} ${VERIFIED_BOOT_POPUP_SUPPORT}= ${TRUE} ${MEASURED_BOOT_SUPPORT}= ${TRUE} @@ -87,9 +86,5 @@ ${CAPSULE_UPDATE_SUPPORT}= ${TRUE} *** Keywords *** Power On - [Documentation] Keyword clears telnet buffer and sets Device Under Test - ... into Power On state using RTE OC buffers. Implementation - ... must be compatible with the theory of operation of a - ... specific platform. Read From Terminal Qemu Monitor.System Reset diff --git a/platform-configs/raptor-cs_talos2.robot b/platform-configs/raptor-cs_talos2.robot index adeeca0efd..ebddd7ae3e 100644 --- a/platform-configs/raptor-cs_talos2.robot +++ b/platform-configs/raptor-cs_talos2.robot @@ -61,7 +61,6 @@ ${USB_DISKS_DETECTION_SUPPORT}= ${FALSE} ${USB_KEYBOARD_DETECTION_SUPPORT}= ${FALSE} ${USB_CAMERA_DETECTION_SUPPORT}= ${FALSE} ${USB_TYPE_C_DISPLAY_SUPPORT}= ${FALSE} -${UEFI_SHELL_SUPPORT}= ${FALSE} ${UEFI_COMPATIBLE_INTERFACE_SUPPORT}= ${FALSE} ${IPXE_BOOT_SUPPORT}= ${FALSE} ${NETBOOT_UTILITIES_SUPPORT}= ${FALSE} @@ -108,7 +107,7 @@ ${ESP_SCANNING_SUPPORT}= ${FALSE} ${L3_CACHE_SUPPORT}= ${TRUE} # Test module: dasharo-security -${TPM_SUPPORT}= ${TRUE} +${TPM_SUPPORTED_VERSION}= 2 ${VERIFIED_BOOT_SUPPORT}= ${FALSE} ${VERIFIED_BOOT_POPUP_SUPPORT}= ${FALSE} ${MEASURED_BOOT_SUPPORT}= ${FALSE} @@ -190,6 +189,28 @@ ${STABILITY_DETECTION_WARMBOOT_ITERATIONS}= 2 ${STABILITY_DETECTION_REBOOT_ITERATIONS}= 5 ${STABILITY_DETECTION_SUSPEND_ITERATIONS}= 5 +# Variables used in lib/sensors to determine platform-specific methods of +# measuring temperatures, fans etc. + +# Can be one of {`lm-sensors`, `hwmon`, `none`} +${CPU_TEMPERATURE_MEASUREMENT_METHOD}= lm-sensors +# Can be one of {`hwmon`, `system76-acpi`, `none`} +${FAN_PWM_MEASUREMENT_METHOD}= none +# Has to be set if PWM measurement method is hwmon +${FAN_PWM_MEASUREMENT_HWMON_PATH}= none + +# Can be one of {`lm-sensors`, `none`} +${FAN_RPM_MEASUREMENT_METHOD}= lm-sensors +# The name of the sensor in `sensors` command if FAN_RPM_MEASUREMENT_METHOD +# is set to lm-sensors. For example `w83795g-i2c-1-2f`. `none` if lm-sensors +# is not used +${FAN_RPM_MEASUREMENT_SENSOR}= w83795g-i2c-1-2f +# Kernel module that might need to be enabled using modprobe in order to use +# the sensor. Dictionary keys: +# - module - name of the kernel module +# - force_id - optional force_id arg for modprobe +&{FAN_RPM_MEASUREMENT_SENSOR_MODULE}= module=w83795 + *** Keywords *** Get Firmware Version From Coreboot File @@ -267,10 +288,7 @@ Set Chassis Power State Close OBMC Service Connection Power On - [Documentation] Keyword sets Device Under Test into Power On state using - ... openbmc-test-automation library and opens console client. - ... Implementation must be compatible with the theory of - ... operation of a specific platform. + [Documentation] Implementation of keywords.Power On Variable Should Exist ${OPENBMC_HOST} Set Global Variable ${AUTH_URI} https://${OPENBMC_HOST}${AUTH_SUFFIX} ${host_state}= Get Host State diff --git a/platform-configs/rpi-3b.robot b/platform-configs/rpi-3b.robot index 223fcec657..3394809121 100644 --- a/platform-configs/rpi-3b.robot +++ b/platform-configs/rpi-3b.robot @@ -33,9 +33,6 @@ ${LAPTOP_EC_SERIAL_WORKAROUND}= ${FALSE} ${DEVICE_USB_KEYBOARD}= ${TBD} ${DEVICE_NVME_DISK}= ${TBD} -${DEVICE_AUDIO1}= ${TBD} -${DEVICE_AUDIO2}= ${TBD} -${DEVICE_AUDIO1_WIN}= ${TBD} ${INITIAL_CPU_FREQUENCY}= ${TBD} # SD Wire config @@ -75,7 +72,6 @@ ${USB_DISKS_DETECTION_SUPPORT}= ${FALSE} ${USB_KEYBOARD_DETECTION_SUPPORT}= ${FALSE} ${USB_CAMERA_DETECTION_SUPPORT}= ${FALSE} ${USB_TYPE_C_DISPLAY_SUPPORT}= ${FALSE} -${UEFI_SHELL_SUPPORT}= ${FALSE} ${UEFI_COMPATIBLE_INTERFACE_SUPPORT}= ${FALSE} ${IPXE_BOOT_SUPPORT}= ${FALSE} ${NETBOOT_UTILITIES_SUPPORT}= ${FALSE} @@ -118,7 +114,7 @@ ${DEFAULT_POWER_STATE_AFTER_FAIL}= Powered Off ${ESP_SCANNING_SUPPORT}= ${FALSE} # Test module: dasharo-security -${TPM_SUPPORT}= ${FALSE} +${TPM_SUPPORTED_VERSION}= ${NONE} ${VERIFIED_BOOT_SUPPORT}= ${FALSE} ${VERIFIED_BOOT_POPUP_SUPPORT}= ${FALSE} ${MEASURED_BOOT_SUPPORT}= ${FALSE} diff --git a/requirements-openbmc.txt b/requirements-openbmc.txt index 52fc8ab7d4..38d7432dd0 100644 --- a/requirements-openbmc.txt +++ b/requirements-openbmc.txt @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + git+https://github.com/3mdeb/robotframework robotframework-sshlibrary==3.5.1 robotframework-requests==0.9.4 @@ -8,8 +12,10 @@ oauth2client PyOpenSSL wakeonlan cryptography +git-cliff==2.6.1 robotframework-httplibrary redfish +reuse==4.0.3 robotframework-scplibrary tox paramiko>=2.5.0 diff --git a/requirements.txt b/requirements.txt index c927d7a07b..e43c036602 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,15 +1,27 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +attrs==24.3.0 bcrypt==4.1.2 +binaryornot==0.4.4 +boolean.py==4.0 certifi==2024.2.2 cffi==1.17.1 cfgv==3.4.0 +chardet==5.2.0 charset-normalizer==3.3.2 click==8.1.7 colorama==0.4.6 +contourpy==1.3.1 cryptography==42.0.5 +cycler==0.12.1 dbbot-sqlalchemy==0.2 distlib==0.3.8 Faker==24.11.0 filelock==3.13.4 +fonttools==4.56.0 +git-cliff==2.6.1 greenlet==3.1.1 gspread==3.1.0 httplib2==0.22.0 @@ -17,15 +29,23 @@ identify==2.5.36 idna==3.7 importlib_resources==6.4.0 Jinja2==3.1.3 +kiwisolver==1.4.8 +license-expression==30.4.1 markdown-it-py==3.0.0 MarkupSafe==2.1.5 +matplotlib==3.10.0 mdurl==0.1.2 nodeenv==1.8.0 +numpy==2.2.3 oauth2client==4.1.3 -osfv @ git+https://github.com/Dasharo/osfv-scripts.git@36a030eb006391c3761c25d6972036a5a34fb73b#subdirectory=osfv_cli +osfv @ git+https://github.com/Dasharo/osfv-scripts.git@5d1a6aea261c321b059326f4fd112dbb13e37d6e#subdirectory=osfv_cli +packaging==24.2 +pandas==2.2.3 paramiko==3.4.0 pathspec==0.9.0 pexpect==4.9.0 +pikvm @ git+https://github.com/3mdeb/pikvm-rest-api@1a1cc579a286fe82aaa2eccea69f96223712664d +pillow==11.1.0 platformdirs==4.2.1 pre-commit==3.7.0 ptyprocess==0.7.0 @@ -39,17 +59,20 @@ pyotp==2.9.0 pyparsing==3.1.2 pyte @ git+https://github.com/3mdeb/pyte@b81646ec9f754aab34ed671b3c852b01cc72bdb4 python-dateutil==2.9.0.post0 +python-debian==0.1.49 pytz==2024.1 PyYAML==6.0.1 requests==2.31.0 +reuse==4.0.3 rich==13.7.1 rich-click==1.7.4 robotframework @ git+https://github.com/3mdeb/robotframework@6006ce0b3d5fc6b45c5eb040dc859acd64bfa846 +robotframework-csvlibrary==0.0.5 robotframework-faker==5.0.0 robotframework-requests==0.9.4 robotframework-robocop==5.0.4 robotframework-sherlock==0.3.0 -robotframework-sshlibrary==3.5.1 +robotframework-sshlibrary @ git+https://github.com/MarketSquare/SSHLibrary@ba6c3ee783bd6fd8b73c1341fe873a99991a353a robotframework-tidy==4.11.0 rsa==4.9 scp==0.14.5 @@ -61,7 +84,9 @@ tabulate==0.8.9 telnetlib @ git+https://github.com/3mdeb/telnetlib@b85e3b5e6068eb3441cb21badb5a266301839e61 toml==0.10.2 tomli==2.0.1 +tomlkit==0.13.2 typing_extensions==4.11.0 +tzdata==2025.1 Unidecode==1.3.8 urllib3==2.2.1 virtualenv==20.26.0 diff --git a/robocop.toml b/robocop.toml index 81cfdacd27..eba4216e93 100644 --- a/robocop.toml +++ b/robocop.toml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + [tool.robocop] configure = [ # TODO: add missing documentation for keywords and re-enable @@ -17,7 +21,8 @@ configure = [ # TODO: fix and re-enable "0328:enabled:False", # TODO: consider reducing to default 40, or less - "0501:max_len:50", + # Has to be high to allow comprehensive documentation of library keywords + "0501:max_len:80", # TODO: consider reducing to default 10, or less "0503:max_calls:50", # TODO: consider reducing to dfeault 20, or less diff --git a/scripts/capsules/capsule_update_tests.sh b/scripts/capsules/capsule_update_tests.sh index f15710b041..cbeae6f2c2 100755 --- a/scripts/capsules/capsule_update_tests.sh +++ b/scripts/capsules/capsule_update_tests.sh @@ -1,5 +1,9 @@ #!/bin/bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + here=$(realpath "$(dirname "$0")") capsule=$(realpath "$1") diff --git a/scripts/capsules/sign.p12.license b/scripts/capsules/sign.p12.license new file mode 100644 index 0000000000..bdc2882bd8 --- /dev/null +++ b/scripts/capsules/sign.p12.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2024 3mdeb + +SPDX-License-Identifier: Apache-2.0 diff --git a/scripts/check-unused-variables.sh b/scripts/check-unused-variables.sh index 8997888afb..5516dec2e0 100755 --- a/scripts/check-unused-variables.sh +++ b/scripts/check-unused-variables.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + # Default value for autofix flag AUTOFIX="false" diff --git a/scripts/ci/ipxe-run.sh b/scripts/ci/ipxe-run.sh index 1d990f2ce7..57afc7a13a 100755 --- a/scripts/ci/ipxe-run.sh +++ b/scripts/ci/ipxe-run.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + if [[ $# -ne 2 ]]; then echo "Usage: $0 " exit 1 diff --git a/scripts/ci/qemu-run.sh b/scripts/ci/qemu-run.sh index 3492446425..4cff6223f3 100755 --- a/scripts/ci/qemu-run.sh +++ b/scripts/ci/qemu-run.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + INIT_DIR="$(pwd)" # Optionally, accept DIR as environmental variable. If not given, use current directory. @@ -20,7 +24,7 @@ fi HDD_PATH=${HDD_PATH:-qemu-data/hdd.qcow2} PULSE_SERVER=${PULSE_SERVER:-unix:/run/user/$(id -u)/pulse/native} -INSTALLER_PATH="qemu-data/ubuntu.iso" +INSTALLER_PATH="qemu-data/installer.iso" TPM_DIR="/tmp/osfv/tpm" TPM_SOCK="${TPM_DIR}/sock" @@ -55,11 +59,13 @@ This is the QEMU wrapper script for the Dasharo Open Source Firmware Validation. Environmental variables: DIR working directory, defaults to current working directory + HDD2_PATH optional path of the second hard drive to connect to the machine if + ACTION "os" is used. Relative to DIR Example usage: ./$(basename $0) vnc firmware ./$(basename $0) graphic os_install - DIR=/my/work/dir ./$(basename $0) graphic os + DIR=/my/work/dir HDD2_PATH=qemu-data/hdd2.qcow ./$(basename $0) graphic os EOF exit 0 @@ -151,6 +157,13 @@ QEMU_PARAMS_OS="-device ich9-intel-hda \ -netdev user,id=vmnic,hostfwd=tcp::5222-:22 \ -drive file=${HDD_PATH},if=ide" +if [[ -f ${HDD2_PATH} ]]; then + QEMU_PARAMS_OS+=" \ + -drive file=${HDD2_PATH},if=ide" + + echo "Using ${HDD2_PATH} as the second drive" +fi + QEMU_PARAMS_INSTALLER="-cdrom ${INSTALLER_PATH}" cd "$DIR" || exit diff --git a/scripts/ci/qemu-self-test.sh b/scripts/ci/qemu-self-test.sh index 54427e3ed8..922cbd0dcf 100755 --- a/scripts/ci/qemu-self-test.sh +++ b/scripts/ci/qemu-self-test.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + # Define an array of commands commands=( "robot -L TRACE -v config:qemu-selftests -v rte_ip:127.0.0.1 -d ./logs/$(date +%Y.%m.%d_%H.%M.%S)/setup-and-boot-menus -v snipeit:no self-tests/setup-and-boot-menus.robot" diff --git a/scripts/ci/smoke.sh b/scripts/ci/smoke.sh index 945b1cec17..4a9921cb39 100755 --- a/scripts/ci/smoke.sh +++ b/scripts/ci/smoke.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "${SCRIPT_DIR}/../lib/robot.sh" diff --git a/scripts/config_parser.py b/scripts/config_parser.py index 0f91b7f239..5fad2cf62e 100755 --- a/scripts/config_parser.py +++ b/scripts/config_parser.py @@ -1,5 +1,9 @@ #!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + import argparse import json diff --git a/scripts/create-docs.py b/scripts/create-docs.py index 095c100c68..1a97273473 100755 --- a/scripts/create-docs.py +++ b/scripts/create-docs.py @@ -1,5 +1,9 @@ #!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + import os import re import sys diff --git a/scripts/create-docs.sh b/scripts/create-docs.sh index 9d2bbd9bd9..e43e2fffb5 100755 --- a/scripts/create-docs.sh +++ b/scripts/create-docs.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + TEMP_DIR=$(mktemp -d) FILE_NAME="$TEMP_DIR/all-keywords.robot" diff --git a/scripts/create_platform_config.py b/scripts/create_platform_config.py index f2160d01a2..abff4af556 100755 --- a/scripts/create_platform_config.py +++ b/scripts/create_platform_config.py @@ -1,5 +1,9 @@ #!/usr/bin/env python +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + import os import re import sys diff --git a/scripts/freebsd/preseed_opnsense.sh b/scripts/freebsd/preseed_opnsense.sh new file mode 100644 index 0000000000..e056198db4 --- /dev/null +++ b/scripts/freebsd/preseed_opnsense.sh @@ -0,0 +1,55 @@ +#!/bin/sh + +LABEL=OPNBOOT +INSTALLER_ROOT_PARTITION=/dev/da0p4 +INSTALLER_MOUNT_DIR=/mnt +BSDINSTALL_DIR=/usr/libexec/bsdinstall +TARGET_FILES="opnsense-zfs zfsboot" + +echo FreeBSD+OPNsense bsdinstall modifier +echo +echo "WARNING: This script is supposed to be executed on any FreeBSD-compatible system." +echo "Please connect OPNsense Installer USB stick and verify it's root partition device name to be: " ${INSTALLER_ROOT_PARTITION} +echo "Please type 'yes' to continue." +echo + +read ANSWER_WARN +if [ $ANSWER_WARN != yes ]; +then + exit 1; +fi + +# patch_esp_command $new_esp_label $file_prefix $file_to_patch +patch_esp_command() +{ + local new_esp_label="$1" file_prefix="$2" file_to_patch="$3" + echo + echo ${new_esp_label} "->" ${file_prefix}/${file_to_patch} + + awk -v sq="'" -v dq='"' -v ROOT_LABEL=${new_esp_label} '/^NEWFS_ESP=/ { print "NEWFS_ESP=" sq "newfs_msdos -L " ROOT_LABEL " " dq "%s" dq sq; next; }; { print; }' ${file_prefix}/${file_to_patch} > /tmp/${file_to_patch} + echo " -- DIFF:" + diff /tmp/${file_to_patch} ${INSTALLER_MOUNT_DIR}${BSDINSTALL_DIR}/${file_to_patch} + echo "--- END OF DIFF" + + echo Do you want to apply? Type 'yes'. + echo + + read ANSWER_DIFF + if [ $ANSWER_DIFF != yes ]; + then + return + fi + mv /tmp/${file_to_patch} ${file_prefix}/${file_to_patch} + chmod +x ${file_prefix}/${file_to_patch} +} + +umount ${INSTALLER_MOUNT_DIR} +mount -w /dev/da0p4 ${INSTALLER_MOUNT_DIR} +ls -l ${INSTALLER_MOUNT_DIR}${BSDINSTALL_DIR}/*zfs* + +for installer_file in ${TARGET_FILES}; do + patch_esp_command ${LABEL} ${INSTALLER_MOUNT_DIR}${BSDINSTALL_DIR} ${installer_file} +done + +umount ${INSTALLER_MOUNT_DIR} +echo "It is done." diff --git a/scripts/get-robot-variables.sh b/scripts/get-robot-variables.sh index 39d43dd3b3..4cc9928de6 100755 --- a/scripts/get-robot-variables.sh +++ b/scripts/get-robot-variables.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + # ---Help Function--- show_help() { echo "Usage: $0 [OPTIONS]" @@ -146,14 +150,48 @@ DMIDECODE_PRODUCT_NAME=$(sudo dmidecode -t baseboard | grep "Product Name:" | aw DMIDECODE_FAMILY=$(sudo dmidecode -t system | grep Family | awk -F ":" '{print $2}') DMIDECODE_TYPE=$(sudo dmidecode -t chassis | grep Type | awk -F ":" '{print $2}') -# Collecting Audio device information -audio_device_names=$(aplay -l 2>/dev/null | awk -F'[][]' '/card [0-9]+: / {print $2}' | sort -u) +# cbmem and TPM detection variables +CBMEM_BINARY_PATH="/usr/local/bin/cbmem" +CBMEM_EXPECTED_HASH="169c5a5a63699cb37cf08d1eff83e59f146ffa98cf283145f27adecc081ac3f6" +CBMEM_URL="https://cloud.3mdeb.com/index.php/s/C6LJMi4bWz3wzR9/download" +TPM_VER_PATH="/sys/class/tpm/tpm0/tpm_version_major" + +ensure_valid_cbmem() { + if [[ -f "$CBMEM_BINARY_PATH" ]]; then + local current_hash + current_hash=$(sha256sum "$CBMEM_BINARY_PATH" | awk '{print $1}') + + if [[ "$current_hash" == "$CBMEM_EXPECTED_HASH" ]]; then + sudo chmod 777 "$CBMEM_BINARY_PATH" + return 0 + fi + else + echo "Fetching cbmem from cloud..." + sudo curl -o "$CBMEM_BINARY_PATH" "$CBMEM_URL" + + if [[ $? -eq 0 ]]; then + echo "Success!" + sudo chmod 777 "$CBMEM_BINARY_PATH" + else + echo "Failed..." + return 1 + fi + fi +} -counter=0 -while IFS= read -r audio_device_name; do - ((counter++)) - eval "DEVICE_AUDIO$counter='$audio_device_name'" -done <<< "$audio_device_names" +ensure_valid_cbmem + +if [ -f ${TPM_VER_PATH} ]; then + TPM_SUPPORTED_VERSION=$(cat ${TPM_VER_PATH}) +else + TPM_SUPPORTED_VERSION=\$\{None\} +fi + +if [ -f ${CBMEM_BINARY_PATH} ]; then + TPM_EXPECTED_CHIP=$(sudo ${CBMEM_BINARY_PATH} -1 | grep "Found TPM" | awk 'NR==1{print $6}'); +else + TPM_EXPECTED_CHIP="Unknown" +fi # Print collected information if -p is provided if [ "$PRINT" = true ]; then @@ -200,12 +238,6 @@ if [ "$PRINT" = true ]; then echo "\${DEF_CORES_PER_SOCKET}= ${DEF_CORES_PER_SOCKET}" echo "\${DEF_SOCKETS}= ${DEF_SOCKETS}" echo "\${DEF_ONLINE_CPU}= ${DEF_ONLINE_CPU}" - echo - echo "-----------------------Audio Devices----------------" - for i in $(seq 1 $counter); do - eval "audio_device_name=\$DEVICE_AUDIO$i" - echo "\${DEVICE_AUDIO$i}= $audio_device_name" - done fi # Create Robot Framework file @@ -267,13 +299,8 @@ fi [[ -n "$DEF_CORES_PER_SOCKET" ]] && echo "\${DEF_CORES_PER_SOCKET}= $DEF_CORES_PER_SOCKET" [[ -n "$DEF_SOCKETS" ]] && echo "\${DEF_SOCKETS}= $DEF_SOCKETS" [[ -n "$DEF_ONLINE_CPU" ]] && echo "\${DEF_ONLINE_CPU}= $DEF_ONLINE_CPU" - - for i in $(seq 1 $counter); do - eval "audio_device_name=\$DEVICE_AUDIO$i" - if [[ -n "$audio_device_name" ]]; then - echo "\${DEVICE_AUDIO$i}= $audio_device_name" - fi - done + [[ -n "$TPM_SUPPORTED_VERSION" ]] && echo "\${TPM_SUPPORTED_VERSION}= $TPM_SUPPORTED_VERSION" + [[ -n "$TPM_EXPECTED_CHIP" ]] && echo "\${TPM_EXPECTED_CHIP}= $TPM_EXPECTED_CHIP" echo echo "# Default variables" @@ -285,7 +312,7 @@ fi DMIDECODE_MANUFACTURER DMIDECODE_SERIAL_NUMBER DMIDECODE_PRODUCT_NAME \ DMIDECODE_FAMILY DMIDECODE_TYPE \ DEF_THREADS_TOTAL DEF_THREADS_PER_CORE DEF_CORES_PER_SOCKET DEF_SOCKETS \ - DEF_ONLINE_CPU DEVICE_AUDIO1 DEVICE_AUDIO2 DEVICE_AUDIO3" \ + DEF_ONLINE_CPU" \ ' BEGIN { split(keys, arr); for (i in arr) exclude[arr[i]] = 1 } !/^(\$\{.*)=/ { print; next } diff --git a/scripts/lib/mappings.json b/scripts/lib/mappings.json index b2bb01a766..0c4f7aec09 100644 --- a/scripts/lib/mappings.json +++ b/scripts/lib/mappings.json @@ -2,7 +2,7 @@ "options": { "CONFIG_MAINBOARD_POWER_FAILURE_STATE": "DEFAULT_POWER_STATE_AFTER_FAIL", "CONFIG_VBOOT": "VERIFIED_BOOT_SUPPORT", - "CONFIG_TPM": "TPM_SUPPORT", + "CONFIG_TPM": "TPM_SUPPORTED_VERSION", "CONFIG_EDK2_SECURE_BOOT_SUPPORT": "SECURE_BOOT_SUPPORT", "CONFIG_EDK2_IPXE_OPTION_NAME": "IPXE_BOOT_ENTRY", "CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME": "DMIDECODE_PRODUCT_NAME", diff --git a/scripts/lib/robot.sh b/scripts/lib/robot.sh index 7c7f973947..2abce8c09a 100644 --- a/scripts/lib/robot.sh +++ b/scripts/lib/robot.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + RUN_DATE="$(date +%Y_%m_%d_%H_%M_%S)" # Trap SIGINT (Ctrl+C) @@ -80,9 +84,22 @@ execute_robot() { # Check if the required environment variables are set - check_env_variable "RTE_IP" check_env_variable "CONFIG" + # DIR_PREFIX (optional) additional description of test result dir + if [ -n "${DIR_PREFIX}" ]; then + dir_prefix="${DIR_PREFIX}_" + else + dir_prefix="" + fi + + # RTE_IP environment variable is not required for some platforms + if [ -n "${RTE_IP}" ]; then + rte_ip_option="-v rte_ip:${RTE_IP}" + else + rte_ip_option="" + fi + # FW_FILE environment variable is optional for some tests if [ -n "${FW_FILE}" ]; then fw_file_option="-v fw_file:${FW_FILE}" @@ -97,6 +114,13 @@ execute_robot() { device_ip_option="" fi + # CAPSULE_FW_FILE environment variable is required for the capsule update test + if [ -n "${CAPSULE_FW_FILE}" ]; then + capsule_fw_file_option="-v capsule_fw_file:${CAPSULE_FW_FILE}" + else + capsule_fw_file_option="" + fi + extra_options="" # By default use snipeit, if SNIPEIT_NO is not set if [ -n "${SNIPEIT_NO}" ]; then @@ -121,12 +145,28 @@ execute_robot() { # Thanks to detecting spacebars in arguments before _robot_args can now # safely be concatenated into a string and these arguments will still be # passed correctly. + # + # Firstly, the provided argument will be parsed to get the proper name + # for the results directory. for _test_name in "${_test_path[@]}"; do - local _logs_dir="logs/${CONFIG}/${RUN_DATE}" - local _log_file="${_logs_dir}/${_test_name}_log.html" - local _report_file="${_logs_dir}/${_test_name}_report.html" - local _output_file="${_logs_dir}/${_test_name}_out.xml" - local _debug_file="${_logs_dir}/${_test_name}_debug.log" + if [[ "$_test_name" == *"/"* && "$_test_name" != */ ]]; then + _test_scope_name="${_test_name##*/}" + if [[ "$_test_scope_name" == *".robot"* ]]; then + _test_scope_name="${_test_scope_name%%.*}" + fi + else + _test_scope_name="${_test_name%%/*}" + fi + + if [ -n "${_REGRESSION_RUN}" ]; then + local _logs_dir="logs/${CONFIG}/${dir_prefix}regresion_${RUN_DATE}" + else + local _logs_dir="logs/${CONFIG}/${dir_prefix}${_test_scope_name}_${RUN_DATE}" + fi + local _log_file="${_logs_dir}/${_test_scope_name}_log.html" + local _report_file="${_logs_dir}/${_test_scope_name}_report.html" + local _output_file="${_logs_dir}/${_test_scope_name}_out.xml" + local _debug_file="${_logs_dir}/${_test_scope_name}_debug.log" echo "Logs will be saved at ${_logs_dir}" echo "Watch \"${_debug_file}\" to monitor the progress of the test" @@ -137,16 +177,18 @@ execute_robot() { -r ${_report_file} \ -o ${_output_file} \ -b ${_debug_file} \ - -v rte_ip:${RTE_IP} \ + ${rte_ip_option} \ -v config:${CONFIG} \ + -v logs_dir:${_logs_dir} \ ${device_ip_option} \ ${fw_file_option} \ + ${capsule_fw_file_option} \ ${installed_dut_option} \ ${extra_options} \ ${_robot_args[*]} \ ${_test_name} " - #echo "$command" + echo "$command" eval "$command" done } diff --git a/scripts/osfv_results.py b/scripts/osfv_results.py index 27a08ce3d1..c004bf4655 100755 --- a/scripts/osfv_results.py +++ b/scripts/osfv_results.py @@ -1,5 +1,9 @@ #!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + import argparse import time diff --git a/scripts/refactoring-state.sh b/scripts/refactoring-state.sh index a9d3c02cd4..83c21cce6b 100755 --- a/scripts/refactoring-state.sh +++ b/scripts/refactoring-state.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + kwds_to_remove=( "Select Option From List" "Read Option List Contents" @@ -26,6 +30,28 @@ kwds_to_remove=( "RTE REST APU Setup" "RTE REST APU Setup" "RteCtrl Get GPIO State" +"Check That USB Devices Are Detected" +"Switch To Root User In Ubuntu Server" +"Get Slot Count" +"Get USB Slot Count" +"Get All USB" +"Enable Option In USB Configuration Submenu" +"Disable Option In USB Configuration Submenu" +"Enable Option In Submenu" +"Disable Option In Submenu" +"Get Intel ME Mode State" +"Power Cycle Off" +"Rte Relay" +"Rte Relay Set" +"Coldboot Via RTE Relay" +"Download To Host Cache" +"Download ISO And Mount As USB" +"Upload And Mount DTS Flash ISO" +"Prepare Required Files For Qemu" +"Get Coreboot Tools From Cloud" +"Get Cbmem From Cloud" +"Get Flashrom From Cloud" +"Get Cbfstool From Cloud" ) echo "Keywords that should not be used, but are still used:" @@ -34,3 +60,27 @@ find . -type f -name "*.robot" | while IFS= read -r file; do grep -i -n -H "$kwd" "$file" done done + +vars_to_remove=( +"PIKVM_IP" +"DL_CACHE_DIR" +) + +echo "Global variables that should not be used, but are still used:" +find . -type f -name "*.robot" | while IFS= read -r file; do + for var in "${vars_to_remove[@]}"; do + grep -n -H "$var" "$file" + done +done + +resources_to_remove=( +"dl-cache.robot" +"pikvm_comm.robot" +) + +echo "Resources that should not be used, but are still used:" +find . -type f -name "*.robot" | while IFS= read -r file; do + for resource in "${resources_to_remove[@]}"; do + grep -n -H "$resource" "$file" + done +done diff --git a/scripts/regression-qemu.sh b/scripts/regression-qemu.sh index 6cfa057784..7c73c17b4a 100755 --- a/scripts/regression-qemu.sh +++ b/scripts/regression-qemu.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "${SCRIPT_DIR}/lib/robot.sh" diff --git a/scripts/regression.sh b/scripts/regression.sh index 94d51fa147..1948b4f965 100755 --- a/scripts/regression.sh +++ b/scripts/regression.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${SCRIPT_DIR}/lib/robot.sh" @@ -12,8 +16,15 @@ if [ ! -f "$FW_FILE" ]; then exit 1 fi +_REGRESSION_RUN="True" +export _REGRESSION_RUN + check_test_station_variables +if [ -z "$NO_SETUP" ]; then + execute_robot "util/basic-platform-setup.robot" "${@}" +fi + execute_robot "dasharo-compatibility" "${@}" execute_robot "dasharo-security" "${@}" execute_robot "dasharo-performance" "${@}" diff --git a/scripts/rename-keyword.sh b/scripts/rename-keyword.sh index fb9de1b02f..3f939908c1 100755 --- a/scripts/rename-keyword.sh +++ b/scripts/rename-keyword.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + usage() { echo "This scripts renames keywords across the project from \"old_name\" to\"new_name\"" echo "Usage: $0 old_name new_name" diff --git a/scripts/run.sh b/scripts/run.sh index e95df2f98b..da0b0e1855 100755 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${SCRIPT_DIR}/lib/robot.sh" diff --git a/scripts/stats.py b/scripts/stats.py index 01ab86c5de..3e4c3efa7b 100755 --- a/scripts/stats.py +++ b/scripts/stats.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 from robot.model import SuiteVisitor from robot.running import TestSuiteBuilder diff --git a/scripts/utc_generator.py b/scripts/utc_generator.py new file mode 100644 index 0000000000..b7ab77001d --- /dev/null +++ b/scripts/utc_generator.py @@ -0,0 +1,370 @@ +# SPDX-FileCopyrightText: 2025 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + +import pandas as pd + +# Tested OS ids +oses = {"001": "Firmware", "201": "Ubuntu", "202": "Fedora", "301": "Windows"} +os_id_variable_names = { + "001": "001", + "201": "${ENV_ID_UBUNTU}", + "202": "${ENV_ID_FEDORA}", + "301": "${ENV_ID_WINDOWS}", +} + +# Every test performed on two states of ME +me_states = [True, False] + +# Every test on every docking station +docking_stations = { + "1": "WL-UMD05 Pro Rev.E", + "2": "WL-UMD05 Pro Rev.C1", + "3": "WL-UG69PD2 Rev.A1", +} +# Every unique test case, its docs and the OS ids on which it is performed +test_names = { + "USB Type-A charging capability": { + "env_ids": ["001"], + "doc": """This test verifies that the USB-A ports are able to provide + ... charging to a connected smartphone.""", + "skips": "", + "automation": "manual", + }, + "Thunderbolt 4 USB Type-C power output": { + "env_ids": ["001"], + "doc": """This test verifies that the Thunderbolt 4 port is able + ... to provide charging to a USB Type-C accessory.""", + "skips": "", + "automation": "manual", + }, + "USB Type-C PD power input": { + "env_ids": ["201", "202", "301"], + "doc": """Check whether the DUT can be charged using a + ... PD power supply connected to the docking station, which + ... is connected to the USB Type-C port + ... Previous IDs: UTC021.001 USB Type-C laptop charging (Ubuntu)""", + "skips": ["not ${DOCKING_STATION_USB_C_CHARGING_SUPPORT}"], + "automation": "manual", + }, + "USB Type-C Display output": { + "env_ids": ["201", "202"], + "doc": "Check whether the DUT can detect the USB Type-C hub.", + "skips": ["not ${USB_TYPE_C_DISPLAY_SUPPORT}"], + "automation": "auto", + }, + "USB Type-C docking station HDMI display": { + "env_ids": ["201", "202", "301"], + "doc": """This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM.""", + "skips": ["not ${DOCKING_STATION_HDMI}"], + "automation": "auto", + }, + "USB Type-C docking station DP display": { + "env_ids": ["201", "202", "301"], + "doc": """This test aims to verify that the display connected with + ... the HDMI cable to the docking station is correctly + ... recognized by the OPERATING_SYSTEM.""", + "skips": ["not ${DOCKING_STATION_DISPLAY_PORT}"], + "automation": "auto", + }, + "USB Type-C docking station Triple display": { + "env_ids": ["201", "202", "301"], + "doc": """This test aims to verify that the three display + ... simultaneously connected to the docking station is correctly + ... recognized by the OPERATING_SYSTEM.""", + "skips": "", + "automation": "manual", + }, + "USB Type-C docking station USB devices recognition": { + "env_ids": ["001", "201", "202", "301"], + "doc": """Check whether the external USB devices connected to the + ... docking station are detected correctly""", + "skips": ["not ${DOCKING_STATION_USB_SUPPORT}"], + "automation": "auto", + }, + "USB Type-C docking station USB keyboard": { + "env_ids": ["001", "201", "202", "301"], + "doc": """Check whether the external USB keyboard connected to the + ... docking station is detected correctly.""", + "skips": ["not ${DOCKING_STATION_KEYBOARD_SUPPORT}"], + "automation": "auto", + }, + "USB Type-C docking station upload 1GB file on USB storage": { + "env_ids": ["201", "202", "301"], + "doc": """This test aims to verify that the 1GB file can be + ... transferred from the OPERATING_SYSTEM to the USB storage + ... connected to the docking station.""", + "skips": "", + "automation": "manual", + }, + "USB Type-C docking station Ethernet connection": { + "env_ids": ["201", "202", "301"], + "doc": """This test aims to verify that the connection to internet + ... via docking station's Ethernet port can be obtained on + ... OPERATING_SYSTEM.""", + "skips": ["not ${DOCKING_STATION_NET_INTERFACE}"], + "automation": "auto", + }, + "USB Type-C docking station audio recognition": { + "env_ids": ["201", "202"], + "doc": """This test aims to verify that the external headset is + ... properly recognized after plugging in the 3.5 mm jack into + ... the docking station.""", + "skips": ["not ${DOCKING_STATION_AUDIO_SUPPORT}"], + "automation": "auto", + }, + "USB Type-C docking station audio playback": { + "env_ids": ["201", "202", "301"], + "doc": """This test aims to verify that the audio subsystem is able + ... to playback audio recordings by using the external headset + ... speakers connected to the docking station.""", + "skips": ["not ${DOCKING_STATION_AUDIO_SUPPORT}"], + "automation": "manual", + }, + "USB Type-C docking station audio capture": { + "env_ids": ["201", "202", "301"], + "doc": """This test aims to verify that the audio subsystem is able + ... to capture audio from external headset connected to the + ... docking station.""", + "skips": ["not ${DOCKING_STATION_AUDIO_SUPPORT}"], + "automation": "manual", + }, + "USB Type-C docking station SD Card reader detection": { + "env_ids": ["201", "202", "301"], + "doc": """Check whether the SD Card reader is enumerated correctly + ... and can be detected from the operating system.""", + "skips": ["not ${DOCKING_STATION_SD_CARD_READER_SUPPORT}"], + "automation": "auto", + }, + "USB Type-C docking station SD Card read/write": { + "env_ids": ["201", "202", "301"], + "doc": """Check whether the SD Card reader is initialized correctly + ... and can be used from the operating system.""", + "skips": ["not ${DOCKING_STATION_SD_CARD_READER_SUPPORT}"], + "automation": "auto", + }, + "USB Type-C PD current limiting": { + "env_ids": ["201", "202", "301"], + "doc": """This test aims to verify that the power draw from a USB-C PD + ... power supply does not exceed the limits of the power supply's + ... specifications.""", + "skips": "", + "automation": "manual", + }, + "Docking station detection after coldboot": { + "env_ids": ["201", "202"], + "doc": """Check whether he DUT properly detects the docking station + ... after coldboot.""", + "skips": ["'${POWER_CTRL}' == 'none'", "not ${DOCKING_STATION_DETECT_SUPPORT}"], + "automation": "auto", + }, + "Docking station detection after warmboot": { + "env_ids": ["201", "202"], + "doc": """Check whether he DUT properly detects the docking station + ... after warmboot.""", + "skips": ["not ${DOCKING_STATION_DETECT_SUPPORT}"], + "automation": "auto", + }, + "Docking station detection after reboot": { + "env_ids": ["201", "202"], + "doc": """Check whether the DUT properly detects the docking station + ... after reboot.""", + "skips": ["not ${DOCKING_STATION_DETECT_SUPPORT}"], + "automation": "auto", + }, + "Docking station detection after suspend": { + "env_ids": ["201", "202"], + "doc": """Check whether the DUT properly detects the docking station + ... after suspend.""", + "skips": [ + "${PLATFORM_SLEEP_TYPE_SELECTABLE}", + "not ${DOCKING_STATION_DETECT_SUPPORT}", + ], + "automation": "auto", + }, + "Docking station detection after suspend (S0ix)": { + "env_ids": ["201", "202"], + "doc": """Check whether the DUT properly detects the docking station + ... after suspend '${POWER_CTRL}' == 'none'(S0ix).""", + "skips": [ + "not ${PLATFORM_SLEEP_TYPE_SELECTABLE}", + "not ${DOCKING_STATION_DETECT_SUPPORT}", + ], + "automation": "auto", + }, + "Docking station detection after suspend (S3)": { + "env_ids": ["201", "202"], + "doc": """Check whether the DUT properly detects the docking station + ... after suspend (S3).""", + "skips": [ + "not ${PLATFORM_SLEEP_TYPE_SELECTABLE}", + "not ${DOCKING_STATION_DETECT_SUPPORT}", + ], + "automation": "auto", + }, + "Docking station detection after coldboot then hotplug": { + "env_ids": ["201", "202"], + "doc": """Check whether the DUT properly detects the docking station + ... after coldboot then hotplug.""", + "skips": ["'${POWER_CTRL}' == 'none'", "not ${DOCKING_STATION_DETECT_SUPPORT}"], + "automation": "semi", + }, + "Docking station detection after warmboot then hotplug": { + "env_ids": ["201", "202"], + "doc": """Check whether the DUT properly detects the docking station + ... after warmboot then hotplug.""", + "skips": ["not ${DOCKING_STATION_DETECT_SUPPORT}"], + "automation": "semi", + }, + "Docking station detection after reboot then hotplug": { + "env_ids": ["201", "202"], + "doc": """Check whether the DUT properly detects the docking station + ... after reboot then hotplug.""", + "skips": ["not ${DOCKING_STATION_DETECT_SUPPORT}"], + "automation": "semi", + }, + "Docking station detection after suspend then hotplug": { + "env_ids": ["201", "202"], + "doc": """Check whether the DUT properly detects the docking station + ... after suspend then hotplug.""", + "skips": [ + "${PLATFORM_SLEEP_TYPE_SELECTABLE}", + "not ${DOCKING_STATION_DETECT_SUPPORT}", + ], + "automation": "semi", + }, + "Docking station detection after suspend then hotplug (S0ix)": { + "env_ids": ["201", "202"], + "doc": """Check whether the DUT properly detects the docking station + ... after suspend (S0ix) then hotplug.""", + "skips": [ + "not ${PLATFORM_SLEEP_TYPE_SELECTABLE}", + "not ${DOCKING_STATION_DETECT_SUPPORT}", + ], + "automation": "semi", + }, + "Docking station detection after suspend then hotplug (S3)": { + "env_ids": ["201", "202"], + "doc": """Check whether the DUT properly detects the docking station + ... after suspend (S3) then hotplug.""", + "skips": [ + "not ${PLATFORM_SLEEP_TYPE_SELECTABLE}", + "not ${DOCKING_STATION_DETECT_SUPPORT}", + ], + "automation": "semi", + }, +} + +# Generate full test list +test_rows = [] +for dock_idx in docking_stations.keys(): + for me_enabled in me_states: + for os in oses: + # find out test cases on given os + # to order them by OS and possibly speeding up execution + tests_for_os = [ + name for name in test_names.keys() if os in test_names[name]["env_ids"] + ] + + for test_name in tests_for_os: + test_idx = list(test_names.keys()).index(test_name) * 2 + 1 + if not me_enabled: + test_idx += 1 + test_id = f"UTC{dock_idx}{test_idx:02d}.{os}" + test_rows.append( + { + "Test ID": test_id, + "Test Name": test_name, + "doc": test_names[test_name]["doc"], + "skips": test_names[test_name]["skips"], + "OS ID": os, + "ME State": "Enabled" if me_enabled else "Disabled", + "Dock": docking_stations[dock_idx], + "automation": test_names[test_name]["automation"], + } + ) + + +def full_test_name(test_row): + line = "" + line += f"{test_row['Test ID']}" + line += f" {test_row['Test Name']}" + line += f" ({oses[test_row['OS ID']]})" + line += f" (ME: {test_row['ME State']})" + line += f" ({test_row['Dock']})" + return line + + +robot_tests_lines = [] +for idx, row in enumerate(test_rows): + robot_tests_lines.append([]) + robot_tests_lines[idx].append(f"{full_test_name(row)}\n") + documentation = row["doc"].splitlines() + robot_tests_lines[idx].append(f" [Documentation] {documentation[0]}\n") + if len(documentation) > 1: + for line in documentation[1:]: + robot_tests_lines[idx].append(f"{line}\n") + + # Semiauto tag + if row["automation"] == "semi": + robot_tests_lines[idx].append(f" [Tags] semiauto\n") + + for skip in row["skips"]: + robot_tests_lines[idx].append( + f" Skip If {skip} {row['Test ID']} not supported\n" + ) + + # Skips dependent on env/os ID + if row["OS ID"] == "301": + robot_tests_lines[idx].append( + f" Skip If not ${{TESTS_IN_WINDOWS_SUPPORT}} {row['Test ID']} not supported\n" + ) + if row["OS ID"] == "201": + robot_tests_lines[idx].append( + f" Skip If not ${{TESTS_IN_UBUNTU_SUPPORT}} {row['Test ID']} not supported\n" + ) + if row["OS ID"][0] == "2": + robot_tests_lines[idx].append( + f" Skip If '{os_id_variable_names[row['OS ID']]}' not in ${{TESTED_LINUX_DISTROS}} {row['Test ID']} not supported\n" + ) + + # Semiauto skip + if row["automation"] == "semi": + robot_tests_lines[idx].append( + f" Skip If not ${{SEMI_AUTO}} semi auto test skipped: SEMI_AUTO==${{SEMI_AUTO}}\n" + ) + + # call the generic keyword for that test case type + keyword_call = f"{row['Test Name'].title()} {os_id_variable_names[row['OS ID']]} {row['ME State']} {row['Dock']}\n" + robot_tests_lines[idx].append(f" {keyword_call}\n") + + if row["automation"] == "manual" or row["OS ID"] == "001": + robot_tests_lines[idx] = ["# " + line for line in robot_tests_lines[idx]] + robot_tests_lines[idx].insert(0, "# Not automated\n") + +# Generate keywords +keywords = [] +for idx, test_name in enumerate(test_names.keys()): + keywords.append([]) + keywords[idx].append(f"{test_name.title()}\n") + keywords[idx].append( + " [Arguments] ${env_id} ${me_state} ${dock_name}\n" + ) + keywords[idx].append(" [Tags] robot:private\n") + + if test_names[test_name]["automation"] == "manual": + keywords[idx] = ["# " + line for line in keywords[idx]] + keywords[idx].insert(0, "# Not automated\n") + keywords[idx].append("\n") + +# save to files +with open("utc_test_file.robot", "w") as file: + for test in robot_tests_lines: + file.writelines(test) + +with open("utc_test_keywords.robot", "w") as file: + file.write("*** Keywords ***\n") + for kw in keywords: + file.writelines(kw) diff --git a/self-tests/boolean-options.robot b/self-tests/boolean-options.robot index 8938b6b024..dce9b1e8b1 100644 --- a/self-tests/boolean-options.robot +++ b/self-tests/boolean-options.robot @@ -14,7 +14,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing diff --git a/self-tests/count-needed-arrow_down-presses.robot b/self-tests/count-needed-arrow_down-presses.robot new file mode 100644 index 0000000000..0607888c51 --- /dev/null +++ b/self-tests/count-needed-arrow_down-presses.robot @@ -0,0 +1,74 @@ +*** Settings *** +Documentation This suite verifies the correct operation of the keyword +... "Search For Option Not Visible After Entering Menu" + +Library Collections +Library OperatingSystem +Library Process +Library String +Library Telnet timeout=30 seconds connection_timeout=120 seconds +Library SSHLibrary timeout=90 seconds +Library RequestsLibrary +# TODO: maybe have a single file to include if we need to include the same +# stuff in all test cases +Resource ../variables.robot +Resource ../keywords.robot +Resource ../keys.robot + +Suite Setup Run Keyword +... Prepare Test Suite +Suite Teardown Run Keyword +... Log Out And Close Connection + + +*** Test Cases *** +Search For Option Not Visible After Entering Menu - Test + [Documentation] Chcesks if the Key Word "Search For Option Not Visible After Entering Menu" works + ... correctly. + Power On + ${setup_menu}= Enter Setup Menu Tianocore And Return Construction + ${device_manager_menu}= Enter Submenu From Snapshot And Return Construction + ... ${setup_menu} + ... Device Manager + Enter Submenu From Snapshot + ... ${device_manager_menu} + ... TCG2 Configuration + ${target_option_index}= Search For Option Not Visible After Entering Menu + ... Attempt PPI Version + ... re_enter=${FALSE} + ${second_target_option_index}= Search For Option Not Visible After Entering Menu + ... Attempt PPI Version + ... re_enter=${TRUE} + Should Be Equal ${target_option_index} ${second_target_option_index} + +Search For Option Visible At First Menu Entrance + [Documentation] Chcesks if the Key Word "Search For Option Not Visible After Entering Menu" returns + ... a proper message when the searched option is visible at first menu entrance. + Power On + ${setup_menu}= Enter Setup Menu Tianocore And Return Construction + ${device_manager_menu}= Enter Submenu From Snapshot And Return Construction + ... ${setup_menu} + ... Device Manager + Enter Submenu From Snapshot + ... ${device_manager_menu} + ... TCG2 Configuration + ${target_option_index}= Run Keyword And Ignore Error + ... Search For Option Not Visible After Entering Menu Attempt TPM Device re_enter=${FALSE} + ${expected_result}= Evaluate + ... ('FAIL', 'This option is visible after entering the menu. Use another keyword.') + Should Be Equal ${target_option_index} ${expected_result} + +Search Option In Menu Smaller Than 11 Entries + [Documentation] Chcesks if the Key Word "Search For Option Not Visible After Entering Menu" returns + ... a proper message when the searched option is visible at first menu entrance. + Power On + ${setup_menu}= Enter Setup Menu Tianocore And Return Construction + ${device_manager_menu}= Enter Submenu From Snapshot And Return Construction + ... ${setup_menu} + ... Device Manager + ${target_option_index}= Search For Option Not Visible After Entering Menu + ... TCG2 Configuration + ... re_enter=${TRUE} + Press Key N Times And Enter ${target_option_index} ${ARROW_DOWN} + ${tpm_menu}= Get Menu Construction checkpoint=Esc=Exit + Should Contain ${tpm_menu} Current TPM Device TPM 2.0 diff --git a/self-tests/dasharo-system-features-menus.robot b/self-tests/dasharo-system-features-menus.robot index f19b2caabb..b07c61328d 100644 --- a/self-tests/dasharo-system-features-menus.robot +++ b/self-tests/dasharo-system-features-menus.robot @@ -14,7 +14,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing diff --git a/self-tests/dcu.robot b/self-tests/dcu.robot index 44bd5763e1..e4cb3e7eed 100644 --- a/self-tests/dcu.robot +++ b/self-tests/dcu.robot @@ -12,7 +12,6 @@ Library FakerLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -26,12 +25,12 @@ Suite Teardown Run Keyword *** Test Cases *** Boot System Or From Connected Disk - Skip If '${OPTIONS_LIB}' != 'dcu' DCU not supported + Skip If '${OPTIONS_LIB}' != 'options-lib_dcu' DCU not supported Power On - Dcu.Boot System Or From Connected Disk ${OS_WINDOWS} - Dcu.Login To Windows Via SSH ${DEVICE_WINDOWS_USERNAME} ${DEVICE_WINDOWS_PASSWORD} + Dcu.Boot System Or From Connected Disk ${ENV_ID_WINDOWS} + Dcu.Login To Windows Via SSH ${DEVICE_OS_USERNAME} ${DEVICE_OS_PASSWORD} Power On Dcu.Boot System Or From Connected Disk ${OS_UBUNTU} diff --git a/self-tests/list-options.robot b/self-tests/list-options.robot index 53a200a3b5..7127f65316 100644 --- a/self-tests/list-options.robot +++ b/self-tests/list-options.robot @@ -14,7 +14,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing diff --git a/self-tests/make-sure-that-flash-locks-are-disabled.robot b/self-tests/make-sure-that-flash-locks-are-disabled.robot index 60eed0efd0..8f2426cdd4 100644 --- a/self-tests/make-sure-that-flash-locks-are-disabled.robot +++ b/self-tests/make-sure-that-flash-locks-are-disabled.robot @@ -14,7 +14,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -53,7 +52,9 @@ Test Make Sure That Flash Locks Are Disabled [Documentation] Tests Make Sure That Flash Locks Are Disabled Keyword ... Accepts initial state of the BIOS lock and SMM protection as args [Arguments] ${bios_lock_init} ${smm_lock_init} - IF "${smm_lock_init}"=="Enabled" and "${OPTIONS_LIB}"=="dcu" Skip + IF "${smm_lock_init}"=="Enabled" and "${OPTIONS_LIB}"=="options-lib_dcu" + Skip + END Set UEFI Option LockBios ${bios_lock_init} Set UEFI Option SmmBwp ${smm_lock_init} IF "${bios_lock_init}"=="Enabled" or "${smm_lock_init}"=="Enabled" diff --git a/self-tests/numerical-options.robot b/self-tests/numerical-options.robot index b45f7f0b7c..c61d39997f 100644 --- a/self-tests/numerical-options.robot +++ b/self-tests/numerical-options.robot @@ -14,7 +14,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing diff --git a/self-tests/os-boot.robot b/self-tests/os-boot.robot index d488baf97b..791cbb6512 100644 --- a/self-tests/os-boot.robot +++ b/self-tests/os-boot.robot @@ -11,12 +11,9 @@ Library SSHLibrary timeout=90 seconds Library RequestsLibrary # TODO: maybe have a single file to include if we need to include the same # stuff in all test cases -Resource ../sonoff-rest-api/sonoff-api.robot -Resource ../rtectrl-rest-api/rtectrl.robot Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -36,7 +33,7 @@ BOT001.001 Boot To Ubuntu Multiple Times ${index}= Evaluate ${i} + 1 Log To Console Iteration: ${index} Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User END @@ -60,7 +57,7 @@ BOT003.001 Boot To Ubuntu Then Boot To Windows ${index}= Evaluate ${i} + 1 Log To Console Iteration: ${index} Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User Power On diff --git a/self-tests/scrolling-boot-manager.robot b/self-tests/scrolling-boot-manager.robot index 14dadecf58..f06abf997c 100644 --- a/self-tests/scrolling-boot-manager.robot +++ b/self-tests/scrolling-boot-manager.robot @@ -15,7 +15,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing diff --git a/self-tests/secure-boot.robot b/self-tests/secure-boot.robot index 86e59bfec2..0dc6829145 100644 --- a/self-tests/secure-boot.robot +++ b/self-tests/secure-boot.robot @@ -13,7 +13,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing diff --git a/self-tests/setup-and-boot-menus.robot b/self-tests/setup-and-boot-menus.robot index 69bc3c7242..1b1527102c 100644 --- a/self-tests/setup-and-boot-menus.robot +++ b/self-tests/setup-and-boot-menus.robot @@ -15,7 +15,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing diff --git a/self-tests/terminal.robot b/self-tests/terminal.robot index 72f2f9015e..52a801ffc8 100644 --- a/self-tests/terminal.robot +++ b/self-tests/terminal.robot @@ -14,7 +14,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot # TODO: # - document which setup/teardown keywords to use and what are they doing @@ -27,17 +26,6 @@ Suite Teardown Run Keyword *** Test Cases *** -Execute UEFI Shell Command - [Documentation] Test Execute Shell Command kwd - Power On - Enter UEFI Shell - ${out}= Execute UEFI Shell Command map - Should Contain ${out} Alias(s): - ${out}= Execute UEFI Shell Command devices - Should Contain ${out} Device Name - ${out}= Execute UEFI Shell Command bcfg boot dump - Should Contain ${out} Optional- N - Execute Command In Terminal over SSH (Windows) [Documentation] Test Execute Command In Terminal keyword over SSH. This is related ... to bug: https://github.com/Dasharo/open-source-firmware-validation/issues/355 diff --git a/stress-test-windows.ps1 b/stress-test-windows.ps1 index 15db7c48c3..ad7dd6a47d 100644 --- a/stress-test-windows.ps1 +++ b/stress-test-windows.ps1 @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2024 3mdeb +# +# SPDX-License-Identifier: Apache-2.0 + $numCores = 4 foreach ($loopnumber in 1..$numCores){ diff --git a/trenchboot/01-without-drtm.robot b/trenchboot/01-without-drtm.robot index 9fdbf6e278..450dd080e4 100644 --- a/trenchboot/01-without-drtm.robot +++ b/trenchboot/01-without-drtm.robot @@ -57,12 +57,12 @@ WOD004.001 DRTM event log doesn't exist TrenchBoot Suite Setup Prepare Test Suite - Skip If not ${TPM_SUPPORT} TPM tests not supported + Skip If ${TPM_SUPPORTED_VERSION} == None TPM tests not supported Skip If not ${TRENCHBOOT_SUPPORT} TrenchBoot tests aren't supported Skip If not ${TESTS_IN_METATB_SUPPORT} Tests in meta-trenchboot aren't supported Power On - Boot System Or From Connected Disk trenchboot + Boot System Or From Connected Disk ${ENV_ID_TRENCHBOOT} Read From Terminal Until Press enter to boot the selected OS Write Bare Into Terminal ${ENTER} diff --git a/trenchboot/02-with-drtm.robot b/trenchboot/02-with-drtm.robot index c5627893a4..2dda9a138b 100644 --- a/trenchboot/02-with-drtm.robot +++ b/trenchboot/02-with-drtm.robot @@ -159,12 +159,12 @@ WTD007.001 SRTM log aligns with PCR values TrenchBoot Suite Setup Prepare Test Suite - Skip If not ${TPM_SUPPORT} TPM tests not supported + Skip If ${TPM_SUPPORTED_VERSION} == None TPM tests not supported Skip If not ${TRENCHBOOT_SUPPORT} TrenchBoot tests aren't supported Skip If not ${TESTS_IN_METATB_SUPPORT} Tests in meta-trenchboot aren't supported Power On - Boot System Or From Connected Disk trenchboot + Boot System Or From Connected Disk ${ENV_ID_TRENCHBOOT} Read From Terminal Until Press enter to boot the selected OS # Slaunch is the second boot option, pick it. Write Bare Into Terminal ${ARROW_DOWN} diff --git a/trenchboot/README.md b/trenchboot/README.md index a134bdbb12..4a00cef58c 100644 --- a/trenchboot/README.md +++ b/trenchboot/README.md @@ -1,3 +1,9 @@ + + # TrenchBoot tests These are the tests of [TrenchBoot] functionality meant to be used with diff --git a/util/basic-platform-setup.robot b/util/basic-platform-setup.robot index e25e327f66..10cde05d58 100644 --- a/util/basic-platform-setup.robot +++ b/util/basic-platform-setup.robot @@ -12,7 +12,6 @@ Library RequestsLibrary Resource ../variables.robot Resource ../keywords.robot Resource ../keys.robot -Resource ../pikvm-rest-api/pikvm_comm.robot Resource ../keys-and-keywords/ubuntu-keywords.robot # TODO: @@ -26,109 +25,64 @@ Suite Teardown Run Keyword *** Test Cases *** -BPS001.001 Power Control - Power On and Serial output - [Documentation] Verifies if the DUT can be turned On and if the serial output can be read. +BPS001.001 Power Control - PSU ON and serial output + [Documentation] Verifies if PSU can be turned ON and if the serial output can be read. + Skip If '${INITIAL_DUT_CONNECTION_METHOD}' == 'SSH' + Skip If '${POWER_CTRL}' == 'none' Power On ${result}= Wait For Serial Output Should Be True ${result} msg=Power On keyword failed -BPS001.002 Power Control - Power Off - [Documentation] This test verifies if the DUT can be powered down. +BPS002.001 Power control - PSU OFF + [Documentation] Verifies if PSU can be turned OFF + Skip If '${INITIAL_DUT_CONNECTION_METHOD}' == 'SSH' + Skip If '${POWER_CTRL}' == 'none' Power On ${result}= Wait For Serial Output Should Be True ${result} msg=Power On keyword failed - Power Cycle Off - ${out}= Read From Terminal - ${result}= Wait For Serial Output timeout=10 - Should Not Be True ${result} msg=Power Cycle Off keyword failed - -BPS002.001 RTE Relay low - [Documentation] Verifies if RTE Relay set to low state will turn off the DUT. - Skip If '${POWER_CTRL}' != 'RteCtrl' DUT doesn't use RTE relay for power control - Power On - ${result}= Wait For Serial Output - Should Be True ${result} msg=Power On keyword failed - - Rte Relay Set off + Rte Psu Off Read From Terminal ${result}= Wait For Serial Output timeout=10 - Should Not Be True ${result} msg=Failed to power off DUT via relay + Should Not Be True ${result} msg=Failed to switch PSU OFF -BPS002.002 RTE Relay high - [Documentation] Verifies if RTE Relay set to high state will turn on the DUT. - Skip If '${POWER_CTRL}' != 'RteCtrl' DUT doesn't use RTE relay for power control - Power On - Rte Relay Set off - Read From Terminal - ${result}= Wait For Serial Output timeout=10 - Should Not Be True ${result} msg=Failed to power off DUT via relay - - Rte Relay Set on - ${result}= Wait For Serial Output - Should Be True ${result} msg=Failed to power on DUT via relay - -BPS002.003 RTE Power On - [Documentation] Verifies if Power Button can turn on the DUT. +BPS003.001 RTE Power On + [Documentation] Verifies if Power Button can turn DUT ON/OFF. # TODO: do we have platforms in the lab that might not use # power/reset buttons? If so, we do not have flag for it. + Skip If '${INITIAL_DUT_CONNECTION_METHOD}' == 'SSH' + Skip If '${POWER_CTRL}' == 'none' Power On ${result}= Wait For Serial Output Should Be True ${result} msg=Power On keyword failed - Rte Power Off + Power Off Ex Sleep 10s Read From Terminal ${result}= Wait For Serial Output timeout=10 Should Not Be True ${result} msg=Failed to power off DUT via power button - Rte Power On + Power On Ex ${result}= Wait For Serial Output Should Be True ${result} msg=Failed to power on DUT via power button -BPS002.004 RTE Power Off - [Documentation] Verifies if Power Button can turn off the DUT. +BPS004.001 RTE Reset + [Documentation] Verifies if reset button can reset the DUT. + Skip If '${INITIAL_DUT_CONNECTION_METHOD}' == 'SSH' + Skip If '${POWER_CTRL}' == 'none' Power On ${result}= Wait For Serial Output Should Be True ${result} msg=Power On keyword failed - - Rte Power Off - Sleep 10s - Read From Terminal - ${result}= Wait For Serial Output timeout=10 - Should Not Be True ${result} msg=Failed to power off DUT via power button - -BPS002.005 RTE Reset - [Documentation] Verifies if RTE Reset works - Power On - Wait For Serial Output Rte Reset Read From Terminal ${result}= Wait For Serial Output Should Be True ${result} msg=Failed to reset DUT via reset button -BPS003.001 Sonoff Power On - [Documentation] This test verifies if the DUT can be powerd on by Sonoff - Skip If '${POWER_CTRL}' != 'sonoff' DUT doesn't use Sonoff - Sonoff Power Cycle On - ${result}= Wait For Serial Output - Should Be True ${result} msg=Failed power on DUT via Sonoff - -BPS003.002 Sonoff Power Off - [Documentation] This test verifies if the DUT can be shutdown by Sonoff - Skip If '${POWER_CTRL}' != 'sonoff' DUT doesn't use Sonoff - Sonoff Power Cycle On - ${result}= Wait For Serial Output - Should Be True ${result} msg=Failed power on DUT via Sonoff - Sonoff Power Cycle Off - Read From Terminal - ${result}= Wait For Serial Output timeout=10 - Should Not Be True ${result} msg=Failed power off DUT via Sonoff - -BPS004.001 Boot to OS - Ubuntu +BPS005.001 Boot to OS - Ubuntu [Documentation] This test verifies if platform can be booted to Ubunto and if correct credentials are set. + Skip If "${ENV_ID_UBUNTU}" not in "${TESTED_LINUX_DISTROS}" Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User ${logging}= Get Logging Level @@ -139,26 +93,72 @@ BPS004.001 Boot to OS - Ubuntu ${logging}= Get Logging Level Should Be Equal As Integers ${logging} 0 -BPS004.002 Boot to OS - Windows +BPS005.002 Boot to OS - Windows [Documentation] This test verifies if platform can be booted to Windows, if SSH server is enabled and if correct credentials are set. + Skip If not "${TESTS_IN_WINDOWS_SUPPORT}" Power On Login To Windows -BPS005.001 External flashing +BPS006.001 Ensure test dependencies + [Documentation] Ensure that all the dependencies for the tests are + ... installed on all supported OSes + Run Ansible Playbooks + +BPS007.001 External flashing [Documentation] This test verifies if the flash die can be detected. + Skip If '${FLASHING_METHOD}' != 'external' ${rc}= Rte Flash Probe Should Be Equal As Integers ${rc} 0 -BPS005.002 Internal flashing +BPS007.002 Internal flashing [Documentation] This test verifies if flashrom can detect the die. + Skip If '${FLASHING_METHOD}' == 'none' Power On - Boot System Or From Connected Disk ubuntu + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} Login To Linux Switch To Root User - Get Flashrom From Cloud ${out_flashrom}= Execute Command In Terminal flashrom -p internal Should Contain ${out_flashrom} Found chipset +BPS008.001 RTE CMOS clear + [Documentation] This test verifies if CMOS clear works with the platform setup. + Skip If '${POWER_CTRL}' == 'none' + # CMOS should be cleared when platform is cut off from power + Rte Psu Off + Rte Clear Cmos + Power On + # TODO: Can we do it without Linux? + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + # Test relies entirely on coreboot console to print the CMOS invalid message + ${out}= Execute Command In Terminal + ... cbmem -1 | grep -i rtc + + Should Contain Any ${out} + ... RTC: Clear requested + ... rtc_failed \= 0x1 + ... ignore_case=True + + Execute Reboot Command + + # Now check if the CMOS is not reset again after reboot. If CMOS fails it + # means that either the CMOS battery is not connected at all or the + # platform setup is incorrect. + Boot System Or From Connected Disk ${ENV_ID_UBUNTU} + Login To Linux + Switch To Root User + + ${out}= Execute Command In Terminal + ... cbmem -1 | grep -i rtc + + Should Not Contain Any + ... ${out} + ... RTC: Clear requested + ... rtc_failed \= 0x1 + ... ignore_case=True + ... msg=CMOS is invalid after reboot. Either the CMOS battery is not connected or the connection is wrong. Check DUT setup. + *** Keywords *** Check If Empty @@ -190,3 +190,75 @@ Wait For Serial Output IF ${result} == ${FALSE} RETURN ${TRUE} END RETURN ${FALSE} + +# TODO: incorporate LED checks into RTE OSFV lib + +Power Off Ex + Rte Power Off + IF '${CHECK_POWER_LED_SUPPORT}' == '${TRUE}' + FOR ${i} IN RANGE 20 + ${out}= Rte Check Power Led + IF '${out}' == 'low' RETURN + Sleep 0.5s + END + IF '${out}' != 'high' + FAIL Power LED didn't light up! Setup needs manual verification, + ... or Power State After Power Failure is set incorrectly. + END + END + +Power On Ex + Rte Power On + IF '${CHECK_POWER_LED_SUPPORT}' == '${TRUE}' + FOR ${i} IN RANGE 10 + ${out}= Rte Check Power Led + IF '${out}' == 'high' RETURN + Sleep 0.5s + END + IF '${out}' != 'high' + FAIL Power LED didn't light up! Setup needs manual verification, + ... or Power State After Power Failure is set incorrectly. + END + END + +Run Ansible Playbooks + [Documentation] Runs all supported Ansible plabooks from os-config/ansible + ... according to ${TESTED_LINUX_DISTROS} + + IF not ${USE_ANSIBLE} + Log To Console USE_ANSIBLE is set to ${USE_ANSIBLE}, skipping ansible setup. + RETURN + END + + FOR ${distro_id} IN @{TESTED_LINUX_DISTROS} + Log To Console "Ansible setup for ENV_ID ${distro_id}" + Power On + Boot System Or From Connected Disk ${distro_id} + # ansible will fail no matter the timeouts if host is unreachable + # (not booted yet) + Login To Linux + Check Internet Connection On Linux + + # Create temporary inventory file for given platform and OS + ${inventory_file}= Catenate [host] \n + ... ${DEVICE_IP} ansible_user=${DEVICE_OS_USERNAME} + ... ansible_ssh_pass=${DEVICE_OS_PASSWORD} ansible_sudo_pass=${DEVICE_OS_PASSWORD} + ... ansible_ssh_common_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' + ${tmp_file_rand}= Generate Random String length=16 + ${tmp_inventory_filename}= Set Variable ansible_inventory_${tmp_file_rand}.yaml + Create File ${tmp_inventory_filename} ${inventory_file} + + # Prepare and run ansible-playbook command + ${ansible_cmd}= Catenate ansible-playbook + ... os-config/ansible/linux-packages-playbook.yaml + ... -i ${tmp_inventory_filename} + ... --extra-vars "os_id=${distro_id}" + ... --timeout 300 + ${rc} ${out}= Run And Return Rc And Output ${ansible_cmd} + Log To Console ${out} + + # Cleanup + Remove File ${tmp_inventory_filename} + + Should Be Equal As Integers ${rc} 0 + END diff --git a/variables.robot b/variables.robot index d3ae0b9312..e79d20e828 100644 --- a/variables.robot +++ b/variables.robot @@ -9,7 +9,7 @@ ${DEBIAN_STABLE_VER}= 4.14.y ${TEARDOWN}= no ${SNIPEIT}= yes -${DL_CACHE_DIR}= ${CURDIR}/dl-cache +${TEST_DATA_DIR}= ${CURDIR}/osfv-test-data ${RE_FRAME_START}= ^.*/-{3,}\\\\.*$ ${RE_FRAME_END}= ^.*\\\\-{3,}/.*$ @@ -93,10 +93,10 @@ ${OS_UBUNTU}= ubuntu # Immunefi -------------------------------------------------------------------- &{RTE28}= ip=192.168.10.70 ... platform=KGPE-D16-8MB -... platform_vendor=ASUS sonoff_ip=192.168.10.125 +... platform_vendor=ASUS sonoff_ip=192.168.10.159 &{RTE29}= ip=192.168.20.15 ... platform=KGPE-D16-16MB -... platform_vendor=ASUS sonoff_ip=192.168.10.144 +... platform_vendor=ASUS # FIXME: sonoff missing # 3mdeb Protectli ----------------------------------------------------- &{RTE30}= ip=192.168.4.190 ... platform=FW6_CML @@ -112,20 +112,16 @@ ${OS_UBUNTU}= ubuntu &{RTE33}= ip=192.168.10.107 ... platform=msi-pro-z690-a-wifi-ddr4 ... platform_vendor=MSI Co., Ltd sonoff_ip=192.168.10.170 -... pikvm_ip=192.168.10.99 &{RTE34}= ip=192.168.10.199 ... platform=msi-pro-z690-a-wifi-ddr4 ... platform_vendor=MSI Co., Ltd sonoff_ip=192.168.10.169 -... pikvm_ip=192.168.10.16 &{RTE39}= ip=192.168.10.188 ... platform=msi-pro-z690-a-ddr5 ... platform_vendor=MSI Co., Ltd sonoff_ip=192.168.10.69 -... pikvm_ip=192.168.10.45 # MSI-PRO-Z790-P platforms (Zir-Blazer) ----------------------------- &{RTE46}= ip=192.168.10.127 ... platform=msi-pro-z790-p-ddr5 ... platform_vendor=MSI Co., Ltd sonoff_ip=192.168.10.253 -... pikvm_ip=192.168.10.226 # PC Engines APU7 platform ----------------------------------------------------- &{RTE35}= ip=192.168.10.177 ... platform=apu7 @@ -139,8 +135,8 @@ ${OS_UBUNTU}= ubuntu ... platform=protectli-vp4670 sonoff_ip=192.168.10.19 ... platform_vendor=protectli # 3mdeb Protectli vp4670_2 --------------------------------------------------- -&{RTE49}= ip=192.168.10.14 -... platform=protectli-vp6650 sonoff_ip=192.168.10.144 +&{RTE49}= ip=192.168.10.74 +... platform=protectli-vp4670 sonoff_ip=192.168.10.144 ... platform_vendor=protectli # * this RTE is currently repurposed for VP6650 # 3mdeb Protectli vp4650 ----------------------------------------------------- @@ -189,7 +185,7 @@ ${OS_UBUNTU}= ubuntu # NovaCustom automated laptop testing station -------------------------------- &{RTE52}= ip=192.168.10.91 ... platform=novacustom-ts1 platform_vendor=3mdeb -... sonoff_ip=192.168.10.53 pikvm_ip=192.168.10.52 +... sonoff_ip=192.168.10.53 # 3mdeb Protectli VP6670 ----------------------------------------------------- &{RTE53}= ip=192.168.10.110 ... platform=protectli-vp6670 platform_vendor=protectli @@ -236,17 +232,28 @@ ${OS_UBUNTU}= ubuntu # Odroid-H4 Plus &{RTE66}= ip=192.168.10.193 platform=odroid-h4-Plus ... platform_vendor=Hardkernel -... pikvm_ip=192.168.10.120 # Protectli VP3230 &{RTE67}= ip=192.168.10.35 ... platform=protectli-vp3230 ... platform_vendor=protectli ... sonoff_ip=192.168.10.27 + # 3mdeb Protectli VP2430 ----------------------------------------------------- &{RTE68}= ip=192.168.10.18 ... platform=protectli-vp2430 ... platform_vendor=protectli +# Protectli VP3210 +&{RTE69}= ip=192.168.10.211 +... platform=protectli-vp3210 +... platform_vendor=protectli + +# NovaCustom NS50MU test rack +&{RTE70}= ip=192.168.10.73 +... platform=novacustom-ns50mu +... platform_vendor=Clevo +... sonoff_ip=192.168.10.67 + @{RTE_LIST}= &{RTE05} ... &{RTE06} &{RTE07} &{RTE08} &{RTE09} &{RTE10} ... &{RTE11} &{RTE12} &{RTE13} &{RTE14} &{RTE15} @@ -256,11 +263,11 @@ ${OS_UBUNTU}= ubuntu ... &{RTE31} &{RTE32} &{RTE33} &{RTE34} &{RTE35} ... &{RTE36} &{RTE37} &{RTE38} &{RTE39} &{RTE40} ... &{RTE41} &{RTE42} &{RTE43} &{RTE44} &{RTE45} -... &{RTE46} &{RTE47} &{RTE48} &{RTE50} +... &{RTE46} &{RTE47} &{RTE48} &{RTE49} &{RTE50} ... &{RTE51} &{RTE52} &{RTE53} &{RTE54} &{RTE55} ... &{RTE56} &{RTE57} &{RTE58} &{RTE59} &{RTE60} ... &{RTE61} &{RTE62} &{RTE63} &{RTE64} &{RTE65} -... &{RTE66} &{RTE67} &{RTE68} +... &{RTE66} &{RTE67} &{RTE68} &{RTE69} &{RTE70} # hardware database: # ----------------------------------------------------------------------------- &{HDD01}= vendor=SAMSUNG volume=500GB type=HDD_Storage @@ -358,53 +365,6 @@ ${OS_UBUNTU}= ubuntu ... interface=eMMC count=1 boot_name=eMMC Device @{MMC_LIST}= &{EMMC01} -# ----------------------------------------------------------------------------- -&{USB01}= vendor=Kingston volume=16GB type=USB_Storage -... protocol=3.0 interface=USB count=2 -... sbo_name=USB -&{USB02}= vendor=ADATA volume=16GB type=USB_Storage -... protocol=3.0 interface=USB count=2 -... sbo_name=USB -&{USB03}= vendor=SanDisk volume=16GB type=USB_Storage -... protocol=3.0 interface=USB count=2 -... sbo_name=USB -&{USB04}= vendor=Corsair volume=16GB type=USB_Storage -... protocol=3.0 interface=USB count=2 -... sbo_name=USB -# pfSense stick installer -&{USB05}= vendor=Kingston volume=16GB type=USB_Storage -... protocol=2.0 interface=USB count=1 -... sbo_name=USB -&{USB06}= vendor=SiliconMotion volume=8GB type=USB_Storage -... protocol=3.0 interface=USB count=1 -... sbo_name=USB -&{USB07}= vendor=SanDisk volume=16GB type=USB_Storage -... protocol=3.0 interface=USB count=1 -... sbo_name=USB -&{USB08}= vendor=Adata volume=16GB type=USB_Storage -... protocol=3.1 interface=USB count=1 -... sbo_name=USB -&{USB09}= vendor=Kingston volume=16GB type=USB_Storage -... protocol=3.0 interface=USB count=1 -... sbo_name=USB -&{USB10}= vendor=Goodram volume=16GB type=USB_Storage -... protocol=2.0 interface=USB count=1 -... sbo_name=USB -&{USB11}= vendor=SanDisk volume=32GB type=USB_Storage -... protocol=3.0 interface=USB count=1 -... sbo_name=USB name=USB SanDisk 3.2Gen1 -&{USB12}= vendor=SanDisk volume=32GB type=USB_Storage -... protocol=3.0 interface=USB count=1 -... sbo_name=USB name=SanDisk Ultra USB 3.0 -&{USB13}= vendor=Artificial volume=1GB type=USB_Storage -... protocol=3.0 interface=USB count=1 -... sbo_name=USB name=PiKVM Composite KVM Device -&{USB14}= vendor=Kingston volume=32GB type=USB_Storage -... protocol=3.0 interface=USB count=2 -... sbo_name=USB name=USB DISK 3.0 -@{USB_LIST}= &{USB01} &{USB02} &{USB03} &{USB04} &{USB05} -... &{USB06} &{USB07} &{USB08} &{USB09} &{USB10} -... &{USB11} &{USB12} &{USB13} &{USB14} # ----------------------------------------------------------------------------- &{MODULE01}= vendor=HUAWEI type=LTE_Module interface=mPCIe ... count=1 @@ -432,31 +392,25 @@ ${OS_UBUNTU}= ubuntu ... &{MODULE06} &{MODULE07} &{MODULE08} &{MODULE09} ... &{MODULE10} &{MODULE11} &{MODULE12} # ----------------------------------------------------------------------------- -&{EXPANDER01}= type=USB_Expander slots=2 slot1=&{USB05} -... slot2=&{MODULE04} interface=USB count=1 -&{EXPANDER02}= type=USB_Expander slots=2 slot1=&{USB07} -... slot2=&{EMPTY} interface=USB count=1 -@{EXPANDER_LIST}= &{EXPANDER01} &{EXPANDER02} -# ----------------------------------------------------------------------------- &{ADAPTER01}= type=UART_USB_Adapter interface=UART count=1 @{ADAPTER_LIST}= &{ADAPTER01} # ----------------------------------------------------------------------------- # hardware configurations: -@{CONFIG01}= &{RTE08} &{MODULE10} &{SSD04} &{USB04} -... &{CARD03} &{ADAPTER01} &{EXPANDER02} -@{CONFIG02}= &{RTE09} &{SSD19} &{CARD05} &{USB03} +@{CONFIG01}= &{RTE08} &{MODULE10} &{SSD04} +... &{CARD03} &{ADAPTER01} +@{CONFIG02}= &{RTE09} &{SSD19} &{CARD05} ... &{MODULE08} &{MODULE10} &{MODULE06} &{ADAPTER01} -@{CONFIG03}= &{RTE10} &{HDD01} &{CARD02} &{USB01} -... &{MODULE01} &{MODULE02} &{MODULE04} &{EXPANDER01} +@{CONFIG03}= &{RTE10} &{HDD01} &{CARD02} +... &{MODULE01} &{MODULE02} &{MODULE04} ... &{MODULE10} &{ADAPTER01} -@{CONFIG04}= &{RTE11} &{SSD06} &{CARD06} &{USB03} +@{CONFIG04}= &{RTE11} &{SSD06} &{CARD06} ... &{MODULE06} &{ADAPTER01} &{MODULE10} -@{CONFIG05}= &{RTE12} &{USB03} &{MODULE07} &{CARD05} +@{CONFIG05}= &{RTE12} &{MODULE07} &{CARD05} ... &{ADAPTER01} &{MODULE10} -@{CONFIG06}= &{RTE13} &{SSD05} &{CARD01} &{USB03} +@{CONFIG06}= &{RTE13} &{SSD05} &{CARD01} ... &{MODULE09} &{MODULE10} &{MODULE11} &{ADAPTER01} -@{CONFIG07}= &{RTE14} &{USB06} &{MODULE10} &{SSD03} +@{CONFIG07}= &{RTE14} &{MODULE10} &{SSD03} @{CONFIG08}= &{RTE15} @{CONFIG09}= &{RTE16} @{CONFIG10}= &{RTE17} @@ -467,41 +421,43 @@ ${OS_UBUNTU}= ubuntu @{CONFIG15}= &{RTE22} &{SSD04} &{MODULE10} &{MODULE09} @{CONFIG16}= &{RTE23} @{CONFIG17}= &{RTE24} -@{CONFIG18}= &{RTE25} &{USB07} +@{CONFIG18}= &{RTE25} @{CONFIG19}= &{RTE26} @{CONFIG20}= &{RTE27} -@{CONFIG21}= &{RTE28} &{USB10} &{MODULE10} -@{CONFIG22}= &{RTE29} &{USB10} &{MODULE12} -@{CONFIG23}= &{RTE30} &{MODULE11} &{CARD04} &{USB08} -... &{MODULE09} &{USB09} &{SSD05} &{MODULE10} -@{CONFIG24}= &{RTE32} &{USB09} -@{CONFIG25}= &{RTE33} &{USB14} &{SSD08} -@{CONFIG26}= &{RTE34} &{USB14} &{SSD08} -@{CONFIG27}= &{RTE35} &{USB07} &{SSD02} &{MODULE10} -@{CONFIG28}= &{RTE36} &{USB11} &{SSD09} +@{CONFIG21}= &{RTE28} &{MODULE10} +@{CONFIG22}= &{RTE29} &{MODULE12} +@{CONFIG23}= &{RTE30} &{MODULE11} &{CARD04} +... &{MODULE09} &{SSD05} &{MODULE10} +@{CONFIG24}= &{RTE32} +@{CONFIG25}= &{RTE33} &{SSD08} +@{CONFIG26}= &{RTE34} &{SSD08} +@{CONFIG27}= &{RTE35} &{SSD02} &{MODULE10} +@{CONFIG28}= &{RTE36} &{SSD09} @{CONFIG29}= &{RTE37} &{SSD12} -@{CONFIG30}= &{RTE38} &{USB11} -@{CONFIG31}= &{RTE39} &{USB14} &{SSD08} -@{CONFIG32}= &{RTE40} &{USB12} &{SSD11} +@{CONFIG30}= &{RTE38} +@{CONFIG31}= &{RTE39} &{SSD08} +@{CONFIG32}= &{RTE40} &{SSD11} @{CONFIG33}= &{RTE41} @{CONFIG34}= &{RTE42} &{SSD13} &{EMMC02} @{CONFIG35}= &{RTE43} &{EMMC01} @{CONFIG36}= &{RTE44} &{EMMC01} @{CONFIG37}= &{RTE45} &{EMMC01} -@{CONFIG38}= &{RTE46} &{USB13} &{SSD08} +@{CONFIG38}= &{RTE46} &{SSD08} @{CONFIG39}= &{RTE47} @{CONFIG40}= &{RTE48} -@{CONFIG42}= &{RTE50} &{USB11} &{SSD08} -@{CONFIG43}= &{RTE51} &{USB11} &{SSD10} -@{CONFIG44}= &{RTE52} &{USB11} &{SSD10} -@{CONFIG45}= &{RTE53} &{USB11} &{SSD15} -@{CONFIG46}= &{RTE54} &{USB11} &{SSD07} +@{CONFIG41}= &{RTE49} +@{CONFIG42}= &{RTE50} &{SSD08} +@{CONFIG43}= &{RTE51} &{SSD10} +@{CONFIG44}= &{RTE52} &{SSD10} +@{CONFIG45}= &{RTE53} &{SSD15} +@{CONFIG46}= &{RTE54} &{SSD07} @{CONFIG47}= &{RTE63} &{EMMC01} @{CONFIG48}= &{RTE64} &{SSD17} @{CONFIG49}= &{RTE65} &{SSD17} @{CONFIG50}= &{RTE66} &{SSD18} # Borrowed from NV41PZ -@{CONFIG51}= &{RTE67} &{USB11} -@{CONFIG52}= &{RTE68} &{USB12} &{SSD18} +@{CONFIG51}= &{RTE67} +@{CONFIG52}= &{RTE68} &{SSD18} +@{CONFIG53}= &{RTE69} @{CONFIG_LIST}= @{CONFIG01} @{CONFIG02} @{CONFIG03} @{CONFIG04} ... @{CONFIG05} @{CONFIG06} @{CONFIG08} @{CONFIG09} @@ -512,7 +468,7 @@ ${OS_UBUNTU}= ubuntu ... @{CONFIG26} @{CONFIG27} @{CONFIG28} @{CONFIG29} ... @{CONFIG30} @{CONFIG31} @{CONFIG32} @{CONFIG33} ... @{CONFIG34} @{CONFIG35} @{CONFIG36} @{CONFIG37} -... @{CONFIG38} @{CONFIG39} @{CONFIG40} +... @{CONFIG38} @{CONFIG39} @{CONFIG40} @{CONFIG41} ... @{CONFIG42} @{CONFIG43} @{CONFIG44} @{CONFIG45} ... @{CONFIG46} @{CONFIG47} @{CONFIG48} @{CONFIG49} -... @{CONFIG50} @{CONFIG51} +... @{CONFIG50} @{CONFIG51} @{CONFIG52} @{CONFIG53}