Skip to content

test(orchestrator): restore etcd and reboot coverage, fix LDAP gating and test ordering - #5478

Draft
balajikumaran-c-s wants to merge 14 commits into
dell:pub/rhel10.2from
balajikumaran-c-s:pub/rhel10.2
Draft

balajikumaran-c-s wants to merge 14 commits into
dell:pub/rhel10.2from
balajikumaran-c-s:pub/rhel10.2

Conversation

@balajikumaran-c-s

@balajikumaran-c-s balajikumaran-c-s commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

PR Description

Description of the Solution

Summary: Restores Kubernetes local-disk etcd and control-plane reboot coverage that existed in the 2.2 suite, moves external LDAP checks to the appropriate pxeboot suite, reorganizes test suite ordering for dependency correctness, and fixes multiple test framework issues including Slurm drain-state command template, omnia_auto report classification, and test automation standards.

Changes

Kubernetes Etcd and Reboot Coverage

  • Restored local etcd checks requiring boot script DONE marker, GPT etcd disk, and configured disk media
  • Added control-plane reboot recovery tests that wait for etcd health and confirm fstab update
  • Ensured disk setup does not rerun and UUID is preserved during reboot recovery

LDAP Test Reorganization

  • Moved external LDAP proxy and backend checks from prepare to pxeboot slurm_ldap suite
  • Positioned LDAP checks ahead of LDAP login tests for proper dependency ordering
  • Added conditional skip for all LDAP identity checks when validate_external_ldap is false

Test Suite Ordering

  • Assigned each suite its own 100-number order block for unique ordering
  • Ensured tests run in dependency order
  • Updated suite order blocks across all orchestrator test suites

Test Framework Improvements

  • Tests now create their own TestLogger instead of relying on global state
  • Added registry entry resolution in test setup
  • Implemented function-level feature markers for better test categorization
  • Removed negative tests from sanity marker set (sanity now holds only baseline positive checks)

Bug Fixes

  • Fixed Slurm drain-state command template (unescaped sinfo %T broke string formatting)
  • Fixed corresponding unit test for drain-state command
  • Removed unexpected-skip classification from omnia_auto report
  • Rebuilt omnia_auto wheel with fixes

Test Automation Standards

  • Updated test automation standard with tag folder structure
  • Standardized test_playbook.py naming convention
  • Updated credential scope documentation
  • Enhanced README documentation
  • Updated unit test guidelines
  • Added omnia_auto rules documentation
  • Dropped unit test that only checked layout
  • Fixed duplicate unit test IDs

Files Changed

File Change Type Description
docs/code-style/test_automation.md Modified Updated test automation standards documentation
test/orchestrator/README.md Modified Updated orchestrator test documentation
test/orchestrator/_run.py Modified Simplified test runner logic
test/orchestrator/conftest.py Modified Updated pytest configuration and fixtures
test/orchestrator/docs/test_config.md Modified Updated test configuration documentation
test/orchestrator/docs/test_run_config.md Modified Updated test run configuration documentation
test/orchestrator/fvt/README.md Modified Updated FVT documentation with new ordering
test/orchestrator/fvt/cleanup/*/test_*.py Modified Updated cleanup test files (6 files)
test/orchestrator/fvt/precheck/*/test_*.py Modified Updated precheck test files (6 files)
test/orchestrator/fvt/prepare/*/test_*.py Modified Updated prepare test files (3 files)
test/orchestrator/fvt/provision/*/test_*.py Modified Updated provision test files (2 files)
test/orchestrator/fvt/pxeboot/*/test_*.py Modified Updated pxeboot test files (30+ files)
test/orchestrator/fvt/pxeboot/kubernetes_etcd/test_local_etcd.py Modified Added local etcd health checks
test/orchestrator/fvt/pxeboot/kubernetes_recovery/test_reboot.py Modified Added control-plane reboot recovery tests
test/orchestrator/fvt/pxeboot/slurm_ldap/test_external_ldap.py Modified Moved external LDAP checks from prepare
test/orchestrator/fvt/pxeboot/slurm_ldap/test_authentication.py Modified Updated LDAP authentication tests
test/orchestrator/fvt/result.py Modified Updated test result handling
test/orchestrator/library/functions/__init__.py Modified Added new function imports
test/orchestrator/library/functions/_workload_helpers.py Added New workload helper functions
test/orchestrator/library/functions/apptainer_*.py Modified Updated Apptainer test functions
test/orchestrator/library/functions/external_ldap_pxeboot_func.py Added New external LDAP PXE boot functions
test/orchestrator/library/functions/kubernetes_recovery_pxeboot_func.py Modified Enhanced Kubernetes recovery functions
test/orchestrator/library/functions/kubernetes_runtime_pxeboot_func.py Modified Updated Kubernetes runtime functions
test/orchestrator/library/functions/oim_readiness_precheck_func.py Modified Updated OIM readiness checks
test/orchestrator/library/functions/openldap_prepare_func.py Modified Removed LDAP prepare functions (moved to pxeboot)
test/orchestrator/library/functions/slurm_auth_pxeboot_func.py Modified Updated Slurm auth functions
test/orchestrator/library/functions/slurm_recovery_pxeboot_func.py Modified Updated Slurm recovery functions
test/orchestrator/library/messages/precheck_msgs.py Modified Added precheck message constants
test/orchestrator/library/vars/__init__.py Modified Updated variable imports
test/orchestrator/library/vars/domain_vars.py Modified Updated domain variables
test/orchestrator/library/vars/precheck_vars.py Modified Updated precheck variables
test/orchestrator/library/vars/pxeboot_vars.py Modified Updated pxeboot variables
test/orchestrator/library/vars/test_case_vars.py Modified Updated test case variables
test/orchestrator/nft/README.md Modified Updated NFT documentation
test/orchestrator/nft/result.py Modified Updated NFT result handling
test/orchestrator/nft/test_*.py Modified Updated NFT test files (5 files)
test/orchestrator/test_config.yml Modified Updated test configuration

Testing

  • Verified local etcd health checks with boot script DONE marker validation
  • Verified control-plane reboot recovery maintains etcd health and fstab integrity
  • Verified external LDAP checks run in pxeboot suite before LDAP login tests
  • Verified test suite ordering follows dependency requirements
  • Verified Slurm drain-state command template formatting is correct
  • Verified omnia_auto report no longer classifies unexpected skips
  • Verified sanity marker set contains only baseline positive tests
  • Verified all test files follow updated automation standards

Backward Compatibility

  • No breaking changes to test execution or behavior
  • Test suite reordering improves dependency correctness without changing test logic
  • LDAP check relocation maintains same validation coverage at appropriate lifecycle stage
  • Existing test markers and configurations remain compatible
  • Test automation standard updates are documentation and structural improvements

Suggested Reviewers

Reviewer Review Focus
@orchestrator-test-team Test framework, test ordering, and test automation standards

balajikumaran-c-s and others added 6 commits October 7, 2026 06:25
… and ordering

Restore the Kubernetes local-disk etcd and control-plane reboot coverage
that existed in the 2.2 suite (Omnia_Spec dell#953):
- local etcd checks require the boot script DONE marker from the current
  boot, a GPT etcd disk, and the configured disk media
- control-plane reboot recovery waits for etcd health and confirms the
  fstab update ran while disk setup did not rerun and the UUID is kept

Move the external LDAP proxy and backend checks from prepare to the
pxeboot slurm_ldap suite, ahead of the LDAP login tests, and skip every
LDAP identity check when validate_external_ldap is false.

Give each suite its own 100-number order block so orders are unique and
run in dependency order. Tests create their own TestLogger, resolve the
registry entry, and carry function-level feature markers.

Keep negative tests out of the sanity marker set; sanity holds only the
baseline positive checks. Fix the Slurm drain-state command template, whose
unescaped sinfo %T broke string formatting, and its unit test.

Remove the unexpected-skip classification from the omnia_auto report and
rebuild the wheel. Update the test automation standard with tag folder,
test_playbook.py, naming, credential scope, README, UT, and omnia_auto
rules. Drop the UT that only checked layout, and fix duplicate UT IDs.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
The provision boot image checks were marked functional, which the
orchestrator conftest skips when no marker is selected. The skip happened
before the test body, so no reason was printed. Give them a dedicated
boot_image marker so they run by default as before.

List every skip reason under the omnia_auto summary table, and log skips
raised before a test starts with its ID, title, and reason. Parse the
pytest skip reason without its tuple wrapper. Rebuild the omnia_auto wheel;
the new add_session_result reason argument is optional, so other domains
are unchanged.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
A run without --marker now executes all collected tests. Remove the
pxeboot sanity default from the runner entry point, drop the sanity
default and the disruptive/negative exclusions from untagged lifecycle
runs, and stop the conftest auto-skip of functional and disruptive tests.
With no marker, the runtime authorization covers every gate a test
carries. Lifecycle execution cases still run only in the exec phase, and
marker expressions keep narrowing a run as before.

Document the behavior in the README, the run configuration reference,
and the test automation standard.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
Resolve conflicts with the HPC benchmark and CoreDNS/CoreDHCP test
updates (dell#5479). Keep the per-suite order blocks and the test-created
TestLogger style, and add the seven new upstream tests in upstream's
sequence inside their suite blocks. Keep upstream's markers, docstrings,
and registry IDs. Regenerate the FVT README tables and update the
pxeboot ID ranges.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
Signed-off-by: Abhishek S A <abhishek.sa3@dell.com>
Signed-off-by: balajikumaran.cs <balajikumaran.cs@dell.com>
@balajikumaran-c-s balajikumaran-c-s changed the title test(orchestrator): restore etcd and reboot coverage, fix LDAP gating… test(orchestrator): restore etcd and reboot coverage, fix LDAP gating and test ordering Oct 9, 2026
Resolve conflicts with the HPC benchmark prerequisite, idempotency, and
concurrency tests (dell#5491). Keep the per-suite order blocks, function-level
markers, and the test-created TestLogger style. Place the five new tests
in upstream's sequence inside the slurm_hpc_benchmarks block and drop the
removed per-tool staging report test.

Upstream registered the three new benchmark tests as V095-V097, which
already belong to two additional_cloud_init tests and node_architecture.
Keep the first registrants and move the benchmark tests to V225-V227.
Record V207 as retired and the three reassignments in the FVT README.

Register the benchmark marker in MARKERS and the root conftest so the
runner accepts it, and regenerate the slurm_hpc_benchmarks README table,
the pxeboot ID ranges, and the marker list in test_run_config.md.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
… design

Convert the minimal_os and vast_storage tests to the
verify_pxeboot(test_log, case, host, checker) contract, import
TestLogger, and move them into the lifecycle order-block scheme
(minimal_os 40501-40515, vast_storage 42101-42117 with recovery and
lifecycle suites shifted after it). Register the vast_* markers,
remove duplicate coredns_coredhcp/powervault SUITES entries, and
document the new tests, blocks, and markers.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
…elected

An untagged run, or a run that only names a suite, rebooted cluster nodes
because every collected test ran without a marker. Reboot tests now carry
only the reboot marker and are skipped unless --marker selects reboot. The
redundant disruptive marker is removed; scheduler-drain and node remove/add
tests run by default. The shared standard and orchestrator docs are updated
to match.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
…marked

Recovery (reboot) and Slurm node remove/add tests disrupt the cluster and
should not appear in a normal run. They are now deselected unless --marker
selects reboot or the new node_lifecycle marker, even with --suite.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
When the mapping file had no trailing newline, the node remove/add restore
appended the OMNIA_EOF delimiter to the last row, corrupting the mapping
and failing later provisions. Always end the content with a newline and
drop the quote escaping, which a quoted heredoc writes literally.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
… nodes

Removing the only Slurm compute node leaves the cluster with no compute
capacity. Node removal now skips unless the PXE mapping has at least two
slurm_node entries, and a skipped removal discards any stale backup so the
re-addition test cannot restore an old mapping.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
The upstream merge left imports that no module uses. Remove them and correct two README statements: markers other than reboot and node_lifecycle only narrow test selection, and scheduler_state needs no opt-in.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>
…h omnia_auto

Stale SSH host-key removal called subprocess directly, and polling and cleanup helpers printed to stdout. Run ssh-keygen through run_on_host with a PXEBOOT_COMMANDS entry, and send progress and cleanup warnings through omnia_auto log. Add ORCH_UT_093 and ORCH_UT_094 to cover both paths.

Signed-off-by: balajikumaran-c-s <balajikumaran.cs@dell.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants