#!/usr/bin/env expect ############################################################################ # Purpose: Test of Slurm functionality # Test of srun --jobid option with an existing allocation ############################################################################ # Copyright (C) 2002-2006 The Regents of the University of California. # Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). # Written by Christopher J. Morrone # CODE-OCEC-09-009. All rights reserved. # # This file is part of Slurm, a resource management program. # For details, see . # 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 exit_code 0 set jobid 0 # # Run an srun to grab a single node allocation, but not start any # job steps. # set timeout $max_job_delay set srun_alloc_pid [spawn $salloc -v -N1 -n1 -t2 $bin_sleep 600] set srun_alloc_sid $spawn_id expect { -re "salloc: Granted job allocation ($number)" { set jobid $expect_out(1,string) } timeout { slow_kill $srun_alloc_pid fail "srun failed to grab an allocation in a timely manner" } } if {$jobid == 0} { fail "srun failed to create an allocation" } # # Now try to use the srun --jobid option to run in the already existing # allocation. # set pattern "sdiouetj49udfj" set got_pattern 0 set srun_launch_pid [spawn $srun --jobid $jobid echo $pattern] expect { -re "error" { log_error "Unexpected error occurred" set exit_code 1 } -re $pattern { set got_pattern 1 exp_continue } timeout { slow_kill $srun_launch_pid } eof { wait } } if {$got_pattern == 0} { log_error "Unable to srun step under existing job allocation" set exit_code 1 } # # Release the allocation by killing salloc (really it kills the "sleep") # if {[cancel_job $jobid] != 0} { set exit_code 1 } set spawn_id $srun_alloc_sid exec kill -9 $srun_alloc_pid expect { timeout { exec kill -9 $srun_alloc_pid } eof { wait } } if {$exit_code != 0} { fail "Test failed due to previous errors (\$exit_code = $exit_code)" }