func/test/_e2e/ready_check.go

36 lines
1.2 KiB
Go

package e2e
import (
"regexp"
"testing"
"time"
"k8s.io/apimachinery/pkg/util/wait"
)
// ReadyCheck waits deployed function to report as ready.
func ReadyCheck(t *testing.T, knFunc *TestShellCmdRunner, project FunctionTestProject) {
expr := regexp.MustCompile("\n" + project.FunctionName + " .*True")
err := wait.PollImmediate(5*time.Second, 1*time.Minute, func() (done bool, err error) {
result := knFunc.Exec("list")
return result.Error == nil && expr.Match([]byte(result.Stdout)), result.Error
})
if err != nil {
t.Error("Function never get ready")
t.Fatal()
}
}
// NewRevisionCheck waits for a new revision to report as ready
func NewRevisionCheck(t *testing.T, previousRevision string, serviceName string) (newRevision string) {
err := wait.PollImmediate(5*time.Second, 1*time.Minute, func() (done bool, err error) {
newRevision = GetCurrentServiceRevision(t, serviceName)
t.Logf("Waiting for new revision deployment (previous revision [%v], current revision [%v])", previousRevision, newRevision)
return newRevision != "" && newRevision != previousRevision, nil
})
if err != nil {
t.Fatal("Function new revision never got ready")
}
return newRevision
}