Skip to content

Commit 5167ace

Browse files
committed
providers/namespace: restructure test
Signed-off-by: Dr. Stefan Schimanski <stefan.schimanski@gmail.com>
1 parent 12bd591 commit 5167ace

File tree

1 file changed

+58
-42
lines changed

1 file changed

+58
-42
lines changed

providers/namespace/provider_test.go

Lines changed: 58 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -45,43 +45,46 @@ import (
4545
. "github.com/onsi/gomega"
4646
)
4747

48-
var _ = Describe("Provider Namespace", func() {
49-
Describe("New", func() {
50-
It("should return success if given valid objects", func(ctx context.Context) {
51-
cli, err := client.New(cfg, client.Options{})
52-
Expect(err).NotTo(HaveOccurred())
53-
54-
By("Creating Namespace and ConfigMap objects")
55-
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "zoo"}})))
56-
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Namespace: "zoo", Name: "elephant", Labels: map[string]string{"type": "animal"}}})))
57-
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Namespace: "zoo", Name: "lion", Labels: map[string]string{"type": "animal"}}})))
58-
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "jungle"}})))
59-
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Namespace: "jungle", Name: "monkey", Labels: map[string]string{"type": "animal"}}})))
60-
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "island"}})))
61-
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Namespace: "island", Name: "bird", Labels: map[string]string{"type": "animal"}}})))
62-
63-
By("Setting up the provider")
64-
cl, err := cluster.New(cfg, WithClusterNameIndex(), func(options *cluster.Options) {
48+
var _ = Describe("Provider Namespace", Ordered, func() {
49+
ctx, cancel := context.WithCancel(context.Background())
50+
g, ctx := errgroup.WithContext(ctx)
51+
52+
var provider *Provider
53+
var cl cluster.Cluster
54+
var mgr mcmanager.Manager
55+
var cli client.Client
56+
57+
BeforeAll(func() {
58+
var err error
59+
cli, err = client.New(cfg, client.Options{})
60+
Expect(err).NotTo(HaveOccurred())
61+
62+
By("Setting up the provider against the host cluster", func() {
63+
var err error
64+
cl, err = cluster.New(cfg, WithClusterNameIndex(), func(options *cluster.Options) {
6565
options.Cache.ByObject = map[client.Object]cache.ByObject{
6666
&corev1.ConfigMap{}: {
6767
Label: labels.Set{"type": "animal"}.AsSelector(),
6868
},
6969
}
7070
})
7171
Expect(err).NotTo(HaveOccurred())
72-
provider := New(cl)
72+
provider = New(cl)
73+
})
7374

74-
By("Setting up the cluster-aware manager, with the provider to lookup clusters")
75-
mgr, err := mcmanager.New(cfg, provider, manager.Options{
75+
By("Setting up the cluster-aware manager, with the provider to lookup clusters", func() {
76+
var err error
77+
mgr, err = mcmanager.New(cfg, provider, manager.Options{
7678
NewCache: func(config *rest.Config, opts cache.Options) (cache.Cache, error) {
7779
// wrap cache to turn IndexField calls into cluster-scoped indexes.
7880
return &NamespaceScopeableCache{Cache: cl.GetCache()}, nil
7981
},
8082
})
8183
Expect(err).NotTo(HaveOccurred())
84+
})
8285

83-
By("Setting up the controller")
84-
err = mcbuilder.ControllerManagedBy(mgr).
86+
By("Setting up the controller feeding the animals", func() {
87+
err := mcbuilder.ControllerManagedBy(mgr).
8588
Named("fleet-ns-configmap-controller").
8689
For(&corev1.ConfigMap{}).
8790
Complete(mcreconcile.Func(
@@ -111,39 +114,52 @@ var _ = Describe("Provider Namespace", func() {
111114
},
112115
))
113116
Expect(err).NotTo(HaveOccurred())
117+
})
114118

115-
By("Starting provider")
116-
ctx, cancel := context.WithCancel(ctx)
117-
g, ctx := errgroup.WithContext(ctx)
118-
defer func() {
119-
cancel()
120-
By("Waiting for all components to finish")
121-
err = g.Wait()
122-
Expect(err).NotTo(HaveOccurred())
123-
}()
119+
By("Starting the provider, cluster, manager, and controller", func() {
124120
g.Go(func() error {
125121
return ignoreCanceled(provider.Run(ctx, mgr))
126122
})
127-
128-
By("Starting cluster")
129123
g.Go(func() error {
130124
return ignoreCanceled(cl.Start(ctx))
131125
})
132-
133-
By("Starting cluster-aware manager")
134126
g.Go(func() error {
135127
return ignoreCanceled(mgr.Start(ctx))
136128
})
129+
})
130+
})
131+
132+
It("runs a multi-cluster controller", func(ctx context.Context) {
133+
By("Creating some example namespaces and configmaps", func() {
134+
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "zoo"}})))
135+
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Namespace: "zoo", Name: "elephant", Labels: map[string]string{"type": "animal"}}})))
136+
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Namespace: "zoo", Name: "lion", Labels: map[string]string{"type": "animal"}}})))
137+
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "jungle"}})))
138+
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Namespace: "jungle", Name: "monkey", Labels: map[string]string{"type": "animal"}}})))
139+
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "island"}})))
140+
runtime.Must(client.IgnoreAlreadyExists(cli.Create(ctx, &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Namespace: "island", Name: "bird", Labels: map[string]string{"type": "animal"}}})))
141+
})
142+
143+
By("Creating a new configmap", func() {
144+
err := cli.Create(ctx, &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Namespace: "zoo", Name: "tiger", Labels: map[string]string{"type": "animal"}}})
145+
Expect(err).NotTo(HaveOccurred())
146+
})
137147

138-
err = cli.Create(ctx, &corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Namespace: "zoo", Name: "tiger", Labels: map[string]string{"type": "animal"}}})
148+
Eventually(func() string {
149+
cm := &corev1.ConfigMap{}
150+
err := cli.Get(ctx, client.ObjectKey{Namespace: "zoo", Name: "tiger"}, cm)
139151
Expect(err).NotTo(HaveOccurred())
152+
return cm.Data["stomach"]
153+
}, "10s").Should(Equal("food"))
154+
})
140155

141-
Eventually(func() string {
142-
cm := &corev1.ConfigMap{}
143-
err := cli.Get(ctx, client.ObjectKey{Namespace: "zoo", Name: "tiger"}, cm)
144-
Expect(err).NotTo(HaveOccurred())
145-
return cm.Data["stomach"]
146-
}, "10s").Should(Equal("food"))
156+
AfterAll(func() {
157+
By("Stopping the provider, cluster, manager, and controller", func() {
158+
cancel()
159+
})
160+
By("Waiting for the error group to finish", func() {
161+
err := g.Wait()
162+
Expect(err).NotTo(HaveOccurred())
147163
})
148164
})
149165
})

0 commit comments

Comments
 (0)