Add timeouts when waiting on OpenShift or the registry to start

... so that we terminate with the full context and pointing at
the relevant code, instead of relying
on the overall test suite timeout.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This commit is contained in:
Miloslav Trmač 2021-07-28 21:40:44 +02:00
parent b6b7bd9250
commit ce6035b738

View File

@ -2,6 +2,7 @@ package main
import ( import (
"bufio" "bufio"
"context"
"encoding/base64" "encoding/base64"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
@ -9,6 +10,7 @@ import (
"os/exec" "os/exec"
"path/filepath" "path/filepath"
"strings" "strings"
"time"
"github.com/docker/docker/pkg/homedir" "github.com/docker/docker/pkg/homedir"
"github.com/go-check/check" "github.com/go-check/check"
@ -109,6 +111,8 @@ func (cluster *openshiftCluster) startMaster(c *check.C) {
gotPortCheck := false gotPortCheck := false
gotLogCheck := false gotLogCheck := false
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute)
defer cancel()
for !gotPortCheck || !gotLogCheck { for !gotPortCheck || !gotLogCheck {
c.Logf("Waiting for master") c.Logf("Waiting for master")
select { select {
@ -121,6 +125,8 @@ func (cluster *openshiftCluster) startMaster(c *check.C) {
c.Fatal("log check done, success message not found") c.Fatal("log check done, success message not found")
} }
gotLogCheck = true gotLogCheck = true
case <-ctx.Done():
c.Fatalf("Timed out waiting for master: %v", ctx.Err())
} }
} }
c.Logf("OK, master started!") c.Logf("OK, master started!")
@ -166,8 +172,14 @@ func (cluster *openshiftCluster) startRegistryProcess(c *check.C, port int, conf
terminatePortCheck <- true terminatePortCheck <- true
}() }()
c.Logf("Waiting for registry to start") c.Logf("Waiting for registry to start")
<-portOpen ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute)
defer cancel()
select {
case <-portOpen:
c.Logf("OK, Registry port open") c.Logf("OK, Registry port open")
case <-ctx.Done():
c.Fatalf("Timed out waiting for registry to start: %v", ctx.Err())
}
return cmd return cmd
} }