2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-10-22 07:38:08 +00:00
Files
xcat-core/xCAT-test
Daniel Hilst 87cd06e4e5 test(xcat-core): the ipxe shim case reports a pass after leaving a node configured for installation
restore_state in ipxe_secureboot_shim.sh matched the saved nodeset state against
boot, offline, shell and standby. nodeset stat reports chain.currstate verbatim,
so runcmd=bmcsetup, osimage=<name>, runimage=<task> and the deprecated install,
netboot and statelite all fall past that list. The helper then restored nothing
and still printed IPXE_SHIM_OK, so the node kept the installation the case
configured and the next case on that node measured it.

The lookups hide the same failure one layer down. lsdef and nodeset run in a
pipeline, so the exit status comes from sed or head and is always zero, and an
attribute that is unset prints the same empty string as a lookup that failed.
The helper clears the provmethod and the netboot method it reads as unset, so a
failed lookup makes it delete a value the node really had.

The tests drive the helper through nine states and lookups. Against the unfixed
helper, all four refusal cases exit 0 and print IPXE_SHIM_OK after calling
nodeset osimage= on the node, and the provmethod case prints
"provmethod=unset" for a provmethod the stub holds set.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-10-08 13:16:56 -03:00
..
…

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.