| #!/usr/bin/env expect | 
 | ############################################################################ | 
 | # Purpose: Verify signal mask of tasks have no ignored signals. | 
 | ############################################################################ | 
 | # Copyright (C) 2010 Lawrence Livermore National Security. | 
 | # Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). | 
 | # CODE-OCEC-09-009. All rights reserved. | 
 | # | 
 | # This file is part of Slurm, a resource management program. | 
 | # For details, see <https://slurm.schedmd.com/>. | 
 | # 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_prog       "$test_name.prog" | 
 |  | 
 | proc cleanup {} { | 
 | 	global file_prog | 
 |  | 
 | 	file delete $file_prog | 
 | } | 
 |  | 
 | # | 
 | # Build program | 
 | # | 
 | exec $bin_cc -O -o $file_prog ${file_prog}.c | 
 |  | 
 | # | 
 | #  Run on multiple nodes in case the failure of this test | 
 | #   is intermittent. | 
 | # | 
 | set have_runjob 0 | 
 | set nnodes [llength [get_nodes_by_state]] | 
 |  | 
 | # | 
 | #  Run the test_prog to ensure that no signals are blocked by | 
 | #   default for the job. | 
 | # | 
 | set result [run_command "$srun -t1 -N$nnodes ./$file_prog"] | 
 | if {[regexp "Signal ($number) is ignored!" [dict get $result output] - signal]} { | 
 | 	if { $have_runjob && (($signal == 1) || ($signal == 5) || | 
 | 			      ($signal == 12) || ($signal == 13)) } { | 
 | 		log_debug "Signal $signal is ignored by default when using runjob, this error is expected, turn that frown upside down!" | 
 | 		exp_continue | 
 | 	} else { | 
 | 		fail "At least one signal is ignored!" | 
 | 	} | 
 | } | 
 |  | 
 | # The above signals will result in a bad exit code, | 
 | # ignore on runjob systems | 
 | if {!$have_runjob} { | 
 | 	if {[dict get $result exit_code]} { | 
 | 		fail "The signals resulted in a bad exit code" | 
 | 	} | 
 | } |