#!/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 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."
}

#
# Since we make changes to configuration, define a cleanup function to restore
# the configuration before exiting.
#
proc cleanup {} {
	global job_id

	cancel_job $job_id
	reconfigure
}

#
# 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 set partition MaxTime to UNLIMITED"
}

#
# Spawn a batch job with a deadline and no time
#
set timeout $max_job_delay
spawn $salloc -N1 --deadline now+1hour --begin=now+1 --time-min 20 -t120 $bin_sleep 1
expect {
	-re "Requested time limit is invalid" {
		fail "Unexpected time limit error"
	}
	-re "Granted job allocation ($number)" {
		set job_id $expect_out(1,string)
		exp_continue
	}
	timeout {
		fail "salloc not responding. This can be due to QOS or account time limit < 120 minutes"
	}
	eof {
		wait
	}
}
if {$job_id == 0} {
	fail "Job not submitted"
}

#
# verify time limit
#
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
	}
}
