@@ -666,17 +666,6 @@ func TestGetCSIDeploymentYAML_AutosupportYAML_EnableButSilenceAutosupport(t *tes
666666}
667667
668668func TestGetCSIDeploymentYAML_K8sAPIQPS (t * testing.T ) {
669- const k8sAPIQPS = 100
670- args := & DeploymentYAMLArguments {
671- K8sAPIQPS : k8sAPIQPS ,
672- }
673- yamlData := GetCSIDeploymentYAML (args )
674- deployment := appsv1.Deployment {}
675- err := yaml .Unmarshal ([]byte (yamlData ), & deployment )
676- if err != nil {
677- t .Fatalf ("expected valid YAML, got %s" , yamlData )
678- }
679-
680669 containerHasArgument := func (container v1.Container , expectedArg string ) bool {
681670 for _ , arg := range container .Args {
682671 if arg == expectedArg {
@@ -686,23 +675,85 @@ func TestGetCSIDeploymentYAML_K8sAPIQPS(t *testing.T) {
686675 return false
687676 }
688677
689- // trident-main container flag validation
690- tridentMainQPSFlag := fmt .Sprintf ("--k8s_api_qps=%d" , k8sAPIQPS )
691- tridentMainBurstFlag := fmt .Sprintf ("--k8s_api_burst=%d" , getBurstValueForQPS (k8sAPIQPS ))
692- tridentMainContainer := deployment .Spec .Template .Spec .Containers [0 ]
693- assert .True (t , containerHasArgument (tridentMainContainer , tridentMainQPSFlag ),
694- "expected trident-main to have k8s_api_qps flag" )
695- assert .True (t , containerHasArgument (tridentMainContainer , tridentMainBurstFlag ),
696- "expected trident-main to have k8s_api_burst flag" )
697-
698- sidecarQPSFlag := fmt .Sprintf ("--kube-api-qps=%d" , k8sAPIQPS )
699- sidecarBurstFlag := fmt .Sprintf ("--kube-api-burst=%d" , getBurstValueForQPS (k8sAPIQPS ))
700- // trident-main and trident-autosupport containers will not have sidecar flags
701- for _ , container := range deployment .Spec .Template .Spec .Containers [2 :] {
702- assert .True (t , containerHasArgument (container , sidecarQPSFlag ),
703- "expected sidecar %v to have kube-api-qps flag" , container .Name )
704- assert .True (t , containerHasArgument (container , sidecarBurstFlag ),
705- "expected sidecar %v to have kube-api-burst flag" , container .Name )
678+ tests := []struct {
679+ name string
680+ k8sAPIQPS int
681+ expectedTridentQPS string
682+ expectedTridentBurst int
683+ expectedSidecarQPS string
684+ expectedSidecarBurst int
685+ }{
686+ {
687+ name : "default when not specified" ,
688+ k8sAPIQPS : 0 ,
689+ expectedTridentQPS : "100.0" ,
690+ expectedTridentBurst : 200 ,
691+ expectedSidecarQPS : "25.0" ,
692+ expectedSidecarBurst : 50 ,
693+ },
694+ {
695+ name : "explicit value matching default" ,
696+ k8sAPIQPS : 100 ,
697+ expectedTridentQPS : "100.0" ,
698+ expectedTridentBurst : 200 ,
699+ expectedSidecarQPS : "25.0" ,
700+ expectedSidecarBurst : 50 ,
701+ },
702+ {
703+ name : "higher explicit value" ,
704+ k8sAPIQPS : 200 ,
705+ expectedTridentQPS : "200.0" ,
706+ expectedTridentBurst : 400 ,
707+ expectedSidecarQPS : "50.0" ,
708+ expectedSidecarBurst : 100 ,
709+ },
710+ {
711+ name : "minimum clamping for Trident" ,
712+ k8sAPIQPS : 5 ,
713+ expectedTridentQPS : "10.0" ,
714+ expectedTridentBurst : 20 ,
715+ expectedSidecarQPS : "10.0" ,
716+ expectedSidecarBurst : 20 ,
717+ },
718+ {
719+ name : "minimum clamping for sidecar only" ,
720+ k8sAPIQPS : 20 ,
721+ expectedTridentQPS : "20.0" ,
722+ expectedTridentBurst : 40 ,
723+ expectedSidecarQPS : "10.0" , // 20/4=5 clamped to minimum 10
724+ expectedSidecarBurst : 20 ,
725+ },
726+ }
727+
728+ for _ , tt := range tests {
729+ t .Run (tt .name , func (t * testing.T ) {
730+ args := & DeploymentYAMLArguments {
731+ K8sAPIQPS : tt .k8sAPIQPS ,
732+ }
733+ yamlData := GetCSIDeploymentYAML (args )
734+ deployment := appsv1.Deployment {}
735+ err := yaml .Unmarshal ([]byte (yamlData ), & deployment )
736+ require .NoError (t , err , "expected valid YAML" )
737+
738+ // Trident-main container flag validation (first container)
739+ tridentMainQPSFlag := fmt .Sprintf ("--k8s_api_qps=%s" , tt .expectedTridentQPS )
740+ tridentMainBurstFlag := fmt .Sprintf ("--k8s_api_burst=%d" , tt .expectedTridentBurst )
741+ tridentMainContainer := deployment .Spec .Template .Spec .Containers [0 ]
742+ assert .True (t , containerHasArgument (tridentMainContainer , tridentMainQPSFlag ),
743+ "expected trident-main to have %s" , tridentMainQPSFlag )
744+ assert .True (t , containerHasArgument (tridentMainContainer , tridentMainBurstFlag ),
745+ "expected trident-main to have %s" , tridentMainBurstFlag )
746+
747+ // Sidecar containers flag validation (skip trident-main and trident-autosupport)
748+ sidecarQPSFlag := fmt .Sprintf ("--kube-api-qps=%s" , tt .expectedSidecarQPS )
749+ sidecarBurstFlag := fmt .Sprintf ("--kube-api-burst=%d" , tt .expectedSidecarBurst )
750+ for _ , container := range deployment .Spec .Template .Spec .Containers [2 :] {
751+ assert .True (t , containerHasArgument (container , sidecarQPSFlag ),
752+ "expected sidecar %s to have %s" , container .Name , sidecarQPSFlag )
753+ assert .True (t , containerHasArgument (container , sidecarBurstFlag ),
754+ "expected sidecar %s to have %s" , container .Name , sidecarBurstFlag )
755+ }
756+ })
706757 }
707758}
708759
0 commit comments