blob: 6a7f2ba1cd0ffd138f6389c91025e84e64e863d1 [file] [log] [blame]
#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
# Test for the qsub -V and -v options
############################################################################
source ./globals
set file_err "$test_dir/error"
set file_in "$test_dir/input"
set file_out "$test_dir/output"
set variable1_value "var1"
set variable2_value "var2"
set job_id 0
if {[file executable $qsub] == 0} {
skip "qsub was not found"
}
proc cleanup {} {
global job_id
cancel_job $job_id
}
proc make_random_var_name {} {
set randvar "RANDOM_VARIABLE_"
append randvar [expr int(rand() * 1000 + 1000 )]
return $randvar
}
proc run_qsub { variable1_name variable1_expect_val variable2_name
variable2_expect_val qsub_extra_options extra_batch_header } {
global file_err file_in file_out
global job_id
global test_var_value
global bin_cat bin_echo bin_rm
global qsub
global number
global env
global variable1_value variable2_value
global subtest_name
log_info "=============================================="
log_info "$subtest_name"
log_info "=============================================="
set job_id 0
file delete $file_err $file_out
make_bash_script $file_in "
$extra_batch_header
$bin_echo $variable1_name=\$$variable1_name
$bin_echo $variable2_name=\$$variable2_name"
# Set our 2 test variables
set env($variable1_name) $variable1_value
set env($variable2_name) $variable2_value
set qsub_base_options [concat -l walltime=1:00 -r $file_err -o \
$file_out $file_in]
set qsub_options [concat $qsub_extra_options $qsub_base_options]
eval spawn $qsub [lrange $qsub_options 0 end]
unset env($variable1_name)
unset env($variable2_name)
expect {
-re "($number)" {
set job_id $expect_out(1,string)
exp_continue
}
timeout {
fail "qsub not responding"
}
eof {
wait
}
}
if {$job_id == 0} {
fail "qsub failed to submit job"
}
wait_for_file -fail $file_out
set matches 0
spawn $bin_cat $file_out
expect {
"${variable1_name}=${variable1_expect_val}" {
incr matches
exp_continue
}
"${variable2_name}=${variable2_expect_val}" {
incr matches
exp_continue
}
eof {
wait
}
}
subtest {$matches == 2} "Verify environment variables match their expected values for sub test '$subtest_name'" "$matches != 2"
}
# Test -V
set subtest_name "Test -V"
set var1_name [make_random_var_name]
set var2_name "${var1_name}_2"
run_qsub $var1_name $variable1_value $var2_name $variable2_value "-V" ""
unset var1_name var2_name
# Test -V w/sbatch --export=NONE
set subtest_name "Test -V w/sbatch --export=NONE"
set var1_name [make_random_var_name]
set var2_name "${var1_name}_2"
run_qsub $var1_name $variable1_value $var2_name $variable2_value \
"-V" "#SBATCH --export=NONE"
unset var1_name var2_name
# Test -V, -v var
set subtest_name "Test -V, -v var"
set var1_name [make_random_var_name]
set var2_name "${var1_name}_2"
run_qsub $var1_name $variable1_value $var2_name $variable2_value \
"-V -v $var1_name" ""
unset var1_name var2_name
# Test -V, -v var w/sbatch --export=NONE
set subtest_name "Test -V, -v var w/sbatch --export=NONE"
set var1_name [make_random_var_name]
set var2_name "${var1_name}_2"
run_qsub $var1_name $variable1_value $var2_name $variable2_value \
"-V -v $var1_name" "#SBATCH --export=NONE"
unset var1_name var2_name
# Test -V, -v var=val
set subtest_name "Test -V, -v var=val"
set var1_name [make_random_var_name]
set var2_name "${var1_name}_2"
run_qsub $var1_name "another_value" $var2_name $variable2_value \
"-V -v $var1_name=another_value" ""
unset var1_name var2_name
# Test -V, -v var=val w/sbatch --export=NONE
set subtest_name "Test -V, -v var=val w/sbatch --export=NONE"
set var1_name [make_random_var_name]
set var2_name "${var1_name}_2"
run_qsub $var1_name "another_value" $var2_name $variable2_value \
"-V -v $var1_name=another_value" "#SBATCH --export=NONE"