sip/pkg/services/services_suite_test.go
Drew Walters 2212b7eaeb Remove cached K8s client in test suites
The cached Kubernetes client used in our tests suites can cause cache
read errors during execution. This change swaps the client out for a
client that communicates with the API server on each request.

Signed-off-by: Drew Walters <andrew.walters@att.com>
Change-Id: I85d3cd0c716c6e3390a894231ffaad49193fb15c
2021-02-01 21:13:48 +00:00

80 lines
1.9 KiB
Go

package services_test
import (
"path/filepath"
"testing"
airshipv1 "sipcluster/pkg/api/v1"
"sipcluster/pkg/controllers"
metal3 "github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"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"
logf "sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/log/zap"
)
func TestServices(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Services Suite")
}
var cfg *rest.Config
var k8sClient client.Client
var testEnv *envtest.Environment
var logger = zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))
var _ = BeforeSuite(func(done Done) {
logf.SetLogger(logger)
By("bootstrapping test environment")
testEnv = &envtest.Environment{
CRDDirectoryPaths: []string{filepath.Join("..", "..", "config", "crd", "bases")},
}
var err error
cfg, err = testEnv.Start()
Expect(err).ToNot(HaveOccurred())
Expect(cfg).ToNot(BeNil())
err = airshipv1.AddToScheme(scheme.Scheme)
Expect(err).NotTo(HaveOccurred())
err = metal3.AddToScheme(scheme.Scheme)
Expect(err).NotTo(HaveOccurred())
k8sManager, err := ctrl.NewManager(cfg, ctrl.Options{
Scheme: scheme.Scheme,
MetricsBindAddress: "0",
})
Expect(err).ToNot(HaveOccurred())
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
Expect(err).NotTo(HaveOccurred())
err = (&controllers.SIPClusterReconciler{
Client: k8sClient,
Scheme: scheme.Scheme,
}).SetupWithManager(k8sManager)
Expect(err).ToNot(HaveOccurred())
go func() {
err = k8sManager.Start(ctrl.SetupSignalHandler())
Expect(err).ToNot(HaveOccurred())
}()
close(done)
}, 60)
var _ = AfterSuite(func() {
By("tearing down the test environment")
err := testEnv.Stop()
Expect(err).ToNot(HaveOccurred())
})