@@ -35,6 +35,13 @@ import (
3535 "sigs.k8s.io/controller-runtime/pkg/client"
3636)
3737
38+ func fmtNumReplicas (nr * int32 ) string {
39+ if nr == nil {
40+ return "<nil>"
41+ }
42+ return fmt .Sprintf ("%d" , * nr )
43+ }
44+
3845var _ = Describe ("Actuator" , func () {
3946 var (
4047 ctx context.Context
@@ -341,15 +348,15 @@ var _ = Describe("Actuator", func() {
341348 },
342349 Status : llmdVariantAutoscalingV1alpha1.VariantAutoscalingStatus {
343350 DesiredOptimizedAlloc : llmdVariantAutoscalingV1alpha1.OptimizedAlloc {
344- NumReplicas : 4 ,
351+ NumReplicas : ctrlutils . Ptr ( int32 ( 4 )) ,
345352 Accelerator : "A100" ,
346353 },
347354 },
348355 }
349356
350357 Expect (k8sClient .Create (ctx , deployment )).To (Succeed ())
351358 Expect (k8sClient .Create (ctx , va )).To (Succeed ())
352- va .Status .DesiredOptimizedAlloc .NumReplicas = 4
359+ va .Status .DesiredOptimizedAlloc .NumReplicas = ctrlutils . Ptr ( int32 ( 4 ))
353360 va .Status .DesiredOptimizedAlloc .Accelerator = "A100"
354361 })
355362
@@ -359,7 +366,7 @@ var _ = Describe("Actuator", func() {
359366 })
360367
361368 It ("should emit metrics successfully when desired replicas > 0" , func () {
362- fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %d \n " , va .Name , va .Status .DesiredOptimizedAlloc .NumReplicas )
369+ fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %s \n " , va .Name , fmtNumReplicas ( va .Status .DesiredOptimizedAlloc .NumReplicas ) )
363370 err := actuator .EmitMetrics (ctx , va )
364371 Expect (err ).NotTo (HaveOccurred ())
365372
@@ -368,9 +375,9 @@ var _ = Describe("Actuator", func() {
368375 // but we can verify the method completed without error
369376 })
370377
371- It ("should skip metrics emission when desired replicas is 0 " , func () {
372- va .Status .DesiredOptimizedAlloc .NumReplicas = 0
373- fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %d \n " , va .Name , va .Status .DesiredOptimizedAlloc .NumReplicas )
378+ It ("should skip metrics emission when NumReplicas is nil (no decision) " , func () {
379+ va .Status .DesiredOptimizedAlloc .NumReplicas = nil
380+ fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %s \n " , va .Name , fmtNumReplicas ( va .Status .DesiredOptimizedAlloc .NumReplicas ) )
374381 err := actuator .EmitMetrics (ctx , va )
375382 Expect (err ).NotTo (HaveOccurred ())
376383
@@ -389,7 +396,7 @@ var _ = Describe("Actuator", func() {
389396 Namespace : namespace ,
390397 }, & dep )
391398 }).Should (HaveOccurred ())
392- fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %d \n " , va .Name , va .Status .DesiredOptimizedAlloc .NumReplicas )
399+ fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %s \n " , va .Name , fmtNumReplicas ( va .Status .DesiredOptimizedAlloc .NumReplicas ) )
393400 err := actuator .EmitMetrics (ctx , va )
394401 Expect (err ).NotTo (HaveOccurred ())
395402
@@ -401,7 +408,7 @@ var _ = Describe("Actuator", func() {
401408 // This test verifies that metrics emission errors don't fail the method
402409 // We can't easily simulate a metrics emission error without mocking,
403410 // but we can verify the error handling logic exists
404- fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %d \n " , va .Name , va .Status .DesiredOptimizedAlloc .NumReplicas )
411+ fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %s \n " , va .Name , fmtNumReplicas ( va .Status .DesiredOptimizedAlloc .NumReplicas ) )
405412 err := actuator .EmitMetrics (ctx , va )
406413 Expect (err ).NotTo (HaveOccurred ())
407414 })
@@ -460,15 +467,15 @@ var _ = Describe("Actuator", func() {
460467 },
461468 Status : llmdVariantAutoscalingV1alpha1.VariantAutoscalingStatus {
462469 DesiredOptimizedAlloc : llmdVariantAutoscalingV1alpha1.OptimizedAlloc {
463- NumReplicas : 3 ,
470+ NumReplicas : ctrlutils . Ptr ( int32 ( 3 )) ,
464471 Accelerator : "A100" ,
465472 },
466473 },
467474 }
468475
469476 Expect (k8sClient .Create (ctx , deployment )).To (Succeed ())
470477 Expect (k8sClient .Create (ctx , va )).To (Succeed ())
471- va .Status .DesiredOptimizedAlloc .NumReplicas = 3
478+ va .Status .DesiredOptimizedAlloc .NumReplicas = ctrlutils . Ptr ( int32 ( 3 ))
472479 va .Status .DesiredOptimizedAlloc .Accelerator = "A100"
473480
474481 })
@@ -480,20 +487,20 @@ var _ = Describe("Actuator", func() {
480487 })
481488
482489 It ("should verify that metrics emitter can emit scaling metrics" , func () {
483- fmt .Printf ("Emitting scaling metrics for variantAutoscaling - name: %s\n numReplicas: %d \n " , va .Name , va .Status .DesiredOptimizedAlloc .NumReplicas )
490+ fmt .Printf ("Emitting scaling metrics for variantAutoscaling - name: %s\n numReplicas: %s \n " , va .Name , fmtNumReplicas ( va .Status .DesiredOptimizedAlloc .NumReplicas ) )
484491 err := actuator .MetricsEmitter .EmitReplicaScalingMetrics (ctx , va , "up" , "optimization" )
485492 Expect (err ).NotTo (HaveOccurred ())
486493 })
487494
488495 It ("should verify that metrics emitter can emit replica metrics" , func () {
489- fmt .Printf ("Emitting replica metrics for variantAutoscaling - name: %s\n numReplicas: %d \n " , va .Name , va .Status .DesiredOptimizedAlloc .NumReplicas )
496+ fmt .Printf ("Emitting replica metrics for variantAutoscaling - name: %s\n numReplicas: %s \n " , va .Name , fmtNumReplicas ( va .Status .DesiredOptimizedAlloc .NumReplicas ) )
490497 err := actuator .MetricsEmitter .EmitReplicaMetrics (ctx , va , 1 , 3 , "A100" )
491498 Expect (err ).NotTo (HaveOccurred ())
492499 })
493500
494501 It ("should verify full metric emission workflow" , func () {
495502 // Test the complete workflow
496- fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %d \n " , va .Name , va .Status .DesiredOptimizedAlloc .NumReplicas )
503+ fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %s \n " , va .Name , fmtNumReplicas ( va .Status .DesiredOptimizedAlloc .NumReplicas ) )
497504 err := actuator .EmitMetrics (ctx , va )
498505 Expect (err ).NotTo (HaveOccurred ())
499506
@@ -520,9 +527,9 @@ var _ = Describe("Actuator", func() {
520527 MaxReplicas : 2 ,
521528 },
522529 Status : llmdVariantAutoscalingV1alpha1.VariantAutoscalingStatus {
523- // DesiredOptimizedAlloc.NumReplicas will be 0 by default
530+ // DesiredOptimizedAlloc.NumReplicas is nil (no decision yet)
524531 DesiredOptimizedAlloc : llmdVariantAutoscalingV1alpha1.OptimizedAlloc {
525- NumReplicas : 0 , // This should cause EmitMetrics to skip
532+ NumReplicas : nil , // This should cause EmitMetrics to skip
526533 Accelerator : "A100" ,
527534 },
528535 },
@@ -532,9 +539,9 @@ var _ = Describe("Actuator", func() {
532539 defer func () {
533540 Expect (client .IgnoreNotFound (k8sClient .Delete (ctx , va ))).To (Succeed ())
534541 }()
535- fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %d \n " , va .Name , va .Status .DesiredOptimizedAlloc .NumReplicas )
542+ fmt .Printf ("Emitting metrics for variantAutoscaling - name: %s\n numReplicas: %s \n " , va .Name , fmtNumReplicas ( va .Status .DesiredOptimizedAlloc .NumReplicas ) )
536543 err := actuator .EmitMetrics (ctx , va )
537- Expect (err ).NotTo (HaveOccurred ()) // Should skip metrics emission due to 0 replicas
544+ Expect (err ).NotTo (HaveOccurred ()) // Should skip metrics emission due to nil NumReplicas
538545 })
539546 })
540547
@@ -591,15 +598,15 @@ var _ = Describe("Actuator", func() {
591598 },
592599 Status : llmdVariantAutoscalingV1alpha1.VariantAutoscalingStatus {
593600 DesiredOptimizedAlloc : llmdVariantAutoscalingV1alpha1.OptimizedAlloc {
594- NumReplicas : 5 ,
601+ NumReplicas : ctrlutils . Ptr ( int32 ( 5 )) ,
595602 Accelerator : "A100" ,
596603 },
597604 },
598605 }
599606
600607 Expect (k8sClient .Create (ctx , deployment )).To (Succeed ())
601608 Expect (k8sClient .Create (ctx , va )).To (Succeed ())
602- va .Status .DesiredOptimizedAlloc .NumReplicas = 5
609+ va .Status .DesiredOptimizedAlloc .NumReplicas = ctrlutils . Ptr ( int32 ( 5 ))
603610 va .Status .DesiredOptimizedAlloc .Accelerator = "A100"
604611
605612 })
0 commit comments