diff --git a/testsuite/expect/test15.21 b/testsuite/expect/test15.21 new file mode 100755 index 0000000000000000000000000000000000000000..f9ef8211fdd53613f56704a2bb4f50d560da850c --- /dev/null +++ b/testsuite/expect/test15.21 @@ -0,0 +1,160 @@ +#!/usr/bin/expect +############################################################################ +# Purpose: Test of SLURM functionality +# Test of contiguous option with multiple nodes (--contiguous option). +# +# Output: "TEST: #.#" followed by "SUCCESS" if test was successful, OR +# "WARNING: ..." with an explanation of why the test can't be made, OR +# "FAILURE: ..." otherwise with an explanation of the failure, OR +# anything else indicates a failure mode that must be investigated. +# +# NOTE: This assumes node names are of the form <alpha><number>, where +# the value of <number> indicates the nodes relative location. +# Change tha node name parsing logic as needed for other formats. +############################################################################ +# Copyright (C) 2002 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., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. +############################################################################ +source ./globals + +set test_id "15.21" +set exit_code 0 + +print_header $test_id + +if {[test_front_end] != 0} { + send_user "\nWARNING: This test is incompatable with front-end systems\n" + exit 0 +} + +set available [available_nodes [default_partition]] +if {$available < 3} { + send_user "\nWARNING: This test requires 3 nodes, but only $available available\n" + exit 0 +} + +# +# Submit a 3 contiguous node job +# +set host_0_name "" +set host_1_name "" +set host_2_name "" +set host_0_num 0 +set host_1_num 0 +set host_2_num 0 +set job_id 0 +set timeout $max_job_delay +spawn $salloc -N3-3 --contiguous --immediate -t1 $slaunch -l $bin_printenv SLURMD_NODENAME +expect { + -re "Granted job allocation ($number)" { + set job_id $expect_out(1,string) + exp_continue + } + -re "Failed to allocate resources" { + send_user "\nWARNING: can't test salloc task distribution\n" + exit $exit_code + } + -re "($number): ($alpha)($number)" { + set task_id $expect_out(1,string) + if {$task_id == 0} { + set host_0_name $expect_out(2,string) + set host_0_num $expect_out(3,string) + } + if {$task_id == 1} { + set host_1_name $expect_out(2,string) + set host_1_num $expect_out(3,string) + } + if {$task_id == 2} { + set host_2_name $expect_out(2,string) + set host_2_num $expect_out(3,string) + } + exp_continue + } + -re "($number): ($alpha)" { + set task_id $expect_out(1,string) + if {$task_id == 0} { + set host_0_name $expect_out(2,string) + } + if {$task_id == 1} { + set host_1_name $expect_out(2,string) + } + if {$task_id == 2} { + set host_2_name $expect_out(2,string) + } + exp_continue + } + timeout { + if {$job_id == 0} { + kill_salloc + } else { + cancel_job $job_id + } + if {$waiting == 1} { + send_user "\nWARNING: salloc still not responding, quiting\n" + exit 0 + } else { + send_user "\nFAILURE: salloc not responding\n" + exit 1 + } + } + eof { + wait + } +} + +# +# Verify node count +# +if {[test_front_end] != 0} { + send_user "\nWARNING: Additional testing is incompatable with front-end systems\n" + exit $exit_code +} + +if {[string compare $host_0_name ""] == 0} { + send_user "\nFAILURE: Did not get hostname of task 0\n" + set exit_code 1 +} +if {[string compare $host_1_name ""] == 0} { + send_user "\nFAILURE: Did not get hostname of task 1\n" + set exit_code 1 +} +if {[string compare $host_2_name ""] == 0} { + send_user "\nFAILURE: Did not get hostname of task 2\n" + set exit_code 1 +} + +# +# Verify node sequence number +# +if {$host_1_num != [expr $host_0_num + 1]} { + send_user "\nFAILURE: node sequence number not contiguous\n" + set exit_code 1 +} +if {$host_2_num != [expr $host_1_num + 1]} { + send_user "\nFAILURE: node sequence number not contiguous\n" + set exit_code 1 +} + +if {$exit_code == 0} { + send_user "\nSUCCESS\n" +} +exit $exit_code