From 3f2f4a2c44b5243512841f4097d7e82720cf5f7b Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Thu, 2 Dec 2010 00:03:56 +0000
Subject: [PATCH] Add tests of srun/salloc interrupt while waiting for an
 allocation

---
 testsuite/expect/Makefile.am |  2 +
 testsuite/expect/Makefile.in |  2 +
 testsuite/expect/README      |  1 +
 testsuite/expect/test1.64    | 85 ++++++++++++++++++++++++++++++++++++
 testsuite/expect/test15.26   | 85 ++++++++++++++++++++++++++++++++++++
 5 files changed, 175 insertions(+)
 create mode 100755 testsuite/expect/test1.64
 create mode 100755 testsuite/expect/test15.26

diff --git a/testsuite/expect/Makefile.am b/testsuite/expect/Makefile.am
index 4a45fa25327..d00794e9f2e 100644
--- a/testsuite/expect/Makefile.am
+++ b/testsuite/expect/Makefile.am
@@ -80,6 +80,7 @@ EXTRA_DIST = \
 	test1.62.bash			\
 	test1.63			\
 	test1.63.prog.c			\
+	test1.64			\
 	test1.80			\
 	test1.81			\
 	test1.82			\
@@ -263,6 +264,7 @@ EXTRA_DIST = \
 	test15.23			\
 	test15.24			\
 	test15.25			\
+	test15.26			\
 	test16.1			\
 	test16.2			\
 	test16.3			\
diff --git a/testsuite/expect/Makefile.in b/testsuite/expect/Makefile.in
index 36f7ce89ebe..995fbfbe019 100644
--- a/testsuite/expect/Makefile.in
+++ b/testsuite/expect/Makefile.in
@@ -352,6 +352,7 @@ EXTRA_DIST = \
 	test1.62.bash			\
 	test1.63			\
 	test1.63.prog.c			\
+	test1.64			\
 	test1.80			\
 	test1.81			\
 	test1.82			\
@@ -535,6 +536,7 @@ EXTRA_DIST = \
 	test15.23			\
 	test15.24			\
 	test15.25			\
+	test15.26			\
 	test16.1			\
 	test16.2			\
 	test16.3			\
diff --git a/testsuite/expect/README b/testsuite/expect/README
index e37dd6c9a4a..4a060046eaf 100644
--- a/testsuite/expect/README
+++ b/testsuite/expect/README
@@ -166,6 +166,7 @@ test1.60   Test of labelling output when writing a file per task or per node
 test1.61   Test of srun job step time limit
 test1.62   Test of gres/gpu plugin (if configured).
 test1.63   Test of srun --disbale-status/-X option, SIGINT to be sent to tasks.
+test1.64   Test interuption of srun while waiting for resource allocation.
 
 **NOTE**   The following tests attempt to utilize multiple CPUs or partitions,
            The test will print "WARNING" and terminate with an exit code of
diff --git a/testsuite/expect/test1.64 b/testsuite/expect/test1.64
new file mode 100755
index 00000000000..86e0d6bb311
--- /dev/null
+++ b/testsuite/expect/test1.64
@@ -0,0 +1,85 @@
+#!/usr/bin/expect
+############################################################################
+# Purpose: Test of SLURM functionality
+#          Test interuption of srun while waiting for resource allocation.
+#
+# Output:  "TEST: #.#" followed by "SUCCESS" if test was successful, OR
+#          "FAILURE: ..." otherwise with an explanation of the failure, OR
+#          anything else indicates a failure mode that must be investigated.
+############################################################################
+# 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://computing.llnl.gov/linux/slurm/>.
+# 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 test_id     "1.64"
+set exit_code   0
+set matches     0
+
+print_header $test_id
+
+if { [test_xcpu] } {
+	send_user "\nWARNING: This test is incompatible with XCPU systems\n"
+	exit $exit_code
+}
+
+#
+# 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
+		send_user "\nSent SIGINT\n"
+		exp_continue
+	}
+	-re "Terminated job" {
+		incr matches
+		exp_continue
+	}
+	timeout {
+		send_user "\nFAILURE: srun not responding\n"
+		set matches -999
+		slow_kill $srun_pid
+		set exit_code 1
+	}
+	eof {
+		send_user "\nEOF\n"
+		wait
+	}
+}
+if {$matches != 2} {
+	send_user "\nFAILURE: srun failed to process SIGINT while waiting for allocation\n"
+	set exit_code 1
+}
+
+#
+# Post-processing
+#
+if {$exit_code == 0} {
+	send_user "\nSUCCESS\n"
+}
+exit $exit_code
diff --git a/testsuite/expect/test15.26 b/testsuite/expect/test15.26
new file mode 100755
index 00000000000..571cde06e9b
--- /dev/null
+++ b/testsuite/expect/test15.26
@@ -0,0 +1,85 @@
+#!/usr/bin/expect
+############################################################################
+# Purpose: Test of SLURM functionality
+#          Test interuption of salloc while waiting for resource allocation.
+#
+# Output:  "TEST: #.#" followed by "SUCCESS" if test was successful, OR
+#          "FAILURE: ..." otherwise with an explanation of the failure, OR
+#          anything else indicates a failure mode that must be investigated.
+############################################################################
+# 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://computing.llnl.gov/linux/slurm/>.
+# 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 test_id     "15.26"
+set exit_code   0
+set matches     0
+
+print_header $test_id
+
+if { [test_xcpu] } {
+	send_user "\nWARNING: This test is incompatible with XCPU systems\n"
+	exit $exit_code
+}
+
+#
+# Spawn initial program via srun
+# Send the signal while the srun is waiting for a resource allocation
+#
+set salloc_pid [spawn $salloc -N1 -t1 --begin=noon -v $bin_sleep 1]
+expect {
+	-re "queued and waiting for resources" {
+		incr matches
+		exec $bin_kill -INT $salloc_pid
+		send_user "\nSent SIGINT\n"
+		exp_continue
+	}
+	-re "Job allocation ($number) has been revoked" {
+		incr matches
+		exp_continue
+	}
+	timeout {
+		send_user "\nFAILURE: salloc not responding\n"
+		set matches -999
+		slow_kill $salloc_pid
+		set exit_code 1
+	}
+	eof {
+		send_user "\nEOF\n"
+		wait
+	}
+}
+if {$matches != 2} {
+	send_user "\nFAILURE: salloc failed to process SIGINT while waiting for allocation\n"
+	set exit_code 1
+}
+
+#
+# Post-processing
+#
+if {$exit_code == 0} {
+	send_user "\nSUCCESS\n"
+}
+exit $exit_code
-- 
GitLab