Newer
Older
############################################################################
# Purpose: Test of Slurm functionality
# Test of mail options (--mail-type and --mail-user options).
############################################################################
# Copyright (C) 2002 The Regents of the University of California.
# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
# Written by Morris Jette <jette1@llnl.gov>

Moe Jette
committed
# CODE-OCEC-09-009. All rights reserved.

Danny Auble
committed
#
# This file is part of Slurm, a resource management program.
# For details, see <https://slurm.schedmd.com/>.

Moe Jette
committed
# Please also read the included file: DISCLAIMER.

Danny Auble
committed
#
# 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.

Danny Auble
committed
#
# 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.

Danny Auble
committed
#
# 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 exit_code 0
set got_job_grps 0
set got_login_grps 0
set config_dir [get_conf_path]
set config_file "$config_dir/slurm.conf"
set cwd "[$bin_pwd]"
set mail_prog "$test_id.MailProg.sh"
set mail_prog_out "$test_id.MailProg.out"
if {[get_config_param "FrontendName"] ne "MISSING" && ![is_super_user]} {

Scott Jackson
committed
skip "This test is incompatible with front-end systems"
proc cleanup { } {
global config_dir exit_code bin_rm
global mail_prog mail_prog_out
restore_conf $config_dir/slurm.conf
exec $bin_rm -f $mail_prog $mail_prog_out
reconfigure
}
save_conf $config_dir/slurm.conf
make_bash_script $mail_prog "
echo $@ >> $cwd/$mail_prog_out
"
#Comment MailProg line if existed before
exec $bin_sed -i /^\[\t\s\]*MailProg\[\t\s\]*=/Id $config_file
# Append MailProg config to the slurm.conf
exec $bin_echo "MailProg=$cwd/$mail_prog" >> $config_file
reconfigure
#
# Execute 'id' to determine my user and group ID...
#
set login_grp_info [get_my_user_name]
#
# Submit a slurm job that will execute 'id'
#
set job_id 0
set got_job_id 0
set srun_pid [spawn $srun -N1 -t1 --job-name=test$test_id --mail-type=all --mail-user=$login_grp_info /bin/bash -c "echo \$SLURM_JOB_ID"]
log_error "Error running srun"
-re "($number)" {
set job_id $expect_out(1,string)
set got_job_id 1
log_error "srun not responding"
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
if {$got_job_id == 0} {
fail "Did not get JobId info from slurm job"
}
set began_logged 0
set ended_logged 0
#Wait for mails to go through agent
if {[wait_for_file $mail_prog_out] != 0} {
fail "No output file"
}
spawn $bin_cat $mail_prog_out
expect {
-re "-s Slurm Job_id=$job_id Name=test$test_id Began" {
set began_logged 1
exp_continue
}
-re "-s Slurm Job_id=$job_id Name=test$test_id Ended" {
set ended_logged 1
exp_continue
}
}
if {$began_logged == 0} {
fail "Began mail not sent for $job_id"
}
if {$ended_logged == 0} {
fail "Ended mail not sent for $job_id"

Danny Auble
committed
if {$exit_code != 0} {
fail "Test failed due to previous errors (\$exit_code = $exit_code)"
}