@@ -9,37 +9,76 @@ import (
99 armadaresource "github.com/armadaproject/armada/internal/common/resource"
1010)
1111
12- func TestUtilisationData_Max (t * testing.T ) {
13- data := & UtilisationData {
14- CurrentUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("1" ), "memory" : resource .MustParse ("10" )},
15- CumulativeUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("5" )},
12+ func compareQuantityMaps (a , b map [string ]resource.Quantity ) bool {
13+ if len (a ) != len (b ) {
14+ return false
15+ }
16+ for key , aVal := range a {
17+ bVal , exists := b [key ]
18+ if ! exists {
19+ return false
20+ }
21+ if aVal .String () != bVal .String () {
22+ return false
23+ }
24+ }
25+ return true
26+ }
27+
28+ func TestUtilisationDataAggregation (t * testing.T ) {
29+ data := & UtilisationDataAggregation {
30+ maxUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("1" ), "memory" : resource .MustParse ("10" )},
31+ sumOfUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("1" ), "memory" : resource .MustParse ("10" )},
32+ numDataPoints : map [string ]int64 {"cpu" : 1 , "memory" : 1 },
33+ cumulativeUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("5" )},
1634 }
1735 data2 := & UtilisationData {
1836 CurrentUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("2" ), "memory" : resource .MustParse ("1" )},
1937 CumulativeUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("10" )},
2038 }
21- expected := & UtilisationData {
22- CurrentUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("2" ), "memory" : resource .MustParse ("10" )},
23- CumulativeUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("10" )},
39+ expected := & UtilisationDataAggregation {
40+ maxUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("2" ), "memory" : resource .MustParse ("10" )},
41+ sumOfUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("3" ), "memory" : resource .MustParse ("11" )},
42+ numDataPoints : map [string ]int64 {"cpu" : 2 , "memory" : 2 },
43+ cumulativeUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("10" )},
2444 }
2545
26- max := data
27- max .Max (data2 )
28- assert .Equal (t , expected .CurrentUsage , max .CurrentUsage )
29- assert .Equal (t , expected .CumulativeUsage , max .CumulativeUsage )
46+ aggregated := data
47+ aggregated .Add (data2 )
48+ assert .True (t , compareQuantityMaps (expected .maxUsage , aggregated .maxUsage ))
49+ assert .True (t , compareQuantityMaps (expected .sumOfUsage , aggregated .sumOfUsage ))
50+ assert .Equal (t , expected .numDataPoints , aggregated .numDataPoints )
51+ assert .True (t , compareQuantityMaps (expected .cumulativeUsage , aggregated .cumulativeUsage ))
3052}
3153
32- func TestUtilisationData_Max_WithEmpty (t * testing.T ) {
54+ func TestUtilisationDataAggregation_WithEmpty (t * testing.T ) {
3355 currentUsage := armadaresource.ComputeResources {"cpu" : resource .MustParse ("1" ), "memory" : resource .MustParse ("1" )}
3456 cumulativeUsage := armadaresource.ComputeResources {"cpu" : resource .MustParse ("10" )}
3557 data := & UtilisationData {
3658 CurrentUsage : currentUsage .DeepCopy (),
3759 CumulativeUsage : cumulativeUsage .DeepCopy (),
3860 }
39- max := EmptyUtilisationData ()
40- max .Max (data )
41- assert .Equal (t , data .CurrentUsage , max .CurrentUsage )
42- assert .Equal (t , data .CumulativeUsage , max .CumulativeUsage )
61+ aggregated := EmptyUtilisationDataAggregation ()
62+ aggregated .Add (data )
63+ assert .Equal (t , data .CurrentUsage , aggregated .maxUsage )
64+ assert .Equal (t , data .CumulativeUsage , aggregated .cumulativeUsage )
65+
66+ assert .True (t , compareQuantityMaps (data .CurrentUsage , aggregated .maxUsage ))
67+ assert .True (t , compareQuantityMaps (data .CurrentUsage , aggregated .sumOfUsage ))
68+ assert .True (t , compareQuantityMaps (data .CumulativeUsage , aggregated .cumulativeUsage ))
69+ }
70+
71+ func TestUtilisationData_GetAvg (t * testing.T ) {
72+ data := & UtilisationDataAggregation {
73+ maxUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("100m" ), "memory" : resource .MustParse ("100Mi" )},
74+ sumOfUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("160m" ), "memory" : resource .MustParse ("110Mi" )},
75+ numDataPoints : map [string ]int64 {"cpu" : 2 , "memory" : 2 },
76+ cumulativeUsage : armadaresource.ComputeResources {"cpu" : resource .MustParse ("160m" )},
77+ }
78+
79+ expected := armadaresource.ComputeResources {"cpu" : resource .MustParse ("80m" ), "memory" : resource .MustParse ("55Mi" )}
80+
81+ assert .True (t , compareQuantityMaps (expected , data .GetAvgUsage ()))
4382}
4483
4584func TestUtilisationData_IsEmpty (t * testing.T ) {
0 commit comments