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

#
# We must be SlurmUser or root in order to change the partition MaxTime limit,
# otherwise this test may fail.
#
if {![is_super_user]} {
	skip "You must be SlurmUser or root to run this test"
}

#
# Ensure that MaxTime is UNLIMITED so this test won't fail due to trying to set
# time limits greater than MaxTime.
#
if [set_partition_maximum_time_limit "" -1] {
	fail "Unable to clear partition maximum time limit"
}

proc cleanup {} {
	global job_id

	cancel_job $job_id
	reconfigure
}

#
# Build input script file
#
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 20 -t 120 $file_in
expect {
	-re "Requested time limit is invalid (missing or exceeds some limit)" {
		fail "Requested time limit is invalid (missing or exceeds some limit)"
	}
	-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"
}

#
# verify time limit
#
if {[wait_for_job $job_id DONE] != 0} {
	fail "Job failed to run to completion. This can be due to QOS or account time limit < 120 minutes"
}
spawn $scontrol show job $job_id
expect {
	-re "TimeLimit=01:00:00" {
		exp_continue
	}
	-re "TimeLimit=00:59:" {
		exp_continue
	}
	-re "TimeLimit=" {
		fail "Time limit is different from deadline"
	}
	timeout {
		fail "scontrol not responding"
	}
	eof {
		wait
	}
}
