#!/usr/bin/env expect ############################################################################ # Purpose: Test of Slurm functionality # Test buffered standard IO with really long lines ############################################################################ # Copyright (C) 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 file_in "test$test_id.input" set file_out "test$test_id.output" set slurmstepd_cbuf_size 4096 set short_string "foo bar baz " set count [expr $slurmstepd_cbuf_size / [string length $short_string] + 1] set really_big_string [string repeat $short_string $count] unset count log_debug "Really_big_string is [string length $really_big_string] bytes" # # Create a test input file # exec $bin_rm -f $file_in $file_out set file [open $file_in "w"] puts $file $really_big_string for {set i 0} {$i < 100} {incr i} { puts $file $short_string } close $file # # Launch the test script # set timeout $max_job_delay set srun_pid [spawn $srun -v -n1 -t1 --input=$file_in --output=$file_out --error=- cat] expect { -re {launching ($number)\.($number)} { set jobid $expect_out(1,string) set stepid $expect_out(2,string) } timeout { slow_kill $srun_pid fail "Srun launch failed" } eof { wait } } # # Make sure that the contents of the input and output files are the same # if {[catch {exec diff $file_in $file_out}]} { fail "File $file_out does not match file $file_in" } exec $bin_rm -f $file_in $file_out