blob: f7c471e2095abbf76232063b4be4bfba8a32bdde [file] [log] [blame]
#!/usr/bin/env expect
############################################################################
# Purpose: Confirm min_mem_per_{cpu,node} in lua JobSubmitPlugin
############################################################################
# Copyright (C) SchedMD LLC.
#
# This file is part of Slurm, a resource management program.
# For details, see <https://slurm.schedmd.com/>.
# Please also read the included file: DISCLAIMER.
#
# Slurm is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option)
# any later version.
#
# Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with Slurm; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
############################################################################
source ./globals
set test_lua_min_mem "$test_name\_scripts/min_mem.lua"
set job_name "$test_name"
if {![have_lua]} {
skip "LUA must be installed and enabled to test lua job_submit plugin."
}
if {[check_config_select "linear"]} {
skip "Test requires SelectType!=select/linear"
}
proc test_min_mem { cmd min_mem_per_cpu_exp min_mem_per_node_exp } {
set output [run_command_output -fail "$cmd"]
set per_cpu_found ""
set per_node_found ""
regexp -lineanchor "^(srun|salloc|sbatch): min_mem_per_cpu is (\\S+)$" $output - - per_cpu_found
regexp -lineanchor "^(srun|salloc|sbatch): min_mem_per_node is (\\S+)$" $output - - per_node_found
subtest {$per_cpu_found == $min_mem_per_cpu_exp} "min_mem_per_cpu should be $min_mem_per_cpu_exp" "$per_cpu_found != $min_mem_per_cpu_exp"
subtest {$per_node_found == $min_mem_per_node_exp} "min_mem_per_node should be $min_mem_per_node_exp" "$per_node_found != $min_mem_per_node_exp"
}
proc cleanup {} {
global config_dir
restore_conf $config_dir/job_submit.lua
restore_conf $config_dir/slurm.conf
reconfigure
}
set config_dir [get_conf_path]
save_conf $config_dir/job_submit.lua
save_conf $config_dir/slurm.conf
# Activate lua plugin
run_command "$bin_rm $config_dir/job_submit.lua"
run_command -fail "$bin_cp $test_lua_min_mem $config_dir/job_submit.lua"
exec $bin_sed -i {s/^\(JobSubmitPlugins\)/#\1/gI} $config_dir/slurm.conf
exec $bin_echo "\n### $test_name additions####\nJobSubmitPlugins=lua" >> $config_dir/slurm.conf
reconfigure -fail
testproc test_min_mem "$salloc -J $job_name $bin_true" nil nil
testproc test_min_mem "$srun -J $job_name $bin_true" nil nil
testproc test_min_mem "$sbatch -J $job_name -o /dev/null --wrap $bin_true" nil nil
testproc test_min_mem "$salloc -J $job_name --mem-per-cpu=1024 $bin_true" 1024 nil
testproc test_min_mem "$srun -J $job_name --mem-per-cpu=1024 $bin_true" 1024 nil
testproc test_min_mem "$sbatch -J $job_name --mem-per-cpu=1024 -o /dev/null --wrap $bin_true" 1024 nil
testproc test_min_mem "$salloc -J $job_name --mem=2048 $bin_true" nil 2048
testproc test_min_mem "$srun -J $job_name --mem=2048 $bin_true" nil 2048
testproc test_min_mem "$sbatch -J $job_name --mem=2048 -o /dev/null --wrap $bin_true" nil 2048