Skip to content
Snippets Groups Projects
Commit 914b5a8d authored by Nathan Yee's avatar Nathan Yee Committed by Morris Jette
Browse files

Add test for "scontrol write config"

parent df99bca2
No related branches found
No related tags found
No related merge requests found
......@@ -147,6 +147,7 @@ EXTRA_DIST = \
test2.21 \
test2.22 \
test2.23 \
test2.24 \
test3.1 \
test3.2 \
test3.3 \
......
......@@ -531,6 +531,7 @@ EXTRA_DIST = \
test2.21 \
test2.22 \
test2.23 \
test2.24 \
test3.1 \
test3.2 \
test3.3 \
......
......@@ -235,6 +235,7 @@ 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
test3.# Testing of scontrol options (best run as SlurmUser or root).
......
......@@ -224,6 +224,7 @@ set digit "\[0-9\]"
set end_of_line "\[\r\n\]"
set float "\[0-9\]+\\.?\[0-9\]*"
set number "\[0-9\]+"
set format_time "\[0-9\]+\\:\[0-9\]+\\:\[0-9\]+"
set number_with_suffix "\[0-9\]+\[KM\]*"
set slash "/"
set whitespace "\[ \t\n\r\f\v\]+"
......
#!/usr/bin/expect
############################################################################
# Purpose: Test of SLURM functionality
# Checks that scontrol write config creates a slurm.conf
# with the correct values
#
#
# Output: "TEST: #.#" followed by "SUCCESS" if test was successful, OR
# "FAILURE: ..." otherwise with an explanation of the failure, OR
# anything else indicates a failure mode that must be investigated.
############################################################################
# Copyright (C) 2014 SchedMD LLC
# Written by Nathan Yee <nyee32@schedmd.com>
#
# This file is part of SLURM, a resource management program.
# For details, see <http://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_id 2.24
set option ""
set value ""
array set conf_val {}
set new_conf ""
set opt_cnt 0
set exit_code 0
print_header $test_id
if {[is_super_user] == 0} {
send_user "\nWARNING: this test requires that the user be root or "
send_user "the SlurmUser\n"
}
#
# User scontrol show config to get some values to check
# against the new created file
#
log_user 0
set val ""
set option ""
spawn $scontrol show config
expect {
-re "($alpha_numeric_under) *= ($format_time)" {
set option $expect_out(1,string)
set val $expect_out(2,string)
set conf_val($option) $val
incr opt_cnt
exp_continue
}
-re "($alpha_numeric_under) *= ($alpha_numeric_under)" {
set option $expect_out(1,string)
set val $expect_out(2,string)
# Exclude ENV variable that appear in scontrol show config
# Also "SuspendTime=NONE" gets written as "SuspendTime=0"
if {$option != "BOOT_TIME" &&
$option != "HASH_VAL" &&
$option != "MULTIPLE_SLURMD" &&
$option != "NEXT_JOB_ID" &&
$option != "SLURM_CONF" &&
$option != "SLURM_VERSION" &&
$option != "SuspendTime"} {
set conf_val($option) $val
incr opt_cnt
}
exp_continue
}
timeout {
send_user "\nFAILURE: scontrol is not responding\n"
set exit_code 1
}
eof {
wait
}
}
log_user 1
#
# Execute scontrol write config and get the path and filename of the
# created file
#
spawn $scontrol write config
expect {
-re "(/.*)/*($alpha_numeric_under)*\r\n" {
set new_conf $expect_out(1,string)
exp_continue
}
timeout {
send_user "\nFAILURE: scontrol is not responding\n";
set exit_code 1
}
eof {
wait
}
}
#
# Loop through the hash and check that the parameters exist within
# the new conf file
#
set tot_match 0
foreach opt [array names conf_val] {
log_user 0
set match 0
spawn $bin_cat $new_conf
expect {
-re "$opt=$conf_val($opt)" {
set match 1
exp_continue
}
-re "#$opt=" {
set match 1
exp_continue
}
timeout {
send_user "\nFAILURE: scontrol is not responding\n"
set exit_code 1
}
eof {
wait
}
}
log_user 1
if {$match != 1} {
send_user "\nFAILURE: $opt = $conf_val($opt)"
send_user " Was not found in new config file\n"
set exit_code 1
} else {
incr tot_match
}
}
if {$tot_match != $opt_cnt} {
send_user "FAILURE: not all the values in the new config "
send_user "file were found ($tot_match != $opt_cnt)\n"
set exit_code 1
}
if {$exit_code == 0} {
exec $bin_rm -f $new_conf
send_user "\nSUCCESS\n"
}
exit $exit_code
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment