Skip to content

Commit 0a2ee24

Browse files
committed
Implement retry logic for network listing on 429 status code
Signed-off-by: Denis Arslanbekov <denis@arslanbekov.com>
1 parent 7fe7ed5 commit 0a2ee24

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

e2e/client_test.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,22 @@ func TestCreateNetwork(t *testing.T) {
272272
timestamp := time.Now().Unix()
273273
testName := fmt.Sprintf("test-%d-%d", timestamp, time.Now().Nanosecond())
274274

275-
networks, err := c.Networks.List()
275+
// List networks with 429 retry/backoff
276+
var networks []cloudconnexa.Network
277+
var err error
278+
for backoff, attempts := 200*time.Millisecond, 0; attempts < 8; attempts++ {
279+
networks, err = c.Networks.List()
280+
if err == nil {
281+
break
282+
}
283+
var apiErr *cloudconnexa.ErrClientResponse
284+
if errors.As(err, &apiErr) && apiErr.StatusCode() == 429 {
285+
time.Sleep(backoff)
286+
backoff *= 2
287+
continue
288+
}
289+
break
290+
}
276291
require.NoError(t, err)
277292
for _, n := range networks {
278293
require.NotEqual(t, testName, n.Name, "Network with name %s already exists", testName)

0 commit comments

Comments
 (0)