@@ -18,6 +18,7 @@ package azure
1818
1919import (
2020 "fmt"
21+ "os"
2122 "reflect"
2223 "strings"
2324 "testing"
@@ -366,3 +367,97 @@ func TestFetchAutoAsgsVmss(t *testing.T) {
366367 assert .Equal (t , minVal , asgs [0 ].MinSize ())
367368 assert .Equal (t , maxVal , asgs [0 ].MaxSize ())
368369}
370+
371+ func TestInitializeCloudProviderRateLimitConfigWithNoConfigReturnsNoError (t * testing.T ) {
372+ err := InitializeCloudProviderRateLimitConfig (nil )
373+ assert .Nil (t , err , "err should be nil" )
374+ }
375+
376+ func TestInitializeCloudProviderRateLimitConfigWithNoRateLimitSettingsReturnsDefaults (t * testing.T ) {
377+ emptyConfig := & CloudProviderRateLimitConfig {}
378+ err := InitializeCloudProviderRateLimitConfig (emptyConfig )
379+
380+ assert .NoError (t , err )
381+ assert .Equal (t , emptyConfig .CloudProviderRateLimitQPS , rateLimitQPSDefault )
382+ assert .Equal (t , emptyConfig .CloudProviderRateLimitBucket , rateLimitBucketDefault )
383+ assert .Equal (t , emptyConfig .CloudProviderRateLimitQPSWrite , rateLimitQPSDefault )
384+ assert .Equal (t , emptyConfig .CloudProviderRateLimitBucketWrite , rateLimitBucketDefault )
385+ }
386+
387+ func TestInitializeCloudProviderRateLimitConfigWithReadRateLimitSettingsFromEnv (t * testing.T ) {
388+ emptyConfig := & CloudProviderRateLimitConfig {}
389+ var rateLimitReadQPS float32 = 3.0
390+ rateLimitReadBuckets := 10
391+ os .Setenv (rateLimitReadQPSEnvVar , fmt .Sprintf ("%.1f" , rateLimitReadQPS ))
392+ os .Setenv (rateLimitReadBucketsEnvVar , fmt .Sprintf ("%d" , rateLimitReadBuckets ))
393+
394+ err := InitializeCloudProviderRateLimitConfig (emptyConfig )
395+ assert .NoError (t , err )
396+ assert .Equal (t , emptyConfig .CloudProviderRateLimitQPS , rateLimitReadQPS )
397+ assert .Equal (t , emptyConfig .CloudProviderRateLimitBucket , rateLimitReadBuckets )
398+ assert .Equal (t , emptyConfig .CloudProviderRateLimitQPSWrite , rateLimitReadQPS )
399+ assert .Equal (t , emptyConfig .CloudProviderRateLimitBucketWrite , rateLimitReadBuckets )
400+
401+ os .Unsetenv (rateLimitReadBucketsEnvVar )
402+ os .Unsetenv (rateLimitReadQPSEnvVar )
403+ }
404+
405+ func TestInitializeCloudProviderRateLimitConfigWithReadAndWriteRateLimitSettingsFromEnv (t * testing.T ) {
406+ emptyConfig := & CloudProviderRateLimitConfig {}
407+ var rateLimitReadQPS float32 = 3.0
408+ rateLimitReadBuckets := 10
409+ var rateLimitWriteQPS float32 = 6.0
410+ rateLimitWriteBuckets := 20
411+
412+ os .Setenv (rateLimitReadQPSEnvVar , fmt .Sprintf ("%.1f" , rateLimitReadQPS ))
413+ os .Setenv (rateLimitReadBucketsEnvVar , fmt .Sprintf ("%d" , rateLimitReadBuckets ))
414+ os .Setenv (rateLimitWriteQPSEnvVar , fmt .Sprintf ("%.1f" , rateLimitWriteQPS ))
415+ os .Setenv (rateLimitWriteBucketsEnvVar , fmt .Sprintf ("%d" , rateLimitWriteBuckets ))
416+
417+ err := InitializeCloudProviderRateLimitConfig (emptyConfig )
418+
419+ assert .NoError (t , err )
420+ assert .Equal (t , emptyConfig .CloudProviderRateLimitQPS , rateLimitReadQPS )
421+ assert .Equal (t , emptyConfig .CloudProviderRateLimitBucket , rateLimitReadBuckets )
422+ assert .Equal (t , emptyConfig .CloudProviderRateLimitQPSWrite , rateLimitWriteQPS )
423+ assert .Equal (t , emptyConfig .CloudProviderRateLimitBucketWrite , rateLimitWriteBuckets )
424+
425+ os .Unsetenv (rateLimitReadQPSEnvVar )
426+ os .Unsetenv (rateLimitReadBucketsEnvVar )
427+ os .Unsetenv (rateLimitWriteQPSEnvVar )
428+ os .Unsetenv (rateLimitWriteBucketsEnvVar )
429+ }
430+
431+ func TestInitializeCloudProviderRateLimitConfigWithReadAndWriteRateLimitAlreadySetInConfig (t * testing.T ) {
432+ var rateLimitReadQPS float32 = 3.0
433+ rateLimitReadBuckets := 10
434+ var rateLimitWriteQPS float32 = 6.0
435+ rateLimitWriteBuckets := 20
436+
437+ configWithRateLimits := & CloudProviderRateLimitConfig {
438+ RateLimitConfig : azclients.RateLimitConfig {
439+ CloudProviderRateLimitBucket : rateLimitReadBuckets ,
440+ CloudProviderRateLimitBucketWrite : rateLimitWriteBuckets ,
441+ CloudProviderRateLimitQPS : rateLimitReadQPS ,
442+ CloudProviderRateLimitQPSWrite : rateLimitWriteQPS ,
443+ },
444+ }
445+
446+ os .Setenv (rateLimitReadQPSEnvVar , "99" )
447+ os .Setenv (rateLimitReadBucketsEnvVar , "99" )
448+ os .Setenv (rateLimitWriteQPSEnvVar , "99" )
449+ os .Setenv (rateLimitWriteBucketsEnvVar , "99" )
450+
451+ err := InitializeCloudProviderRateLimitConfig (configWithRateLimits )
452+
453+ assert .NoError (t , err )
454+ assert .Equal (t , configWithRateLimits .CloudProviderRateLimitQPS , rateLimitReadQPS )
455+ assert .Equal (t , configWithRateLimits .CloudProviderRateLimitBucket , rateLimitReadBuckets )
456+ assert .Equal (t , configWithRateLimits .CloudProviderRateLimitQPSWrite , rateLimitWriteQPS )
457+ assert .Equal (t , configWithRateLimits .CloudProviderRateLimitBucketWrite , rateLimitWriteBuckets )
458+
459+ os .Unsetenv (rateLimitReadQPSEnvVar )
460+ os .Unsetenv (rateLimitReadBucketsEnvVar )
461+ os .Unsetenv (rateLimitWriteQPSEnvVar )
462+ os .Unsetenv (rateLimitWriteBucketsEnvVar )
463+ }
0 commit comments