############################################################################
# Copyright (C) SchedMD LLC.
############################################################################

The unified test-runner allows all (3) regression testsuites to be run with
a single command (run-tests). This can include the unit testsuite, the
expect testsuite and the python testsuite.

Quick Start:

* Configure, build, install and start Slurm
* cp SRCDIR/testsuite/testsuite.conf.sample SRCDIR/testsuite/testsuite.conf
* cd SRCDIR/testsuite
* ./run-tests

To run the testsuites using the unified test-runner:

* Slurm must first be installed, configured and running.
* The testsuites requires the existence of a testsuite.conf file.
  A sample configuration file is provided in the source tree
  (SRCDIR/testsuite/testsuite.conf.sample) which can be used as a starting
  point for this file. By default, the testsuite.conf file is expected to be
  found in the testsuite subdirectory of your source directory
  (SRCDIR/testsuite/testsuite.conf).
  If placed elsewhere, you must set the SLURM_TESTSUITE_CONF environment
  variable to the full path of your testsuite.conf file.
  Review and edit testsuite.conf as necessary.
* pytest (pytest-3) must be installed in order to run the python testsuite.
* expect must be installed in order to run the expect testsuite.
* Set the SLURM_CLUSTER environment variable to set up a custom directory
  in the 'results' dir that will hold unique logs and test data.
  You can name this whatever you'd like, it will be created if needed.
  This is a useful way to archive results from run-tests with things like
  different dates, commits, or configs.
* Execute run-tests with the desired options to run the testsuites.

testsuite.conf:

The testsuite.conf configuration file contains parameters in the form:
"Parameter = Value" similar to parameter format in slurm.conf.
Supported parameters include:

SlurmSourceDir:  Slurm Source Directory (contains configure.ac and the src directory)
SlurmBuildDir:   Slurm Build Directory (where you ran configure and make from)
SlurmInstallDir: Slurm Installation Directory (value of --prefix configure option)
SlurmConfigDir:  Slurm Configuration Directory (compiled-in location of slurm.conf)

If you are running in local-config, if the user running the test is SlurmUser or
AdminLevel, you better specify an unprivileged user to run the test commands as:

SlurmTestUser: Linux user without AdminLevel in the local-config Slurm.

Tips:

* the include and exclude filters use (perl 5) regular expressions
* e.g. to run expect test1.1 use: run-tests -i expect/test1.1$
* to run just the unit tests, use: run-tests -i unit
* to run just the expect tests, use: run-tests -i expect
* to run just the python tests, use: run-tests -i python

A summary of each expect test is shown below.
############################################################################


test1.#    Testing of srun options.
===================================
test1.2    Confirm that a job executes with the proper task count (--nprocs
	   and --overcommit options).
test1.8    Confirm that basic srun stdin, stdout, and stderr options work
	   (--input, --output, and --error option respectively).
test1.9    Test of srun verbose mode (--verbose option).
test1.12   Test srun --overlap
test1.14   Test exclusive GRES/GPU allocation for a job (--exclusive option).
test1.17   Test of srun --open-mode (truncate or append) option.
test1.18   Test of --licenses option
test1.32   Test of srun signal forwarding
test1.33   Test of srun application exit code reporting
test1.43   Test of slurm_job_will_run API, (srun --test-only option).
test1.44   Read srun's stdout slowly and test for lost data.
test1.48   Test of srun mail options (--mail-type and --mail-user options).
test1.53   Test of --signal option.
test1.55   Verify srun behaves when its controlling terminal disappears.
test1.56   Test buffered standard IO with really long lines
test1.58   Test of srun --jobid for an existing job allocation
test1.59   Test of hostfile logic for job steps
test1.60   Test of labelling output when writing a file per task or per node
test1.61   Test of srun job step time limit
test1.62   Test of gres/gpu plugin (if configured).
test1.63   Test of srun --disable-status/-X option, SIGINT to be sent to tasks.
test1.64   Test interruption of srun while waiting for resource allocation.
test1.65   Test of srun --mpi=list option.
test1.66   Validates srun steps run on the correct node within a allocation.
test1.67   Test srun program movement between background and foreground.
test1.68   Test srun program movement between foreground and background.
test1.69   Test multiple background srun programs execute simultaneously.
test1.70   Validates that srun standard input and output work with binary files.
test1.71   Validates that srun exit code matches that of a test program.
test1.72   Validate JobAcctGatherFrequency configuration parameter is enforced.
test1.73   Validate OverTimeLimit configuration parameter is enforced.
test1.74   Validate MaxNode and GrpNode limit enforcement with QoS & association.
test1.75   Test that --cpu-freq is enforced when using non-numeric values
test1.76   Test that --cpu-freq sets min-max:gov
test1.77   Test that job name specified at the command line overwrites
           the environment variable SLURM_JOB_NAME
test1.80   Confirm that a job executes with the proper task distribution
	   (--nodes and --distribution options).
test1.81   Confirm that a job executes with the proper node count
	   (--nodes option).
test1.82   Confirm that a job executes with the specified nodes
	   (--nodelist and --exclude options).
test1.83   Test of contiguous option with multiple nodes (--contiguous option).
	   Also see test1.14.
test1.84   Test of cpus-per-task option on a single node (--cpus-per-task
	   option).
test1.85   Test of node selection from within a job step on existing allocation
test1.86   Confirm node selection from within a job step on existing allocation
	   (--nodelist, --exclude, --nodes and --nprocs options).
test1.87   Confirm node selection from within a job step on existing allocation
	   (--relative, --nodes and --nprocs options).
test1.91   Test of CPU affinity for multi-core systems.
test1.92   Test of task distribution support on multi-core systems.
test1.93   Test of default CPU binding support.
test1.94   Test of PMI2 task spawn logic
test1.95   Basic UPC (Unified Parallel C) test via srun.
test1.96   Basic SHMEM test via srun.
test1.97   Test that --ntask-per-node and -c options are enforced
test1.100  Test of pack/nopack task distribution.
test1.101  Test of --bcast option.
test1.102  Test of --deadline option too late
test1.103  Test of --deadline option too short
test1.104  Test of --deadline option and time limit partition
test1.105  Test of --deadline option and no time
test1.106  Test of --deadline option and --time_min too long
test1.107  Test of --deadline option and --time_min and time too long
test1.108  Test of --deadline option and --begin option too late
test1.109  Test of --deadline and --begin option and --time_min too long
test1.110  Test of --deadline and --begin option and --time_min OK
test1.111  Test of --deadline and --begin option and time to be changed
test1.112  Test of --deadline and --begin option and time not changed
test1.113  Test of --use-min-nodes option.
test1.114  Test of srun --spread-job option.
test1.115  Test of srun not hanging on ignored stdin.
test1.116  Extended MPI functionality tests via srun.
test1.117  Test of standalone srun not ignoring --mem-per-cpu
test1.118  Test --hint mutual exclusion properties.
test1.119  Test of srun --ntasks-per-gpu option.
test1.120  Test of --distribution options

test2.#    Testing of scontrol options (to be run as unprivileged user).
========================================================================
test2.1    Validate scontrol version command.
test2.2    Validate scontrol help command.
test2.3    Validate scontrol ping command.
test2.4    Validate scontrol exit, quit, and !! commands.
test2.5    Validate scontrol show commands for configuration, daemons,
	   nodes and partitions.
test2.6    Validate scontrol verbose and quiet options.
test2.7    Validate scontrol pidinfo command.
test2.8    Validate scontrol show commands for jobs and steps.
test2.10   Validate scontrol oneliner mode (--oneliner option).
test2.13   Validate scontrol update command for job steps.
test2.14   Validate scontrol update size of running job.
test2.15   Validate scontrol update size of running job with some running tasks.
test2.16   Validate scontrol displays and updates Allow/Deny accounts.
test2.17   Validate scontrol displays and updates Allow/Deny Qos.
test2.18   Validate that Allow/Deny accounts are enforced.
test2.19   Validate that Allow/Deny Qos are enforced.
test2.20   Validate scontrol show hostnames.
test2.21   Validate scontrol requeue of failed or completed job.
test2.22   Validate scontrol requeuehold requeues job to held pending state.
test2.23   Validate scontrol requeuehold State=SpecialExit.
test2.24   Validate the scontrol write config creates accurate config
test2.25   Validate scontrol show assoc_mgr command.
test2.26   Validate scontrol top command to priority order jobs.
test2.27   Validate scontrol update mail user and mail type.


test3.#    Testing of scontrol options (best run as SlurmUser or root).
=======================================================================
test3.1    Validate scontrol reconfigure command.
test3.2    Validate scontrol update command for partitions.
test3.3    Validate scontrol update command for nodes.
test3.4    Validate scontrol update command for jobs by JobID.
test3.5    Validate scontrol create, delete, and update of partition.
test3.6    Testing of hidden partitions.
test3.8    Test of batch job requeue.
test3.9    Test of "scontrol show slurmd"
test3.10   Test of "scontrol notify <jobid> <message>"
test3.11   Validate scontrol create, delete, and update of reservations.
test3.13   Validate scontrol update command for jobs by JobName and UserID.
test3.14   Test of advanced reservation "replace" option.
test3.15   Test of advanced reservation of licenses.
test3.16   Test that licenses are sorted.
test3.17   Test of node feature changes with reconfiguration.
test3.18   Validate scontrol change gres count with File is disabled.
UNTESTED   "scontrol abort"    would stop slurm
UNTESTED   "scontrol shutdown" would stop slurm


test4.#    Testing of sinfo options.
====================================
test4.3    Test partition information, both long and short (--long and
	   --summarize options) and partition filtering (--partition option).
test4.4    Test node information, both regular and long (--Node, --long,
	   and --exact options).
test4.6    Test sinfo iteration (--iterate option).
test4.7    Confirm that sinfo verbose option works (--verbose option).
test4.8    Check sinfo output without header (--noheader option).
test4.9    Check sinfo formatting options (--format option and SINFO_FORMAT
	   environment variable).
test4.10   Confirm that sinfo reports a proper version number (--version
	   option).
test4.11   Test down node reason display (--list-reasons option).
test4.12   Test cpu total and allocation numbers.
test4.13   Test sinfo's -O (--Format) option.
test4.14   Test that multiple partitions can be specified in the env variable.


test5.#    Testing of squeue options.
=====================================
test5.3    Test squeue iteration (--iterate option).
test5.4    Test squeue formatting options (--noheader, --format and --step
	   options and SQUEUE_FORMAT environment variable).
test5.5    Test squeue sorting (--sort option).
test5.6    Test squeue filtering (--jobs, --nodelist, --states, --steps and
	   --user options).
test5.7    Confirm that squeue verbose option works (--verbose option).
test5.8    Confirm that squeue reports a proper version number (--version
	   option).
test5.9    Validate that squeue -O displays correct job/step format.
test5.10   Validate that squeue --priority is listing jobs by priority.
test5.11   Validate that job node estimation is accurate.

test6.#    Testing of scancel options.
======================================
test6.3    Validate scancel interactive mode (--interactive option).
test6.5    Validate scancel verbose option (--verbose option).
test6.6    Confirm that scancel reports a proper version number (-V option).
test6.7    Validate scancel signal option (--signal and --verbose options).
test6.8    Validate scancel state and name filters (--state and --name options).
test6.9    Validate scancel of individual job steps (job.step specification).
test6.10   Validate scancel user and partition filters, delete all remaining
	   jobs (--partition and --user options).
test6.11   Validate scancel quiet option, no warning if job gone
	   (--quiet option).
test6.13   Test routing all signals through slurmctld rather than slurmd
	   (undocumented --ctld option).
test6.14   Test scancel nodelist option (--nodelist or -w).
test6.15   Test scancel signal of full job including batch script (--full option).
test6.16   Validate scancel of multiple job steps (job.step specification).
test6.17   Test scancel handling of invalid job IDs and filters.


test7.#    Testing of other functionality.
==========================================
test7.2    Test of PMI functions available via API library. Tests
	   --pmi-threads option in srun command.
test7.4    Test of TotalView operation with srun, with and without bulk
	   transfer.
test7.5    Test of TotalView termination logic for srun.
test7.6    Test of TotalView operation with sattach
test7.7    Test of resource allocation layout.
test7.9    Test that no files are open in spawned tasks (except stdin,
	   stdout, and stderr) to ensure successful checkpoint/restart.
test7.10   Test if we can trick Slurm into using the wrong user ID
	   through an LD_PRELOAD option.
test7.11   Test of SPANK plugin.
test7.12   Test of slurm_job_step_stat() and slurm_load_job() API calls.
test7.14   Verify the ability to modify the Derived Exit Code/String fields
	   of a job record in the database
test7.15   Verify signal mask of tasks have no ignored signals.
test7.16   Verify that auth/munge credential is properly validated.
test7.17   Test GRES APIs.
test7.19   Test sbatch/srun/salloc path resolving
test7.20   Test lua JobSubmitPlugin
test7.22   Test basic functionality of backfill scheduler
test7.23   Test min_mem_per_{cpu,node} in lua JobSubmitPlugin

test8.#    Testing of advanced reservation functionality.
=========================================================
test8.12   Test reservation with flags=FLEX
test8.13   Test user_resv_delete parameter

test9.#    System stress testing. Exercises all commands and daemons.
=====================================================================
test9.1    Stress test of stdin broadcast.
test9.2    Stress test of stdout with stdin closed.
test9.3    Stress test of per-task output files with stdin closed.
test9.4    Stress test of per-task output and input files.
test9.5    Stress test of per-task input files.
test9.6    Stress test of per-task output files.
test9.8    Stress test with maximum slurmctld message concurrency.
test9.9    Throughput test for 5000 jobs for timing

test12.#   Testing of sacct command and options
===============================================
test12.2   Test validity/accuracy of accounting data for exit code,
	   memory and real-time information along with stating a running job.
test12.3   Test sacct filtering of records by account and job name.
test12.4   Test sacct --b, g, j, l, n, p, u, v options.
test12.7   Validate that -D shows the correct state when jobs are requeued.
test12.8   Validate that a job step reports TIMEOUT inside accounting.
test12.9   Test of sacct functionality for array jobs.
test12.10  Test of sacct with -s R, -S and -E options

test13.#   Testing of switch plugins
====================================

test14.#   Testing of sbcast options.
=====================================
test14.2   Confirm sbcast help option works (--help option).
test14.3   Confirm that sbcast reports a proper version number
	   (--version option).
test14.4   Test sbcast file overwrite (--force option).
test14.5   Test sbcast time preservation (--preserve option).
test14.6   Test sbcast logging (--verbose option).
test14.7   Test sbcast security issues.
test14.8   Test sbcast transmission buffer options (--size and
	   --fanout options).
test14.9   Verify that an sbcast credential is properly validated.
test14.10  Validate sbcast for a job step allocation (subset of job allocation).

test15.#   Testing of salloc options.
=====================================
test15.2   Confirm salloc help option works (--help option).
test15.3   Confirm that salloc reports a proper version number
	   (--version option).
test15.4   Confirm that a job executes with appropriate user id and group id.
test15.5   Confirm that job time limit function works (--time and
	   --kill-command options).
test15.6   Test of salloc verbose mode (--verbose option).
test15.7   Test of processors, memory, and temporary disk space
	   constraints options (--mincpus, --mem, and --tmp options).
	   Also test that priority zero job is not started (--hold option).
test15.8   Test of immediate allocation option (--immediate option).
test15.9   Confirm that salloc exit code processing.
test15.10  Confirm that a job allocates the proper processor count (--ntasks)
test15.11  Test of --nice and --job-name options.
test15.12  Verify node configuration specification (--constraint option).
test15.13  Verify the appropriate job environment variables are set
test15.14  Test of job dependencies (--dependency option).
test15.15  Test of user signal upon allocation (--bell and --no-bell options)
test15.16  Verify that Slurm directed environment variables are processed:
	   SALLOC_BELL and SALLOC_NO_BELL (can't really confirm from Expect)
test15.18  Test of running non-existent job, confirm timely termination.
test15.19  Confirm that a job executes with the proper node count
	   (--nodes option).
test15.20  Confirm that a job executes with the specified nodes
	   (--nodelist and --exclude options).
test15.21  Test of contiguous option with multiple nodes (--contiguous option).
test15.22  Test of partition specification on job submission (--partition
	   option).
test15.23  Test of environment variables that control salloc actions:
	   SALLOC_DEBUG and SALLOC_TIMELIMIT
test15.24  Test of --overcommit option.
test15.25  Test of job account(--account option).
test15.26  Test interruption of salloc while waiting for resource allocation.
test15.27  Test salloc --exclusive allocates all cpus on node.
test15.30  Test of --deadline option too late
test15.31  Test of --deadline option too short
test15.32  Test of --deadline option and time limit partition
test15.33  Test of --deadline option and no time
test15.34  Test of --deadline option and time_min too long
test15.35  Test of --deadline option and time_min and time too long
test15.36  Test of --deadline option and --begin option too late
test15.37  Test of --deadline and --begin option and --time_min too long
test15.38  Test of --deadline and --begin option and --time_min OK
test15.39  Test of --use-min-nodes option.

test16.#   Testing of sattach options.
======================================
test16.2   Confirm sattach help option works (--help option).
test16.3   Confirm that sattach reports a proper version number
	   (--version option).
test16.4   Basic sattach functionality test (--layout, --verbose, --label
	   and --output-filter options).


test17.#   Testing of sbatch options.
=====================================
test17.2   Confirm sbatch help option works (--help option).
test17.3   Confirm that sbatch reports a proper version number
	   (--version option).
test17.4   Confirm that as sbatch job executes as the appropriate user and
	   group.
test17.6   Confirm that a job executes with the proper task count (--ntasks
	   option).
test17.8   Confirm that sbatch sets appropriate time limit (--time
	   option)
test17.9   Confirm that sbatch sets appropriate job name (--job-name option)
test17.10  Test of processors, memory, and temporary disk space
	   constraints options (--mincpus, --mem, and --tmp options).
	   Also test that priority zero job is not started (--hold
	   option).
test17.12  Verify node configuration specification (--constraint option)
test17.13  Verify the appropriate job environment variables are set
test17.14  Verify that user environment variables are propagated to the job
test17.17  Confirm that oversubscribe flags are respected  (--nodelist and
	   --oversubscribe options)
test17.18  Test of job dependencies and deferred begin time (--dependency
	   and --begin options).
test17.19  Test of job submit to multiple partitions (--partition).
test17.22  Test of running non-existent job, confirm timely termination.
test17.23  Test of nice value specification (--nice option).
test17.24  Test of --partition and --verbose options.
test17.25  Verify environment variables controlling sbatch are processed:
	   SBATCH_ACCOUNT, SBATCH_DEBUG and SBATCH_TIMELIMIT
test17.26  Test of --input option.
test17.27  Test that a job executes with the specified nodes, requires multiple
	   nodes (--nodes, --nodelist and --exclude options).
test17.28  Tests #SBATCH entry functionality in a batch script.
test17.29  Verify that command arguments get forwarded to job script.
test17.31  Tests #PBS entry functionality in a batch script.
test17.32  Test of --overcommit option.
test17.33  Test of --open-mode option.
test17.34  Test of --core-spec option.
test17.36  Test that the OverSubscribe option in partitions is enforced.
test17.37  Validate that afternotok dependency is enforced.
test17.38  Test for sbatch --signal.
test17.39  Validate dependency OR option.
test17.40  Test of --thread-spec option.
test17.41  Validate that sbatch, srun, salloc return partition error message.
test17.43  Test sbatch handling of very long lines in script
test17.44  Validate that aftercorr dependency is enforced.
test17.45  Test of sbatch --bbf option
test17.51  Validate that the mcs plugin (mcs/user) is OK with sbatch
test17.52  Validate that the mcs plugin (mcs/group) is OK with sbatch
test17.53  Test of --deadline option too late
test17.54  Test of --deadline option too short
test17.55  Test of --deadline option and time limit partition
test17.56  Test of --deadline option and no time
test17.57  Test of --deadline option and time_min too long
test17.58  Test of --deadline option and time_min and time too long
test17.59  Test of --deadline option and --begin option too late
test17.60  Test of --deadline and --begin option and --time_min too long
test17.61  Test of --deadline and --begin option and --time_min OK
test17.62  Test for #BSUB batch script entry
test17.63  Test of --use-min-nodes option.
test17.64  Validate that the mcs plugin (mcs/account) is OK with sbatch


test19.#   Testing of strigger options.
=======================================
test19.2   strigger --usage
test19.3   strigger --set (node options)
test19.4   strigger --set --reconfig
test19.5   strigger --set (job options)
test19.6   strigger --clear and --get (with filtering)
test19.7   strigger --set --idle
test19.8   strigger --noheader
test19.9   Validate that duplicate triggers cannot be submitted


test20.#   Testing of PBS commands and Perl APIs.
=================================================
test20.2   qstat command tests
test20.3   qdel command tests
test20.4   pbsnodes command tests
test20.5   Test the qalter --help option
test20.6   Test the qalter -r option of altering a job's rerunnable flag
test20.7   Test qalter's -o option for changing the stdout path of a job
test20.8   Test the qalter -N option for changing the name of a job.
test20.9   Test for the qalter --man option
test20.10  Test for the qrerun --help option
test20.11  Test for the qrerun --man option
test20.12  Test for qsub -V/-v arguments and their interaction with sbatch scripts
test20.13  Test to test Grid Engine specific options
test20.14  Test PBS/qsub -l gpu options
test20.15  Test for seff

test21.#   Testing of sacctmgr commands and options.
====================================================
test21.2   sacctmgr --help
test21.3   sacctmgr -V
test21.4   sacctmgr version
test21.5   sacctmgr add a cluster
test21.6   sacctmgr add multiple clusters
test21.7   sacctmgr list clusters
test21.8   sacctmgr modify a cluster
test21.9   sacctmgr modify multiple clusters
test21.10  sacctmgr add an account
test21.11  sacctmgr add multiple accounts
test21.12  sacctmgr list multiple accounts
test21.13  sacctmgr modify account
test21.14  sacctmgr modify multiple accounts
test21.15  sacctmgr add an user
test21.16  sacctmgr add and list multiple users
test21.17  sacctmgr modify user
test21.18  sacctmgr modify multiple users
test21.19  sacctmgr add and delete coordinator
test21.20  sacctmgr add and modify QoS
test21.21  sacctmgr add an account to cluster; use with salloc, sbatch and srun
test21.23  sacctmgr wckey
test21.24  sacctmgr dump file
test21.25  sacctmgr show config
test21.26  sacctmgr +=, -= modify QoS test
test21.27  sacctmgr problems test
test21.28  sacctmgr abort delete
test21.29  sacctmgr clear (modify) QoS values
test21.30  sacctmgr test if the QoS values are enforced
test21.31  sacctmgr modify Resource values
test21.32  Validate that modify QoS =,+=,-= change the preempt value
test21.33  Validate that a resource can be added to a cluster after creation
test21.34  Validate that partition and job QoS limits are enforced
test21.35  Validate DenyOnLimit QoS flag is enforced on QoS and Associations.
test21.36  Validate that sacctmgr lost jobs fixes lost jobs.
test21.37  sacctmgr show and clear stats
test21.38  sacctmgr modify limits for nested accounts with multiple users
test21.40  Test association plus partition/job QoS unique node limits enforced
test21.41  sacctmgr update job set newwckey=
test21.42  Test if headers returned by sacctmgr show can be used as format= specifiers
test21.44  Test sacctmgr show assoc where qos=

test22.#   Testing of sreport commands and options.
	   These also test the sacctmgr archive dump/load functions.
==================================================
test22.1   sreport cluster utilization report
test22.2   sreport h, n, p, P, t, V options


test23.#   Testing of sstat commands and options.
=================================================
test23.1   sstat -e, h, usage and V options
test23.2   sstat -a, n, o, p, P, v options


test24.#   Testing of sshare/priority multifactor plugin.
=========================================================
test24.2   sshare h, n, p, P, v, and V options.
test24.4   Test of Fair Tree multifactor
test24.5   Test SiteFactor
test24.6   Test non-normalized factors
test24.7   Test normalized factors

test25.#   Testing of sprio command and options.
================================================
test25.1   sprio all options


test27.#   Testing of sdiag commands and options.
=================================================
test27.2   sdiag --help
test27.3   sdiag --version
test27.4   sdiag --all (default output)
test27.5   sdiag --reset


test28.#   Testing of job array options.
========================================
test28.2   checks that the --array environment variables are correct, and
	   checks that the --output and -error files were created and
	   contain the correct information.
test28.3   Validates that the scontrol show job contains the job array fields
test28.4   Validates scontrol update command for a job array with
	   a job array index and the whole job array.
test28.5   Validates that scontrol can hold and release a whole job
	   array or an individual jobid index.
test28.6   Validates that when a job array is submitted to multiple
	   partitions that the jobs run on them.
test28.7   Confirms job array dependencies.
test28.9   Test of maximum running task count in a job array.
test28.10  Test change to maximum running task count in a job array.
test28.11  Test that job arrays requesting features with --constraint are
	   purged from the slurmctld correctly after MinJobAge seconds.
test28.12  Verify head job isn't purged before other jobs in the array.
test28.13  Test requeue of only failed tasks in the job array.

test31.#   Test of Slurm Epilog and Prolog.
===========================================
test31.2   Validate that job is set to requeue held state at prolog failure.
test31.3   Validate Prolog and Epilog Environment Variables.


test32.#   Test of sgather command and options.
===============================================
test32.2   Validates that the sgather --help option reports the help message.
test32.3   Validates that the sgather -V (Version) option reports the version.
test32.4   Validates that sgather copies specified files from compute nodes.
test32.5   Validates that sgather -k keeps the original source file.
test32.6   Validates that sgather -C compress the copied file.
test32.7   Validates that sgather -f ignores nonexistent source files.
test32.8   Validates that sgather -F changes the fanout message.
test32.9   Validates that sgather -p option preserves file state.
test32.10  Validates that sgather -r copies files recursively.
test32.11  Validates that sgather -v prints the output logging of the job.
test32.12  Validates that sgather -t changes the timeout message.

test34.*   Test of Slurm preemption.
====================================
test34.2   Validate that qos PreemptMode is enforced.

test35.*   Burst buffer tests
=============================
test35.1   Cray persistent burst buffer creation
test35.2   Cray job-specific burst buffer use
test35.3   Cray burst buffer use by job arrays
test35.4   Zero size job with burst buffer creation testing
test35.5   Cray dwstat command testing
test35.6   Test of --depend=afterburstbuffer option

test36.#   Testing of openlava/LSF wrappers and Perl APIs.
==========================================================
test36.2   bjobs wrapper test
test36.3   bkill wrapper test
test36.4   bsub wrapper test

test37.#   Testing of federations.
==================================
test37.2   Validate federated clusters return federated job ids.
test37.3   scontrol show federations
test37.4   federated job submission
test37.5   Federated Requeue
test37.6   Federated Job Updates
test37.7   Federated Cluster States
test37.8   scontrol --local, --sibling options
           scancel --sibling=<jobid>
test37.9   Verify federated scontrol, squeue, sinfo and sprio output
test37.10  Federated job cancellations
test37.11  Federated sacct output
test37.12  Federated sbatch|srun --test-only
test37.13  Validate federated arrays
test37.14  Validate federated scontrol notify
test37.15  Validate federated scontrol suspend
test37.16  Validate job cleanup when clusters are removed federation
test37.17  Test local and remote job dependencies

test38.#   Testing of heterogeneous jobs.
=========================================
test38.3   Validate salloc heterogeneous job options.
test38.4   Validate salloc heterogeneous job environment variables.
test38.5   Validate squeue heterogeneous job fields
test38.6   Test of SPANK plugin with heterogeneous jobs
test38.7   Test of MPI with heterogeneous jobs.
test38.8   Test of sacct functionality for heterogeneous jobs.
test38.9   Validate srun --het-group option.
test38.10  Test of scontrol update job for heterogeneous jobs.
test38.11  Validate sbcast for a hetjob allocation.
test38.12  Test label option with hetjob allocation.
test38.14  Test hetjob step output file labeling and different commands/args
test38.15  Test for proper handling of different rank end times
test38.16  Test environment variables needed by MPI
test38.17  Test for multiple, out of order srun --het-group options
test38.18  Validate heterogeneous gpu job options.
test38.19  Test heterogeneous job steps.

test39.#   Test of job select/cons_tres and --gpu options.
==========================================================
test39.1   Test full set of sbatch --gpu options and scontrol show job
test39.2   Test full set of salloc --gpu options and scontrol show job
test39.3   Test full set of srun --gpu options and scontrol show step
test39.4   Test some invalid combinations of --gpu options
test39.5   Test some combinations of srun and sbatch --gpu options
test39.6   Ensure job requesting GPUs on multiple sockets gets CPUs on them
test39.7   Test --cpus-per-gpu option
test39.8   Test --gpu-bind options
test39.9   Test --gpu-freq options
test39.11  Test GRES options with craynetwork (no topology)
test39.12  Test some valid combinations of srun --gpu and non-GPU GRES options
test39.13  Validate proper GRES operation under heavy load (many jobs)
test39.15  Test --gpus-per-tres with --overcommit option
test39.16  Test --gpus-per-tres with --exclusive option
test39.20  Test GPU resource limits with various allocation options
test39.22  Test heterogeneous job GPU allocations.
test39.23  Test --gpus-per-task with implicit task count

test40.#   Test of job select/cons_tres and gres/mps options.
=============================================================
test40.3   Test accounting for MPS resources with various allocation options
test40.4   Test MPS resource limits with various allocation options
test40.6   Decrease size of job with allocated MPS
test40.8   Simple CUDA MPS test


A summary of each python test is shown below.
############################################################################


test_100_#   Special tests.
===========================
test_100_1   Run all libcheck tests
test_100_2   Test live upgrades
test_100_3   Performance test: slurmdbd purge large tables
test_100_4   Meta-test: testing test environment (coredump generation)
test_100_5   Performance test: slurmdbd usage rollup triggered via sacctmgr
             rollup with realistic workload. Rolls up every cluster in the
             accounting DB; use a throwaway DB.
test_100_10  Test step dependency rejection in an allocation with an older stepmgr

test_101_#   Testing of sacct options.
======================================
test_101_1   Test --help and --helpformat
test_101_2   Test sacct SLUID support including resizes and OriginalSLUID
test_101_3   Test sacct OverSubscribe and Exclusive reporting from slurmdbd
test_101_4   Test basic sacct --json
test_101_5   Test sacct Restarts and Start are per-run after a requeue
test_101_6   Test sacct job name filtering options
test_101_7   Test sacct Reservation resolution against reservation records
test_101_8   Test sacct Timelimit and TimelimitRaw report a step's own limit
test_101_9   Test sacct BillingRaw and --json billing_raw against sshare RawUsage
test_101_10  Test job updates during a requeue keep the previous sacct record
test_101_11  Test sacct --state=SUSPENDED selection against the suspend history
test_101_12  Performance test: sacct --state=SUSPENDED must not scan the job
             table
test_101_13  Test a job's suspend records are closed when the job ends
test_101_14  Test the job exit status and Slurm return code stay separate
test_101_15  Test a SIGHUP-killed job is recorded as signaled
test_101_16  Test sacct --kv and sacctmgr modify job KV
test_101_17  Test job KV is not stored without AccountingStoreFlags=job_kv
test_101_18  Test sacct names the user that cancelled a job or step

test_102_#   Testing of sacctmgr options.
=========================================
test_102_1   /commands/sacctmgr/test_federation.py
test_102_2   /commands/sacctmgr/test_--usage.py
test_102_3   /commands/sacctmgr/test_--json.py
test_102_4   /commands/sacctmgr/test_ping.py
test_102_5   sacctmgr create qos/account job and then delete account/qos
test_102_6   Test sacctmgr remove account
test_102_7   Test sacctmgr modify job tres
test_102_8   Test sacctmgr remove multiple qos
test_102_9   Performance test: sacctmgr delete user with large assoc table
test_102_10  Test sacctmgr modify TRES with +=/-= syntax
test_102_11  Test sacctmgr archive dump uses configured Purge*After when no duration is given
test_102_12  Test sacctmgr load, confirm that typed GRES can get parsed correctly
test_102_13  Test sacctmgr show assoc withsubaccounts matches the account
             lineage and not a partition named like the account
test_102_17  Test sacctmgr TresDecayHalfLife set, show, inherit and dump/load
test_102_18  Test sacctmgr load and dump baseline functionality
test_102_19  Test sacctmgr declarative load
test_102_20  Test sacctmgr load clean=account and clean=qos (isolated)
test_102_21  Test limits inherited from a parent account follow an account move
test_102_22  Test wckey removal logic
test_102_25  Test sacctmgr modify qos preempt+= of a QOS already in the list
test_102_26  Test sacctmgr add of an account, user or partition name sharing
             its first 42 characters with an existing one: stored
             associations, a running slurmdbd's association list, and a
             slurmdbd restart
test_102_27  Test sacctmgr show reservation WithKV reports the KV
test_102_28  Test reservation KV is not stored without AccountingStoreFlags=resv_kv
test_102_29  Test sacctmgr show event names the user that set a node's reason

test_103_#   Testing of salloc options.
=======================================
test_103_1   /commands/salloc/test_--usage.py
test_103_2   Test salloc with default command

test_104_#   Testing of sattach options.
========================================
test_104_1   /commands/sattach/test_--usage.py
test_104_2   Test sattach gets job output, by JobID and by SLUID.

test_105_#   Testing of sbatch options.
=======================================
test_105_1   /commands/sbatch/test_gpu_options.py
test_105_3   /commands/sbatch/test_invalid_mps_options.py
test_105_4   /commands/sbatch/test_--usage.py
test_105_5   Test sbatch --output and --error options work, including use of spaces, %j, and %u
test_105_6   Test #SBATCH directives in sbatch scripts
test_105_7   Test accounting for GPU resources with various allocation options
test_105_8   Test of job account (--account option).
test_105_9   Test sbatch --requeue=expedite option (success, failure, epilog failure cases)
test_105_10  Test --oom-kill-step option
test_105_11  Test sbatch --parsable output format
test_105_12  Test JobAcctGatherParams=OverMemoryKill enforcement
test_105_15  Test sbatch --wait (-W) blocking and exit code propagation for normal and array jobs
test_105_16  Test --layout validation, display, update, scripts, and accounting
test_105_17  Test WCKey specification on job submit (sbatch --wckey)
test_105_18  Test sbatch --dependency after+time delays and special-exit
             afternotok
test_105_19  Test nodes held by an expedited requeue stay unavailable until the
             requeue, and drain or go down safely
test_105_20  Test sbatch, salloc and srun --kv
test_105_21  Test a job adds nodes beyond a node list shorter than it needs
test_105_22  Test sbatch --external option handling across hetjob shapes

test_106_#   Testing of sbcast options.
=======================================
test_106_1   /commands/sbcast/test_--usage.py
test_106_2   Test sbcast transfers files into the job namespace, not the node
test_106_3   Test sbcast with compression
test_106_4   Test sbcast copies a file to a job with JobID and SLUID
test_106_5   Test sbcast to a hetjob with namespace/tmpfs

test_107_#   Testing of scancel options.
========================================
test_107_1   /commands/scancel/test_--help.py
test_107_2   /commands/scancel/test_--usage.py
test_107_3   Test scancel --ctld and filtering options
test_107_4   Test scancel signals jobs by mixes of Job IDs and SLUIDs
test_107_5   Test scancel of a hetjob step keeps the component jobs running
test_107_6   Test scancel job name filtering options
test_107_7   Test scancel array task id validation
test_107_8   Test scancel --full signals the steps on every node

test_108_#   Testing of scontrol options.
=========================================
test_108_1   /commands/scontrol/test_update_partition.py
test_108_2   /commands/scontrol/test_--version.py
test_108_3   /commands/scontrol/test_--help.py
test_108_4   /commands/scontrol/test_reconfigure.py
test_108_5   /commands/scontrol/test_--json.py
test_108_6   Test scontrol show topology option
test_108_7   Test of job suspend/resume
test_108_8   Test of InstanceId/InstanceType
test_108_9   Test scontrol listpids with Job IDs and SLUIDs
test_108_10  Submit and modify jobs using a mix of Job IDs and SLUIDs
test_108_11  Test scontrol update NodeName=ALL with AvailableFeatures
test_108_12  Test nodes join feature-based NodeSet partitions on update
test_108_13  Test the ExitCode=<exit>:<signal> rendering shared by scontrol,
             squeue and sacct
test_108_14  Test node event records across node updates, long reasons,
             and same-second state changes
test_108_15  Test scontrol completing output, including the SLUID on requeue
test_108_16  Test scontrol array task id validation
test_108_17  Test updating a job's memory with partition memory defaults
test_108_18  Test scontrol requeue and requeuehold of external jobs
test_108_19  Test job updates with node lists naming a node that no longer
             exists
test_108_20  Test that a job update's new ReqNodeList must fit its new partition
test_108_21  Test scontrol authorization for job, step, partition and
             reservation commands
test_108_22  Test scontrol authorization for node commands
test_108_23  Test scontrol reports SlurmRC only with --details
test_108_24  Test per-partition priority array is cleared when a job is held
test_108_25  Test multi-QOS job priority ordering and display
test_108_26  Test scontrol update rejects malformed input for every update tag
test_108_27  Test scontrol release/update of jobs in an empty partition
test_108_28  Test scontrol tasknode task to node mapping
test_108_29  Test the node list of a pending job across rejected and accepted
             updates, with and without a slurmctld restart

test_109_#   Testing of sdiag options.
======================================
test_109_1   /commands/sdiag/test_--usage.py
test_109_2   /commands/sdiag/test_--json.py

test_110_#   Testing of sgather options.
========================================
test_110_1   /commands/sgather/test_--usage.py

test_111_#   Testing of sinfo options.
======================================
test_111_1   /commands/sinfo/test_--help.py
test_111_2   /commands/sinfo/test_--usage.py
test_111_3   /commands/sinfo/test_--json.py
test_111_4   Test --state and --nodes filtering
test_111_5   /commands/sinfo/test_--state.py
test_111_6   Verify --states name parsing, --helpstate round-trip, and
             invalid-state rejection
test_111_7   Test node row grouping

test_112_#   Testing of slurmrestd options.
===========================================
test_112_1   /commands/slurmrestd/test_options.py
test_112_2   Test slurmrestd's http_parser plugin
test_112_3   Test the implicit max_nodes rollback on a rejected update
test_112_4   Test slurmrestd query flags whose names contain spaces
test_112_5   Test slurmrestd's http status codes for rejected job submissions
test_112_6   Test slurmrestd's http status codes for slurmdbd rejections
test_112_7   Test slurmrestd keeps endpoint connections alive
test_112_8   Test SLURM_JOB_NAME in the batch environment of slurmrestd jobs
test_112_9   Test external and mixed hetjobs submitted through slurmrestd
test_112_41  Test slurmrestd v0.0.41 requests
test_112_42  Test slurmrestd v0.0.42 requests
test_112_43  Test slurmrestd v0.0.43 requests
test_112_44  Test slurmrestd v0.0.44 requests
test_112_45  Test slurmrestd v0.0.45 requests
test_112_46  Test slurmrestd v0.0.46 requests

test_113_#   Testing of sprio options.
======================================
test_113_1   /commands/sprio/test_--version.py
test_113_2   /commands/sprio/test_job_options.py
test_113_3   /commands/sprio/test_--help.py
test_113_4   /commands/sprio/test_--usage.py
test_113_5   /commands/sprio/test_--weights.py
test_113_6   Test sprio SLUID support.

test_114_#   Testing of squeue options.
=======================================
test_114_1   /commands/squeue/test_--help.py
test_114_2   /commands/squeue/test_--usage.py
test_114_3   /commands/squeue/test_--json.py
test_114_4   Validate that squeue --only-job-state is listing jobs accurately.
test_114_5   Check squeue SLUID support
test_114_6   Test squeue job name filtering options
test_114_7   Test squeue reports SlurmRC through --Format

test_115_#   Testing of sreport options and rollup correctness.
===============================================================
test_115_1   /commands/sreport/test_reports.py
test_115_2   Rollup arithmetic correctness: assoc, QOS, wckey, cluster utilization
             (alloc/down/plan/invariant), reservation idle redistribution,
             energy attribution, and hourly->daily->monthly aggregation.
             Requires auto-config mode. Rolls up every cluster in the
             accounting DB; use a throwaway DB.
test_115_3   sreport cluster reports with partition associations. Seeds its own
             cluster with 2008 usage and rolls that window up for every cluster
             in the accounting DB; use a throwaway DB.

test_116_#   Testing of srun options.
=====================================
test_116_1   /commands/srun/test_parallel_launch_srun.py
test_116_2   /commands/srun/test_--account.py
test_116_3   /commands/srun/test_--multi-prog.py
test_116_4   /commands/srun/test_task_signal_abort_message.py
test_116_5   /commands/srun/test_hostfile.py
test_116_6   /commands/srun/test_running_non-existent_job.py
test_116_7   /commands/srun/test_batch_multiple_concurrent_steps.py
test_116_8   /commands/srun/test_propagation_of_umask_to_spawned_tasks.py
test_116_9   /commands/srun/test_--overcommit.py
test_116_11  /commands/srun/test_--immediate.py
test_116_12  /commands/srun/test_--output--error_formatting.py
test_116_13  /commands/srun/test_--exclusive.py
test_116_14  /commands/srun/test_--preserve-env.py
test_116_15  /commands/srun/test_--version.py
test_116_16  /commands/srun/test_--quit-on-interrupt.py
test_116_17  /commands/srun/test_-v.py
test_116_18  /commands/srun/test_--ntasks-per-node.py
test_116_19  /commands/srun/test_srun_user_limits.py
test_116_20  /commands/srun/test_--slurmd-debug.py
test_116_21  /commands/srun/test_--task-prolog.py
test_116_22  /commands/srun/test_--chdir.py
test_116_23  /commands/srun/test_--no-allocate.py
test_116_24  /commands/srun/test_--kill-on-bad-exit.py
test_116_25  /commands/srun/test_signal_forwarding.py
test_116_26  /commands/srun/test_--no-kill.py
test_116_27  /commands/srun/test_--mail-type_and_--mail-user.py
test_116_28  /commands/srun/test_--mem--mincpus--tmp.py
test_116_30  /commands/srun/test_exit_code_reporting.py
test_116_31  /commands/srun/test_--help.py
test_116_32  /commands/srun/test_--input--output--error.py
test_116_33  /commands/srun/test_srun_increasing_job_sizes.py
test_116_34  /commands/srun/test_--unbuffered.py
test_116_36  /commands/srun/test_--debugger-test.py
test_116_37  /commands/srun/test_--task-epilog.py
test_116_38  /commands/srun/test_--test-only.py
test_116_39  /commands/srun/test_--usage.py
test_116_40  /commands/srun/test_env_variables.py
test_116_41  /commands/srun/test_--job-name.py
test_116_42  /commands/srun/test_--threads.py
test_116_43  /commands/srun/test_--input--output_taskid.py
test_116_44  /commands/srun/test_task-prolog_and_epilog.py
test_116_45  /commands/srun/test_-t.py
test_116_46  /commands/srun/test_--wait.py
test_116_47  /commands/srun/test_identity.py
test_116_48  Test SrunPortRange
test_116_49  Basic MPI functionality tests via srun.
test_116_50  Test CPU affinity/binding as observed on the node (--cpu-bind)
test_116_51 /commands/srun/test_--exclusive=allocation
test_116_52 /commands/srun/test_--exclusive_with_LaunchParamsExclAlloc
test_116_53  Test MPI/PMIx signaling
test_116_54  Test MPI/PMI2 signaling (requires MPICH)
test_116_55  Test srun --async CLI behavior
test_116_56  Test srun --relative
test_116_57  Test srun in het job nested in non-het job
test_116_58  Test srun --async --kill-on-bad-exit kills remaining tasks
test_116_59  Test the --runtime job submission option and its runtime plugins
test_116_60  Test the srun/salloc/sbatch --runtime=list option
test_116_61  Verify a pending synchronous step is assigned a real step ID at submission
test_116_62  Test pending step IDs and old-srun retry wakes with exhausted ports
test_116_63  Test MPI/PMIx abort propagation across hetjob components
test_116_64  Test srun forced termination of a hetjob
test_116_65  Test srun --bcast in a hetjob
test_116_66  Test that stopping and resuming a waiting srun does not end its wait
test_116_67  Verify srun keeps a controller step cancel received during --prolog
test_116_68  Test memory affinity as observed on the node for NUMA systems (--mem-bind and ldom)
test_116_69  Test --cpu-bind and --mem-bind parsing and help
test_116_70  Test srun --cpu-bind and --mem-bind task environment
test_116_71  Test that srun completes a step it never launched when using stepmgr
test_116_72  Test a step's exit code is the highest of its tasks
test_116_73  Test the CPUs srun steps get with --exact and --overlap
test_116_74  Test a pending-step retry refreshes the port that wakes srun

test_117_#   Testing of sstat options.
======================================
test_117_1   /commands/sstat/test_--version.py
test_117_2   /commands/sstat/test_--help.py
test_117_3   /commands/sstat/test_--usage.py
test_117_4   /commands/sstat/test_-e.py
test_117_5   Check for -j SLUID support in sstat queries

test_118_#   Testing of strigger options.
=========================================
test_118_1   /commands/strigger/test_--help.py
test_118_2   Check for SLUID and JobID support for set and get triggers.

test_119_#   Testing of contribs.
=================================
test_119_1   /contribs/openlava/test_lsid.py
test_119_2   /contribs/torque/qsub/test_basic.py

test_120_#   Testing of cgroups.
================================
test_120_1   Check that cgroup path is constructed with the job SLUID.
test_120_2   Check that cgroup path is constructed with the job ID when configured.
test_120_3   Check that --max-pids constrains the pids.max file of each step.
test_120_4   Check that the peak PID count of a step is accounted as pids.

test_121_#   Testing of mps.
=============================
test_121_1   /features/gres/test_mps_options.py
test_121_2   /features/gres/test_mps--gres=mps_by_job.py

test_122_#   Testing of job_arrays.
===================================
test_122_1   /features/job_arrays/test_basics.py
test_122_2   Test job array with gres
test_122_3   Test suspension of job arrays
test_122_4   Test srun --jobid attach to a running job array task
test_122_5   Test scancel job array id handling
test_122_6   Test sbatch --array specification validation
test_122_7   Test SchedulerParameters=max_array_tasks enforcement
test_122_8   Test array tasks drop JobArrayTaskLimit once the limit has room
test_122_9   Test requeued array tasks don't flood slurmdbd with DBD_JOB_START

test_123_#   Testing of reservations.
=====================================
test_123_1   /features/reservations/test_flags.py
test_123_2   Test RESV_DEL_HOLD
test_123_3   Test overlapping reservations.
test_123_4   Test reservation access
test_123_5   Test reservation access based on QOS
test_123_6   Test reservation access based on Partition
test_123_7   Test reservation node replacement interactions
test_123_8   Test reservation node replacement by features
test_123_9   Test reservation access with account/user deny '-' lists
test_123_10  Test reservation creation does not allocate MAINT-reserved nodes
test_123_11  Test MAGNETIC+FLEX reservations will pick up long jobs
test_123_12  Test NodeCnt reservation with IGNORE_JOBS on busy partition nodes
test_123_13  Test reservation node flag set and clear
test_123_14  Test reservation access to other reservations' nodes and cores
test_123_15  Test updates preserve INFINITE reservation duration
test_123_16  Test reservation updates with jobs that already lost access
test_123_17  Test reservation accounting records and node filter queries
test_123_18  Test ReqReservation is recorded correctly
test_123_19  Test jobs requesting multiple reservations and partitions

test_124_#   Testing of AccountingStorageEnforce.
=================================================
test_124_1   /parameters/slurm/AccountingStorageEnforce/test_associations.py
test_124_2   Test het job submission against GrpTRES and its usage accounting

test_125_#   Testing of datawarp.
=================================
test_125_1   /parameters/slurm/BurstBufferType/datawarp/test_datawarp.py

test_126_#   Testing of EnforcePartLimits.
==========================================
test_126_1   /parameters/slurm/EnforcePartLimits/test_enforcePartLimits.py
test_126_2   Test het job with per-component QoS/limit aggregation (DenyOnLimit)
test_126_3   Test het job components each count against QOS MaxSubmitJobsPerUser
             and association MaxSubmitJobs, at submit, at cancel, on reject
             and with partition QOS
test_126_4   Test EnforcePartLimits=ALL rejects jobs exceeding a partition's CPUs

test_127_#   Testing of Epilog.
===============================
test_127_1   Test Epilog timeout and child process cleanup
test_127_2   Test that a resent or aborted job termination sets the Epilog env
test_127_3   Test the Epilog environment reports a job's exit and return codes
test_127_4   Test a RunInJob Epilog gets no job exit variables

test_128_#   Testing of PreemptType.
====================================
test_128_1   /parameters/slurm/PreemptType/partition_prio/test_preemption_by_partition.py
test_128_2   Test PreemptExemptTime for "suspend,gang","requeue", and "cancel", including at job start
test_128_3   Test hetjob is exempt from preemption under SUSPEND,GANG
test_128_4   Test hetjob REQUEUE/CANCEL preemption, as victim and as preemptor
test_128_5   Test hetjob mixed-mode components resolve REQUEUE then CANCEL, and per-component GraceTime
test_128_6   Test hetjob preemption under preempt/qos: SUSPEND exemption, mode resolution, component eligibility
test_128_7   Test hetjob is excluded from oversubscription while GANG is enabled
test_128_8   Test GraceTime+PreemptMode=REQUEUE under preempt/partition_prio does not requeue a successful restarted job
test_128_9   Test GraceTime+PreemptMode=REQUEUE under preempt/qos does not requeue a successful restarted job
test_128_10  Test a job preempted while CONFIGURING is reported as PREEMPTED
test_128_11  Test preemption by jobs with a required or excluded node list

test_129_#   Testing of preserve-case slurmdbd parameters.
===========================================================
test_129_1   PreserveCaseUser and PreserveCaseAll behavior
test_129_2   Add/remove/add mixed case user over PCU transitions

test_130_#   Testing of PriorityType.
=====================================
test_130_1   /parameters/slurm/PriorityType/basic/test_priority.py
test_130_2   multifactor plugin algo test for fairshare=parent
test_130_3   /parameters/slurm/PriorityType/multifactor/test_priority.py
test_130_4   Test TRESRunMins usage when a QOS UsageFactor is modified mid-run
test_130_5   Test TRESRunMins give-back with priority/basic and a UsageFactor
test_130_6   Test per-TRES decay of GrpTRESMins usage with TresDecayHalfLife
test_130_7   Test TresDecayHalfLife with PriorityDecayHalfLife disabled
test_130_8   Test a frozen GrpTRESMins quota keeps blocking jobs
test_130_9   Test setting TresDecayHalfLife applies without a restart
test_130_10  Test a PriorityDecayHalfLife reconfigure leaves overrides alone
test_130_11  Test accrue limits on pending jobs
test_130_12  Test accrue limits with PriorityFlags=ACCRUE_ALWAYS
test_130_13  Test ResetAccrueTime and accrue limits across restarts

test_131_#   Testing of sshare options.
========================================
test_131_1   Test basic sshare --json

test_132_#   Testing of Prolog.
===============================
test_132_1   /parameters/slurm/Prolog/test_prolog.py
test_132_2   Test holds placed on a running job during its node prolog
test_132_3   Test job state while the Prolog runs with various PrologFlags
test_132_4   Test job state while PrologSlurmctld and the Prolog run
test_132_5   Test a job requeued by a failed Prolog runs when retried
test_132_6   Test a Prolog failure keeps a job from finishing configuration

test_134_#   Testing of SwitchType.
===================================
test_134_1   /parameters/slurm/SwitchType/none/test_window_exclusivity.py
test_134_2   Test switch/lua hook sequence, jobinfo round trip and return codes
test_134_3   Test switch/lua asynchronous job_start and job_complete, node
             blocking, drain on failure and switch_timeout
test_134_4   Test switch/lua job_start and job_complete recovery across a
             slurmctld restart
test_134_5   Test switch/lua teardown that does not hold its nodes back
test_134_6   Test SlurmctldParameters=switch_drain_on_failure=no
test_134_7   Test switch/lua teardown that asks to be tried again, and the
             limit on how often
test_134_8   Test switch/lua job_start and job_complete return values
test_134_9   Test switch/lua step functions when setup_special_steps
             returns true

test_135_#   Testing of TaskEpilog.
===================================
test_135_1   /parameters/slurm/TaskEpilog/test_task_epilog.py

test_136_#   Testing of node_attributes options.
================================================
test_136_1   /parameters/slurm/node_attributes/test_CoreSpecCount.py
test_136_2   /parameters/slurm/node_attributes/test_CpuSpecList.py

test_137_#   Testing of helpers options.
========================================
test_137_1   /plugins/node_features/helpers/test_plugin.py
test_137_2   Test rebootless features
test_137_3   Test mutually exclusive changeable features and reboot script parameters
test_137_4   Test constraint expressions with changeable features
test_137_5   Test job step constraints with changeable features

test_138_#   Testing stressing cases.
=====================================
test_138_1   /stress/test_stdin_broadcast.py
test_138_2   Test parallel performance of squeue
test_138_3   Stress test multiple simultaneous commands via multiple threads

test_139_#   Testing dynamic nodes.
===================================
test_139_1   Test creation, registration, usage, and deletion of dynamic nodes.
test_139_2   Test dynamic external node states don't go NOT_RESPONDING after update.
test_139_3   Test dynamic future nodes get NodeAddr and NodeHostName from slurmd.
test_139_4   Test dynamic node range creation and rollback of a failed create.
test_139_5   Test PMIx steps spanning a dynamic node in a heterogeneous job.
test_139_6   Test SlurmctldParameters=dynamic_node_dns NodeName resolution.
test_139_7   Test SlurmctldParameters=dynamic_node_dns with a slurmd -F node.
test_139_8   Test recreated dynamic external and cloud nodes can be allocated.

test_140_#   Testing --tres options.
====================================
test_140_1   Test --tres-per-task option
test_140_2   Test --tres-bind validation
test_140_3   Test license alloc/used and hold across batch job requeue
test_140_4   Test license request grammar
test_140_5   Test scontrol update of job TRES fields

test_141_#   Testing PowerSave/Cloud operations.
================================================
test_141_1   Test state cycle, timeouts, scontrol commands, PowerDownOnIdle, and Node Features reboot
test_141_2   Testing Global,Per-Partition,Per-Node Cloud Options
test_141_3   Test node reboot and power down/up actions via slurmctld and slurmd
test_141_4   Test srun to a powered down cloud node with enable_stepmgr
test_141_5   Test powered down nodes are not left UNKNOWN on reconfigure/restart
test_141_6   Test NOT_RESPONDING is not set on, and is cleared from, powered down nodes
test_141_7   Test that a job launches promptly once its powering-up nodes register
test_141_8   Test that a job launches promptly once its rebooted nodes register
test_141_9   Test that a job launches promptly once its feature-rebooted nodes register
test_141_10  Test that a job still launches on the periodic poll without the option
test_141_11  Test cloud node first registration binds count-only GRES jobs in place
test_141_12  Test per-node SuspendTime when automatic power save is not configured
test_141_13  Test per-node SuspendTime across reconfigure and slurmctld restarts
test_141_14  Test per-node SuspendTime enabling power save without a reconfigure
test_141_15  Test node reboot Reason survives a later job allocation on a shared node
test_141_16  Test ResumeTimeout values too large for 16 bits
test_141_17  Test a ResumeTimeout too large for slurmscriptd does not kill the ResumeProgram
test_141_18  Test the ResumeProgram JSON gives the layout of each job
test_141_19  Test SuspendExcStates=DEGRADED keeps a degraded node powered up
test_141_20  Test reboot cancel, nextstate=resume and timeout drain handling

test_142_#   Testing of slurmdbd database session settings.
===========================================================
test_142_1   Test that a rollup manages Galera streaming replication on its
             connection. Rolls up every cluster in the accounting DB; use a
             throwaway DB. CI only exercises the non-Galera case.

test_143_#   Testing --switches.
================================
test_143_1   Test switches with topology/tree + select/cons_tres

test_144_#   Testing of gres.
================================
test_144_1   Test --exclusive allocation with gres flagged as explicit
test_144_2   Test enforce-binding jobs and --overlap steps with core-bound GPUs
test_144_3   Test --exact with GPUs and multiple steps
test_144_4   Test gres with file or type and --overlap
test_144_6   Test gres with no_consume flag
test_144_7   Test allocating sub-sets of GRES to job steps
test_144_8   Test various parameters with and without enforce binding
test_144_9   Test RestrictedCoresPerGPU
test_144_10  Test Flags=env_uuid sets proper environment variables
test_144_11  Test GRES reservation with node table changes
test_144_12  Test dynamic-normal slurmd (`slurmd -Z`) GRES autofill
test_144_13  Test CountOnly GRES does not alter per-socket core distribution
test_144_14  Test overcommit with GRES tres-per-task
test_144_15  Test gres.conf UUID supplies device UUIDs without AutoDetect
test_144_16  Test gres.conf UUID merged with AutoDetect UUIDs
test_144_18  Test shard device memory enforcement (ConstrainDeviceMemory)
test_144_19  Test per-device typed shard counts in gres.conf
test_144_20  Test a step's GPU frequency setup across its GRES records
test_144_21  Test job handling when a node's shard/mps GRES topology changes
test_144_22  Test --gres-flags=enforce-links requires a job's GRES to be linked
test_144_23  Test --gres-flags=ignore-links selects GRES without using links
test_144_24  Test --gres-flags=enforce-links where a node's request gets split
test_144_25  Test --gres-flags=enforce-links on a GRES configured by count
test_144_26  Test --gres-flags=enforce-links with RestrictedCoresPerGPU
test_144_27  Test --gres-flags=enforce-links with enforce-binding
test_144_28  Test the energy plugin on a step node holding no GPU bitmap
test_144_29  Test gres.conf Cores= binds GRES as a preference, not a constraint
test_144_30  Test --mem-per-gpu memory allocation and cgroup enforcement
test_144_31  Test GRES chunk config edits and validation
test_144_32  Test GRES device chunks on dynamic nodes
test_144_33  Test GRES device chunks are refused on a shared GRES
test_144_34  Test GRES chunks of 4 and 8: nesting, best fit and ChunkOrder
test_144_35  Test GRES device chunks with Cores= and enforce-binding
test_144_36  Test GRES device chunks on GPUs that slurmd detects
test_144_37  Test GRES device chunk allocation (gres.conf ChunkSizes/ChunkOrder)
test_144_38  Test GRES device numbering with an unusable gres.conf File entry
test_144_39  Test RestrictedCoresPerGPU jobs get every requested GPU or pend
test_144_40  Test --gres parsing and help
test_144_41  Test a GPU with no UUID is numbered by its place in the report
test_144_42  Test gres.conf Cores= must cover whole sockets the node has
test_144_43  Test a shard job survives an unchanged slurmd registration

test_145_#   Testing --constraint, --prefer and --extra.
========================================================
test_145_1   Test --constraint with --ntasks-per-node
test_145_2   Test --constraint
test_145_3   Test job with --constraint will not preempt other jobs if resources are available
test_145_4   Test --prefer validation, placement, and combination with --constraint
test_145_5   Test --prefer in conjunction with ignore_prefer_validation
test_145_6   Test setting node Extra for extra_constraints
test_145_7   Test job --extra with extra_constraints

test_146_#   Testing partitions.
================================
test_146_1   Test MaxCPUsPerNode and MaxCPUsPerSocket
test_146_2   Test MaxNodes
test_146_3   Test MinNodes
test_146_4   Test a partition QOS cannot be changed while jobs are running or suspended in it

test_147_#   Testing SPANK.
===========================
test_147_1   Test SPANK contained when SlurmdParameters=contain_spank
test_147_2   Test SPANK remote spank init failure modes
test_147_3   Test SPANK hook failures match the spank.8 Errors table
test_147_4   Test SPANK plugins that link against libslurm
test_147_5   Test adopting a pid waits for the extern step setup

test_149_#   Testing AcctGatherProfileType.
===========================================
test_149_1   Test acct_gather_profile/influxdb
test_149_2   Test acct_gather_profile/influxdb grouped fields and extra tags
test_149_3   Test acct_gather_profile/hdf5 task profile consistency
test_149_4   Test GPU profile columns stay zero without GPU usage samples
test_149_5   Test GPU profile columns stay zero with only gres/gpumem tracked
test_149_6   Test the extern step's profile columns stay zero

test_150_#   Testing topology plugins.
================================
test_150_1   Test topology/block
test_150_2   Test "--nodelist" + "--segment"
test_150_3   Test topology-aware task distribution
test_150_4   Test emitted node lists and per-node arrays follow task placement
test_150_5   Test slurmd first-registration gate for topology/instance/extra fields
test_150_6   Test topology/tree + RouteTree relays a forwarded message once per switch
test_150_7   Test topology preserved when a partial node update splits the config
test_150_8   Test overcommit with cpus-per-task across a topology cluster
test_150_9   Test bad topology.yaml handling
test_150_10  Test --contiguous node selection per topology plugin
test_150_11  Test "--segment" with job-scoped GPU requests on topology/block
test_150_12  Test early bail for --segment with --spread-segments
test_150_13  Test alphanumeric node sort within a switch and a block
test_150_14  Test DefSegmentSize ignored without segment support
test_150_15  Test slurmd message forwarding with a tree width below the node count
test_150_16  Test LLN, bf_busy_nodes, pack_serial_at_end on 1-node jobs per topology
test_150_17  Test partition DefSegmentSize with topology/block
test_150_18  Test DefSegmentSize changes reaching pending jobs
test_150_19  Test topology/block placement for TPU 3D (tpu7x) layouts
test_150_20  Test backfill plans a node list job behind an --exclusive=topo job
             for its end, with its GRES untouched and no cons_tres errors
test_150_21  Test --exclusive=topo enforced on a block partition, also against
             jobs sent through a tree partition, but not on a tree partition

test_151_#   Testing Oversubscribe
===========================================
test_151_1   Test oversubscribe with sharing partitions
test_151_2   Test OverSubscribe and Exclusive intent in scontrol and env vars
test_151_3   Test oversubscribe and contiguous options.
test_151_4   Test per-partition OverSubscribe job count for FORCE and YES

test_152_#   Testing switch/nvidia_imex.
========================================
test_152_1   Test IMEX channel allocation/deallocation
test_152_2   Test --network=unique-channel-per-segment

test_153_#   Testing Metrics/Type.
========================================
test_153_1   Test basic metrics/openmetrics
test_153_2   Test various allocation fields for metrics/openmetrics
test_153_3   Test metrics endpoint connection reuse with empty and populated replies
test_153_4   Test the partition_jobs_wait_part_node_limit metric

test_154_#   Testing HRes.
========================================
test_154_1   Test HRes MODE_3
test_154_2   Test HRes MODE_3 preemption
test_154_3   Test updating the MODE_3 HRES request of a pending job
test_154_4   Test the hres/lua callback lifecycle
test_154_5   Test recovery of runtime changes to HRES layer nodes

test_155_#   Testing sh5util
========================================
test_155_1   Test sh5util options
test_155_2   Test sh5util merge and extract (--profile=task)
test_155_3   Test sh5util Network fields (--profile=network)

test_156_#   Testing job step launching
========================================
test_156_1   Test "--hint=nomultithread"
test_156_2   Test SLURM_STEP_ID and SLURM_STEPID of batch, interactive and srun steps

test_157_#   Testing of JobSubmitPlugins.
============================================
test_157_1   Test job_desc with JobSubmitPlugins=lua
test_157_2   Test core_spec/thread_spec in job_desc with JobSubmitPlugins=lua
test_157_3   Test clearing the supported job_desc string fields via job_submit/lua on modify
test_157_4   Test job_submit/lua clear limits: submit path, unsupported fields, non-empty assignment
test_157_5   Test job_submit/lua reading state_reason and state_desc of a job record
test_157_6   Test job_submit/tpu --layout validation, sizing, and GRES injection

test_158_#   Testing of Licenses
============================================
test_158_1   Remote Licenses
test_158_2   Test remote license fuzzy matching

test_159_#   Testing of Namespace plugins
============================================
test_159_1   Test basic namespace/linux functionality (25.11+)
test_159_2   Test unique mount and mount options in namespace/linux (26.05+)
test_159_3   Test CLONE_NEWIPC private IPC namespace in namespace/linux (26.11+)

test_160_#   Testing dynamic memory limits.
===========================================
test_160_1   Test memory reduction on running jobs (scontrol and --mem-update)

test_161_#   Testing topology/torus3d.
========================================
test_161_1   Test topology/torus3d placements, constraints, and --segment
test_161_2   Test "--segment" with job-scoped GPU requests on topology/torus3d

test_162_#   Testing of swait and stepmgr/async-step integration.
=================================================================
test_162_1   Test swait against a stepmgr-enabled cluster
test_162_2   Test swait's steps-drained push path
test_162_3   Test scontrol visibility and reconfigure-survival of async steps
test_162_4   Verify pending synchronous step id-at-submit holds under stepmgr
test_162_5   Test swait per-step wait targets and their reported results
test_162_6   Test swait reporting for steps ending in a terminal-failure state
test_162_7   Test swait --follow and the whole-set drain
test_162_8   Test swait --json/--yaml output and data_parser selection
test_162_9   Test swait against a cluster without stepmgr enabled
test_162_10  Test a step create carrying an array task id under stepmgr
test_162_11  Verify pending synchronous steps launch FIFO under create-at-wake stepmgr
test_162_12  Test that a pre-26.11 srun keeps the poke-and-re-send path under stepmgr
test_162_13  Test stepmgr releases a step that fails to launch
test_162_14  Test srun --step-dependency under stepmgr
test_162_15  Verify a dependency-ready step retries when reserved ports free
test_162_16  Test step dependencies require stepmgr and support per-job stepmgr
test_162_17  Test a cancelled stepmgr job refuses new steps but a signaled one does not

test_163_#   Testing jobacct_gather/cgroup memory accounting.
=============================================================
test_163_1   Test completed accounting preserves short memory peaks

test_164_#   Testing batch job launch recovery.
=================================================
test_164_1   Test a batch job survives a slurmctld reconfigure during its prolog
test_164_2   Test node accounting when a node leaves a requeued completing job

test_165_#   Testing multi-partition allocated partition recovery and ordering
==============================================================================
test_165_1   Test multi-partition job/array keeps partition on restart
test_165_2   Test completing job keeps partition on recovery
test_165_3   Test multi-partition job keeps partition across changes
test_165_4   Test partition PriorityTier ordering of a pending job
test_165_5   Test multi-partition job submission with srun and salloc
test_165_6   Test multi-partition job keeps partition on repeated restarts

test_166_#   Testing TLS.
==========================
test_166_1   Test RPC listeners reject non-TLS and accept TLS connections
test_166_2   Test slurmctld rejects non-TLS RPCs with HTTP listening disabled
test_166_3   Test swait's listener rejects non-TLS connections
test_166_4   Test slurmdbd closes connections that are not TLS wrapped

test_167_#   Testing of HealthCheckProgram.
===========================================
test_167_1   Test SLURM_NODE_IS_HEALTHY reporting to HealthCheckProgram

test_168_#   Testing of heterogeneous jobs.
===========================================
test_168_1   Validate sbatch heterogeneous job environment variables.
test_168_2   Test job-global step ids with --stepmgr on heterogeneous jobs.
test_168_3   Test sbcast and squeue against a --stepmgr heterogeneous job.
test_168_4   Validate scontrol show job fields for heterogeneous job components.
test_168_5   Test that job arrays of hetjobs are rejected
test_168_6   Test the hold reason set on every component of a held
             heterogeneous job
test_168_7   Test hetjobs with external components run, end and survive restarts

test_169_#   Testing of scrontab options.
=========================================
test_169_1   Test that scrontab builds a job description from a #SCRON line
test_169_2   Test that #SCRON --export=NIL skips loading the login environment

test_170_#   Testing of sched/backfill.
=======================================
test_170_1   Test TRESRunMins usage when a --time-min job's limit is trimmed.
test_170_2   Test backfill reserves the preempted nodes and keeps other jobs off them
test_170_3   Test backfill starts jobs on resuming nodes only while available.

test_171_#   Testing of the runtime plugin interface.
=====================================================
test_171_1   Test runtime/lua does not break srun/sbatch/salloc job launch
test_171_2   Test which container bundle each runtime gives steps, salloc, and sbatch

test_172_#   Testing of JobComp plugins.
========================================
test_172_1   Test the exit code jobcomp/filetxt records for a completed job
test_172_2   Test jobcomp/kafka start and end records on separate topics
test_172_3   Test job state transition events with a finish-only jobcomp
             plugin
test_172_4   Test jobcomp/kafka job state transition event records
test_172_5   Test jobcomp/kafka per-event default topics and enable flags
test_172_6   Test jobcomp/kafka explicit per-event topics and topic_all
             precedence
test_172_7   Test jobcomp/lua job state transition events
test_172_8   Test the jobcomp/lua job start event
test_172_9   Test jobcomp/kafka default topics of the queue, start, and
             release events
test_172_10  Test sacct -c/-f with jobcomp/filetxt and log rotation
test_172_11  Test jobcomp/script runs JobCompLoc once per finished job
test_172_12  Test sacct -c reading jobcomp/mysql records of finished jobs
test_172_13  Test jobcomp/elasticsearch records and resend after restart

test_173_#   Testing of DBD Agent
========================================
test_173_1   Test the DBD agent queue drains after a stranded requeue of a resized job

test_174_#   Testing of main scheduler.
=======================================
test_174_1   Test scheduling after het job components fail by partition
test_174_2   Test scheduling after reservation jobs fail by partition

test_175_#   Testing of MailProg.
=================================
test_175_1   Test that MailProg=None disables mail notifications

test_176_#   Testing slurmdbd connection handling.
===================================================
test_176_1   Test slurmdbd read timeouts and short-header timeouts
test_176_2   Test slurmdbd TLS negotiation timeouts
test_176_3   Test batched DBD_SEND_MULT_MSG delivery
test_176_4   Test slurmdbd RPC authorization by authentication level

test_177_#   Testing of PrivateData.
====================================
test_177_1   Test PrivateData=users in slurmdbd.conf
test_177_2   Test PrivateData in slurm.conf

test_178_#   Testing of task/resctrl.
=====================================
test_178_1   Test task/resctrl groups and step placement on resctrl hardware

test_179_#   Testing of cli_filter/lua.
=======================================
test_179_1   Test that rejected Lua option assignments are logged

test_180_#   Testing daemon HTTP endpoints.
============================================
test_180_1   Test slurmctld, slurmd, and slurmdbd HTTP endpoint connection reuse
test_180_2   Test slurmdbd HTTP content, authentication, and versioned replies

test_181_#   Testing of RequeueExit and RequeueExitHold.
========================================================
test_181_1   Test requeue matching on exit status and Slurm return code

test_182_#   Testing of KV options.
====================================
test_182_1   Test KV and KVPatch on jobs, nodes, partitions, and reservations
test_182_2   Test authorization for job KV and KVPatch updates
test_182_3   Test job KV output and updates through slurmrestd v0.0.46

test_183_#   Testing of job I/O relay.
======================================
test_183_1   Test relay_io/uds_json relays job and step output
test_183_2   Test relay_io/uds_json at its shipped default settings
test_183_3   Test job_submit/lua can set a job's relay_io field

test_184_#   Testing of --hint.
===============================
test_184_1   Test --hint parsing and help

test_185_#   Testing of AccountingStorageExternalHost.
======================================================
test_185_1   Test registration with external slurmdbds

test_189_#   Testing node registration.
======================================
test_189_1   Test per-node config_overrides on the registration that reports it

test_190_#   Testing GRES/TRES drain and resume.
=================================================
test_190_1   Test what a drained TRES reports and what it costs the node
test_190_2   Test TresName/Action request validation shared by every TRES
test_190_3   Test the REST node record drained_tres field
test_190_4   Test CPU and core drain and threads per core
test_190_5   Test node memory drain and resume
test_190_6   Test count-only GRES drain/resume across multiple dynamic nodes
test_190_7   Test File/UUID based GRES drain/resume
test_190_8   Test shared GRES (shard and MPS) drain/resume
test_190_9   Test GRES drain/undrain accounting events
test_190_10  Test absent GPU drains in the accounting event
test_190_11  Test an untracked GPU drain is named but not counted in events
test_190_12  Test node and cluster TRES totals are unaffected by a TRES drain
test_190_13  Test drain_absent_gres auto-drains an absent GPU
test_190_14  Test a saved UUID order across a configured-count change
test_190_15  Test an exclusive job gets the present GPUs of two types
test_190_16  Test GRES device chunks when a GPU is absent
test_190_17  Test a GPU set against its configured Gres count
test_190_18  Test GRES drains stay when slurmd reports no device
test_190_19  Test an absent GPU auto-drains with config_overrides on

test_191_#   Testing of HashPlugin.
===================================
test_191_1   Test scontrol hash digests and SHA3 clients of K12 daemons
test_191_2   Test slurmctld and slurmdbd with HashPlugin=hash/sha3
