#!/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 job with a deadline and no time
#
set timeout $max_job_delay
spawn $srun -v  -N1 --deadline now+1hour --time-min 20 -t120 $bin_sleep 1
expect {
	-re "Requested time limit is invalid" {
		fail "Time limit error"
	}
	-re "launching StepId=($number)\\.0 on host" {
		set job_id $expect_out(1,string)
		exp_continue
	}
	timeout {
		fail "srun not responding"
	}
	eof {
		wait
	}
}
if {$job_id == 0} {
	fail "Job not submitted. This can be due to QOS or account time limit < 120 minutes"
}

#
# 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
	}
}
