1818// Copyright holder is ArangoDB GmbH, Cologne, Germany
1919//
2020// Author Ewout Prangsma
21+ // Author Adam Janikowski
2122//
2223
2324package test
@@ -33,8 +34,6 @@ import (
3334 "time"
3435
3536 driver "github.com/arangodb/go-driver"
36-
37- errors "github.com/pkg/errors"
3837)
3938
4039var backupAPIAvailable * bool
@@ -344,40 +343,34 @@ func TestBackupDeleteNonExisting(t *testing.T) {
344343 }
345344}
346345
347- func waitForServerRestart (ctx context.Context , c driver.Client , t * testing.T ) {
346+ func waitForServerRestart (ctx context.Context , c driver.Client , t * testing.T ) driver.Client {
347+ // Wait for server to go down
348+ newRetryFunc (func () error {
349+ c = createClientFromEnv (t , false )
350+ nCtx , cancel := context .WithTimeout (ctx , 2 * time .Second )
351+ defer cancel ()
348352
349- serverWasDown := false
353+ if _ , err := c .Version (nCtx ); err != nil {
354+ return interrupt {}
355+ }
350356
351- saveDriver := driver . WithStack
352- driver . WithStack = errors . WithStack
357+ return nil
358+ }). RetryT ( t , 100 * time . Millisecond , 15 * time . Second )
353359
354- for {
355- vctx , cancel := context .WithTimeout (ctx , 50 * time .Millisecond )
356- if _ , err := c .Version (vctx ); err != nil {
357- fmt .Printf ("Error Response: %v\n " , err )
358- fmt .Printf ("Error Response: %+v\n " , err )
359- serverWasDown = true
360- } else {
361- if serverWasDown {
362- fmt .Print ("Leaving successfully\n " )
363- cancel ()
364- driver .WithStack = saveDriver
365- return
366- }
367- }
360+ // Wait for secret to start
361+ newRetryFunc (func () error {
362+ c = createClientFromEnv (t , false )
363+ nCtx , cancel := context .WithTimeout (ctx , 2 * time .Second )
364+ defer cancel ()
368365
369- cancel ()
370- select {
371- case <- ctx .Done ():
372- fmt .Print ("Context cancelled\n " )
373- driver .WithStack = saveDriver
374- return
375- case <- time .After (1 * time .Second ):
376- //fmt.Print("After 1 second\n")
377- break
366+ if _ , err := c .Version (nCtx ); err == nil {
367+ return interrupt {}
378368 }
379- }
380369
370+ return nil
371+ }).RetryT (t , 100 * time .Millisecond , 15 * time .Second )
372+
373+ return c
381374}
382375
383376func TestBackupRestore (t * testing.T ) {
@@ -432,7 +425,7 @@ func TestBackupRestore(t *testing.T) {
432425 if isSingle {
433426 waitctx , cancel := context .WithTimeout (ctx , 30 * time .Second )
434427 defer cancel ()
435- waitForServerRestart (waitctx , c , t )
428+ c = waitForServerRestart (waitctx , c , t )
436429 }
437430
438431 if ok , err := col .DocumentExists (ctx , meta1 .Key ); err != nil {
@@ -683,7 +676,7 @@ func TestBackupCompleteCycle(t *testing.T) {
683676 if isSingle {
684677 waitctx , cancel := context .WithTimeout (ctx , 30 * time .Second )
685678 defer cancel ()
686- waitForServerRestart (waitctx , c , t )
679+ c = waitForServerRestart (waitctx , c , t )
687680 }
688681
689682 if ok , err := col .DocumentExists (ctx , meta1 .Key ); err != nil {
@@ -803,7 +796,7 @@ func TestBackupCreateRestoreParallel(t *testing.T) {
803796 if isSingle {
804797 waitctx , cancel := context .WithTimeout (ctx , 30 * time .Second )
805798 defer cancel ()
806- waitForServerRestart (waitctx , c , t )
799+ c = waitForServerRestart (waitctx , c , t )
807800 }
808801 } else {
809802 errchan <- err
@@ -901,7 +894,7 @@ func TestBackupRestoreWithViews(t *testing.T) {
901894 if isSingle {
902895 waitctx , cancel := context .WithTimeout (ctx , 30 * time .Second )
903896 defer cancel ()
904- waitForServerRestart (waitctx , c , t )
897+ c = waitForServerRestart (waitctx , c , t )
905898 }
906899
907900 t .Run ("immediate" , func (t * testing.T ) {
0 commit comments