canonical / checkbox

Checkbox is a testing framework used to validate device compatibility with Ubuntu Linux. It’s the testing tool developed for the purposes of the Ubuntu Certification program.
https://checkbox.readthedocs.io
GNU General Public License v3.0
33 stars 50 forks source link

Migrate checkbox-dss-validation to checkbox/contrib (New) #1524

Closed motjuste closed 1 month ago

motjuste commented 1 month ago

Description

Copied the most relevant files from the original repo at commit bc07d01 and placed them in the newly created directory at contrib/checkbox-dss-validation. Solutions QA team has been added to .github/CODEOWNERS for the relevant directories and GitHub workflows.

Files under checkbox-provider-dss/bin in the original repo were not copied because it had a binary file, and none of the files were being used in the jobs anyway.

The only relevant GitHub workflow for regression testing of DSS was also copied. The relevant workflow has to be run in Testflinger, and its definition has been added to .github/workflows, while the relevant Testflinger job's definition has been copied to contrib/checkbox-dss-validation/testflinger/job-def.yaml directory. These files have changes from the original so that they point to the relevant directory in this repository instead of the original one.

Nevertheless, I have not made any changes to this repository's settings to enable running the workflow with Testflinger. I did not see the workflow being available to run in the GitHub Actions tab for this repo to check if the workflows will run or not.

Similarly, minimal updates (from the original) have been made to the README of the provider to now point to this repository instead of the original one in instructions.

An attempt was made to change the namespace of the provider from com.canonical.certification to com.canonical.contrib as suggested in contrib's README, but this lead to errors during validation of the provider.

Details of the validation errors on changing namespace to `contrib` ``` error: units/jobs.pxu:4: job 'intel_gpu/host_gpu_avail', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:20: job 'dss/initialize', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:43: job 'dss/namespace', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:59: job 'dss/status_mlflow', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:78: job 'dss/mlflow_deployed', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:95: job 'intel_gpu_plugin/install', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:124: job 'intel_gpu_plugin/daemonset_name', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:141: job 'intel_gpu_plugin/daemonset_number_available', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:158: job 'intel_gpu_plugin/daemonset_number_ready', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:175: job 'intel_gpu_plugin/labels', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:192: job 'intel_gpu_plugin/gpu_count', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:209: job 'intel_gpu_plugin/node_gpu_capacity', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:230: job 'intel_gpu_plugin/node_gpu_allocatable', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:251: job 'dss/status_intel_gpu', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:270: job 'dss/create_itex_2.15_notebook', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:287: job 'itex/itex_2.15_import', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:308: job 'itex/itex_2.15_gpu_avail', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:343: job 'dss/create_ipex_2.1.20_notebook', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:360: job 'ipex/ipex_2.1.20_import', field 'requires', unit 'com.canonical.contrib::executable' is not available error: units/jobs.pxu:381: job 'ipex/ipex_2.1.20_gpu_avail', field 'requires', unit 'com.canonical.contrib::executable' is not available ```

Resolved issues

Documentation

No updates to Checkbox documentation.

Tests

Testing was done using the following Testflinger job definition, with a successful run 7014854f-82c9-45cc-8374-b9c91f8f2046:

job_queue: dell-precision-3470-c30322
provision_data:
  distro: jammy
test_data:
  test_cmds: |
    ssh -t ubuntu@$DEVICE_IP '
      export DEBIAN_FRONTEND=noninteractive
      sudo apt update
      sudo apt -y install git
      git clone -b CHECKBOX-1585-contrib-dss-validation https://github.com/canonical/checkbox.git
      cd checkbox/contrib/checkbox-dss-validation
      sudo snap install --classic snapcraft
      sudo snap install checkbox22
      lxd init --auto
      snapcraft
      sudo snap install --dangerous --classic ./checkbox-dss_*_amd64.snap
      checkbox-dss.install-deps
      checkbox-dss.validate-intel-gpu
    '
motjuste commented 1 month ago

The Workflow validation workflow is failing because the action-validator is too old. It passes on my machine with action-validator version 0.6.0 which is the latest release since Feb-2024. See in particular notes for version 0.5.4.

Created issue #1525 for it.

motjuste commented 1 month ago

New run in Testflinger after making requested changes: 4d890e0f-327c-4639-9aba-6334b413c777

motjuste commented 1 month ago

Tests pass in Testflinger after changing namespace.