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