Skip to content

Commit 1a24c63

Browse files
committed
Add an e2e to the Proposal controller
1 parent 3724bf6 commit 1a24c63

1 file changed

Lines changed: 75 additions & 4 deletions

File tree

test/cvo/proposal.go

Lines changed: 75 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,48 @@ package cvo
22

33
import (
44
"context"
5+
"time"
56

67
g "github.com/onsi/ginkgo/v2"
78
o "github.com/onsi/gomega"
9+
ctrlruntimeclient "sigs.k8s.io/controller-runtime/pkg/client"
10+
"sigs.k8s.io/controller-runtime/pkg/client/config"
811

912
apiextensionsclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
1013
kerrors "k8s.io/apimachinery/pkg/api/errors"
1114
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
15+
"k8s.io/apimachinery/pkg/util/wait"
16+
"k8s.io/client-go/kubernetes/scheme"
1217
"k8s.io/client-go/rest"
1318

19+
oteginkgo "github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo"
20+
configv1 "github.com/openshift/api/config/v1"
21+
configv1client "github.com/openshift/client-go/config/clientset/versioned/typed/config/v1"
22+
23+
"github.com/openshift/cluster-version-operator/pkg/external"
24+
proposalv1alpha1 "github.com/openshift/cluster-version-operator/pkg/proposal/api/v1alpha1"
1425
"github.com/openshift/cluster-version-operator/test/util"
1526
)
1627

28+
func init() {
29+
err := proposalv1alpha1.AddToScheme(scheme.Scheme)
30+
if err != nil {
31+
panic(err)
32+
}
33+
}
34+
1735
var _ = g.Describe(`[Jira:"Cluster Version Operator"] cluster-version-operator`, func() {
1836

1937
var (
20-
c *rest.Config
21-
err error
22-
23-
ctx = context.Background()
38+
c *rest.Config
39+
configClient *configv1client.ConfigV1Client
2440
apiExtensionsClient apiextensionsclientset.Interface
41+
rtClient ctrlruntimeclient.Client
42+
err error
43+
44+
ctx = context.Background()
45+
needRecover bool
46+
backup configv1.ClusterVersionSpec
2547
)
2648

2749
g.BeforeEach(func() {
@@ -31,9 +53,32 @@ var _ = g.Describe(`[Jira:"Cluster Version Operator"] cluster-version-operator`,
3153
o.Expect(util.SkipIfHypershift(ctx, c)).To(o.BeNil())
3254
o.Expect(util.SkipIfMicroshift(ctx, c)).To(o.BeNil())
3355

56+
configClient, err = configv1client.NewForConfig(c)
57+
o.Expect(err).To(o.BeNil())
58+
3459
apiExtensionsClient, err = apiextensionsclientset.NewForConfig(c)
3560
o.Expect(err).To(o.BeNil())
3661

62+
rtClient, err = ctrlruntimeclient.New(config.GetConfigOrDie(), ctrlruntimeclient.Options{})
63+
o.Expect(err).To(o.BeNil())
64+
65+
cv, err := configClient.ClusterVersions().Get(ctx, external.DefaultClusterVersionName, metav1.GetOptions{})
66+
o.Expect(err).NotTo(o.HaveOccurred())
67+
if du := cv.Spec.DesiredUpdate; du != nil {
68+
logger.WithValues("AcceptRisks", du.AcceptRisks).Info("Accept risks before testing")
69+
o.Expect(du.AcceptRisks).To(o.BeEmpty(), "found accept risks")
70+
}
71+
backup = *cv.Spec.DeepCopy()
72+
})
73+
74+
g.AfterEach(func() {
75+
if needRecover {
76+
cv, err := configClient.ClusterVersions().Get(ctx, external.DefaultClusterVersionName, metav1.GetOptions{})
77+
o.Expect(err).NotTo(o.HaveOccurred())
78+
cv.Spec = backup
79+
_, err = configClient.ClusterVersions().Update(ctx, cv, metav1.UpdateOptions{})
80+
o.Expect(err).NotTo(o.HaveOccurred())
81+
}
3782
})
3883

3984
g.It("should install light speed CRDs correctly", func() {
@@ -46,4 +91,30 @@ var _ = g.Describe(`[Jira:"Cluster Version Operator"] cluster-version-operator`,
4691
}
4792
}
4893
})
94+
95+
g.It("should create proposals", g.Label("Serial"), oteginkgo.Informing(), func() {
96+
o.Expect(util.SkipIfNetworkRestricted(ctx, c, util.FauxinnatiAPIURL)).To(o.BeNil())
97+
98+
cv, err := configClient.ClusterVersions().Get(ctx, external.DefaultClusterVersionName, metav1.GetOptions{})
99+
o.Expect(err).NotTo(o.HaveOccurred())
100+
101+
g.By("Using fauxinnati as the upstream and its simple channel")
102+
cv.Spec.Upstream = util.FauxinnatiAPIURL
103+
cv.Spec.Channel = "simple"
104+
105+
_, err = configClient.ClusterVersions().Update(ctx, cv, metav1.UpdateOptions{})
106+
o.Expect(err).NotTo(o.HaveOccurred())
107+
needRecover = true
108+
109+
g.By("Checking if the proposal are created")
110+
o.Expect(wait.PollUntilContextTimeout(ctx, 30*time.Second, 5*time.Minute, true, func(ctx context.Context) (done bool, err error) {
111+
proposals := proposalv1alpha1.ProposalList{}
112+
err = rtClient.List(ctx, &proposals, ctrlruntimeclient.InNamespace(external.DefaultCVONamespace))
113+
o.Expect(err).NotTo(o.HaveOccurred())
114+
if len(proposals.Items) == 0 {
115+
return false, nil
116+
}
117+
return true, nil
118+
})).NotTo(o.HaveOccurred(), "no proposals found")
119+
})
49120
})

0 commit comments

Comments
 (0)