@@ -29,6 +29,7 @@ import (
2929 . "github.com/onsi/ginkgo/v2"
3030 . "github.com/onsi/gomega"
3131 "google.golang.org/grpc"
32+ "google.golang.org/grpc/connectivity"
3233 "google.golang.org/grpc/credentials/insecure"
3334
3435 "k8s.io/client-go/kubernetes/scheme"
@@ -38,6 +39,7 @@ import (
3839 logf "sigs.k8s.io/controller-runtime/pkg/log"
3940 "sigs.k8s.io/controller-runtime/pkg/log/zap"
4041
42+ dexapi "github.com/dexidp/dex/api/v2"
4143 dexv1alpha1 "github.com/rackerlabs/understack/go/dexop/api/v1alpha1"
4244 // +kubebuilder:scaffold:imports
4345)
@@ -105,9 +107,15 @@ var _ = BeforeSuite(func() {
105107 // Wait for Dex gRPC server to be ready
106108 grpcAddr := testDexHostAddr
107109 Eventually (func (g Gomega ) {
108- conn , dialErr := grpc .Dial (grpcAddr , grpc .WithTransportCredentials (insecure .NewCredentials ()), grpc . WithBlock (), grpc . WithTimeout ( 1 * time . Second ))
110+ conn , dialErr := grpc .NewClient (grpcAddr , grpc .WithTransportCredentials (insecure .NewCredentials ()))
109111 g .Expect (dialErr ).NotTo (HaveOccurred (), "waiting for Dex gRPC server to be ready" )
110- Expect (conn .Close ()).To (Succeed ())
112+ state := conn .GetState ()
113+ g .Expect (state ).To (Equal (connectivity .Idle ))
114+ result := conn .WaitForStateChange (ctx , connectivity .Ready )
115+ g .Expect (result ).To (Equal (true ))
116+ err = conn .Invoke (ctx , "/api.Dex/ListPasswords" , nil , new (dexapi.ListPasswordResp ), grpc .StaticMethod ())
117+ g .Expect (err ).NotTo (HaveOccurred ())
118+ g .Expect (conn .Close ()).To (Succeed ())
111119 }, 10 * time .Second , 1 * time .Second ).Should (Succeed ())
112120
113121 err = dexv1alpha1 .AddToScheme (scheme .Scheme )
@@ -133,7 +141,6 @@ var _ = AfterSuite(func() {
133141 _ , err := dexCmd .Process .Wait ()
134142 if err != nil && err .Error () != "signal: killed" {
135143 GinkgoWriter .Println ("error waiting for Dex process to exit: %v" , err )
136-
137144 }
138145 GinkgoWriter .Println ("Dex server stopped." )
139146 }
0 commit comments