File: inc22.1.1

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 (156 lines) | stat: -rw-r--r-- 12,331 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          Use sreport to get cluster usage for the first hour from
#          configuration set up in test22.1.
############################################################################
# Copyright (C) 2008 Lawrence Livermore National Security.
# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
# Written by Danny Auble <da@llnl.gov>
# CODE-OCEC-09-009. All rights reserved.
#
# Portions Copyright (C) 2012-2017 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.
############################################################################

proc inc22_1_1 {} {
	global account1 accounts users cluster_cpus job0_start user1
	global node0_down_start node0_cpus node1_cpus sreport
	global wc_key_track wckey1
	global sql_in_clus1 sql_rem_clus1 sql_in_clus2 sql_rem_clus2
	global cluster1 cluster2

	# Mon Dec 31 23:00:00 2007
	set start_time "Mon Dec 31 23:00:00 2007"
	set period_start [exec date +%s --date=$start_time]

	# Tue Jan 1 00:00:00 2008
	set end_time "Tue Jan 1 00:00:00 2008"
	set period_end [exec date +%s --date=$end_time]

	set start_str [timestamp -format %Y-%m-%dT%X -seconds $period_start]
	set end_str [timestamp -format %Y-%m-%dT%X -seconds $period_end]
	set reported [expr ($period_end - $period_start) * $cluster_cpus]
	set down [expr ($period_end-$node0_down_start) * $node0_cpus]
	set alloc_sec [expr ($period_end-$job0_start) * $node1_cpus]
	set wckey_alloc_sec $alloc_sec
	set resv 0
	set idle [expr $reported - ($down + $alloc_sec + $resv)]

	set down [format "%d\\\(%.2f%%\\\)" $down [expr double($down * 100)/$reported]]
	set alloc [format "%d\\\(%.2f%%\\\)" $alloc_sec [expr double($alloc_sec * 100)/$reported]]
	set resv [format "%d\\\(%.2f%%\\\)" $resv  [expr double($resv * 100)/$reported]]
	set idle [format "%d\\\(%.2f%%\\\)" $idle [expr double($idle * 100)/$reported]]
	set reported [format "%d\\\(%.2f%%\\\)" $reported 100]

	log_info "Testing sreport for first hour"

	set output [run_command_output -fail "$sreport -M$cluster2 cluster utilization start=$start_str end=$end_str -tsecper -p -n format=cluster,idle,down,alloc,res,reported"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster2.$idle.$down.$alloc.$resv.$reported." $output] == 1} "Test the cluster utilization report for the first hour"

	set output [run_command_output -fail "$sreport -M$cluster2 cluster utilization cluster='$cluster1' start=$start_str end=$end_str -tsecper -p -n format=cluster,idle,down,alloc,res,reported"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster1.$idle.$down.$alloc.$resv.$reported." $output] == 1} "Test the cluster-specific cluster utilization report for the first hour of cluster 1"
	subtest {[regexp -all "$cluster2.$idle.$down.$alloc.$resv.$reported." $output] == 1} "Test the cluster-specific cluster utilization report for the first hour of cluster 2"

	# Test the UserUtilizationByAccount report
	set output [run_command_output -fail "$sreport -M$cluster2 cluster UserUtilizationByAccount start=$start_str end=$end_str -tsecper -p -n format=cluster,login,account,used"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster2.$user1.$account1.$alloc." $output] == 1} "Test the UserUtilizationByAccount report for the first hour"

	set output [run_command_output -fail "$sreport -M$cluster2 cluster UserUtilizationByAccount cluster='$cluster1' start=$start_str end=$end_str -tsecper -p -n format=cluster,login,account,used"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster1.$user1.$account1.$alloc." $output] == 1} "Test the cluster-specific UserUtilizationByAccount cluster=$cluster1 report for the first hour"
	subtest {[regexp -all "$cluster2.$user1.$account1.$alloc." $output] == 1} "Test the cluster-specific UserUtilizationByAccount cluster=$cluster2 report for the first hour"

	# Test the AccountUtilizationByUser report
	set output [run_command_output -fail "$sreport -M$cluster2 cluster AccountUtilizationByUser start=$start_str end=$end_str -tsecper -p -n format=cluster,account,login,used"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster2.root..$alloc." $output] == 1} "Test the UserUtilizationByAccount report for the first hour for root"
	subtest {[regexp -all "$cluster2.$account1..$alloc." $output] == 1} "Test the UserUtilizationByAccount report for the first hour for $account1"
	subtest {[regexp -all "$cluster2.$account1.$user1.$alloc." $output] == 1} "Test the UserUtilizationByAccount report for the first hour for $user1 in $account1"

	set output [run_command_output -fail "$sreport -M$cluster2 cluster AccountUtilizationByUser cluster='$cluster1' start=$start_str end=$end_str -tsecper -p -n format=cluster,account,login,used"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster1.root..$alloc." $output] == 1} "Test the cluster-specific UserUtilizationByAccount report for the first hour"
	subtest {[regexp -all "$cluster1.$account1..$alloc." $output] == 1} "Test the cluster-specific UserUtilizationByAccount report for the first hour"
	subtest {[regexp -all "$cluster1.$account1.$user1.$alloc." $output] == 1} "Test the cluster-specific UserUtilizationByAccount report for the first hour"
	subtest {[regexp -all "$cluster2.root..$alloc." $output] == 1} "Test the cluster-specific UserUtilizationByAccount report for the first hour"
	subtest {[regexp -all "$cluster2.$account1..$alloc." $output] == 1} "Test the cluster-specific UserUtilizationByAccount report for the first hour"
	subtest {[regexp -all "$cluster2.$account1.$user1.$alloc." $output] == 1} "Test the cluster-specific UserUtilizationByAccount report for the first hour"

	# Test the UserUtilizationByWcKey report
	if {!$wc_key_track} {
		subskip "Needs TracWCKey for some subtests"
	} else {
		set output [run_command_output -fail "$sreport -M$cluster2 cluster UserUtilizationByWckey start=$start_str end=$end_str -tsecper -p -n format=cluster,login,wckey,used"]
		subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
		subtest {[regexp -all "$cluster2.$user1.$wckey1.$alloc." $output] == 1} "Test the UserUtilizationByWcKey report for the first hour"

		set output [run_command_output -fail "$sreport -M$cluster2 cluster UserUtilizationByWckey cluster='$cluster1' start=$start_str end=$end_str -tsecper -p -n format=cluster,login,wckey,used"]
		subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
		subtest {[regexp -all "$cluster1.$user1.$wckey1.$alloc." $output] == 1} "Test the cluster-specific UserUtilizationByWcKey report for the first hour for $cluster1"
		subtest {[regexp -all "$cluster2.$user1.$wckey1.$alloc." $output] == 1} "Test the cluster-specific UserUtilizationByWcKey report for the first hour for $cluster2"

		# Test the WckeyUtilizationByUser report
		set output [run_command_output -fail "$sreport -M$cluster2 cluster WckeyUtilizationByUser start=$start_str end=$end_str -tsecper -p -n format=cluster,wckey,login,used"]
		subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
		subtest {[regexp -all "$cluster2.$wckey1..$alloc." $output] == 1} "Test the WckeyUtilizationByUser report for the first hour"
		subtest {[regexp -all "$cluster2.$wckey1.$user1.$alloc." $output] == 1} "Test the WckeyUtilizationByUser report for the first hour"

		set output [run_command_output -fail "$sreport -M$cluster2 cluster WckeyUtilizationByUser cluster='$cluster1' start=$start_str end=$end_str -tsecper -p -n format=cluster,wckey,login,used"]
		subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
		subtest {[regexp -all "$cluster1.$wckey1..$alloc." $output] == 1} "Test the cluster-specific WckeyUtilizationByUser report for the first hour"
		subtest {[regexp -all "$cluster1.$wckey1.$user1.$alloc." $output] == 1} "Test the cluster-specific WckeyUtilizationByUser report for the first hour"
		subtest {[regexp -all "$cluster2.$wckey1..$alloc." $output] == 1} "Test the cluster-specific WckeyUtilizationByUser report for the first hour"
		subtest {[regexp -all "$cluster2.$wckey1.$user1.$alloc." $output] == 1} "Test the cluster-specific WckeyUtilizationByUser report for the first hour"
	}

	# Test the User Top report
	set output [run_command_output -fail "$sreport -M$cluster2 user top start=$start_str end=$end_str -tsecper -p -n format=cluster,account,login,used"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster2.$account1.$user1.$alloc." $output] == 1} "Test the User Top report for the first hour"

	set output [run_command_output -fail "$sreport -M$cluster2 user top cluster='$cluster1' start=$start_str end=$end_str -tsecper -p -n format=cluster,account,login,used"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster1.$account1.$user1.$alloc." $output] == 1} "Test the cluster-specific User Top report for the first hour"
	subtest {[regexp -all "$cluster2.$account1.$user1.$alloc." $output] == 1} "Test the cluster-specific User Top report for the first hour"

	# Test the Job Size report
	set output [run_command_output -fail "$sreport -M$cluster2 job size AcctAsParent grouping=2,4 start=$start_str end=$end_str -tsec -p -n"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster2.$account1.0.$alloc_sec.0." $output] == 1} "Test the Job Size report for the first hour"

	set output [run_command_output -fail "$sreport --local job size AcctAsParent grouping=2,4 cluster='$cluster1' start=$start_str end=$end_str -tsec -p -n"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster1.$account1.0.$alloc_sec.0." $output] == 1} "Test the cluster-specific Job Size report for the first hour"

	# Test the Job Size by wckey report
	set output [run_command_output -fail "$sreport -M$cluster2 job sizesbywckey grouping=2,4 start=$start_str end=$end_str -tsec -p -n"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster2.$wckey1.0.$wckey_alloc_sec.0." $output] == 1} "Test the Job Size by wckey report for the first hour"

	set output [run_command_output -fail "$sreport -M$cluster2 job sizesbywckey grouping=2,4 cluster='$cluster1' start=$start_str end=$end_str -tsec -p -n"]
	subtest {![regexp "There was a problem" $output]} "Verify no error message is reported by sreport"
	subtest {[regexp -all "$cluster1.$wckey1.0.$wckey_alloc_sec.0." $output] == 1} "Test the cluster-specific Job Size by wckey report for the first hour"
	subtest {[regexp -all "$cluster2.$wckey1.0.$wckey_alloc_sec.0." $output] == 1} "Test the cluster-specific Job Size by wckey report for the first hour"
}