@@ -54,88 +54,125 @@ func TestStoreDesiredRequest(t *testing.T) {
5454 }, {
5555 Name : "blue" ,
5656 Replicas : initialize .Int32 (1 ),
57- }}}}
58-
59- t .Run ("BadRequestNoBackup" , func (t * testing.T ) {
60- recorder := events .NewRecorder (t , runtime .Scheme )
61- reconciler := & Reconciler {Recorder : recorder }
62- ctx , logs := setupLogCapture (ctx )
63-
64- value := reconciler .storeDesiredRequest (ctx , & cluster , "pgData" , "red" , "woot" , "" )
65-
66- assert .Equal (t , value , "" )
67- assert .Equal (t , len (recorder .Events ), 0 )
68- assert .Equal (t , len (* logs ), 1 )
69- assert .Assert (t , cmp .Contains ((* logs )[0 ], "Unable to parse pgData volume request from status" ))
70- })
71-
72- t .Run ("BadRequestWithBackup" , func (t * testing.T ) {
73- recorder := events .NewRecorder (t , runtime .Scheme )
74- reconciler := & Reconciler {Recorder : recorder }
75- ctx , logs := setupLogCapture (ctx )
76-
77- value := reconciler .storeDesiredRequest (ctx , & cluster , "pgData" , "red" , "foo" , "1Gi" )
78-
79- assert .Equal (t , value , "1Gi" )
80- assert .Equal (t , len (recorder .Events ), 0 )
81- assert .Equal (t , len (* logs ), 1 )
82- assert .Assert (t , cmp .Contains ((* logs )[0 ], "Unable to parse pgData volume request from status (foo) for rhino/red" ))
83- })
84-
85- t .Run ("NoLimitNoEvent" , func (t * testing.T ) {
86- recorder := events .NewRecorder (t , runtime .Scheme )
87- reconciler := & Reconciler {Recorder : recorder }
88- ctx , logs := setupLogCapture (ctx )
89-
90- value := reconciler .storeDesiredRequest (ctx , & cluster , "pgData" , "blue" , "1Gi" , "" )
91-
92- assert .Equal (t , value , "1Gi" )
93- assert .Equal (t , len (* logs ), 0 )
94- assert .Equal (t , len (recorder .Events ), 0 )
95- })
96-
97- t .Run ("BadBackupRequest" , func (t * testing.T ) {
98- recorder := events .NewRecorder (t , runtime .Scheme )
99- reconciler := & Reconciler {Recorder : recorder }
100- ctx , logs := setupLogCapture (ctx )
101-
102- value := reconciler .storeDesiredRequest (ctx , & cluster , "pgData" , "red" , "2Gi" , "bar" )
103-
104- assert .Equal (t , value , "2Gi" )
105- assert .Equal (t , len (* logs ), 1 )
106- assert .Assert (t , cmp .Contains ((* logs )[0 ], "Unable to parse pgData volume request from status backup (bar) for rhino/red" ))
107- assert .Equal (t , len (recorder .Events ), 1 )
108- assert .Equal (t , recorder .Events [0 ].Regarding .Name , cluster .Name )
109- assert .Equal (t , recorder .Events [0 ].Reason , "VolumeAutoGrow" )
110- assert .Equal (t , recorder .Events [0 ].Note , "pgData volume expansion to 2Gi requested for rhino/red." )
111- })
112-
113- t .Run ("ValueUpdateWithEvent" , func (t * testing.T ) {
114- recorder := events .NewRecorder (t , runtime .Scheme )
115- reconciler := & Reconciler {Recorder : recorder }
116- ctx , logs := setupLogCapture (ctx )
117-
118- value := reconciler .storeDesiredRequest (ctx , & cluster , "pgData" , "red" , "1Gi" , "" )
57+ }},
58+ Backups : v1beta1.Backups {
59+ PGBackRest : v1beta1.PGBackRestArchive {
60+ Repos : []v1beta1.PGBackRestRepo {{
61+ Name : "repo1" ,
62+ Volume : & v1beta1.RepoPVC {
63+ VolumeClaimSpec : v1beta1.VolumeClaimSpec {
64+ AccessModes : []corev1.PersistentVolumeAccessMode {corev1 .ReadWriteOnce },
65+ Resources : corev1.VolumeResourceRequirements {
66+ Limits : map [corev1.ResourceName ]resource.Quantity {
67+ corev1 .ResourceStorage : resource .MustParse ("1Gi" ),
68+ }}},
69+ },
70+ }, {
71+ Name : "repo2" ,
72+ }}},
73+ },
74+ },
75+ }
11976
120- assert .Equal (t , value , "1Gi" )
121- assert .Equal (t , len (* logs ), 0 )
122- assert .Equal (t , len (recorder .Events ), 1 )
123- assert .Equal (t , recorder .Events [0 ].Regarding .Name , cluster .Name )
124- assert .Equal (t , recorder .Events [0 ].Reason , "VolumeAutoGrow" )
125- assert .Equal (t , recorder .Events [0 ].Note , "pgData volume expansion to 1Gi requested for rhino/red." )
126- })
77+ testCases := []struct {
78+ tcName string
79+ Voltype string
80+ host string
81+ desiredRequest string
82+ desiredRequestBackup string
83+ expectedValue string
84+ expectedNumLogs int
85+ expectedLog string
86+ expectedNumEvents int
87+ expectedEvent string
88+ }{{
89+ tcName : "PGData-BadRequestNoBackup" ,
90+ Voltype : "pgData" , host : "red" ,
91+ desiredRequest : "woot" , desiredRequestBackup : "" , expectedValue : "" ,
92+ expectedNumEvents : 0 , expectedNumLogs : 1 ,
93+ expectedLog : "Unable to parse pgData volume request from status (woot) for rhino/red" ,
94+ }, {
95+ tcName : "PGData-BadRequestWithBackup" ,
96+ Voltype : "pgData" , host : "red" ,
97+ desiredRequest : "foo" , desiredRequestBackup : "1Gi" , expectedValue : "1Gi" ,
98+ expectedNumEvents : 0 , expectedNumLogs : 1 ,
99+ expectedLog : "Unable to parse pgData volume request from status (foo) for rhino/red" ,
100+ }, {
101+ tcName : "PGData-NoLimitNoEvent" ,
102+ Voltype : "pgData" , host : "blue" ,
103+ desiredRequest : "1Gi" , desiredRequestBackup : "" , expectedValue : "1Gi" ,
104+ expectedNumEvents : 0 , expectedNumLogs : 0 ,
105+ }, {
106+ tcName : "PGData-BadBackupRequest" ,
107+ Voltype : "pgData" , host : "red" ,
108+ desiredRequest : "2Gi" , desiredRequestBackup : "bar" , expectedValue : "2Gi" ,
109+ expectedNumEvents : 1 , expectedEvent : "pgData volume expansion to 2Gi requested for rhino/red." ,
110+ expectedNumLogs : 1 , expectedLog : "Unable to parse pgData volume request from status backup (bar) for rhino/red" ,
111+ }, {
112+ tcName : "PGData-ValueUpdateWithEvent" ,
113+ Voltype : "pgData" , host : "red" ,
114+ desiredRequest : "1Gi" , desiredRequestBackup : "" , expectedValue : "1Gi" ,
115+ expectedNumEvents : 1 , expectedEvent : "pgData volume expansion to 1Gi requested for rhino/red." ,
116+ expectedNumLogs : 0 ,
117+ }, {
118+ tcName : "Repo-BadRequestNoBackup" ,
119+ Voltype : "repo1" , host : "repo-host" ,
120+ desiredRequest : "woot" , desiredRequestBackup : "" , expectedValue : "" ,
121+ expectedNumEvents : 0 , expectedNumLogs : 1 ,
122+ expectedLog : "Unable to parse repo1 volume request from status (woot) for rhino/repo-host" ,
123+ }, {
124+ tcName : "Repo-BadRequestWithBackup" ,
125+ Voltype : "repo1" , host : "repo-host" ,
126+ desiredRequest : "foo" , desiredRequestBackup : "1Gi" , expectedValue : "1Gi" ,
127+ expectedNumEvents : 0 , expectedNumLogs : 1 ,
128+ expectedLog : "Unable to parse repo1 volume request from status (foo) for rhino/repo-host" ,
129+ }, {
130+ tcName : "Repo-NoLimitNoEvent" ,
131+ Voltype : "repo2" , host : "repo-host" ,
132+ desiredRequest : "1Gi" , desiredRequestBackup : "" , expectedValue : "1Gi" ,
133+ expectedNumEvents : 0 , expectedNumLogs : 0 ,
134+ }, {
135+ tcName : "Repo-BadBackupRequest" ,
136+ Voltype : "repo1" , host : "repo-host" ,
137+ desiredRequest : "2Gi" , desiredRequestBackup : "bar" , expectedValue : "2Gi" ,
138+ expectedNumEvents : 1 , expectedEvent : "repo1 volume expansion to 2Gi requested for rhino/repo-host." ,
139+ expectedNumLogs : 1 , expectedLog : "Unable to parse repo1 volume request from status backup (bar) for rhino/repo-host" ,
140+ }, {
141+ tcName : "Repo-ValueUpdateWithEvent" ,
142+ Voltype : "repo1" , host : "repo-host" ,
143+ desiredRequest : "1Gi" , desiredRequestBackup : "" , expectedValue : "1Gi" ,
144+ expectedNumEvents : 1 , expectedEvent : "repo1 volume expansion to 1Gi requested for rhino/repo-host." ,
145+ expectedNumLogs : 0 ,
146+ }}
127147
128- t .Run ("NoLimitNoEvent" , func (t * testing.T ) {
129- recorder := events .NewRecorder (t , runtime .Scheme )
130- reconciler := & Reconciler {Recorder : recorder }
131- ctx , logs := setupLogCapture (ctx )
148+ for _ , tc := range testCases {
149+ t .Run (tc .tcName , func (t * testing.T ) {
150+ recorder := events .NewRecorder (t , runtime .Scheme )
151+ reconciler := & Reconciler {Recorder : recorder }
152+ ctx , logs := setupLogCapture (ctx )
132153
133- value := reconciler .storeDesiredRequest (ctx , & cluster , "pgData" , "blue" , "1Gi" , "" )
154+ value := reconciler .storeDesiredRequest (
155+ ctx ,
156+ & cluster ,
157+ tc .Voltype ,
158+ tc .host ,
159+ tc .desiredRequest ,
160+ tc .desiredRequestBackup ,
161+ )
162+ assert .Equal (t , value , tc .expectedValue )
163+ assert .Equal (t , len (recorder .Events ), tc .expectedNumEvents )
164+ if tc .expectedNumEvents == 1 {
165+ assert .Equal (t , recorder .Events [0 ].Regarding .Name , cluster .Name )
166+ assert .Equal (t , recorder .Events [0 ].Reason , "VolumeAutoGrow" )
167+ assert .Equal (t , recorder .Events [0 ].Note , tc .expectedEvent )
168+ }
169+ assert .Equal (t , len (* logs ), tc .expectedNumLogs )
170+ if tc .expectedNumLogs == 1 {
171+ assert .Assert (t , cmp .Contains ((* logs )[0 ], tc .expectedLog ))
172+ }
173+ })
134174
135- assert .Equal (t , value , "1Gi" )
136- assert .Equal (t , len (* logs ), 0 )
137- assert .Equal (t , len (recorder .Events ), 0 )
138- })
175+ }
139176}
140177
141178func TestLimitIsSet (t * testing.T ) {
0 commit comments