File: test2.13

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 (154 lines) | stat: -rwxr-xr-x 3,566 bytes parent folder | download | duplicates (4)
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          Validate scontrol update command for job steps.
# Copyright (C) 2010 Lawrence Livermore National Security.
# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
# Written by Morris Jette <jette1@llnl.gov>
# CODE-OCEC-09-009. All rights reserved.
#
# 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 file_in1      "$test_dir/input1"
set file_in2      "$test_dir/input2"
set file_out      "$test_dir/output"
set job_id        0
set step_id       0
set orig_time     0
set new_time      0

proc cleanup {} {
	global job_id

	cancel_job $job_id
}

#
# Build input batch file
#
make_bash_script $file_in1 "
  $bin_echo JOB_BEGIN
  $srun -t5 $file_in2
  $bin_echo JOB_FINISH
"
#
# Build step file
# The second sleep is because with some proctrack plugins, the bash shell may
# be terminated slighly later than the first sleep process
#
make_bash_script $file_in2 "
  $bin_echo STEP_BEGIN
  $bin_sleep 120
  $bin_sleep 1
  $bin_echo STEP_FINISH
"

#
# Submit a job so we have something to work with
#
spawn $sbatch --output=$file_out -t3 $file_in1
expect {
	-re "Submitted batch job ($number)" {
		set job_id $expect_out(1,string)
		exp_continue
	}
	timeout {
		fail "srun not responding"
	}
	eof {
		wait
	}
}
if {$job_id == 0} {
	fail "srun failed to initiate job"
}
#
# Wait for job _and_ step to start running
#
wait_for_job -fail $job_id "RUNNING"
sleep 5

#
# Validate that step's original time limit
#
spawn $scontrol show step $job_id.$step_id
expect {
	-re "TimeLimit=00:($number):00" {
		set orig_time $expect_out(1,string)
		exp_continue
	}
	timeout {
		fail "scontrol not responding"
	}
	eof {
		wait
	}
}
subtest {$orig_time == 5} "Validate the step's original time limit" "$orig_time != 5"

#
# Change that step's time limit
#
spawn $scontrol update StepId=$job_id TimeLimit=1
expect {
	timeout {
		fail "scontrol not responding"
	}
	eof {
		wait
	}
}

#
# Validate that step's new time limit
#
spawn  $scontrol show step $job_id.$step_id
expect {
	-re "TimeLimit=00:($number):00" {
		set orig_time $expect_out(1,string)
		exp_continue
	}
	timeout {
		fail "scontrol not responding"
	}
	eof {
		wait
	}
}
subtest {$orig_time == 1} "Validate the step's new time limit" "$orig_time != 1"

#
# Wait for step to exit and check output file
# Look for message generated before and after srun (job step) time limit
#
sleep 60
wait_for_job -fail $job_id "DONE"
wait_for_file -fail $file_out

spawn $bin_cat $file_out
expect {
	-re "STEP_FINISH" {
		fail "Step time limit not enforced"
	}
	eof {
		wait
	}
}