#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          Test of --deadline option and time_min too long
############################################################################
# Copyright (C) 2015 CEA/DAM/DIF
# Written by Aline Roy <aline.roy@cea.fr>
#
# 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.,
# 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
############################################################################
source ./globals

set file_in     "$test_dir/input"
set job_id      0

proc cleanup {} {
	global bin_rm file_in

	exec $bin_rm -f $file_in
}

#
# Build input script file
#
exec $bin_rm -f $file_in
make_bash_script $file_in "$bin_sleep 5"

#
# Spawn a batch job with a deadline and no time
#
set timeout $max_job_delay
spawn $sbatch --output=/dev/null --error=/dev/null --deadline now+1hour --time-min 120 $file_in
expect {
	-re "Requested time limit is invalid" {
		fail "Requested time limit is invalid"
	}
	-re "Submitted batch job ($number)" {
		set job_id $expect_out(1,string)
		exp_continue
	}
	timeout {
		fail "sbatch not responding"
	}
	eof {
		wait
	}
}
if {$job_id != 0} {
	fail "Batch submitted despite the deadline"
}
