Skip to content
This repository was archived by the owner on Dec 11, 2023. It is now read-only.

Commit a342178

Browse files
author
Pablo Mercado
authored
Merge pull request #102 from triggermesh/fix/add-status-reconciliatin-test
Tests: add status reconciliation to memorybroker test
2 parents 30fcf41 + 3785bbb commit a342178

File tree

5 files changed

+83
-17
lines changed

5 files changed

+83
-17
lines changed

pkg/reconciler/common/events.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ const (
1111
ReasonFailedDeploymentCreate = "FailedDeploymentCreate"
1212
ReasonFailedDeploymentUpdate = "FailedDeploymentUpdate"
1313

14-
ReasonFailedSecretGet = "FailedSecretGet"
15-
ReasonFailedSecretCreate = "FailedSecretCreate"
16-
ReasonFailedSecretUpdate = "FailedSecretUpdate"
14+
ReasonFailedSecretCompose = "FailedSecretCompose"
15+
ReasonFailedSecretGet = "FailedSecretGet"
16+
ReasonFailedSecretCreate = "FailedSecretCreate"
17+
ReasonFailedSecretUpdate = "FailedSecretUpdate"
1718

1819
ReasonFailedServiceAccountGet = "FailedServiceAccountGet"
1920
ReasonFailedServiceAccountCreate = "FailedServiceAccountCreate"

pkg/reconciler/common/reconcile_secret.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ func NewSecretReconciler(ctx context.Context, secretLister corev1listers.SecretL
5757
func (r *secretReconciler) Reconcile(ctx context.Context, rb eventingv1alpha1.ReconcilableBroker) (*corev1.Secret, error) {
5858
desired, err := r.buildConfigSecret(ctx, rb)
5959
if err != nil {
60+
rb.GetReconcilableBrokerStatus().MarkConfigSecretFailed(ReasonFailedSecretCompose, "Failed to compose secret config from broker")
6061
return nil, err
6162
}
6263

pkg/reconciler/memorybroker/reconciler.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ func (r *reconciler) ReconcileKind(ctx context.Context, mb *eventingv1alpha1.Mem
7272
}
7373

7474
func getServiceAddress(svc *corev1.Service) *apis.URL {
75+
if svc == nil || len(svc.Spec.Ports) == 0 {
76+
return nil
77+
}
78+
7579
var port string
7680
if svc.Spec.Ports[0].Port != 80 {
7781
port = ":" + strconv.Itoa(int(svc.Spec.Ports[0].Port))

pkg/reconciler/memorybroker/reconciler_test.go

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@ package memorybroker
33
import (
44
"context"
55
"testing"
6-
"time"
76

87
appsv1 "k8s.io/api/apps/v1"
98
corev1 "k8s.io/api/core/v1"
109
rbacv1 "k8s.io/api/rbac/v1"
1110
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1211
"k8s.io/apimachinery/pkg/runtime"
1312
"k8s.io/apimachinery/pkg/util/intstr"
13+
kt "k8s.io/client-go/testing"
14+
1415
v1addr "knative.dev/pkg/client/injection/ducks/duck/v1/addressable"
1516
"knative.dev/pkg/configmap"
1617
"knative.dev/pkg/controller"
@@ -20,7 +21,6 @@ import (
2021
fakeeventingclient "github.com/triggermesh/triggermesh-core/pkg/client/generated/injection/client/fake"
2122
"github.com/triggermesh/triggermesh-core/pkg/client/generated/injection/reconciler/eventing/v1alpha1/memorybroker"
2223
"github.com/triggermesh/triggermesh-core/pkg/reconciler/common"
23-
"github.com/triggermesh/triggermesh-core/pkg/reconciler/resources"
2424
tmt "github.com/triggermesh/triggermesh-core/pkg/reconciler/testing"
2525
tmtv1alpha1 "github.com/triggermesh/triggermesh-core/pkg/reconciler/testing/v1alpha1"
2626
)
@@ -36,7 +36,7 @@ var (
3636
tKey = tNamespace + "/" + tName
3737
tTrue = true
3838
tReplicas int32 = 1
39-
tNow = metav1.NewTime(time.Now())
39+
// tNow = metav1.NewTime(time.Now())
4040
)
4141

4242
func TestAllCases(t *testing.T) {
@@ -62,19 +62,51 @@ func TestAllCases(t *testing.T) {
6262
newDeploymentForBroker(tNamespace, tName),
6363
newServiceForBroker(tNamespace, tName),
6464
},
65+
WantStatusUpdates: []kt.UpdateActionImpl{
66+
{
67+
Object: tmtv1alpha1.NewMemoryBroker(tNamespace, tName,
68+
// tmtv1alpha1.MemoryBrokerWithStatusAddress("http://"+tName+"-mb-broker."+tNamespace+".svc.cluster.local"),
69+
tmtv1alpha1.MemoryBrokerWithStatusCondition("Addressable", corev1.ConditionUnknown, "", ""),
70+
tmtv1alpha1.MemoryBrokerWithStatusCondition("BrokerConfigSecretReady", corev1.ConditionTrue, "", ""),
71+
tmtv1alpha1.MemoryBrokerWithStatusCondition("BrokerDeploymentReady", corev1.ConditionUnknown, "", ""),
72+
tmtv1alpha1.MemoryBrokerWithStatusCondition("BrokerEndpointsReady", corev1.ConditionFalse, "UnavailableEndpoints", "Endpoints for broker service do not exist"),
73+
tmtv1alpha1.MemoryBrokerWithStatusCondition("BrokerServiceAccountReady", corev1.ConditionTrue, "", ""),
74+
tmtv1alpha1.MemoryBrokerWithStatusCondition("BrokerServiceReady", corev1.ConditionTrue, "", ""),
75+
tmtv1alpha1.MemoryBrokerWithStatusCondition("MemoryBrokerBrokerRoleBinding", corev1.ConditionTrue, "", ""),
76+
tmtv1alpha1.MemoryBrokerWithStatusCondition("Ready", corev1.ConditionFalse, "UnavailableEndpoints", "Endpoints for broker service do not exist"),
77+
),
78+
},
79+
},
6580
WantEvents: []string{
6681
knt.Eventf(corev1.EventTypeWarning, "UnavailableEndpoints", `Endpoints for broker service "`+tNamespace+`/`+tName+`-mb-broker" do not exist`),
6782
},
68-
}, {
69-
Name: "deleting broker",
70-
Key: tKey,
71-
Objects: []runtime.Object{
72-
tmtv1alpha1.NewMemoryBroker(tNamespace, tName,
73-
tmtv1alpha1.MemoryBrokerWithMetaOptions(resources.MetaSetDeletion(&tNow))),
74-
},
75-
WantCreates: []runtime.Object{
76-
// Reconciliation is skipped and no objects are created.
77-
},
83+
84+
// }, {
85+
// Name: "update status",
86+
// Key: tKey,
87+
// Objects: []runtime.Object{
88+
// tmtv1alpha1.NewMemoryBroker(tNamespace, tName),
89+
// },
90+
// WantCreates: []runtime.Object{
91+
// newSecretForBroker(tNamespace, tName),
92+
// newServiceAccountForBroker(tNamespace, tName),
93+
// newRoleBindingForBroker(tNamespace, tName),
94+
// newDeploymentForBroker(tNamespace, tName),
95+
// newServiceForBroker(tNamespace, tName),
96+
// },
97+
// WantEvents: []string{
98+
// knt.Eventf(corev1.EventTypeWarning, "UnavailableEndpoints", `Endpoints for broker service "`+tNamespace+`/`+tName+`-mb-broker" do not exist`),
99+
// },
100+
// }, {
101+
// Name: "deleting broker",
102+
// Key: tKey,
103+
// Objects: []runtime.Object{
104+
// tmtv1alpha1.NewMemoryBroker(tNamespace, tName,
105+
// tmtv1alpha1.MemoryBrokerWithMetaOptions(resources.MetaSetDeletion(&tNow))),
106+
// },
107+
// WantCreates: []runtime.Object{
108+
// // Reconciliation is skipped and no objects are created.
109+
// },
78110
},
79111
}
80112

@@ -102,7 +134,7 @@ func TestAllCases(t *testing.T) {
102134
listers.GetMemoryBrokerLister(),
103135
controller.GetEventRecorder(ctx),
104136
r,
105-
controller.Options{SkipStatusUpdates: true})
137+
controller.Options{SkipStatusUpdates: false})
106138
}, false, logger))
107139
}
108140

pkg/reconciler/testing/v1alpha1/memorybroker.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package v1alpha1
22

33
import (
4+
corev1 "k8s.io/api/core/v1"
45
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
56

7+
knapis "knative.dev/pkg/apis"
8+
69
eventingv1alpha1 "github.com/triggermesh/triggermesh-core/pkg/apis/eventing/v1alpha1"
710
"github.com/triggermesh/triggermesh-core/pkg/reconciler/resources"
811
)
@@ -34,3 +37,28 @@ func MemoryBrokerWithMetaOptions(opts ...resources.MetaOption) MemoryBrokerOptio
3437
}
3538
}
3639
}
40+
41+
func MemoryBrokerWithStatusAddress(url string) MemoryBrokerOption {
42+
return func(d *eventingv1alpha1.MemoryBroker) {
43+
44+
pu, err := knapis.ParseURL(url)
45+
if err != nil {
46+
panic(err)
47+
}
48+
d.Status.Address.URL = pu
49+
}
50+
}
51+
52+
func MemoryBrokerWithStatusCondition(typ string, status corev1.ConditionStatus, reason, msg string) MemoryBrokerOption {
53+
return func(d *eventingv1alpha1.MemoryBroker) {
54+
55+
d.Status.Conditions = append(d.Status.Conditions,
56+
knapis.Condition{
57+
Type: knapis.ConditionType(typ),
58+
Status: status,
59+
Reason: reason,
60+
Message: msg,
61+
},
62+
)
63+
}
64+
}

0 commit comments

Comments
 (0)