@@ -45,13 +45,53 @@ func TestMergeLinuxResourcesRelaxed(t *testing.T) {
4545 require .Equal (t , int64 (0 ), result .Memory )
4646 })
4747
48+ t .Run ("zero memory swap means unset, preserves non-zero" , func (t * testing.T ) {
49+ a := & pb.LinuxResources {MemorySwap : 256 * 1024 * 1024 }
50+ b := & pb.LinuxResources {MemorySwap : 0 }
51+ result := mergeLinuxResourcesRelaxed (a , b )
52+ require .Equal (t , int64 (256 * 1024 * 1024 ), result .MemorySwap )
53+
54+ // Reverse order
55+ result = mergeLinuxResourcesRelaxed (b , a )
56+ require .Equal (t , int64 (256 * 1024 * 1024 ), result .MemorySwap )
57+ })
58+
59+ t .Run ("memory swap -1 means unlimited and wins" , func (t * testing.T ) {
60+ a := & pb.LinuxResources {MemorySwap : 256 * 1024 * 1024 }
61+ b := & pb.LinuxResources {MemorySwap : - 1 }
62+ result := mergeLinuxResourcesRelaxed (a , b )
63+ require .Equal (t , int64 (- 1 ), result .MemorySwap )
64+
65+ // Reverse order
66+ result = mergeLinuxResourcesRelaxed (b , a )
67+ require .Equal (t , int64 (- 1 ), result .MemorySwap )
68+ })
69+
70+ t .Run ("higher memory swap wins" , func (t * testing.T ) {
71+ a := & pb.LinuxResources {MemorySwap : 128 * 1024 * 1024 }
72+ b := & pb.LinuxResources {MemorySwap : 256 * 1024 * 1024 }
73+ result := mergeLinuxResourcesRelaxed (a , b )
74+ require .Equal (t , int64 (256 * 1024 * 1024 ), result .MemorySwap )
75+ })
76+
4877 t .Run ("higher cpu shares wins" , func (t * testing.T ) {
4978 a := & pb.LinuxResources {CpuShares : 256 }
5079 b := & pb.LinuxResources {CpuShares : 512 }
5180 result := mergeLinuxResourcesRelaxed (a , b )
5281 require .Equal (t , uint64 (512 ), result .CpuShares )
5382 })
5483
84+ t .Run ("zero cpu shares means unset, preserves non-zero" , func (t * testing.T ) {
85+ a := & pb.LinuxResources {CpuShares : 512 }
86+ b := & pb.LinuxResources {CpuShares : 0 }
87+ result := mergeLinuxResourcesRelaxed (a , b )
88+ require .Equal (t , uint64 (512 ), result .CpuShares )
89+
90+ // Reverse order
91+ result = mergeLinuxResourcesRelaxed (b , a )
92+ require .Equal (t , uint64 (512 ), result .CpuShares )
93+ })
94+
5595 t .Run ("higher cpu quota wins" , func (t * testing.T ) {
5696 a := & pb.LinuxResources {CpuQuota : 50000 , CpuPeriod : 100000 }
5797 b := & pb.LinuxResources {CpuQuota : 80000 , CpuPeriod : 100000 }
@@ -75,6 +115,14 @@ func TestMergeLinuxResourcesRelaxed(t *testing.T) {
75115 require .Equal (t , uint64 (200000 ), result .CpuPeriod )
76116 })
77117
118+ t .Run ("equal quotas picks shorter period (more relaxed)" , func (t * testing.T ) {
119+ a := & pb.LinuxResources {CpuQuota : 50000 , CpuPeriod : 100000 }
120+ b := & pb.LinuxResources {CpuQuota : 50000 , CpuPeriod : 200000 }
121+ result := mergeLinuxResourcesRelaxed (a , b )
122+ require .Equal (t , int64 (50000 ), result .CpuQuota )
123+ require .Equal (t , uint64 (100000 ), result .CpuPeriod ) // shorter period = more CPU
124+ })
125+
78126 t .Run ("empty cpuset string means unset and wins" , func (t * testing.T ) {
79127 a := & pb.LinuxResources {CpusetCpus : "0-3" }
80128 b := & pb.LinuxResources {CpusetCpus : "" }
0 commit comments