mirror of https://github.com/rancher/fleet.git
135 lines
3.4 KiB
Go
135 lines
3.4 KiB
Go
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("../../..")
|
|
|
|
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.GetEventRecorderFor("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(),
|
|
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())
|
|
})
|