From ddfab710406885fb9ef9c263ae1ad5aa76df9e98 Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Tue, 12 Dec 2006 17:30:16 +0000
Subject: [PATCH] Add basic test of "scontrol listpids" command.

---
 testsuite/expect/README   |   1 +
 testsuite/expect/test2.11 | 119 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 120 insertions(+)
 create mode 100755 testsuite/expect/test2.11

diff --git a/testsuite/expect/README b/testsuite/expect/README
index be746d18f22..e5e24f251d2 100644
--- a/testsuite/expect/README
+++ b/testsuite/expect/README
@@ -174,6 +174,7 @@ test2.7    Validate scontrol pidinfo command.
 test2.8    Validate scontrol show commands for jobs and steps.
 test2.9    Validate scontrol completing command.
 test2.10   Validate scontrol oneliner mode (--oneliner option).
+test2.11   Validate scontrol listpids command.
 
 
 test3.#    Testing of scontrol options (best run as SlurmUser or root). 
diff --git a/testsuite/expect/test2.11 b/testsuite/expect/test2.11
new file mode 100755
index 00000000000..aca2e00bc19
--- /dev/null
+++ b/testsuite/expect/test2.11
@@ -0,0 +1,119 @@
+#!/usr/bin/expect
+############################################################################
+# Purpose: Test of SLURM functionality
+#          Validate scontrol listpids command.
+#
+# 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-2006 The Regents of the University of California.
+# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
+# Written by Morris Jette <jette1@llnl.gov>
+# UCRL-CODE-217948.
+# 
+# This file is part of SLURM, a resource management program.
+# For details, see <http://www.llnl.gov/linux/slurm/>.
+#  
+# 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     "2.11"
+set exit_code   0
+set file_in     "test$test_id.input"
+set file_out    "test$test_id.output"
+set job_id      0
+set scontrol_id 0
+
+print_header $test_id
+
+# Delete left-over stdout file
+file delete $file_out
+
+#
+# Build input script file
+#
+make_bash_script $file_in "
+  $srun $bin_sleep 10 &
+  $bin_sleep 1
+  $scontrol listpids \$SLURM_JOBID.10
+  $scontrol listpids \$SLURM_JOBID.0
+  $scontrol listpids \$SLURM_JOBID"
+
+#
+# Spawn a srun batch job that uses stdout/err and confirm their contents
+#
+set srun_pid [spawn $srun --batch --output=$file_out -t1 $file_in]
+expect {
+	-re "jobid ($number) submitted" {
+		set job_id $expect_out(1,string)
+		exp_continue
+	}
+	timeout {
+		send_user "\nFAILURE: srun not responding\n"
+		slow_kill $srun_pid
+		set exit_code 1
+	}
+	eof {
+		wait
+	}
+}
+
+if {$job_id == 0} {
+	send_user "\nFAILURE: batch submit failure\n"
+	exec $bin_rm -f $file_in
+	exit 1
+}
+
+#
+# Wait for job to complete
+#
+if {[wait_for_job $job_id "DONE"] != 0} {
+	send_user "\nFAILURE: waiting for job to complete\n"
+	exec $bin_rm -f $file_in
+	exit 1
+}
+
+#
+# Verify job_id in output file
+#
+set matches 0
+if {[wait_for_file $file_out] == 0} {
+	spawn $bin_cat $file_out
+	expect {
+		-re "Job step ($number).10 does not exist on this node." {
+			incr matches
+			exp_continue
+		}
+		-re "$job_id *0 *0 *0" {
+			incr matches
+			exp_continue
+		}
+		eof {
+			wait
+		}
+	}
+}
+if {$matches != 3} {
+	send_user "\nFAILURE: scontrol listpids output error\n"
+	set exit_code 1
+}
+
+if {$exit_code == 0} {
+	send_user "\nSUCCESS\n"
+	exec $bin_rm -f $file_in $file_out
+}
+exit $exit_code
-- 
GitLab