Transactional Update test description

Basic checks


Basic network and connectivity check.

  • Print network configuration (ip addr show and resolv.conf)
  • Ping localhost (IPv4) and ::1 (IPv6)
  • Curl to and


Check that zypper configuration is customized for MicroOS.

  • egrep -x "^solver.onlyRequires ?= ?true" /etc/zypp/zypp.conf
  • egrep -x "^rpm.install.excludedocs ?= ?yes" /etc/zypp/zypp.conf
  • egrep -x "^multiversion ?=" /etc/zypp/zypp.conf


Simple image specific checks:

  • Verify that openQA resized the disk image
  • Verify that there is no unpartitioned space left
  • Verify that the filesystem mounted at /var grew beyond the default 5GiB
  • Verify that combustion ran


Simple checks after installation.

  • Check that snapper is configured snapper list
  • Subvolume check btrfs subvolume show /var
  • kubectl is not installable if SYSTEM_ROLE=microos (only openSUSE MicroOS)
  • crio should be installed if SYSTEM_ROLE=kubeadm (only openSUSE MicroOS)


Check that services are enables based on system role
The following services should be enabled by default:

  • issue-add-ssh-keys
  • issue-generator
  • transactional-update.timer
  • sshd

On other system roles (MicroOS only), other services might be checked to be enabled.


Basic check for cockpit service.

  • Install cockpit package if not installed
  • Install cockpit-networkmanager package if the system is running network-manager.
  • Install cockpit-wicked package if the system is running wicked.
  • Install cockpit-machines and cockpit-tukit if packages are available.
  • Enable and start cockpit.socket service and check that Cockpit is active and accessible on http://localhost:9090
  • Test Cockpit service survives a reboot (it's active automatically after rebooting)

Specific transactional system tests


Basic smoke test to verify all basic transactional update operations work and system can properly boot.

  • Reinstall bootloader: transactional-update bootloader
  • Regenerate grub.cfg: transactional-update grub.cfg
  • Regenerate initrd: transactional-update initrd
  • Regenerate kdump: transactional-update kdump
  • Run cleanup: transactional-update cleanup


Check that root filesystem is read only

  • / is RO:
    • cannot create touch /should_fail
    • btrfs property get / ro | grep "ro=true"
  • /var is RW:
    • can create touch /var/log/should_succeed
    • btrfs property get /var ro | grep "ro=false"
  • /etc is RW:
    • can create touch /etc/should_succeed
  • Look for ro mount point in fstab: findmnt -s / -n -O ro
  • Look for ro mount point in mounted filesystems: findmnt / -n -O ro




Test rebootmgr using different strategies

  • Test instant reboot
  • Test maint-window strategy
  • Test etcd locking strategy


Check that health-check service works correctly.

  • Install and enable service health-checker if not installed.
  • health-checker command shall return passed string.
  • Current snapshot shall be the same as the logged one from health-checker.
  • Update using transactional update shell to force health-checker to fail:
    • f=$(rpm --eval %{_libexecdir})/health-checker/; echo -e \'#/bin/sh\n[ "$1" != "check" ]\' > $f && chmod a+x $f
    • reboot
    • health-checker should rollback to the correct snapshot
  • health-checker command shall return passed string.

Updated by jlausuch over 1 year ago ยท 3 revisions