reg_linux_diskless_installation_flat fails on aarch64 at the check "lsdef $$CN | grep vmothersetting" matched against "machine". The case stops there, so the diskless provisioning it exists to measure is never asserted. The case sets vmothersetting to machine:invalid, confirms the node still provisions, then replaces it with a valid machine type and confirms again. The second step selects that type by architecture and knows only ppc64, x86_64 and riscv64. On aarch64 the variable stays empty, chdef clears vmothersetting, and the check that looks for the word "machine" returns 1. Give aarch64 the machine type QEMU uses for it, which is virt, the same value riscv64 already gets. The other three architectures keep the value they had. Measured on xcat-ci/xcat-test-el10-aarch64 #9: the case reported Failed at this check, 08:36:51Z, while genimage and packimage returned 0 and the node reached status=booted with rootfs on / type tmpfs and IMAGENAME alma10.2-aarch64-netboot-compute. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
xCAT-test
Unit tests that run from the source checkout are split by implementation language:
| Test type | Location | Runner |
|---|---|---|
| Perl unit tests | xCAT-test/unit/*.t |
prove -r xCAT-test/unit |
| Shell unit tests | xCAT-test/bats/*.bats |
bats -r xCAT-test/bats |
| Black-box service tests | xCAT-test/blackboxtest/ |
python3 -m unittest discover -s tests, then blackboxtest run <conf> on a management node |
| Native host tests | xCAT-test/native/*.t |
Explicit lab runs; see native/README.md |
| CLI functional tests | xCAT-test/autotest/testcase/ and xCAT-test/autotest/bundle/ |
xcattest -f <cluster.conf> -t <case> or xcattest -f <cluster.conf> -b <bundle> |
Use Perl .t tests for Perl modules, Perl scripts, templates, and repository
artifacts. Use BATS tests for shell-script behavior that can be exercised from
the checkout by sourcing a shell library or script and shadowing external
commands.
Shell behavior should not be tested by Perl tests that grep shell source. Put
those tests under xCAT-test/bats instead.
blackboxtest is the odd one out: its Python unit tests and blackboxtest validate run offline like the others, but its point is the third column --
asking a management node what a booting node asks (DHCP, DNS, TFTP, HTTP,
xcatd) and asserting on the answers. It talks to the services only as a client,
so it does not depend on which DHCP server answers or on the xCAT database.
See unit/README.md, bats/README.md and blackboxtest/README.md for the
detailed rules for each suite.