@@ -45,43 +45,46 @@ import (
45
45
. "github.com/onsi/gomega"
46
46
)
47
47
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 ) {
65
65
options .Cache .ByObject = map [client.Object ]cache.ByObject {
66
66
& corev1.ConfigMap {}: {
67
67
Label : labels.Set {"type" : "animal" }.AsSelector (),
68
68
},
69
69
}
70
70
})
71
71
Expect (err ).NotTo (HaveOccurred ())
72
- provider := New (cl )
72
+ provider = New (cl )
73
+ })
73
74
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 {
76
78
NewCache : func (config * rest.Config , opts cache.Options ) (cache.Cache , error ) {
77
79
// wrap cache to turn IndexField calls into cluster-scoped indexes.
78
80
return & NamespaceScopeableCache {Cache : cl .GetCache ()}, nil
79
81
},
80
82
})
81
83
Expect (err ).NotTo (HaveOccurred ())
84
+ })
82
85
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 ).
85
88
Named ("fleet-ns-configmap-controller" ).
86
89
For (& corev1.ConfigMap {}).
87
90
Complete (mcreconcile .Func (
@@ -111,39 +114,52 @@ var _ = Describe("Provider Namespace", func() {
111
114
},
112
115
))
113
116
Expect (err ).NotTo (HaveOccurred ())
117
+ })
114
118
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 () {
124
120
g .Go (func () error {
125
121
return ignoreCanceled (provider .Run (ctx , mgr ))
126
122
})
127
-
128
- By ("Starting cluster" )
129
123
g .Go (func () error {
130
124
return ignoreCanceled (cl .Start (ctx ))
131
125
})
132
-
133
- By ("Starting cluster-aware manager" )
134
126
g .Go (func () error {
135
127
return ignoreCanceled (mgr .Start (ctx ))
136
128
})
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
+ })
137
147
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 )
139
151
Expect (err ).NotTo (HaveOccurred ())
152
+ return cm .Data ["stomach" ]
153
+ }, "10s" ).Should (Equal ("food" ))
154
+ })
140
155
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 ())
147
163
})
148
164
})
149
165
})
0 commit comments