forked from rancher/fleet
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsuite_test.go
More file actions
137 lines (112 loc) · 3.49 KB
/
suite_test.go
File metadata and controls
137 lines (112 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package controller
import (
"bytes"
"context"
"testing"
"time"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/reugn/go-quartz/quartz"
"go.uber.org/mock/gomock"
"github.com/rancher/fleet/integrationtests/utils"
"github.com/rancher/fleet/internal/cmd/controller/helmops/reconciler"
ctrlreconciler "github.com/rancher/fleet/internal/cmd/controller/reconciler"
"github.com/rancher/fleet/internal/cmd/controller/target"
"github.com/rancher/fleet/internal/config"
"github.com/rancher/fleet/internal/manifest"
v1alpha1 "github.com/rancher/fleet/pkg/apis/fleet.cattle.io/v1alpha1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/envtest"
"sigs.k8s.io/controller-runtime/pkg/log/zap"
)
const (
timeout = 60 * time.Second
)
var (
cfg *rest.Config
testEnv *envtest.Environment
ctx context.Context
cancel context.CancelFunc
k8sClient client.Client
namespace string
k8sClientSet *kubernetes.Clientset
logsBuffer bytes.Buffer
)
func TestHelmOpsController(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Helm Ops Controller Suite")
}
var _ = BeforeSuite(func() {
SetDefaultEventuallyTimeout(timeout)
ctx, cancel = context.WithCancel(context.TODO())
testEnv = utils.NewEnvTest("../../..")
utils.SuppressLogs()
GinkgoWriter.TeeTo(&logsBuffer)
ctrl.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true)))
var err error
cfg, err = utils.StartTestEnv(testEnv)
Expect(err).NotTo(HaveOccurred())
Expect(cfg).NotTo(BeNil())
err = v1alpha1.AddToScheme(scheme.Scheme)
Expect(err).NotTo(HaveOccurred())
k8sClientSet, err = kubernetes.NewForConfig(cfg)
Expect(err).NotTo(HaveOccurred())
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
Expect(err).NotTo(HaveOccurred())
Expect(k8sClient).NotTo(BeNil())
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
Scheme: scheme.Scheme,
})
Expect(err).ToNot(HaveOccurred())
ctlr := gomock.NewController(GinkgoT())
config.Set(&config.Config{})
sched, err := quartz.NewStdScheduler()
Expect(err).ToNot(HaveOccurred())
err = (&reconciler.HelmOpReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
Recorder: mgr.GetEventRecorder("helmops-controller"),
Scheduler: sched,
Workers: 50,
}).SetupWithManager(mgr)
Expect(err).ToNot(HaveOccurred())
sched.Start(ctx)
err = (&reconciler.HelmOpStatusReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
Workers: 50,
}).SetupWithManager(mgr)
Expect(err).ToNot(HaveOccurred())
store := manifest.NewStore(mgr.GetClient())
builder := target.New(mgr.GetClient(), mgr.GetAPIReader())
err = (&ctrlreconciler.BundleReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
APIReader: mgr.GetAPIReader(),
Builder: builder,
Store: store,
Query: builder,
Workers: 50,
}).SetupWithManager(mgr)
Expect(err).ToNot(HaveOccurred(), "failed to set up manager")
err = (&ctrlreconciler.BundleDeploymentReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
Workers: 50,
}).SetupWithManager(mgr)
Expect(err).ToNot(HaveOccurred(), "failed to set up manager")
go func() {
defer GinkgoRecover()
defer ctlr.Finish()
err = mgr.Start(ctx)
Expect(err).ToNot(HaveOccurred(), "failed to run manager")
}()
})
var _ = AfterSuite(func() {
cancel()
Expect(testEnv.Stop()).ToNot(HaveOccurred())
})