#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          Test interruption of srun while waiting for resource allocation.
############################################################################
# Copyright (C) 2002-2007 The Regents of the University of California.
# Copyright (C) 2008-2010 Lawrence Livermore National Security
# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
# Written by Morris Jette <jette1@llnl.gov>
# CODE-OCEC-09-009. All rights reserved.
#
# 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.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
############################################################################
source ./globals

set matches     0

#
# Spawn initial program via srun
# Send the signal while the srun is waiting for a resource allocation
#
set srun_pid [spawn $srun -N1 -t1 --begin=noon -v $bin_sleep 1]
expect {
	-re "queued and waiting for resources" {
		incr matches
		exec $bin_kill -INT $srun_pid
		log_debug "Sent SIGINT"
		exp_continue
	}
	-re "Job allocation ($number) has been revoked" {
		incr matches
		exp_continue
	}
	timeout {
		fail "srun not responding"
	}
	eof {
		log_debug "EOF"
		wait
	}
}
if {$matches != 2} {
	fail "srun failed to process SIGINT while waiting for allocation"
}
