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