diff --git a/tests/kola/boot/bootupd-validate b/tests/kola/boot/bootupd-validate new file mode 100755 index 0000000000..9b7777a72e --- /dev/null +++ b/tests/kola/boot/bootupd-validate @@ -0,0 +1,86 @@ +#!/bin/bash +## kola: +## description: Extend bootupd test to include testing adoption and updates. + +# See https://github.com/coreos/fedora-coreos-tracker/issues/1788#issuecomment-2326473398 +# Steps: +# Overwrite an existing file in the ESP +# Verify that bootupctl validate now fails +# Remove /boot/bootupd-state.json +# Adopt / update again +# Verify that validate is successful + +set -xeuo pipefail + +# shellcheck disable=SC1091 +. "$KOLA_EXT_DATA/commonlib.sh" + +overwrite= +# only x64 and aarch64 have esp device +overwrite_file() { + case "$(arch)" in + x86_64|aarch64) + local efi_dev=$(realpath /dev/disk/by-partlabel/EFI-SYSTEM) + if [ ! -b "${efi_dev}" ]; then + fatal "can not find ${efi_dev}" + fi + mount "${efi_dev}" /boot/efi + local shim_file=$(find /boot/efi -name shim.efi) + if [ -z "${shim_file}" ]; then + fatal "can not find ${shim_file}" + fi + echo test > "${shim_file}" + umount "${efi_dev}" + overwrite=1 + ;; + *) + echo "skipped" + ;; + esac + +} + +adopt_and_update() { + local state_file="/boot/bootupd-state.json" + if [ -f "${state_file}" ]; then + mount -o remount,rw /boot + rm -f ${state_file} + bootupctl adopt-and-update | grep "Adopted and updated.*" + [ ! -f "${state_file}" ] && fatal "Should find ${state_file}" + mount -o remount,ro /boot + fi +} + +validate() { + local msg_efi="Validated: EFI" + local msg_bios="Skipped: BIOS" + + case "$(arch)" in + x86_64) + bootupctl validate | grep "${msg_bios}" + bootupctl validate | grep "${msg_efi}" + ;; + aarch64) + bootupctl validate | grep "${msg_efi}" + ;; + ppc64le) + bootupctl validate | grep "${msg_bios}" + ;; + *) + echo "skipped" + ;; + esac +} + +overwrite_file +if [ -n "${overwrite}" ] && bootupctl validate 2>&1; then + fatal "bootupctl validate failed as expected" +fi + +# skip this when there is fixed bootupd >= 0.2.22 +systemctl reset-failed bootupd.service + +adopt_and_update +validate + +ok bootupctl adopt and update