diff --git a/apps/managedidentity/managedidentity.go b/apps/managedidentity/managedidentity.go index ca3de432..99b7530c 100644 --- a/apps/managedidentity/managedidentity.go +++ b/apps/managedidentity/managedidentity.go @@ -508,8 +508,17 @@ func (c Client) retry(maxRetries int, req *http.Request) (*http.Response, error) if err == nil && !contains(retrylist, resp.StatusCode) { return resp, nil } + // For IMDS, use exponential backoff based on attempt number + var waitTime time.Duration + if c.source == DefaultToIMDS { + // Exponential backoff with base of 1 second: 1s, 2s, 4s, 8s, etc. + waitTime = time.Second * time.Duration(1< 0 { + if len(actualDelays) != len(tt.expectedDelays) { + t.Fatalf("Expected %d delays, got %d. Actual delays: %v", len(tt.expectedDelays), len(actualDelays), actualDelays) + } + for i, expectedDelay := range tt.expectedDelays { + if actualDelays[i] < expectedDelay-500*time.Millisecond || actualDelays[i] > expectedDelay+500*time.Millisecond { + t.Fatalf("Expected delay %v at attempt %d, got %v", expectedDelay, i, actualDelays[i]) + } + } + } }) } } @@ -964,7 +1027,7 @@ func TestAzureArcErrors(t *testing.T) { }, { name: "Invalid file path", - headerValue: "Basic realm=" + filepath.Join("path", "to", secretKey), + headerValue: basicRealm + filepath.Join("path", "to", secretKey), expectedError: "invalid file path, expected " + testCaseFilePath + ", got " + filepath.Join("path", "to"), }, {