From 2d8cbdb2e102ec5af09aa71639dd431c49e8d0e2 Mon Sep 17 00:00:00 2001
From: Scott Jackson <scottmo@schedmd.com>
Date: Thu, 18 Mar 2021 17:21:22 +0100
Subject: [PATCH] Testsuite - Fix test19.4 using job completion event rather
 than reconfig

A reconfig event from a prior test can cause the event to launch
before it can be read back via strigger.

Bug 9665
---
 testsuite/expect/test19.4 | 52 ++++++++++-----------------------------
 1 file changed, 13 insertions(+), 39 deletions(-)

diff --git a/testsuite/expect/test19.4 b/testsuite/expect/test19.4
index 660aae1a3b0..47e38b2c2f0 100755
--- a/testsuite/expect/test19.4
+++ b/testsuite/expect/test19.4
@@ -46,7 +46,7 @@ if {![regexp "${user}\\($number\\)" [get_config_param "SlurmUser"]] || $user eq
 #
 set cwd "[$bin_pwd]"
 exec $bin_rm -f $file_in $file_out
-make_bash_script $file_in "$bin_echo RECONFIG >$cwd/$file_out"
+make_bash_script $file_in "$bin_echo JOB COMPLETED >$cwd/$file_out"
 
 proc cleanup {} {
 	global bin_rm file_in file_out strigger uid
@@ -82,53 +82,27 @@ wait_for -timeout 5 -pollinterval .1 {[get_config_param "DebugFlags"] eq "Trigge
 
 run_command -fail "$strigger --clear --quiet --user=$uid"
 
-# Create a trigger on a reconfig event
-if {![regexp "trigger set" [run_command_output -fail "$strigger --set -v --offset=0 --reconfig --program=$cwd/$file_in"]]} {
+# Submit a job and create a trigger on a job completion event
+set job_id [submit_job -fail "--wrap \"$bin_sleep 60\""]
+wait_for_job -fail $job_id "RUNNING"
+if {![regexp "trigger set" [run_command_output -fail "$strigger --set -v --jobid=$job_id --fini --program=$cwd/$file_in"]]} {
 	fail "Trigger creation failure"
 }
 
 # Verify that the trigger has been created
-if {![regexp "$file_in" [run_command_output -fail "$strigger --get -v --reconfig --user=$uid"]]} {
+if {![regexp "$file_in" [run_command_output -fail "$strigger --get -v --jobid=$job_id --fini --user=$uid"]]} {
 	# TODO: Temporary variable to debug bug 9665 (remove once fixed)
 	set trigger_get_failed true
 	fail "Trigger get failure"
 }
 
 #
-# Try to trigger event
+# Cancel the job to trigger a job completion event
 #
-set invalid 0
-spawn $scontrol reconfig
-expect {
-	-re "Invalid user" {
-		set invalid 1
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
-if {$invalid == 0} {
-	# Add delay for slurmctld to process triggers (every 15 secs)
-	exec sleep 15
-
-	# Plus time for cross-platform NSF delays
-	if {[wait_for_file $file_out] != 0} {
-		fail "File $file_out is missing"
-	} else {
-		set reconfig 0
-		spawn $bin_cat $file_out
-		expect {
-			-re "RECONFIG" {
-				set reconfig 1
-				exp_continue
-			}
-			eof {
-				wait
-			}
-		}
-		if {$reconfig == 0} {
-			fail "File $file_out contents are bad"
-		}
-	}
+run_command -fail "$scancel $job_id"
+# Triggers are only processed once every 15 seconds by default
+if [wait_for_file -timeout 30 $file_out] {
+	fail "Expected trigger output file ($file_out) did not appear within the expected timeframe (30s)"
+} elseif {![regexp "JOB COMPLETED" [run_command_output -fail "$bin_cat $file_out"]]} {
+	fail "Trigger output file ($file_out) does not contain the expected contents"
 }
-- 
GitLab