@@ -24,6 +24,7 @@ import (
2424 "github.com/agiledragon/gomonkey/v2"
2525 "github.com/stretchr/testify/assert"
2626 "istio.io/istio/pkg/security"
27+ "istio.io/istio/pkg/test/util/retry"
2728
2829 camock "kmesh.net/kmesh/pkg/controller/security/mock"
2930)
@@ -165,25 +166,27 @@ func runTestretryFetchCert(t *testing.T) {
165166 patches2 .Reset ()
166167
167168 secretManager .SendCertRequest (identity , RETRY )
168- time .Sleep (2000 * time .Millisecond )
169- for {
170- cert := secretManager .GetCert (identity )
171- if cert != nil {
172- secretManager .certsCache .mu .RLock ()
173- hasCert := cert .cert != nil
174- secretManager .certsCache .mu .RUnlock ()
175- if hasCert {
176- break
169+
170+ err = retry .UntilSuccess (
171+ func () error {
172+ cert := secretManager .GetCert (identity )
173+ if cert != nil {
174+ secretManager .certsCache .mu .RLock ()
175+ hasCert := cert .cert != nil
176+ secretManager .certsCache .mu .RUnlock ()
177+ if hasCert {
178+ return nil
179+ }
177180 }
178- }
179- time .Sleep (100 * time .Millisecond )
181+ return fmt .Errorf ("cert not found for identity %s" , identity )
182+ },
183+ retry .Delay (100 * time .Millisecond ),
184+ retry .Timeout (6 * time .Second ),
185+ )
186+
187+ if err != nil {
188+ t .Errorf ("Failed to fetch cert after retry: %v" , err )
180189 }
181190
182- cert := secretManager .GetCert (identity )
183- assert .NotNil (t , cert )
184- secretManager .certsCache .mu .RLock ()
185- assert .NotNil (t , cert .cert )
186- secretManager .certsCache .mu .RUnlock ()
187-
188191 close (stopCh )
189192}
0 commit comments