#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          Test of --deadline option too short
############################################################################
# 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
set secs        [get_partition_maximum_time_limit ""]

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

	cancel_job $job_id
	set_partition_maximum_time_limit "" $secs
}

#
# 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 that deadline is too short
#
set timeout $max_job_delay
set output [run_command -xfail "$salloc -N1 --deadline now+1hour -t120 $bin_sleep 1"]
subtest {[regexp "Requested time limit is invalid" $output]} "Rejection message about invalid time limit should appear"
subtest {![regexp "Granted job allocation ($number)" $output - job_id]} "Job should be rejected"
