Skip to content

Commit 41dec0e

Browse files
committed
Update tests and code for new grpc library
Signed-off-by: perdasilva <[email protected]> Upstream-repository: olm-perdasilva Upstream-commit: 1ab67ce1f8ae6fb02fff045bef649216317c78a8
1 parent 6faa0e2 commit 41dec0e

File tree

9 files changed

+47
-7
lines changed

9 files changed

+47
-7
lines changed

staging/operator-lifecycle-manager/pkg/controller/operators/catalog/operator.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,15 @@ func (o *Operator) syncSourceState(state grpc.SourceState) {
474474
metrics.RegisterCatalogSourceState(state.Key.Name, state.Key.Namespace, state.State)
475475

476476
switch state.State {
477+
case connectivity.Idle:
478+
// If the connection is IDLE attempt to connect to attempt to bring it to a READY state
479+
// A connection will transition to IDLE if:
480+
// "No RPC activity on channel for IDLE_TIMEOUT (default: 5 mins) or upon receiving a GOAWAY while there are no pending RPCs."
481+
// https://gitlab.uni-hannover.de/tci-gateway-module/grpc/-/blob/972e31165218b49d93e5e1f1a1e8bbcd3fa830d1/doc/connectivity-semantics-and-api.md
482+
sourceConn := o.sources.Get(state.Key)
483+
if sourceConn != nil && sourceConn.Conn != nil {
484+
_, _ = registry.NewClientFromConn(sourceConn.Conn).HealthCheck(context.Background(), time.Second*5)
485+
}
477486
case connectivity.Ready:
478487
o.resolverSourceProvider.Invalidate(resolvercache.SourceKey(state.Key))
479488
if o.namespace == state.Key.Namespace {

staging/operator-lifecycle-manager/pkg/controller/registry/grpc/source.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"time"
1010

1111
"github.com/operator-framework/operator-registry/pkg/client"
12-
1312
"github.com/sirupsen/logrus"
1413
"golang.org/x/net/http/httpproxy"
1514
"golang.org/x/net/proxy"

staging/operator-lifecycle-manager/pkg/controller/registry/grpc/source_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ func TestConnectionEvents(t *testing.T) {
134134
{Name: "test", Namespace: "test"}: {
135135
connectivity.Connecting,
136136
connectivity.Ready,
137+
connectivity.Idle,
137138
},
138139
},
139140
},
@@ -143,10 +144,12 @@ func TestConnectionEvents(t *testing.T) {
143144
{Name: "test", Namespace: "test"}: {
144145
connectivity.Connecting,
145146
connectivity.Ready,
147+
connectivity.Idle,
146148
},
147149
{Name: "test2", Namespace: "test2"}: {
148150
connectivity.Connecting,
149151
connectivity.Ready,
152+
connectivity.Idle,
150153
},
151154
},
152155
},

staging/operator-lifecycle-manager/pkg/package-server/provider/registry.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,15 @@ func (p *RegistryProvider) syncSourceState(state registrygrpc.SourceState) {
226226

227227
var err error
228228
switch state.State {
229+
case connectivity.Idle:
230+
// If the connection is IDLE attempt to connect to attempt to bring it to a READY state
231+
// A connection will transition to IDLE if:
232+
// "No RPC activity on channel for IDLE_TIMEOUT (default: 5 mins) or upon receiving a GOAWAY while there are no pending RPCs."
233+
// https://gitlab.uni-hannover.de/tci-gateway-module/grpc/-/blob/972e31165218b49d93e5e1f1a1e8bbcd3fa830d1/doc/connectivity-semantics-and-api.md
234+
sourceConn := p.sources.Get(state.Key)
235+
if sourceConn != nil && sourceConn.Conn != nil {
236+
_, _ = registry.NewClientFromConn(sourceConn.Conn).HealthCheck(context.Background(), time.Second*5)
237+
}
229238
case connectivity.Ready:
230239
var client *registryClient
231240
client, err = p.registryClient(key)

staging/operator-lifecycle-manager/test/e2e/subscription_e2e_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
configv1 "github.com/openshift/api/config/v1"
1717
configv1client "github.com/openshift/client-go/config/clientset/versioned/typed/config/v1"
1818
"github.com/stretchr/testify/require"
19+
"google.golang.org/grpc/connectivity"
1920
appsv1 "k8s.io/api/apps/v1"
2021
corev1 "k8s.io/api/core/v1"
2122
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
@@ -2920,8 +2921,9 @@ func updateInternalCatalog(t GinkgoTInterface, c operatorclient.ClientInterface,
29202921
_, err = fetchCatalogSourceOnStatus(crc, catalogSourceName, namespace, func(catalog *operatorsv1alpha1.CatalogSource) bool {
29212922
before := fetchedInitialCatalog.Status.ConfigMapResource
29222923
after := catalog.Status.ConfigMapResource
2924+
lastObservedState := catalog.Status.GRPCConnectionState.LastObservedState
29232925
if after != nil && after.LastUpdateTime.After(before.LastUpdateTime.Time) && after.ResourceVersion != before.ResourceVersion &&
2924-
catalog.Status.GRPCConnectionState.LastConnectTime.After(after.LastUpdateTime.Time) && catalog.Status.GRPCConnectionState.LastObservedState == "READY" {
2926+
catalog.Status.GRPCConnectionState.LastConnectTime.After(after.LastUpdateTime.Time) && (lastObservedState == connectivity.Ready.String() || lastObservedState == connectivity.Idle.String()) {
29252927
fmt.Println("catalog updated")
29262928
return true
29272929
}

staging/operator-lifecycle-manager/test/e2e/util.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
. "github.com/onsi/gomega"
1414
"github.com/stretchr/testify/require"
1515
"google.golang.org/grpc"
16+
"google.golang.org/grpc/connectivity"
1617
appsv1 "k8s.io/api/apps/v1"
1718
corev1 "k8s.io/api/core/v1"
1819
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
@@ -337,11 +338,11 @@ func registryPodHealthy(address string) bool {
337338
}
338339

339340
func catalogSourceRegistryPodSynced(catalog *operatorsv1alpha1.CatalogSource) bool {
340-
registry := catalog.Status.RegistryServiceStatus
341+
registryStatus := catalog.Status.RegistryServiceStatus
341342
connState := catalog.Status.GRPCConnectionState
342-
if registry != nil && connState != nil && !connState.LastConnectTime.IsZero() && connState.LastObservedState == "READY" {
343-
fmt.Printf("catalog %s pod with address %s\n", catalog.GetName(), registry.Address())
344-
return registryPodHealthy(registry.Address())
343+
if registryStatus != nil && connState != nil && !connState.LastConnectTime.IsZero() && (connState.LastObservedState == connectivity.Ready.String() || connState.LastObservedState == connectivity.Idle.String()) {
344+
fmt.Printf("catalog %s pod with address %s\n", catalog.GetName(), registryStatus.Address())
345+
return registryPodHealthy(registryStatus.Address())
345346
}
346347
state := "NO_CONNECTION"
347348
if connState != nil {

vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/catalog/operator.go

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/grpc/source.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/provider/registry.go

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)