diff --git a/testsuite/expect/Makefile.am b/testsuite/expect/Makefile.am index 06561987035dee86c8e67fc1102f3068878e13cd..baa5c04ad5d1d3fcbbc1ee578511a180a22ce7f2 100644 --- a/testsuite/expect/Makefile.am +++ b/testsuite/expect/Makefile.am @@ -402,6 +402,7 @@ EXTRA_DIST = \ test27.5 \ test28.1 \ test28.2 \ + test28.3 \ usleep distclean-local: diff --git a/testsuite/expect/Makefile.in b/testsuite/expect/Makefile.in index a30eba2c8aad3c4e8f38ae530fa9ba5588f81d6f..fede8b996e5a817dedd12192f0f35254f70c2001 100644 --- a/testsuite/expect/Makefile.in +++ b/testsuite/expect/Makefile.in @@ -720,6 +720,7 @@ EXTRA_DIST = \ test27.5 \ test28.1 \ test28.2 \ + test28.3 \ usleep all: all-am diff --git a/testsuite/expect/README b/testsuite/expect/README index 931ccdb526724af9c959172215ca3f88175cea58..cec17acbe79a069a9dc5d6cb323307fa1c91f93d 100644 --- a/testsuite/expect/README +++ b/testsuite/expect/README @@ -626,3 +626,5 @@ test28.1 Confirms sbatch --array and scancel of the job arrays. test28.2 checks that the --array environment varibles are correct, and checks that the --output and -error files were created and contain the correct information. +test28.3 Validates that the scontrol show job contains the job array + fields diff --git a/testsuite/expect/test28.2 b/testsuite/expect/test28.2 index 72dc5ac02b2e3395548d259f070d58de0a673a76..dfad1fee3b692b67fe1796af5f444ce10f89c42c 100755 --- a/testsuite/expect/test28.2 +++ b/testsuite/expect/test28.2 @@ -37,8 +37,8 @@ set file_script "test$test_id.sh" set file_out "test$test_id-%A_%a.output" set file_error "test$test_id-%A_%a.error" set job_id 0 -set array_begin "0" -set array_end "4" +set array_begin 0 +set array_end 4 set array_id "" set array_in "" set array_var "" diff --git a/testsuite/expect/test28.3 b/testsuite/expect/test28.3 new file mode 100755 index 0000000000000000000000000000000000000000..b8c3782dd0460f288767ea0f084ea2fc44891420 --- /dev/null +++ b/testsuite/expect/test28.3 @@ -0,0 +1,105 @@ +#!/usr/bin/expect +############################################################################ +# Purpose: Test of SLURM functionality +# Validates that the scontrol show job option has the job +# array fields +# +# +# 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) 2011-2013 SchedMD LLC +# Written by Nathan Yee <nyee32@schedmd.com> +# +# This file is part of SLURM, a resource management program. +# For details, see <http://www.schedmd.com/slurmdocs/>. +# 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 "28.3" +set exit_code 0 +set array_size 4 +set file_script "test$test_id.sh" +set job_id 0 + +print_header $test_id + +if {[get_array_config] < [expr $array_size + 1]} { + send_user "\nWARNING: MaxArraySize is to small\n" + exit 0 +} + +proc check_ids { job } { + + global scontrol array_size exit_code number + + for {set index 0} {$index<$array_size} {incr index} { + set match 0 + spawn $scontrol show job $job\_$index + expect { + -re "JobId=($number) ArrayJobId=$job ArrayTaskId=($number) " { + if {$job == [expr $expect_out(1,string) - $expect_out(2,string)]} { + incr match + } + } + timeout { + send_user "\nFAILURE: scontrol is not responding\n" + set exit_code 1 + } + eof { + wait + } + } + if {$match != 1} { + send_user "\nFAILURE: Array IDs for $job\_$index not found\n" + set exit_code 1 + } + } +} + +make_bash_script $file_script "sleep 10" + +spawn $sbatch -N1 --array=0-[expr $array_size - 1] --begin=midnight --output=/dev/null $file_script +expect { + -re "Submitted batch job ($number)" { + set job_id $expect_out(1,string) + send_user "\njob $job_id was submitted\n" + } + -re "error" { + send_user "\nFAILURE: sbatch did not submit jobs\n" + set exit_code 1 + } + timout { + send_user "\nFAILURE: sbatch not responding\n" + set exit_code 1 + } + eof { + wait + } +} +if {$job_id != 0} { + check_ids $job_id + cancel_job $job_id +} + +if {$exit_code == 0} { + exec $bin_rm -f $file_script + send_user "\nSUCCESS\n" +} +exit $exit_code