#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          Test of --deadline option and no time
############################################################################
# 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

set default_time [get_partition_default_time_limit]
if { $default_time != -1} {
	skip "This test is not compatible with default partition having a default time limit ($default_time)"
}

proc cleanup {} {
	global job_id

	cancel_job $job_id
}

#
# 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+600 $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 job not submitted"
}

wait_for_job -fail $job_id DONE

spawn $scontrol show job $job_id
expect {
	-re "TimeLimit=00:10:00" {
		log_debug "Timelimit OK"
	}
	-re "TimeLimit=00:09:" {
		log_debug "Timelimit OK"
	}
	-re "TimeLimit=" {
		fail "Timelimit not OK with deadline"
	}
	timeout {
		fail "scontrol not responding"
	}
	eof {
		wait
	}
}
