Skip to content

Commit 4f835fe

Browse files
varshaprasad96ankitathomas
authored andcommitted
add catsrc controller e2e tests
Signed-off-by: Varsha Prasad Narsing <[email protected]>
1 parent e24cc8f commit 4f835fe

File tree

4 files changed

+78
-37
lines changed

4 files changed

+78
-37
lines changed

test/e2e/catalogsource_install_test.go

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,29 +22,34 @@ import (
2222
"k8s.io/apimachinery/pkg/types"
2323
"k8s.io/apimachinery/pkg/util/intstr"
2424
yaml2 "k8s.io/apimachinery/pkg/util/yaml"
25-
"k8s.io/client-go/kubernetes"
25+
"sigs.k8s.io/controller-runtime/pkg/client"
2626
controllerClient "sigs.k8s.io/controller-runtime/pkg/client"
2727
"sigs.k8s.io/controller-runtime/pkg/client/config"
2828
)
2929

3030
// ListEntities
31-
func createTestNamespace(ctx context.Context, c *kubernetes.Clientset, prefix string) string {
32-
ns, err := c.CoreV1().Namespaces().Create(ctx, &corev1.Namespace{
31+
func createTestNamespace(ctx context.Context, c client.Client, prefix string) string {
32+
ns := &corev1.Namespace{
3333
ObjectMeta: metav1.ObjectMeta{
3434
GenerateName: prefix,
3535
},
36-
}, metav1.CreateOptions{})
36+
}
37+
err := c.Create(ctx, ns)
3738
Expect(err).To(BeNil())
3839
return ns.Name
3940
}
4041

41-
func deleteTestNamespace(ctx context.Context, c *kubernetes.Clientset, name string) {
42-
err := c.CoreV1().Namespaces().Delete(ctx, name, metav1.DeleteOptions{})
42+
func deleteTestNamespace(ctx context.Context, c client.Client, name string) {
43+
err := c.Delete(ctx, &corev1.Namespace{
44+
ObjectMeta: metav1.ObjectMeta{
45+
Name: name,
46+
},
47+
})
4348
Expect(err).To(BeNil())
4449
}
4550

46-
func createTestServiceAccount(ctx context.Context, cli *kubernetes.Clientset, namespace, prefix string) string {
47-
sa, err := cli.CoreV1().ServiceAccounts(namespace).Create(ctx, &corev1.ServiceAccount{
51+
func createTestServiceAccount(ctx context.Context, c client.Client, namespace, prefix string) string {
52+
sa := &corev1.ServiceAccount{
4853
TypeMeta: metav1.TypeMeta{
4954
Kind: "ServiceAccount",
5055
APIVersion: "v1",
@@ -53,13 +58,14 @@ func createTestServiceAccount(ctx context.Context, cli *kubernetes.Clientset, na
5358
GenerateName: prefix,
5459
Namespace: namespace,
5560
},
56-
}, metav1.CreateOptions{})
61+
}
62+
err := c.Create(ctx, sa)
5763
Expect(err).To(BeNil())
5864
return sa.Name
5965
}
6066

61-
func createTestRegistryPod(ctx context.Context, cli *kubernetes.Clientset, namespace, prefix, serviceAccount string) string {
62-
pod, err := cli.CoreV1().Pods(namespace).Create(ctx, &corev1.Pod{
67+
func createTestRegistryPod(ctx context.Context, cli client.Client, namespace, prefix, serviceAccount string) string {
68+
pod := &corev1.Pod{
6369
TypeMeta: metav1.TypeMeta{
6470
Kind: "Pod",
6571
APIVersion: "v1",
@@ -68,6 +74,7 @@ func createTestRegistryPod(ctx context.Context, cli *kubernetes.Clientset, names
6874
GenerateName: prefix,
6975
Labels: map[string]string{"catalogsource": "prometheus-index"},
7076
Annotations: nil,
77+
Namespace: namespace,
7178
},
7279
Spec: corev1.PodSpec{
7380
Containers: []corev1.Container{{
@@ -111,12 +118,13 @@ func createTestRegistryPod(ctx context.Context, cli *kubernetes.Clientset, names
111118
TerminationMessagePolicy: corev1.TerminationMessageFallbackToLogsOnError,
112119
}},
113120
ServiceAccountName: serviceAccount,
114-
},
115-
}, metav1.CreateOptions{})
121+
}}
122+
err := cli.Create(ctx, pod)
116123
Expect(err).To(BeNil())
117124

125+
currentPod := corev1.Pod{}
118126
Eventually(func() (bool, error) {
119-
currentPod, err := cli.CoreV1().Pods(namespace).Get(ctx, pod.Name, metav1.GetOptions{})
127+
err := cli.Get(ctx, types.NamespacedName{Name: pod.Name, Namespace: namespace}, &currentPod)
120128
if err != nil {
121129
return false, err
122130
}
@@ -128,14 +136,15 @@ func createTestRegistryPod(ctx context.Context, cli *kubernetes.Clientset, names
128136
return pod.Name
129137
}
130138

131-
func createTestRegistryService(ctx context.Context, cli *kubernetes.Clientset, namespace, prefix string) string {
132-
svc, err := cli.CoreV1().Services(namespace).Create(ctx, &corev1.Service{
139+
func createTestRegistryService(ctx context.Context, cli client.Client, namespace, prefix string) string {
140+
svc := &corev1.Service{
133141
TypeMeta: metav1.TypeMeta{
134142
Kind: "Service",
135143
APIVersion: "v1",
136144
},
137145
ObjectMeta: metav1.ObjectMeta{
138146
GenerateName: prefix,
147+
Namespace: namespace,
139148
},
140149
Spec: corev1.ServiceSpec{
141150
Ports: []corev1.ServicePort{
@@ -148,7 +157,8 @@ func createTestRegistryService(ctx context.Context, cli *kubernetes.Clientset, n
148157
Type: corev1.ServiceTypeNodePort,
149158
Selector: map[string]string{"catalogsource": "prometheus-index"},
150159
},
151-
}, metav1.CreateOptions{})
160+
}
161+
err := c.Create(ctx, svc)
152162
Expect(err).To(BeNil())
153163

154164
conn, err := grpc.Dial(getServiceAddress(ctx, cli, namespace, svc.Name), []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}...)
@@ -174,8 +184,9 @@ func createTestRegistryService(ctx context.Context, cli *kubernetes.Clientset, n
174184
return svc.Name
175185
}
176186

177-
func getServiceAddress(ctx context.Context, cli *kubernetes.Clientset, namespace, name string) string {
178-
svc, err := cli.CoreV1().Services(namespace).Get(ctx, name, metav1.GetOptions{})
187+
func getServiceAddress(ctx context.Context, cli client.Client, namespace, name string) string {
188+
svc := corev1.Service{}
189+
err := cli.Get(ctx, types.NamespacedName{Name: name, Namespace: namespace}, &svc)
179190
Expect(err).To(BeNil())
180191
c := config.GetConfigOrDie()
181192
parts := strings.Split(c.Host, ":")
@@ -223,7 +234,7 @@ func applyCRDifNotPresent(ctx context.Context) func() {
223234
return cleanup
224235
}
225236

226-
func createTestCatalogSource(ctx context.Context, cli *kubernetes.Clientset, namespace, name, serviceName string) {
237+
func createTestCatalogSource(ctx context.Context, cli client.Client, namespace, name, serviceName string) {
227238
scheme := runtime.NewScheme()
228239
// Add catalogSources
229240
err := v1alpha1.AddToScheme(scheme)

test/e2e/catsrc_install_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package e2e
2+
3+
import (
4+
"context"
5+
6+
. "github.com/onsi/ginkgo/v2"
7+
. "github.com/onsi/gomega"
8+
"github.com/operator-framework/api/pkg/operators/v1alpha1"
9+
"k8s.io/apimachinery/pkg/types"
10+
)
11+
12+
var _ = Describe("catalog controller test", func() {
13+
var (
14+
ctx context.Context
15+
)
16+
17+
var testPrefix = "registry-grpc-"
18+
var catsrcName = "prometheus-index"
19+
20+
When("testing if catalogsrc reconciles successfully", func() {
21+
ctx = context.Background()
22+
testNamespace := createTestNamespace(ctx, c, testPrefix)
23+
24+
serviceAccountName := createTestServiceAccount(ctx, c, testNamespace, testPrefix)
25+
createTestRegistryPod(ctx, c, testNamespace, testPrefix, serviceAccountName)
26+
27+
serviceName := createTestRegistryService(ctx, c, testNamespace, testPrefix)
28+
createTestCatalogSource(ctx, c, testNamespace, catsrcName, serviceName)
29+
30+
// check if you are able to fetch catsrc
31+
catsrc := &v1alpha1.CatalogSource{}
32+
// put this in the helper itself.
33+
Eventually(func() {
34+
err := c.Get(ctx, types.NamespacedName{Name: catsrcName}, catsrc)
35+
Expect(err).NotTo(HaveOccurred())
36+
})
37+
38+
// How do we test the entity cache?
39+
40+
})
41+
})

test/e2e/e2e_suite_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
ctrl "sigs.k8s.io/controller-runtime"
1212
"sigs.k8s.io/controller-runtime/pkg/client"
1313

14+
catsrcapi "github.com/operator-framework/api/pkg/operators/v1alpha1"
1415
operatorv1alpha1 "github.com/operator-framework/operator-controller/api/v1alpha1"
1516
rukpakv1alpha1 "github.com/operator-framework/rukpak/api/v1alpha1"
1617
)
@@ -37,6 +38,9 @@ var _ = BeforeSuite(func() {
3738
err = rukpakv1alpha1.AddToScheme(scheme)
3839
Expect(err).To(Not(HaveOccurred()))
3940

41+
err = catsrcapi.AddToScheme(scheme)
42+
Expect(err).NotTo(HaveOccurred())
43+
4044
c, err = client.New(cfg, client.Options{Scheme: scheme})
4145
Expect(err).To(Not(HaveOccurred()))
4246
})

test/e2e/install_test.go

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import (
88
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
99
"k8s.io/apimachinery/pkg/types"
1010
"k8s.io/apimachinery/pkg/util/rand"
11-
"k8s.io/client-go/kubernetes"
12-
"sigs.k8s.io/controller-runtime/pkg/client/config"
1311

1412
. "github.com/onsi/ginkgo/v2"
1513
. "github.com/onsi/gomega"
@@ -30,25 +28,12 @@ var _ = Describe("Operator Install", func() {
3028
operator *operatorv1alpha1.Operator
3129
)
3230

33-
var kubeClient *kubernetes.Clientset
31+
// var kubeClient *kubernetes.Clientset
3432
var testNamespace string
3533
cleanup := func() {}
3634
ctx = context.TODO()
37-
BeforeEach(func() {
38-
kubeClient, err := kubernetes.NewForConfig(config.GetConfigOrDie())
39-
Expect(err).To(BeNil())
40-
testNamespace := createTestNamespace(ctx, kubeClient, "registry-grpc-")
41-
cleanup = applyCRDifNotPresent(ctx)
42-
testPrefix := "registry-grpc-"
43-
44-
serviceAccountName := createTestServiceAccount(ctx, kubeClient, testNamespace, testPrefix)
45-
createTestRegistryPod(ctx, kubeClient, testNamespace, testPrefix, serviceAccountName)
46-
serviceName := createTestRegistryService(ctx, kubeClient, testNamespace, testPrefix)
47-
createTestCatalogSource(ctx, kubeClient, testNamespace, "prometheus-index", serviceName)
48-
49-
})
5035
AfterEach(func() {
51-
deleteTestNamespace(ctx, kubeClient, testNamespace)
36+
deleteTestNamespace(ctx, c, testNamespace)
5237
cleanup()
5338
})
5439
It("resolves the specified package with correct bundle path", func() {

0 commit comments

Comments
 (0)