File: test2.24

package info (click to toggle)
slurm-wlm 22.05.8-4%2Bdeb12u3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 48,492 kB
  • sloc: ansic: 475,246; exp: 69,020; sh: 8,862; javascript: 6,528; python: 6,444; makefile: 4,185; perl: 4,069; pascal: 131
file content (134 lines) | stat: -rwxr-xr-x 3,518 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          Checks that scontrol write config creates a slurm.conf
#          with the correct values
############################################################################
# Copyright (C) 2014 SchedMD LLC
# Written by Nathan Yee <nyee32@schedmd.com>
#
# This file is part of Slurm, a resource management program.
# For details, see <https://slurm.schedmd.com/>.
# Please also read the included file: DISCLAIMER.
#
# Slurm is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option)
# any later version.
#
# Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with Slurm; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
############################################################################
source ./globals

set option        ""
set value         ""
array set conf_val {}
set new_conf      ""
set opt_cnt       0

if {![is_super_user]} {
	skip "This test requires that the user be root or the SlurmUser"
}

proc cleanup {} {
	global bin_rm new_conf

	if {$new_conf ne ""} {
		run_command "$bin_rm -f $new_conf"
	}
}

#
# User scontrol show config to get some values to check
# against the new created file
#
log_user 0
set val ""
set option ""
spawn $scontrol show config
expect {
	-re "^$" {
		# break here since other config files are listed here
		# scontrol write config only prints out the normal slurm.conf
	}
	-re "($re_word_str) *= ($format_time)" {
		set option $expect_out(1,string)
		set val $expect_out(2,string)
		set conf_val($option) $val
		incr opt_cnt
		exp_continue
	}
	-re "($re_word_str) *= ($re_word_str)" {
		set option $expect_out(1,string)
		set val $expect_out(2,string)

		# Exclude ENV variable that appear in scontrol show config
		# Also "SuspendTime=NONE" gets written as "SuspendTime=0"
		if {$option != "BOOT_TIME" &&
		    $option != "HASH_VAL"  &&
		    $option != "MULTIPLE_SLURMD" &&
		    $option != "NEXT_JOB_ID" &&
		    $option != "SLURM_CONF" &&
		    $option != "SLURM_VERSION"} {
			set conf_val($option) $val
			incr opt_cnt
		}
		exp_continue
	}
	timeout {
		fail "scontrol is not responding"
	}
	eof {
		wait
	}
}
log_user 1

#
# Execute scontrol write config and get the filename of the created file
#
regexp {Slurm config saved to (\S+)} [run_command_output -fail "$scontrol write config"] {} new_conf

#
# Loop through the hash and check that the parameters exist within
# the new conf file
#
set tot_match 0
foreach opt [array names conf_val] {

	log_user 0
	set match 0

	spawn $bin_cat $new_conf
	expect {
		-re "$opt=$conf_val($opt)" {
			set match 1
			exp_continue
		}
		-re "#$opt=" {
			set match 1
			exp_continue
		}
		timeout {
			fail "scontrol is not responding"
		}
		eof {
			wait
		}
	}
	log_user 1

	if {$match != 1} {
		fail "$opt = $conf_val($opt) was not found in new config file"
	} else {
		incr tot_match
	}
}
subtest {$tot_match == $opt_cnt} "Verify all values found in the new config file" "$tot_match != $opt_cnt"