From 2d2eadee70ed85b4955063cdf1d2ad519fef466f Mon Sep 17 00:00:00 2001 From: jette <jette@schedmd.com> Date: Thu, 2 May 2013 08:51:04 -0700 Subject: [PATCH] Modify POE test due to signal handling differences from native slurm --- testsuite/expect/test1.32 | 35 ++++++++++++++++++++++++-------- testsuite/expect/test1.32.prog.c | 2 +- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/testsuite/expect/test1.32 b/testsuite/expect/test1.32 index 1193598cca2..3c2e7fd2b7f 100755 --- a/testsuite/expect/test1.32 +++ b/testsuite/expect/test1.32 @@ -40,6 +40,7 @@ set exit_code 0 set file_prog "test$test_id.prog" set matches 0 set fini_cnt 0 +set poe_flag 0 set usr1cnt 0 set usr2cnt 0 @@ -53,6 +54,17 @@ if { [test_cray] } { exit $exit_code: } +if {[test_launch_poe]} { +# SIGUSR2 used by POE to generate checkpoint +# SIGUSR2 causes POE to core dump in base configuration +# The test program exits after receiving 2 signals of any type + set usr1target 2 + set usr2target 0 +} else { + set usr1target 1 + set usr2target 1 +} + # # Delete left-over program and rebuild it # @@ -88,10 +100,16 @@ expect { -re "WAITING" { incr matches # sleep to make sure the process is actually running - exec $bin_sleep 1 - exec $bin_kill -USR1 $srun_pid - exec $bin_kill -USR2 $srun_pid - send_user "\nSent signals USR1 and USR2\n" + for {set inx 0} {$inx < $usr1target} {incr inx} { + sleep 1 + exec $bin_kill -USR1 $srun_pid + } + send_user "\nSent signal USR1 $usr1target times\n" + for {set inx 0} {$inx < $usr2target} {incr inx} { + sleep 1 + exec $bin_kill -USR2 $srun_pid + } + send_user "\nSent signal USR1 $usr2target times\n" exp_continue } -re "SIGUSR($number)" { @@ -124,12 +142,12 @@ if {$matches != 1} { send_user "\nFAILURE: srun failed to initialize properly\n" set exit_code 1 } -if {$usr1cnt != 1} { - send_user "\nFAILURE: $file_prog received $usr1cnt SIGUSR1 (not 1)\n" +if {$usr1cnt != $usr1target} { + send_user "\nFAILURE: $file_prog received $usr1cnt SIGUSR1 (not $usr1target)\n" set exit_code 1 } -if {$usr2cnt != 1} { - send_user "\nFAILURE: $file_prog received $usr2cnt SIGUSR2 (not 1)\n" +if {$usr2cnt != $usr2target} { + send_user "\nFAILURE: $file_prog received $usr2cnt SIGUSR2 (not $usr2target)\n" set exit_code 1 } if {$fini_cnt != 1} { @@ -137,7 +155,6 @@ if {$fini_cnt != 1} { set exit_code 1 } - # # Post-processing # diff --git a/testsuite/expect/test1.32.prog.c b/testsuite/expect/test1.32.prog.c index 76205198099..e316a345620 100644 --- a/testsuite/expect/test1.32.prog.c +++ b/testsuite/expect/test1.32.prog.c @@ -74,7 +74,7 @@ main (int argc, char **argv) printf("WAITING\n"); fflush(stdout); - while (!sigusr1_cnt || !sigusr2_cnt) { + while ((sigusr1_cnt + sigusr2_cnt) < 2) { sleep(1); } printf("FINI: sig1:%d sig2:%d\n", sigusr1_cnt, sigusr2_cnt); -- GitLab