metadata: name: apertis-update-manager-rollback format: "Apertis Test Definition 1.0" image-type: any image-arch: armhf type: functional exec-type: manual priority: medium maintainer: "Apertis Project" description: "Test the automatic rollback and blacklist mechanism of apertis-update-manager." resources: - "A Fat32 USB flash drive, preloaded with an update bundle named static-update.bundle at the root of the disk" - "The DUT u-boot environment must be clean: in u-boot, run: `env default -a` followed by `saveenv`" - "A PC must be connected to DUT serial port" expected: - "U-Boot is able to detect rollback situation" - "U-Boot is able to use rollback configuration for bootloader" - 'The "failed" update is rolled back' - '"Failed" update is marked as blacklisted' - 'Apertis-update-manager is able to detect blacklisted update and refuse to update the system with it' run: steps: - "Check the current deployment" - $ sudo ostree admin status - "Start the user interface agent with mode preventing automatic system reboot after update" - $ sudo updatectl --register-upgrade-handler & - "Plug the USB flash drive into the device" - "The update starts automatically" - "After the update, the device does *not* reboot automatically" - "Check that the user interface agent reports the pending update" - | >** Message: Upgrade status: Checking ** Message: An upgrade is pending - "Remove the USB flash drive" - "Check if there is pending deployment and reboot the DUT" - $ sudo ostree admin status - $ sudo reboot - "In `U-Boot` console check the status of upgrade" - $ printenv bootcount bootlimit upgrade_available - | >bootcount=1 bootlimit=3 upgrade_available=1 - "Reset the DUT 3 times before the boot finishes" - "U-Boot should be able to detect the rollback mode and boot the system in rollback mode" - | >Warning: Bootlimit (3) exceeded. Using altbootcmd. Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... Found /extlinux/extlinux-rollback.conf Retrieving file: /extlinux/extlinux-rollback.conf - "Wait for system boot" - "Check the update has been rolled back and that the initial deployment is still the active deployment" - $ sudo ostree admin status - "Start the user interface agent" - $ sudo updatectl & - "Plug the USB flash drive with the same update file into the device" - "Check that the user interface agent reports the system is up to update" - | >** Message: Upgrade status: Checking ** Message: System is up to date - "Check the journal log should mention that the update ID has been blacklisted" - $ sudo journalctl -ef --unit apertis-update-manager - | >Dec 19 20:54:34 apertis apertis-update-[330]: Ostree static delta starting Dec 19 20:54:34 apertis apertis-update-[330]: Revision '9804c4f6e952f0ba61659f55262b9cdd8879cb480084e7f24d9167c2b35f7f28' is marked as blacklisted; skipping Dec 19 20:54:34 apertis apertis-update-[330]: Ostree already up to date