@@ -21,6 +21,9 @@ import (
2121 "path/filepath"
2222 "testing"
2323
24+ "k8s.io/apimachinery/pkg/api/resource"
25+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
26+ "k8s.io/kops/pkg/apis/kops"
2427 "k8s.io/kops/pkg/assets"
2528 "k8s.io/kops/pkg/kubemanifest"
2629 "k8s.io/kops/pkg/model"
@@ -66,6 +69,51 @@ func Test_RunKubeSchedulerBuilder(t *testing.T) {
6669 }
6770}
6871
72+ func Test_MapToUnstructured_WithQpsAndBurst (t * testing.T ) {
73+ qps := resource .MustParse ("500" )
74+
75+ kubeScheduler := & kops.KubeSchedulerConfig {
76+ Qps : & qps ,
77+ Burst : 500 ,
78+ }
79+
80+ target := & unstructured.Unstructured {}
81+ target .SetKind ("KubeSchedulerConfiguration" )
82+ target .SetAPIVersion ("kubescheduler.config.k8s.io/v1" )
83+
84+ err := MapToUnstructured (kubeScheduler , target )
85+ if err != nil {
86+ t .Fatalf ("MapToUnstructured failed: %v" , err )
87+ }
88+
89+ qpsVal , found , err := unstructured .NestedFloat64 (target .Object , "clientConnection" , "qps" )
90+ if err != nil {
91+ t .Fatalf ("error getting qps: %v" , err )
92+ }
93+ if ! found {
94+ t .Error ("qps not found in target" )
95+ }
96+ if qpsVal != 500.0 {
97+ t .Errorf ("expected qps=500.0, got %v" , qpsVal )
98+ }
99+
100+ burst , found , err := unstructured .NestedFieldNoCopy (target .Object , "clientConnection" , "burst" )
101+ if err != nil {
102+ t .Fatalf ("error getting burst: %v" , err )
103+ }
104+ if ! found {
105+ t .Error ("burst not found in target" )
106+ }
107+
108+ burstVal , ok := burst .(int32 )
109+ if ! ok {
110+ t .Errorf ("expected burst to be int32, got %T: %v" , burst , burst )
111+ }
112+ if burstVal != 500 {
113+ t .Errorf ("expected burst=500, got %v" , burstVal )
114+ }
115+ }
116+
69117func LoadKopsModelContext (basedir string ) (* model.KopsModelContext , error ) {
70118 spec , err := testutils .LoadModel (basedir )
71119 if err != nil {
0 commit comments