@@ -246,6 +246,67 @@ func TestPubReconcile(t *testing.T) {
246
246
}
247
247
},
248
248
},
249
+ {
250
+ name : "select matched pub.annotations[pub.kruise.io/protect-total-replicas]=15 and selector, selector and maxUnavailable 30%" ,
251
+ getPods : func (rs ... * apps.ReplicaSet ) []* corev1.Pod {
252
+ var matchedPods []* corev1.Pod
253
+ for i := 0 ; int32 (i ) < 5 ; i ++ {
254
+ pod := podDemo .DeepCopy ()
255
+ pod .OwnerReferences = []metav1.OwnerReference {
256
+ {
257
+ APIVersion : "apps/v1" ,
258
+ Kind : "ReplicaSet" ,
259
+ Name : rs [0 ].Name ,
260
+ UID : rs [0 ].UID ,
261
+ Controller : utilpointer .BoolPtr (true ),
262
+ },
263
+ }
264
+ pod .Name = fmt .Sprintf ("%s-%d" , pod .Name , i )
265
+ matchedPods = append (matchedPods , pod )
266
+ }
267
+ for i := 5 ; int32 (i ) < 10 ; i ++ {
268
+ pod := podDemo .DeepCopy ()
269
+ pod .OwnerReferences = []metav1.OwnerReference {
270
+ {
271
+ APIVersion : "apps/v1" ,
272
+ Kind : "ReplicaSet" ,
273
+ Name : rs [1 ].Name ,
274
+ UID : rs [1 ].UID ,
275
+ Controller : utilpointer .BoolPtr (true ),
276
+ },
277
+ }
278
+ pod .Name = fmt .Sprintf ("%s-%d" , pod .Name , i )
279
+ matchedPods = append (matchedPods , pod )
280
+ }
281
+ return matchedPods
282
+ },
283
+ getDeployment : func () * apps.Deployment {
284
+ obj := deploymentDemo .DeepCopy ()
285
+ obj .Spec .Replicas = utilpointer .Int32 (0 )
286
+ return obj
287
+ },
288
+ getReplicaSet : func () []* apps.ReplicaSet {
289
+ obj1 := replicaSetDemo .DeepCopy ()
290
+ obj1 .Name = "nginx-rs-1"
291
+ obj2 := replicaSetDemo .DeepCopy ()
292
+ obj2 .Name = "nginx-rs-2"
293
+ obj2 .UID = "a34b0453-3426-4685-a79c-752e7062a523"
294
+ return []* apps.ReplicaSet {obj1 , obj2 }
295
+ },
296
+ getPub : func () * policyv1alpha1.PodUnavailableBudget {
297
+ pub := pubDemo .DeepCopy ()
298
+ pub .Annotations [policyv1alpha1 .PubProtectTotalReplicasAnnotation ] = "15"
299
+ return pub
300
+ },
301
+ expectPubStatus : func () policyv1alpha1.PodUnavailableBudgetStatus {
302
+ return policyv1alpha1.PodUnavailableBudgetStatus {
303
+ UnavailableAllowed : 0 ,
304
+ CurrentAvailable : 10 ,
305
+ DesiredAvailable : 10 ,
306
+ TotalReplicas : 15 ,
307
+ }
308
+ },
309
+ },
249
310
{
250
311
name : "select matched deployment(replicas=10,maxSurge=30%,maxUnavailable=0), and pub(selector,maxUnavailable=30%)" ,
251
312
getPods : func (rs ... * apps.ReplicaSet ) []* corev1.Pod {
@@ -466,6 +527,56 @@ func TestPubReconcile(t *testing.T) {
466
527
}
467
528
},
468
529
},
530
+ {
531
+ name : "select matched deployment(replicas=1,maxSurge=0,maxUnavailable=30%), pub.kruise.io/protect-total-replicas=15 and pub(targetRef,maxUnavailable=30%)" ,
532
+ getPods : func (rs ... * apps.ReplicaSet ) []* corev1.Pod {
533
+ var matchedPods []* corev1.Pod
534
+ for i := 0 ; int32 (i ) < 10 ; i ++ {
535
+ pod := podDemo .DeepCopy ()
536
+ pod .OwnerReferences = []metav1.OwnerReference {
537
+ {
538
+ APIVersion : "apps/v1" ,
539
+ Kind : "ReplicaSet" ,
540
+ Name : rs [0 ].Name ,
541
+ UID : rs [0 ].UID ,
542
+ Controller : utilpointer .BoolPtr (true ),
543
+ },
544
+ }
545
+ pod .Name = fmt .Sprintf ("%s-%d" , pod .Name , i )
546
+ matchedPods = append (matchedPods , pod )
547
+ }
548
+ return matchedPods
549
+ },
550
+ getDeployment : func () * apps.Deployment {
551
+ obj := deploymentDemo .DeepCopy ()
552
+ obj .Spec .Replicas = utilpointer .Int32 (1 )
553
+ return obj
554
+ },
555
+ getReplicaSet : func () []* apps.ReplicaSet {
556
+ obj1 := replicaSetDemo .DeepCopy ()
557
+ obj1 .Name = "nginx-rs-1"
558
+ return []* apps.ReplicaSet {obj1 }
559
+ },
560
+ getPub : func () * policyv1alpha1.PodUnavailableBudget {
561
+ pub := pubDemo .DeepCopy ()
562
+ pub .Spec .Selector = nil
563
+ pub .Spec .TargetReference = & policyv1alpha1.TargetReference {
564
+ APIVersion : "apps/v1" ,
565
+ Kind : "Deployment" ,
566
+ Name : "nginx" ,
567
+ }
568
+ pub .Annotations [policyv1alpha1 .PubProtectTotalReplicasAnnotation ] = "15"
569
+ return pub
570
+ },
571
+ expectPubStatus : func () policyv1alpha1.PodUnavailableBudgetStatus {
572
+ return policyv1alpha1.PodUnavailableBudgetStatus {
573
+ UnavailableAllowed : 0 ,
574
+ CurrentAvailable : 10 ,
575
+ DesiredAvailable : 10 ,
576
+ TotalReplicas : 15 ,
577
+ }
578
+ },
579
+ },
469
580
{
470
581
name : "select matched deployment(replicas=1,maxSurge=0,maxUnavailable=30%), and pub(targetRef,maxUnavailable=30%)" ,
471
582
getPods : func (rs ... * apps.ReplicaSet ) []* corev1.Pod {
@@ -1114,7 +1225,7 @@ func TestPubReconcile(t *testing.T) {
1114
1225
getPub : func () * policyv1alpha1.PodUnavailableBudget {
1115
1226
pub := pubDemo .DeepCopy ()
1116
1227
1117
- pub .Annotations [policyv1alpha1 .PubProtectTotalReplicas ] = "50"
1228
+ pub .Annotations [policyv1alpha1 .PubProtectTotalReplicasAnnotation ] = "50"
1118
1229
for i := 0 ; i < 10 ; i ++ {
1119
1230
if i >= 0 && i < 5 {
1120
1231
pub .Status .UnavailablePods [fmt .Sprintf ("test-pod-%d" , i )] = metav1.Time {Time : time .Now ().Add (- 10 * time .Second )}
0 commit comments