From 9e945329a80f79e4829a8dc1945d009fb947d256 Mon Sep 17 00:00:00 2001
From: Isaac Hartung <ihartung@schedmd.com>
Date: Fri, 13 Jan 2017 12:58:43 -0700
Subject: [PATCH] Testsuite - added global procedure stop_root_user.

Replaced identical code in tests with a call to this proc.
Also replace instances of code getting uid with a call to the
global proc get_my_uid / get_my_nuid.
---
 testsuite/expect/globals   | 88 ++++++++++++++++----------------------
 testsuite/expect/test1.32  | 10 +----
 testsuite/expect/test1.38  | 10 +----
 testsuite/expect/test1.74  | 11 +----
 testsuite/expect/test12.3  | 12 +-----
 testsuite/expect/test14.7  | 16 +------
 testsuite/expect/test19.3  | 21 ++-------
 testsuite/expect/test19.4  | 20 +--------
 testsuite/expect/test19.5  | 19 +-------
 testsuite/expect/test19.6  | 19 +-------
 testsuite/expect/test19.7  | 20 +--------
 testsuite/expect/test19.8  | 21 ++-------
 testsuite/expect/test19.9  | 20 +--------
 testsuite/expect/test21.30 | 12 +-----
 testsuite/expect/test23.2  | 11 -----
 testsuite/expect/test3.6   |  5 +--
 testsuite/expect/test35.2  | 22 +---------
 testsuite/expect/test5.6   | 12 +-----
 testsuite/expect/test7.5   | 11 +----
 19 files changed, 64 insertions(+), 296 deletions(-)

diff --git a/testsuite/expect/globals b/testsuite/expect/globals
index 17933df0f46..c33bd216382 100755
--- a/testsuite/expect/globals
+++ b/testsuite/expect/globals
@@ -433,16 +433,7 @@ proc get_my_gid {  } {
 proc kill_salloc {  } {
 	global bin_id bin_pkill bin_sleep number
 
-	spawn $bin_id -u
-	expect {
-		-re "($number)" {
-			set uid $expect_out(1,string)
-			exp_continue
-		}
-		eof {
-			wait
-		}
-	}
+	set uid [get_my_uid]
 	catch {exec $bin_pkill -INT -u $uid salloc}
 	catch {exec $bin_pkill -INT -u $uid salloc}
 	sleep  1
@@ -469,16 +460,7 @@ proc kill_salloc {  } {
 proc kill_srun {  } {
 	global bin_id bin_pkill bin_sleep number
 
-	spawn $bin_id -u
-	expect {
-		-re "($number)" {
-			set uid $expect_out(1,string)
-			exp_continue
-		}
-		eof {
-			wait
-		}
-	}
+	set uid [get_my_uid]
 	catch {exec $bin_pkill -INT -u $uid srun}
 	catch {exec $bin_pkill -INT -u $uid srun}
 	sleep  1
@@ -1546,15 +1528,7 @@ proc get_default_acct { user } {
 	set def_acct ""
 
 	if { !$user } {
-		spawn $bin_id -un
-		expect {
-		       -re "($alpha_numeric_under)" {
-			   set user $expect_out(1,string)
-		       }
-		       eof {
-			   wait
-		       }
-		}
+		set user [get_my_nuid]
 	}
 
 	spawn $sacctmgr -n list user $user format="DefaultAccount"
@@ -2098,17 +2072,7 @@ proc test_super_user { } {
 #	Check if user root
 #
 	log_user 0
-	spawn $bin_id -u
-	set uid -1
-	expect {
-		-re "($number)" {
-			set uid $expect_out(1,string)
-			exp_continue
-		}
-		eof {
-			wait
-		}
-	}
+	set uid [get_my_uid]
 	if {$uid == 0} {
 		log_user 1
 		set super_user 1
@@ -2440,17 +2404,7 @@ proc is_super_user { } {
 	global alpha_numeric_under bin_id scontrol
 
 	log_user 0
-	set user_name "nobody"
-	spawn $bin_id -u -n
-	expect {
-		-re "($alpha_numeric_under)" {
-			set user_name $expect_out(1,string)
-			exp_continue
-		}
-		eof {
-			wait
-		}
-	}
+	set user_name [get_my_nuid]
 	if {[string compare $user_name "root"] == 0} {
 		log_user 1
 		return 1
@@ -3975,3 +3929,35 @@ proc check_hosts_contiguous {part check_hosts_list} {
 
 	return 0
 }
+
+
+#####################################################################
+#
+# Proc: stop_root_user
+#
+# Purpose:	Detect, warn, and stop root user
+#
+#
+# Input
+#
+# Returns: uid if not root user, exits otherwise
+#
+#####################################################################
+
+
+proc stop_root_user {} {
+
+	global bin_id number
+
+	set uid [get_my_uid]
+	if {$uid == -1} {
+		send_user "\nCan't get my uid\n"
+		exit 1
+	} elseif {$uid == 0} {
+		send_user "\nWARNING: Can't run this test as user root\n"
+		exit 0
+	}
+
+	return $uid
+
+}
diff --git a/testsuite/expect/test1.32 b/testsuite/expect/test1.32
index a6d1dd69a56..7b5328e7c2b 100755
--- a/testsuite/expect/test1.32
+++ b/testsuite/expect/test1.32
@@ -75,15 +75,7 @@ exec $bin_chmod 700 $file_prog
 #
 # Get uid
 #
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-	}
-	eof {
-		wait
-	}
-}
+set uid [get_my_uid]
 
 #
 # Spawn initial program via srun
diff --git a/testsuite/expect/test1.38 b/testsuite/expect/test1.38
index 3ce48987e17..ec74f1a7bc8 100755
--- a/testsuite/expect/test1.38
+++ b/testsuite/expect/test1.38
@@ -66,15 +66,7 @@ make_bash_script $file_in "
 #
 # Get uid
 #
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-	}
-	eof {
-		wait
-	}
-}
+set uid [get_my_uid]
 
 #
 # Spawn initial program via srun and use SIGINT to status
diff --git a/testsuite/expect/test1.74 b/testsuite/expect/test1.74
index 307f54f1184..deeaecec308 100755
--- a/testsuite/expect/test1.74
+++ b/testsuite/expect/test1.74
@@ -66,16 +66,7 @@ if { [test_using_slurmdbd] == 0 } {
 	exit $exit_code
 }
 
-spawn $bin_id -u -n
-expect {
-	-re "($alpha_numeric_under)" {
-		set user $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
+set user [get_my_nuid]
 
 proc cleanup { } {
 	global acct acct_c1 acct_c2 exit_code qos
diff --git a/testsuite/expect/test12.3 b/testsuite/expect/test12.3
index 03aecf84816..01a81dbf2df 100755
--- a/testsuite/expect/test12.3
+++ b/testsuite/expect/test12.3
@@ -94,17 +94,7 @@ if { $node_count < 3 } {
 # Identify the user and his current default account
 #
 set acct_name ""
-set user_name ""
-spawn $bin_id -u -n
-expect {
-	 -re "($alpha_numeric_under)" {
-		set user_name $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
+set user_name [get_my_nuid]
 set s_pid [spawn $sacctmgr show user $user_name]
 expect {
 	-re "$user_name *($alpha_numeric_under)" {
diff --git a/testsuite/expect/test14.7 b/testsuite/expect/test14.7
index 5978fc2a45c..3b0ef25569b 100755
--- a/testsuite/expect/test14.7
+++ b/testsuite/expect/test14.7
@@ -47,21 +47,7 @@ if {[test_front_end] != 0} {
 	exit 0
 }
 
-set uid 0
-spawn $bin_id
-expect {
-	-re "uid=($number)" {
-		set uid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
-if {$uid == 0} {
-	send_user "\nWARNING: This test is unsuitable for execution as user root\n"
-	exit 0
-}
+stop_root_user
 
 # Delete left-over stdout/err files
 file delete $file_out $file_err
diff --git a/testsuite/expect/test19.3 b/testsuite/expect/test19.3
index 2bbbb25be0c..5bb122f8495 100755
--- a/testsuite/expect/test19.3
+++ b/testsuite/expect/test19.3
@@ -42,24 +42,9 @@ print_header $test_id
 #
 # get my uid and clear any vestigial triggers
 #
-set uid -1
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
-if {$uid == -1} {
-	send_user "\nCan't get my uid\n"
-	exit 1
-} elseif {$uid == 0} {
-	send_user "\nWARNING: Can't run this test as user root\n"
-	exit 0
-}
+
+set uid [stop_root_user]
+
 exec $strigger --clear --quiet --user=$uid
 
 #
diff --git a/testsuite/expect/test19.4 b/testsuite/expect/test19.4
index 9c46f5d560a..c431fd32c26 100755
--- a/testsuite/expect/test19.4
+++ b/testsuite/expect/test19.4
@@ -42,24 +42,8 @@ print_header $test_id
 #
 # get my uid and clear any vestigial triggers
 #
-set uid -1
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
-if {$uid == -1} {
-	send_user "\nCan't get my uid\n"
-	exit 1
-} elseif {$uid == 0} {
-	send_user "\nWARNING: Can't run this test as user root\n"
-	exit 0
-}
+set uid [stop_root_user]
+
 exec $strigger --clear --quiet --user=$uid
 
 #
diff --git a/testsuite/expect/test19.5 b/testsuite/expect/test19.5
index b0af15b2700..623c0fe937e 100755
--- a/testsuite/expect/test19.5
+++ b/testsuite/expect/test19.5
@@ -45,24 +45,7 @@ print_header $test_id
 #
 # get my uid and clear any vestigial triggers
 #
-set uid -1
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
-if {$uid == -1} {
-	send_user "\nCan't get my uid\n"
-	exit 1
-} elseif {$uid == 0} {
-	send_user "\nWARNING: Can't run this test as user root\n"
-	exit 0
-}
+set uid [stop_root_user]
 exec $strigger --clear --quiet --user=$uid
 
 #
diff --git a/testsuite/expect/test19.6 b/testsuite/expect/test19.6
index 3b58e97d826..3b2d3dc454d 100755
--- a/testsuite/expect/test19.6
+++ b/testsuite/expect/test19.6
@@ -46,24 +46,7 @@ print_header $test_id
 #
 # get my uid and clear any vestigial triggers
 #
-set uid -1
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
-if {$uid == -1} {
-	send_user "\nCan't get my uid\n"
-	exit 1
-} elseif {$uid == 0} {
-	send_user "\nWARNING: Can't run this test as user root\n"
-	exit 0
-}
+set uid [stop_root_user]
 exec $strigger --clear --quiet --user=$uid
 
 #
diff --git a/testsuite/expect/test19.7 b/testsuite/expect/test19.7
index 3cf0ca252f9..212a31bf450 100755
--- a/testsuite/expect/test19.7
+++ b/testsuite/expect/test19.7
@@ -43,24 +43,8 @@ print_header $test_id
 #
 # get my uid and clear any vestigial triggers
 #
-set uid -1
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
-if {$uid == -1} {
-	send_user "\nCan't get my uid\n"
-	exit 1
-} elseif {$uid == 0} {
-	send_user "\nWARNING: Can't run this test as user root\n"
-	exit 0
-}
+set uid [stop_root_user]
+
 exec $strigger --clear --quiet --user=$uid
 
 #
diff --git a/testsuite/expect/test19.8 b/testsuite/expect/test19.8
index d6aa57cfdbc..f8f7cc906fa 100755
--- a/testsuite/expect/test19.8
+++ b/testsuite/expect/test19.8
@@ -42,24 +42,9 @@ print_header $test_id
 #
 # get my uid and clear any vestigial triggers
 #
-set uid -1
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
-if {$uid == -1} {
-	send_user "\nCan't get my uid\n"
-	exit 1
-} elseif {$uid == 0} {
-	send_user "\nWARNING: Can't run this test as user root\n"
-	exit 0
-}
+
+set uid [stop_root_user]
+
 exec $strigger --clear --quiet --user=$uid
 
 #
diff --git a/testsuite/expect/test19.9 b/testsuite/expect/test19.9
index 181027e30dc..3680ba3cac9 100755
--- a/testsuite/expect/test19.9
+++ b/testsuite/expect/test19.9
@@ -42,24 +42,8 @@ print_header $test_id
 #
 # get my uid and clear any vestigial triggers
 #
-set uid -1
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
-if {$uid == -1} {
-	send_user "\nCan't get my uid\n"
-	exit 1
-} elseif {$uid == 0} {
-	send_user "\nWARNING: Can't run this test as user root\n"
-	exit 0
-}
+set uid [stop_root_user]
+
 exec $strigger --clear --quiet --user=$uid
 
 #
diff --git a/testsuite/expect/test21.30 b/testsuite/expect/test21.30
index 6b6fc49e0c2..56a84374bf2 100755
--- a/testsuite/expect/test21.30
+++ b/testsuite/expect/test21.30
@@ -382,16 +382,8 @@ expect {
 }
 
 # Gets user
-spawn $bin_id -u -n
-expect {
-	-re "($alpha_numeric_under)" {
-		set user_name $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
+set user_name [get_my_nuid]
+
 
 # add qos
 set qosmatch 0
diff --git a/testsuite/expect/test23.2 b/testsuite/expect/test23.2
index f8e77d038bd..e1602f5bdce 100755
--- a/testsuite/expect/test23.2
+++ b/testsuite/expect/test23.2
@@ -83,7 +83,6 @@ if { [string compare [check_accounting_admin_level] "Administrator"] } {
 # Identify the user and his current default account
 #
 set acct_name ""
-set user_gid  ""
 set user_name ""
 spawn $bin_id -u -n
 expect {
@@ -96,16 +95,6 @@ expect {
 	}
 }
 
-spawn $bin_id -u
-expect {
-	 -re "($alpha_numeric_under)" {
-		set user_gid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
 
 set s_pid [spawn $sacctmgr show user $user_name]
 expect {
diff --git a/testsuite/expect/test3.6 b/testsuite/expect/test3.6
index ddf2e5ea368..14af80a3136 100755
--- a/testsuite/expect/test3.6
+++ b/testsuite/expect/test3.6
@@ -40,10 +40,7 @@ set part_name      "QA_TEST"
 print_header $test_id
 
 # This test will not work for user root since they always see all partitions
-if {[get_my_uid] == 0} {
-	send_user "\nWARNING: This test will not work correctly for user root.\n"
-	exit $exit_code
-}
+stop_root_user
 
 #
 # Confirm that no hidden partition is seen by default
diff --git a/testsuite/expect/test35.2 b/testsuite/expect/test35.2
index 32994cfee3a..c67f5400f36 100755
--- a/testsuite/expect/test35.2
+++ b/testsuite/expect/test35.2
@@ -42,27 +42,7 @@ set output_use  "test$test_id.use.output"
 set script_use  "test$test_id.use.bash"
 set tmp_file    "test$test_id"
 
-#
-# get my uid and clear any vestigial triggers
-#
-set uid -1
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
-if {$uid == -1} {
-	send_user "\nCan't get my uid\n"
-	exit 1
-} elseif {$uid == 0} {
-	send_user "\nWARNING: Can't run this test as user root\n"
-	exit 0
-}
+stop_root_user
 
 proc find_bb_jobid { fname bb_jobid } {
 	global bin_cat
diff --git a/testsuite/expect/test5.6 b/testsuite/expect/test5.6
index da6140cd16d..824894c964a 100755
--- a/testsuite/expect/test5.6
+++ b/testsuite/expect/test5.6
@@ -192,16 +192,8 @@ expect {
 #
 # Check the squeue user filter option with id
 #
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set this_uid $expect_out(1,string)
-		exp_continue
-	}
-	eof {
-		wait
-	}
-}
+set this_uid [get_my_uid]
+
 spawn $squeue --format=%u --noheader --user=$this_uid
 expect {
 	-re "($alpha_numeric_under)" {
diff --git a/testsuite/expect/test7.5 b/testsuite/expect/test7.5
index 2370f82d45d..323d4475490 100755
--- a/testsuite/expect/test7.5
+++ b/testsuite/expect/test7.5
@@ -69,15 +69,8 @@ exec $bin_chmod 700 $file_prog
 #
 # Get uid
 #
-spawn $bin_id -u
-expect {
-	-re "($number)" {
-		set uid $expect_out(1,string)
-	}
-	eof {
-		wait
-	}
-}
+set uid [get_my_uid]
+
 
 #
 # Spawn initial program via srun and terminate with SIGTERM
-- 
GitLab