#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          to be called from test21.34
#          Tests partition and job qos limits
############################################################################
# Copyright (C) SchedMD LLC.
#
# 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 ./inc21.30.1
source ./inc21.30.2
source ./inc21.30.3
source ./inc21.30.4
source ./inc21.30.5
source ./inc21.30.6
source ./inc21.30.7
source ./inc21.30.8
source ./inc21.34.1
source ./inc21.30.10
source ./inc21.30.11
source ./inc21.34.2
source ./inc21.30.13
source ./inc21.30.14
source ./inc21.30.15
source ./inc21.30.16
source ./inc21.30.17

##########################################################
#
# Test that partition qos limits are enforced
#
##########################################################
proc part_test { } {

	global grn_num grcpu_num grjobs_num grsub_num grsub_num maxcpu_num
	global maxnode_num maxjobs_num maxjobsub_num grpcpumin_num
	global grpcpurunmin_num grpmem_num grpwall_num maxcpumin_num
	global maxwall_num maxcpuspu_num maxnodespu_num
	global part_qos mod_job_qos time_spacing selectparam
	global nthreads job_qos mod_part_qos prio_multifactor
	global tres_cpu_mult

	# We will set qostest with the qos that we will test since the some of
	# the 21.30 inc test require the qostest variable
	set qostest $part_qos

	#
	# Test GrpNode limit
	#
	set mod_job_qos(GrpNodes) 1
	set mod_part_qos(GrpNodes) $grn_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_1 "QOSGrpNodeLimit"
	# Reset the value to 0
	set mod_job_qos(GrpNodes) "-1"
	set mod_part_qos(GrpNodes) "-1"

	#
	# Test GrpCpus
	#
	set mod_job_qos(GrpCpus) 1
	set mod_part_qos(GrpCpus) $grcpu_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_2 "QOSGrpCpuLimit"
	set mod_job_qos(GrpCpus) "-1"
	set mod_part_qos(GrpCpus) "-1"

	#
	# test GrpJob limits
	#
	set mod_job_qos(GrpJobs) 1
	set mod_part_qos(GrpJobs) $grjobs_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_3 "QOSGrpJobsLimit"
	set mod_job_qos(GrpJobs) "-1"
	set mod_part_qos(GrpJobs) "-1"

	#
	# test GrpSubmit
	#
	set mod_job_qos(GrpSubmit) 1
	set mod_part_qos(GrpSubmit) $grsub_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_4
	set mod_job_qos(GrpSubmit) "-1"
	set mod_part_qos(GrpSubmit) "-1"

	#
	# Test MaxCpus limits
	#
	set mod_job_qos(MaxCpus) 1
	set mod_part_qos(MaxCpus) $maxcpu_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_5 "QOSMaxCpuPerJobLimit"
	set mod_job_qos(MaxCpus) "-1"
	set mod_part_qos(MaxCpus) "-1"

	#
	# Test MaxNode limit
	#
	set mod_job_qos(MaxNodes) 1
	set mod_part_qos(MaxNodes) $maxnode_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_6 [list "QOSMaxNodePerJobLimit" "PartitionConfig"]
	set mod_job_qos(MaxNodes) "-1"
	set mod_part_qos(MaxNodes) "-1"

	#
	# Test MaxJobs limit
	#
	set mod_job_qos(MaxJobs) 1
	set mod_part_qos(MaxJobs) $maxjobs_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_7 "QOSMaxJobsPerUserLimit"
	set mod_job_qos(MaxJobs) "-1"
	set mod_part_qos(MaxJobs) "-1"

	#
	# Test MaxJobsSubmits limit
	#
	set mod_job_qos(MaxSubmitJobs) 1
	set mod_part_qos(MaxSubmitJobs) $maxjobsub_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_8
	set mod_job_qos(MaxSubmitJobs) "-1"
	set mod_part_qos(MaxSubmitJobs) "-1"

	#
	# Test GroupCPUMins
	#
	set mod_job_qos(GrpCpuMin) 1
	set mod_part_qos(GrpCpuMin) $grpcpumin_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_34_1 $part_qos "QOSGrpCPUMinutesLimit"
	set mod_job_qos(GrpCpuMin) "-1"
	set mod_part_qos(GrpCpuMin) "-1"

	#
	# Test GroupCPURunMins
	# Requires priority/multifactor to properly handle decay well
	#
	if { $prio_multifactor != 0 } {
		set mod_job_qos(GrpCpuRunMin) 1
		set mod_part_qos(GrpCpuRunMin) $grpcpurunmin_num
		mod_qos $part_qos [array get mod_part_qos]
		mod_qos $job_qos [array get mod_job_qos]
		sleep $time_spacing
		inc21_30_10 "QOSGrpCPURunMinutesLimit"
		set mod_job_qos(GrpCpuRunMin) "-1"
		set mod_part_qos(GrpCpuRunMin) "-1"
	}

	#
	# Test Group Memory
	#
	set mod_job_qos(GrpMem) 1
	set mod_part_qos(GrpMem) $grpmem_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_11 "QOSGrpMemLimit"
	set mod_job_qos(GrpMem) "-1"
	set mod_part_qos(GrpMem) "-1"

	#
	# Test Group wall
	# Requires priority/multifactor to properly handle decay well
	#
	if { $prio_multifactor != 0 } {
		set mod_job_qos(GrpWall) 1
		set mod_part_qos(GrpWall) $grpwall_num
		mod_qos $part_qos [array get mod_part_qos]
		mod_qos $job_qos [array get mod_job_qos]
		sleep $time_spacing
		inc21_34_2 $part_qos
		set mod_job_qos(GrpWall) "-1"
		set mod_part_qos(GrpWall) "-1"
	}

	#
	# Test Max Cpu Mins
	#
	set mod_job_qos(MaxCpuMin) 1
	set mod_part_qos(MaxCpuMin) $maxcpumin_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_13 "QOSMaxCpuMinutesPerJobLimit"
	set mod_job_qos(MaxCpuMin) "-1"
	set mod_part_qos(MaxCpuMin) "-1"

	#
	# Test Max Wall
	#
	set mod_job_qos(MaxWall) 1
	set mod_part_qos(MaxWall) $maxwall_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_14 "QOSMaxWallDurationPerJobLimit"
	set mod_job_qos(MaxWall) "-1"
	set mod_part_qos(MaxWall) "-1"

	#
	# Test Max CPUs Per User
	#

	# If CR_CORE set maxcpuspu a multiple number of threads
	if {$selectparam} {
		set maxcpuspu_num [expr $maxcpuspu_num * $nthreads]
	}
	set mod_job_qos(MaxCpusPerUser) 1
	set mod_part_qos(MaxCpusPerUser) $maxcpuspu_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_15 "QOSMaxCpuPerUserLimit"
	set mod_job_qos(MaxCpusPerUser) "-1"
	set mod_part_qos(MaxCpusPerUser) "-1"

	#
	# Test MaxNodesPerUser
	#
	set mod_job_qos(MaxNodesPerUser) 1
	set mod_part_qos(MaxNodesPerUser) $maxnodespu_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_16 [list "QOSMaxNodePerUserLimit" "PartitionConfig"]
	set mod_job_qos(MaxNodesPerUser) "-1"
	set mod_part_qos(MaxNodesPerUser) "-1"

	#
	# QOS/Parent QOS MaxWall
	#
	set mod_job_qos(MaxWall) 1
	set mod_part_qos(MaxWall) $maxwall_num
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_17
	set mod_job_qos(MaxWall) "-1"
	set mod_part_qos(MaxWall) "-1"


	# TRESBillingWeight TESTS

	#
	# Test GrpTRES=billing
	#
	set mod_job_qos(GrpTRES=billing) 1
	set mod_part_qos(GrpTRES=billing) [expr $grcpu_num * $tres_cpu_mult]
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_2 "QOSGrpBilling"
	set mod_job_qos(GrpTRES=billing) "-1"
	set mod_part_qos(GrpTRES=billing) "-1"


	#
	# Test GrpTRESMins=billing
	#
	set mod_job_qos(GrpTRESMins=billing) 1
	set mod_part_qos(GrpTRESMins=billing) [expr $grpcpumin_num * $tres_cpu_mult]
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_34_1 $part_qos "QOSGrpBillingMinutes"
	set mod_job_qos(GrpTRESMins=billing) "-1"
	set mod_part_qos(GrpTRESMins=billing) "-1"


	#
	# Test GrpTRESRunMins=billing
	# Requires priority/multifactor to properly handle decay well
	#
	if { $prio_multifactor != 0 } {
		set mod_job_qos(GrpTRESRunMins=billing) 1
		set mod_part_qos(GrpTRESRunMins=billing) [expr $grpcpurunmin_num * $tres_cpu_mult]
		mod_qos $part_qos [array get mod_part_qos]
		mod_qos $job_qos [array get mod_job_qos]
		sleep $time_spacing
		inc21_30_10 "QOSGrpBillingRunMinutes"
		set mod_job_qos(GrpTRESRunMins=billing) "-1"
		set mod_part_qos(GrpTRESRunMins=billing) "-1"
	}


	#
	# Test MaxTRESPerJob=billing
	#
	set mod_job_qos(MaxTRESPerJob=billing) 1
	set mod_part_qos(MaxTRESPerJob=billing) [expr $maxcpu_num * $tres_cpu_mult]
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_5 "QOSMaxBillingPerJob"
	set mod_job_qos(MaxTRESPerJob=billing) "-1"
	set mod_part_qos(MaxTRESPerJob=billing) "-1"

	#
	# Test MaxTRESMinsPerJob=billing
	#
	set mod_job_qos(MaxTRESMinsPerJob=billing) 1
	set mod_part_qos(MaxTRESMinsPerJob=billing) [expr $maxcpumin_num * $tres_cpu_mult]
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_13 "QOSMaxBillingMinutesPerJob"
	set mod_job_qos(MaxTRESMinsPerJob=billing) "-1"
	set mod_part_qos(MaxTRESMinsPerJob=billing) "-1"

	#
	# Test MaxTRESPerUser=billing
	#
	# If CR_CORE set billing a multiple number of threads
	if {$selectparam} {
		set maxcpuspu_num [expr $maxcpuspu_num * $nthreads]
	}
	set mod_job_qos(MaxTRESPerUser=billing) 1
	set mod_part_qos(MaxTRESPerUser=billing) [expr $maxcpuspu_num * $tres_cpu_mult]
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_15 "QOSMaxBillingPerUser"
	set mod_job_qos(MaxTRESPerUser=billing) "-1"
	set mod_part_qos(MaxTRESPerUser=billing) "-1"
}

##########################################################
#
# Test that jobs qos limits are enforced after
# PartitionQos flag is set on the job's qos
#
##########################################################

proc qos_test { } {

	global grn_num grcpu_num grjobs_num grsub_num grsub_num maxcpu_num
	global maxnode_num maxjobs_num maxjobsub_num grpcpumin_num
	global grpcpurunmin_num grpmem_num grpwall_num maxcpumin_num
	global maxwall_num maxcpuspu_num maxnodespu_num
	global job_qos mod_job_qos time_spacing selectparam
	global nthreads part_qos mod_part_qos prio_multifactor
	global tres_cpu_mult

	# We will set qostest with the qos that we will test since the some of
	# the 21.30 inc test require the qostest variable
	set qostest $job_qos

	#
	# Test GrpNode limit
	#
	set mod_job_qos(GrpNodes) $grn_num
	set mod_part_qos(GrpNodes) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_1 "QOSGrpNodeLimit"
	# Reset the value to 0
	set mod_job_qos(GrpNodes) "-1"
	set mod_part_qos(GrpNodes) "-1"

	#
	# Test GrpCpus
	#
	set mod_job_qos(GrpCpus) $grcpu_num
	set mod_part_qos(GrpCpus) $grcpu_num
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_2 "QOSGrpCpuLimit"
	set mod_job_qos(GrpCpus) "-1"
	set mod_part_qos(GrpCpus) "-1"

	#
	# test GrpJob limits
	#
	set mod_job_qos(GrpJobs) $grjobs_num
	set mod_part_qos(GrpJobs) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_3 "QOSGrpJobsLimit"
	set mod_job_qos(GrpJobs) "-1"
	set mod_part_qos(GrpJobs) "-1"

	#
	# test GrpSubmit
	#
	set mod_job_qos(GrpSubmit) $grsub_num
	set mod_part_qos(GrpSubmit) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_4
	set mod_job_qos(GrpSubmit) "-1"
	set mod_part_qos(GrpSubmit) "-1"

	#
	# Test MaxCpus limits
	#
	set mod_job_qos(MaxCpus) $maxcpu_num
	set mod_part_qos(MaxCpus) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_5 "QOSMaxCpuPerJobLimit"
	set mod_job_qos(MaxCpus) "-1"
	set mod_part_qos(MaxCpus) "-1"

	#
	# Test MaxNode limit
	#
	set mod_job_qos(MaxNodes) $maxnode_num
	set mod_part_qos(MaxNodes) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_6 [list "QOSMaxNodePerJobLimit" "PartitionConfig"]
	set mod_job_qos(MaxNodes) "-1"
	set mod_part_qos(MaxNodes) "-1"

	#
	# Test MaxJobs limit
	#
	set mod_job_qos(MaxJobs) $maxjobs_num
	set mod_part_qos(MaxJobs) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_7 "QOSMaxJobsPerUserLimit"
	set mod_job_qos(MaxJobs) "-1"
	set mod_part_qos(MaxJobs) "-1"

	#
	# Test MaxJobsSubmits limit
	#
	set mod_job_qos(MaxSubmitJobs) $maxjobsub_num
	set mod_part_qos(MaxSubmitJobs) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_8
	set mod_job_qos(MaxSubmitJobs) "-1"
	set mod_part_qos(MaxSubmitJobs) "-1"

	#
	# Test GroupCPUMins
	#
	set mod_job_qos(GrpCpuMin) $grpcpumin_num
	set mod_part_qos(GrpCpuMin) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_34_1 $job_qos "QOSGrpCPUMinutesLimit"
	set mod_job_qos(GrpCpuMin) "-1"
	set mod_part_qos(GrpCpuMin) "-1"

	#
	# Test GroupCPURunMins
	# Requires priority/multifactor to properly handle decay well
	#
	if { $prio_multifactor != 0 } {
		set mod_job_qos(GrpCpuRunMin) $grpcpurunmin_num
		set mod_part_qos(GrpCpuRunMin) 1
		mod_qos $job_qos [array get mod_job_qos]
		mod_qos $part_qos [array get mod_part_qos]
		sleep $time_spacing
		inc21_30_10  "QOSGrpCPURunMinutesLimit"
		set mod_job_qos(GrpCpuRunMin) "-1"
		set mod_part_qos(GrpCpuRunMin) "-1"
	}

	#
	# Test Group Memory
	#
	set mod_job_qos(GrpMem) $grpmem_num
	set mod_part_qos(GrpMem) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_11 "QOSGrpMemLimit"
	set mod_job_qos(GrpMem) "-1"
	set mod_part_qos(GrpMem) "-1"

	#
	# Test Group wall
	# Requires priority/multifactor to properly handle decay well
	#
	if { $prio_multifactor != 0 } {
		set mod_job_qos(GrpWall) $grpwall_num
		set mod_part_qos(GrpWall) 1
		mod_qos $job_qos [array get mod_job_qos]
		mod_qos $part_qos [array get mod_part_qos]
		sleep $time_spacing
		inc21_34_2 $job_qos
		set mod_job_qos(GrpWall) "-1"
		set mod_part_qos(GrpWall) "-1"
	}

	#
	# Test Max Cpu Mins
	#
	set mod_job_qos(MaxCpuMin) $maxcpumin_num
	set mod_part_qos(MaxCpuMin) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_13 "QOSMaxCpuMinutesPerJobLimit"
	set mod_job_qos(MaxCpuMin) "-1"
	set mod_part_qos(MaxCpuMin) "-1"

	#
	# Test Max Wall
	#
	set mod_job_qos(MaxWall) $maxwall_num
	set mod_part_qos(MaxWall) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_14 "QOSMaxWallDurationPerJobLimit"
	set mod_job_qos(MaxWall) "-1"
	set mod_part_qos(MaxWall) "-1"

	#
	# Test Max CPUs Per User
	#

	# If CR_CORE set maxcpuspu a multiple number of threads
	if {$selectparam} {
		set maxcpuspu_num [expr $maxcpuspu_num * $nthreads]
	}

	set mod_job_qos(MaxCpusPerUser) $maxcpuspu_num
	set mod_part_qos(MaxCpusPerUser) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_15 "QOSMaxCpuPerUserLimit"
	set mod_job_qos(MaxCpusPerUser) "-1"
	set mod_part_qos(MaxCpusPerUser) "-1"

	#
	# Test MaxNodesPerUser
	#
	set mod_job_qos(MaxNodesPerUser) $maxnodespu_num
	set mod_part_qos(MaxNodesPerUser) 1
	mod_qos $job_qos [array get mod_job_qos]
	mod_qos $part_qos [array get mod_part_qos]
	sleep $time_spacing
	inc21_30_16 [list "QOSMaxNodePerUserLimit" "PartitionConfig"]
	set mod_job_qos(MaxNodesPerUser) "-1"
	set mod_part_qos(MaxNodesPerUser) "-1"

	#
	# QOS/Parent QOS MaxWall
	#
	set mod_job_qos(MaxWall) $maxwall_num
	set mod_part_qos(MaxWall) 1
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_17
	set mod_job_qos(MaxWall) "-1"
	set mod_part_qos(MaxWall) "-1"


	# TRESBillingWeight TESTS

	#
	# Test GrpTRES=billing
	#
	set mod_job_qos(GrpTRES=billing) [expr $grcpu_num * $tres_cpu_mult]
	set mod_part_qos(GrpTRES=billing) [expr $grcpu_num * $tres_cpu_mult]
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_2 "QOSGrpBilling"
	set mod_job_qos(GrpTRES=billing) "-1"
	set mod_part_qos(GrpTRES=billing) "-1"


	#
	# Test GrpTRESMins=billing
	#
	set mod_job_qos(GrpTRESMins=billing) [expr $grpcpumin_num * $tres_cpu_mult]
	set mod_part_qos(GrpTRESMins=billing) 1
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_34_1 $job_qos "QOSGrpBillingMinutes"
	set mod_job_qos(GrpTRESMins=billing) "-1"
	set mod_part_qos(GrpTRESMins=billing) "-1"


	#
	# Test GrpTRESRunMins=billing
	# Requires priority/multifactor to properly handle decay well
	#
	if { $prio_multifactor != 0 } {
		set mod_job_qos(GrpTRESRunMins=billing) [expr $grpcpurunmin_num * $tres_cpu_mult]
		set mod_part_qos(GrpTRESRunMins=billing) 1
		mod_qos $part_qos [array get mod_part_qos]
		mod_qos $job_qos [array get mod_job_qos]
		sleep $time_spacing
		inc21_30_10  "QOSGrpBillingRunMinutes"
		set mod_job_qos(GrpTRESRunMins=billing) "-1"
		set mod_part_qos(GrpTRESRunMins=billing) "-1"
	}


	#
	# Test MaxTRESPerJob=billing
	#
	set mod_job_qos(MaxTRESPerJob=billing) [expr $maxcpu_num * $tres_cpu_mult]
	set mod_part_qos(MaxTRESPerJob=billing) 1
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_5 "QOSMaxBillingPerJob"
	set mod_job_qos(MaxTRESPerJob=billing) "-1"
	set mod_part_qos(MaxTRESPerJob=billing) "-1"

	#
	# Test MaxTRESMinsPerJob=billing
	#
	set mod_job_qos(MaxTRESMinsPerJob=billing) [expr $maxcpumin_num * $tres_cpu_mult]
	set mod_part_qos(MaxTRESMinsPerJob=billing) 1
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_13 "QOSMaxBillingMinutesPerJob"
	set mod_job_qos(MaxTRESMinsPerJob=billing) "-1"
	set mod_part_qos(MaxTRESMinsPerJob=billing) "-1"

	#
	# Test MaxTRESPerUser=billing
	#
	# If CR_CORE set billing a multiple number of threads
	if {$selectparam} {
		set maxcpuspu_num [expr $maxcpuspu_num * $nthreads]
	}
	set mod_job_qos(MaxTRESPerUser=billing) [expr $maxcpuspu_num * $tres_cpu_mult]
	set mod_part_qos(MaxTRESPerUser=billing) 1
	mod_qos $part_qos [array get mod_part_qos]
	mod_qos $job_qos [array get mod_job_qos]
	sleep $time_spacing
	inc21_30_15 "QOSMaxBillingPerUser"
	set mod_job_qos(MaxTRESPerUser=billing) "-1"
	set mod_part_qos(MaxTRESPerUser=billing) "-1"
}
