Skip to content

Commit

Permalink
fix: add custom wait for retry logic (#141)
Browse files Browse the repository at this point in the history
Issue #, if available:

*Description of changes:*
Add a custom wait logic as the wait for goexec has an assertion, that
marks the test fail in case of timeout.
eventually is usually also used with an assertion.
Without the wait logic the retry wont work due to assertion

*Testing done:*



- [ ] I've reviewed the guidance in CONTRIBUTING.md


#### License Acceptance

By submitting this pull request, I confirm that my contribution is made
under the terms of the Apache 2.0 license.

Signed-off-by: Shubharanshu Mahapatra <shubhum@amazon.com>
  • Loading branch information
Shubhranshu153 committed Mar 28, 2024
1 parent 37fc4ec commit 3b69319
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions tests/tests.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"os"
"path/filepath"
"strings"
"time"

"github.com/onsi/ginkgo/v2"
"github.com/onsi/gomega"
Expand Down Expand Up @@ -105,15 +106,23 @@ func SetupLocalRegistry(o *option.Option) {
_, name, _ := strings.Cut(ref, "/")
// allow up to a minute for remote pulls to account for external network
// latency/throughput issues or throttling (default is 10 seconds)
// retry pull for 3 times
// retry pull for 3 times.
var session *gexec.Session
exitCode := -1
for i := 0; i < retryPull; i++ {
session = command.New(o, "pull", ref).WithTimeoutInSeconds(30).WithoutCheckingExitCode().Run()
if session.ExitCode() == 0 {
session = command.New(o, "pull", ref).WithoutWait().Run()
select {
case <-session.Exited:
exitCode = session.ExitCode()
case <-time.After(30 * time.Second):
fmt.Printf("Timeout occurred, command hasn't exited yet (attempt %d)", i)
session.Kill()
}
if exitCode == 0 {
break
}
}
if session.ExitCode() != 0 {
if exitCode != 0 {
ginkgo.Fail("Failed to pull image " + ref)
}

Expand Down

0 comments on commit 3b69319

Please sign in to comment.