From 105069634d7c85a08fc3842c35ea2503eceefef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Ferr=C3=A3o?= <2031761+viniciusferrao@users.noreply.github.com> Date: Fri, 9 Oct 2026 19:08:58 -0300 Subject: [PATCH] docs(test): describe Genesis test boundaries --- xCAT-test/bats/README.md | 14 ++++++++++++++ xCAT-test/native/README.md | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/xCAT-test/bats/README.md b/xCAT-test/bats/README.md index 7b5f2e036..c89958e17 100644 --- a/xCAT-test/bats/README.md +++ b/xCAT-test/bats/README.md @@ -43,3 +43,17 @@ The two legacy Red Hat version cases use GNU awk. CI installs both interpreters. Package-manager commands are test doubles, so these cases check selection, arguments and error handling, not repository availability or package installation. + +## Genesis startup + +`genesis_ib_modules.bats` and `genesis_secondary_dhcp.bats` run the complete +`doxcat` script in a private filesystem and network namespace. They replace +external services and device commands, then check the boot interface and the +IPv4 and IPv6 DHCP requests. They do not contact a DHCP server or a BMC. + +The startup cases require Linux, bats-core 1.4 or newer, Bubblewrap, Bash, GNU +core utilities, grep, sed, awk and permission to create user namespaces. +Missing Linux prerequisites fail these cases. Non-Linux hosts skip them. +The RPM prerequisite check requires `rpmspec` but does not use the sandbox. +Run containers with an init process to +reap children created by deliberate-fault tests. diff --git a/xCAT-test/native/README.md b/xCAT-test/native/README.md index 6dac73a77..261239e2c 100644 --- a/xCAT-test/native/README.md +++ b/xCAT-test/native/README.md @@ -96,3 +96,36 @@ EL6 or Ubuntu 14.04 environment. These cases do not qualify native SUSE package transactions, dependency resolution, a running xcatd daemon, or machine boot. The namespace fixture targets merged-/usr hosts. Container runs need namespace permissions and an init process that reaps orphaned children. + +## Genesis OpenEmbedded + +`genesis_metadata.py` runs inside a Genesis KAS shell. It uses BitBake to +evaluate machine and package policy, install local-file recipes into temporary +directories, generate extension manifests and reject invalid extension +metadata. It does not extract or evaluate recipe source fragments. + +For example, from the source checkout: + +```sh +export KAS_WORK_DIR=/path/to/kas-work +export KAS_BUILD_DIR=/path/to/kas-build-x86_64 +source_tree=$PWD +kas dump --format json xCAT-genesis-base/oe/kas/x86_64.yml >"${KAS_BUILD_DIR}.json" +kas shell xCAT-genesis-base/oe/kas/x86_64.yml -c \ + "GENESIS_ARCHITECTURE=x86_64 GENESIS_KAS_CONFIG='${KAS_BUILD_DIR}.json' python3 '${source_tree}/xCAT-test/native/genesis_metadata.py'" +``` + +Use the pinned KAS requirements and OpenEmbedded host prerequisites from +`xCAT-genesis-base/oe`. Run as an ordinary user with an executable temporary +directory. BitBake's build directory must use a supported local filesystem. +The `genesis_openembedded` workflow runs the metadata tests for x86, x86_64, +ppc64, ppc64le, armv7hf, aarch64, riscv64 and s390x. + +`python3 xCAT-test/native/genesis_console.py` builds and installs the complete +console with Meson, then runs the installed program. It requires a C compiler, +Meson, Ninja, pkg-config, and development packages for Newt and systemd. + +The unit test retains checks of the vendored release key, requested kernel +fragments and console service configuration. The BATS tests retain runtime, +console, hardware and packet behavior. None of these checks replaces a full +image build, inspection of its resolved kernel configuration or a boot test.