@@ -64,15 +64,14 @@ func TestResourceLimitsForName_FallsBackWhenFieldOmitted(t *testing.T) {
6464 assert .Equal (t , int64 (32 * 1024 * 1024 * 1024 ), resolved .MaxMemoryPerInstance )
6565}
6666
67- func TestValidateResourceLimitsForName_ZeroOverrideMeansUnlimited (t * testing.T ) {
67+ func TestValidateResourceLimitsForName_ZeroCpuAndMemoryOverrideMeansUnlimited (t * testing.T ) {
6868 t .Parallel ()
6969
7070 zeroInt := 0
7171 zeroBytes := int64 (0 )
7272 override , err := NewNamedResourceLimit ("^burst-.*" , NamedResourceLimitConfig {
7373 MaxVcpusPerInstance : & zeroInt ,
7474 MaxMemoryPerInstance : & zeroBytes ,
75- MaxOverlaySize : & zeroBytes ,
7675 })
7776 require .NoError (t , err )
7877
@@ -87,6 +86,27 @@ func TestValidateResourceLimitsForName_ZeroOverrideMeansUnlimited(t *testing.T)
8786 require .NoError (t , err )
8887}
8988
89+ func TestValidateResourceLimitsForName_ZeroOverlayOverrideRejectsPositiveOverlay (t * testing.T ) {
90+ t .Parallel ()
91+
92+ zeroBytes := int64 (0 )
93+ override , err := NewNamedResourceLimit ("^burst-.*" , NamedResourceLimitConfig {
94+ MaxOverlaySize : & zeroBytes ,
95+ })
96+ require .NoError (t , err )
97+
98+ limits := ResourceLimits {
99+ MaxOverlaySize : 5 * 1024 * 1024 * 1024 ,
100+ MaxVcpusPerInstance : 2 ,
101+ MaxMemoryPerInstance : 4 * 1024 * 1024 * 1024 ,
102+ NamePatterns : []NamedResourceLimit {override },
103+ }
104+
105+ err = validateResourceLimitsForName ("burst-worker" , limits , 1 , 2 , 4 * 1024 * 1024 * 1024 )
106+ require .Error (t , err )
107+ assert .Contains (t , err .Error (), "overlay size 1 exceeds maximum allowed size 0" )
108+ }
109+
90110func TestValidateResourceLimitsForName_RejectsWhenResolvedLimitExceeded (t * testing.T ) {
91111 t .Parallel ()
92112
@@ -108,6 +128,27 @@ func TestValidateResourceLimitsForName_RejectsWhenResolvedLimitExceeded(t *testi
108128 assert .Contains (t , err .Error (), "vcpus 8 exceeds maximum allowed 4 per instance" )
109129}
110130
131+ func TestValidateResourceLimitsForName_GlobalOverlayLimitAppliesWhenNoPatternMatches (t * testing.T ) {
132+ t .Parallel ()
133+
134+ four := 4
135+ override , err := NewNamedResourceLimit ("^db-.*" , NamedResourceLimitConfig {
136+ MaxVcpusPerInstance : & four ,
137+ })
138+ require .NoError (t , err )
139+
140+ limits := ResourceLimits {
141+ MaxOverlaySize : 10 * 1024 * 1024 * 1024 ,
142+ MaxVcpusPerInstance : 16 ,
143+ MaxMemoryPerInstance : 64 * 1024 * 1024 * 1024 ,
144+ NamePatterns : []NamedResourceLimit {override },
145+ }
146+
147+ err = validateResourceLimitsForName ("cache-primary" , limits , 20 * 1024 * 1024 * 1024 , 8 , 16 * 1024 * 1024 * 1024 )
148+ require .Error (t , err )
149+ assert .Contains (t , err .Error (), "overlay size 21474836480 exceeds maximum allowed size 10737418240" )
150+ }
151+
111152func TestValidateProvisionedResourceLimitsForName_RejectsProjectedTotal (t * testing.T ) {
112153 t .Parallel ()
113154
0 commit comments