Simplify the setup of controller tests (#2352)
This commit is contained in:
parent
2984de912c
commit
40c905f25d
|
|
@ -28,46 +28,23 @@ const (
|
||||||
|
|
||||||
var _ = Describe("Test AutoScalingListener controller", func() {
|
var _ = Describe("Test AutoScalingListener controller", func() {
|
||||||
var ctx context.Context
|
var ctx context.Context
|
||||||
var cancel context.CancelFunc
|
var mgr ctrl.Manager
|
||||||
autoscalingNS := new(corev1.Namespace)
|
var autoscalingNS *corev1.Namespace
|
||||||
autoscalingRunnerSet := new(actionsv1alpha1.AutoscalingRunnerSet)
|
var autoscalingRunnerSet *actionsv1alpha1.AutoscalingRunnerSet
|
||||||
configSecret := new(corev1.Secret)
|
var configSecret *corev1.Secret
|
||||||
autoscalingListener := new(actionsv1alpha1.AutoscalingListener)
|
var autoscalingListener *actionsv1alpha1.AutoscalingListener
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
ctx, cancel = context.WithCancel(context.TODO())
|
ctx = context.Background()
|
||||||
autoscalingNS = &corev1.Namespace{
|
autoscalingNS, mgr = createNamespace(GinkgoT(), k8sClient)
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling-listener" + RandStringRunes(5)},
|
configSecret = createDefaultSecret(GinkgoT(), k8sClient, autoscalingNS.Name)
|
||||||
}
|
|
||||||
|
|
||||||
err := k8sClient.Create(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for AutoScalingRunnerSet")
|
|
||||||
|
|
||||||
configSecret = &corev1.Secret{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "github-config-secret",
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
},
|
|
||||||
Data: map[string][]byte{
|
|
||||||
"github_token": []byte(autoscalingListenerTestGitHubToken),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, configSecret)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create config secret")
|
|
||||||
|
|
||||||
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
MetricsBindAddress: "0",
|
|
||||||
})
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create manager")
|
|
||||||
|
|
||||||
controller := &AutoscalingListenerReconciler{
|
controller := &AutoscalingListenerReconciler{
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
Scheme: mgr.GetScheme(),
|
Scheme: mgr.GetScheme(),
|
||||||
Log: logf.Log,
|
Log: logf.Log,
|
||||||
}
|
}
|
||||||
err = controller.SetupWithManager(mgr)
|
err := controller.SetupWithManager(mgr)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
||||||
|
|
||||||
min := 1
|
min := 1
|
||||||
|
|
@ -119,19 +96,7 @@ var _ = Describe("Test AutoScalingListener controller", func() {
|
||||||
err = k8sClient.Create(ctx, autoscalingListener)
|
err = k8sClient.Create(ctx, autoscalingListener)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingListener")
|
Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingListener")
|
||||||
|
|
||||||
go func() {
|
startManagers(GinkgoT(), mgr)
|
||||||
defer GinkgoRecover()
|
|
||||||
|
|
||||||
err := mgr.Start(ctx)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to start manager")
|
|
||||||
}()
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := k8sClient.Delete(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for AutoScalingRunnerSet")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Context("When creating a new AutoScalingListener", func() {
|
Context("When creating a new AutoScalingListener", func() {
|
||||||
|
|
@ -396,11 +361,11 @@ var _ = Describe("Test AutoScalingListener controller", func() {
|
||||||
|
|
||||||
var _ = Describe("Test AutoScalingListener controller with proxy", func() {
|
var _ = Describe("Test AutoScalingListener controller with proxy", func() {
|
||||||
var ctx context.Context
|
var ctx context.Context
|
||||||
var cancel context.CancelFunc
|
var mgr ctrl.Manager
|
||||||
autoscalingNS := new(corev1.Namespace)
|
var autoscalingNS *corev1.Namespace
|
||||||
autoscalingRunnerSet := new(actionsv1alpha1.AutoscalingRunnerSet)
|
var autoscalingRunnerSet *actionsv1alpha1.AutoscalingRunnerSet
|
||||||
configSecret := new(corev1.Secret)
|
var configSecret *corev1.Secret
|
||||||
autoscalingListener := new(actionsv1alpha1.AutoscalingListener)
|
var autoscalingListener *actionsv1alpha1.AutoscalingListener
|
||||||
|
|
||||||
createRunnerSetAndListener := func(proxy *actionsv1alpha1.ProxyConfig) {
|
createRunnerSetAndListener := func(proxy *actionsv1alpha1.ProxyConfig) {
|
||||||
min := 1
|
min := 1
|
||||||
|
|
@ -456,54 +421,19 @@ var _ = Describe("Test AutoScalingListener controller with proxy", func() {
|
||||||
}
|
}
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
ctx, cancel = context.WithCancel(context.TODO())
|
ctx = context.Background()
|
||||||
autoscalingNS = &corev1.Namespace{
|
autoscalingNS, mgr = createNamespace(GinkgoT(), k8sClient)
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling-listener" + RandStringRunes(5)},
|
configSecret = createDefaultSecret(GinkgoT(), k8sClient, autoscalingNS.Name)
|
||||||
}
|
|
||||||
|
|
||||||
err := k8sClient.Create(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for AutoScalingRunnerSet")
|
|
||||||
|
|
||||||
configSecret = &corev1.Secret{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "github-config-secret",
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
},
|
|
||||||
Data: map[string][]byte{
|
|
||||||
"github_token": []byte(autoscalingListenerTestGitHubToken),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, configSecret)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create config secret")
|
|
||||||
|
|
||||||
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
MetricsBindAddress: "0",
|
|
||||||
})
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create manager")
|
|
||||||
|
|
||||||
controller := &AutoscalingListenerReconciler{
|
controller := &AutoscalingListenerReconciler{
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
Scheme: mgr.GetScheme(),
|
Scheme: mgr.GetScheme(),
|
||||||
Log: logf.Log,
|
Log: logf.Log,
|
||||||
}
|
}
|
||||||
err = controller.SetupWithManager(mgr)
|
err := controller.SetupWithManager(mgr)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
||||||
|
|
||||||
go func() {
|
startManagers(GinkgoT(), mgr)
|
||||||
defer GinkgoRecover()
|
|
||||||
|
|
||||||
err := mgr.Start(ctx)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to start manager")
|
|
||||||
}()
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := k8sClient.Delete(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for AutoScalingRunnerSet")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should create a secret in the listener namespace containing proxy details, use it to populate env vars on the pod and should delete it as part of cleanup", func() {
|
It("should create a secret in the listener namespace containing proxy details, use it to populate env vars on the pod and should delete it as part of cleanup", func() {
|
||||||
|
|
|
||||||
|
|
@ -35,38 +35,15 @@ const (
|
||||||
|
|
||||||
var _ = Describe("Test AutoScalingRunnerSet controller", func() {
|
var _ = Describe("Test AutoScalingRunnerSet controller", func() {
|
||||||
var ctx context.Context
|
var ctx context.Context
|
||||||
var cancel context.CancelFunc
|
var mgr ctrl.Manager
|
||||||
autoscalingNS := new(corev1.Namespace)
|
var autoscalingNS *corev1.Namespace
|
||||||
autoscalingRunnerSet := new(v1alpha1.AutoscalingRunnerSet)
|
var autoscalingRunnerSet *v1alpha1.AutoscalingRunnerSet
|
||||||
configSecret := new(corev1.Secret)
|
var configSecret *corev1.Secret
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
ctx, cancel = context.WithCancel(context.TODO())
|
ctx = context.Background()
|
||||||
autoscalingNS = &corev1.Namespace{
|
autoscalingNS, mgr = createNamespace(GinkgoT(), k8sClient)
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling" + RandStringRunes(5)},
|
configSecret = createDefaultSecret(GinkgoT(), k8sClient, autoscalingNS.Name)
|
||||||
}
|
|
||||||
|
|
||||||
err := k8sClient.Create(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for AutoScalingRunnerSet")
|
|
||||||
|
|
||||||
configSecret = &corev1.Secret{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "github-config-secret",
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
},
|
|
||||||
Data: map[string][]byte{
|
|
||||||
"github_token": []byte(autoscalingRunnerSetTestGitHubToken),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, configSecret)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create config secret")
|
|
||||||
|
|
||||||
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
MetricsBindAddress: "0",
|
|
||||||
})
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create manager")
|
|
||||||
|
|
||||||
controller := &AutoscalingRunnerSetReconciler{
|
controller := &AutoscalingRunnerSetReconciler{
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
|
|
@ -76,7 +53,7 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() {
|
||||||
DefaultRunnerScaleSetListenerImage: "ghcr.io/actions/arc",
|
DefaultRunnerScaleSetListenerImage: "ghcr.io/actions/arc",
|
||||||
ActionsClient: fake.NewMultiClient(),
|
ActionsClient: fake.NewMultiClient(),
|
||||||
}
|
}
|
||||||
err = controller.SetupWithManager(mgr)
|
err := controller.SetupWithManager(mgr)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
||||||
|
|
||||||
min := 1
|
min := 1
|
||||||
|
|
@ -108,19 +85,7 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() {
|
||||||
err = k8sClient.Create(ctx, autoscalingRunnerSet)
|
err = k8sClient.Create(ctx, autoscalingRunnerSet)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingRunnerSet")
|
Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingRunnerSet")
|
||||||
|
|
||||||
go func() {
|
startManagers(GinkgoT(), mgr)
|
||||||
defer GinkgoRecover()
|
|
||||||
|
|
||||||
err := mgr.Start(ctx)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to start manager")
|
|
||||||
}()
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := k8sClient.Delete(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for AutoScalingRunnerSet")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Context("When creating a new AutoScalingRunnerSet", func() {
|
Context("When creating a new AutoScalingRunnerSet", func() {
|
||||||
|
|
@ -438,36 +403,12 @@ var _ = Describe("Test AutoScalingRunnerSet controller", func() {
|
||||||
var _ = Describe("Test AutoscalingController creation failures", func() {
|
var _ = Describe("Test AutoscalingController creation failures", func() {
|
||||||
Context("When autoscaling runner set creation fails on the client", func() {
|
Context("When autoscaling runner set creation fails on the client", func() {
|
||||||
var ctx context.Context
|
var ctx context.Context
|
||||||
var cancel context.CancelFunc
|
var mgr ctrl.Manager
|
||||||
autoscalingNS := new(corev1.Namespace)
|
var autoscalingNS *corev1.Namespace
|
||||||
configSecret := new(corev1.Secret)
|
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
ctx, cancel = context.WithCancel(context.TODO())
|
ctx = context.Background()
|
||||||
autoscalingNS = &corev1.Namespace{
|
autoscalingNS, mgr = createNamespace(GinkgoT(), k8sClient)
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling" + RandStringRunes(5)},
|
|
||||||
}
|
|
||||||
|
|
||||||
err := k8sClient.Create(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for AutoScalingRunnerSet")
|
|
||||||
|
|
||||||
configSecret = &corev1.Secret{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "github-config-secret",
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
},
|
|
||||||
Data: map[string][]byte{
|
|
||||||
"github_token": []byte(autoscalingRunnerSetTestGitHubToken),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, configSecret)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create config secret")
|
|
||||||
|
|
||||||
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
|
|
||||||
MetricsBindAddress: "0",
|
|
||||||
})
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create manager")
|
|
||||||
|
|
||||||
controller := &AutoscalingRunnerSetReconciler{
|
controller := &AutoscalingRunnerSetReconciler{
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
|
|
@ -477,22 +418,10 @@ var _ = Describe("Test AutoscalingController creation failures", func() {
|
||||||
DefaultRunnerScaleSetListenerImage: "ghcr.io/actions/arc",
|
DefaultRunnerScaleSetListenerImage: "ghcr.io/actions/arc",
|
||||||
ActionsClient: fake.NewMultiClient(),
|
ActionsClient: fake.NewMultiClient(),
|
||||||
}
|
}
|
||||||
err = controller.SetupWithManager(mgr)
|
err := controller.SetupWithManager(mgr)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
||||||
|
|
||||||
go func() {
|
startManagers(GinkgoT(), mgr)
|
||||||
defer GinkgoRecover()
|
|
||||||
|
|
||||||
err := mgr.Start(ctx)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to start manager")
|
|
||||||
}()
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := k8sClient.Delete(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for AutoScalingRunnerSet")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
It("It should be able to clean up if annotation related to scale set id does not exist", func() {
|
It("It should be able to clean up if annotation related to scale set id does not exist", func() {
|
||||||
|
|
@ -583,57 +512,17 @@ var _ = Describe("Test AutoscalingController creation failures", func() {
|
||||||
var _ = Describe("Test Client optional configuration", func() {
|
var _ = Describe("Test Client optional configuration", func() {
|
||||||
Context("When specifying a proxy", func() {
|
Context("When specifying a proxy", func() {
|
||||||
var ctx context.Context
|
var ctx context.Context
|
||||||
var cancel context.CancelFunc
|
|
||||||
|
|
||||||
autoscalingNS := new(corev1.Namespace)
|
|
||||||
configSecret := new(corev1.Secret)
|
|
||||||
var mgr ctrl.Manager
|
var mgr ctrl.Manager
|
||||||
|
var autoscalingNS *corev1.Namespace
|
||||||
|
var configSecret *corev1.Secret
|
||||||
|
var controller *AutoscalingRunnerSetReconciler
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
ctx, cancel = context.WithCancel(context.TODO())
|
ctx = context.Background()
|
||||||
autoscalingNS = &corev1.Namespace{
|
autoscalingNS, mgr = createNamespace(GinkgoT(), k8sClient)
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling" + RandStringRunes(5)},
|
configSecret = createDefaultSecret(GinkgoT(), k8sClient, autoscalingNS.Name)
|
||||||
}
|
|
||||||
|
|
||||||
err := k8sClient.Create(ctx, autoscalingNS)
|
controller = &AutoscalingRunnerSetReconciler{
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for AutoScalingRunnerSet")
|
|
||||||
|
|
||||||
configSecret = &corev1.Secret{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "github-config-secret",
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
},
|
|
||||||
Data: map[string][]byte{
|
|
||||||
"github_token": []byte(autoscalingRunnerSetTestGitHubToken),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, configSecret)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create config secret")
|
|
||||||
|
|
||||||
mgr, err = ctrl.NewManager(cfg, ctrl.Options{
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
MetricsBindAddress: "0",
|
|
||||||
})
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create manager")
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
defer GinkgoRecover()
|
|
||||||
|
|
||||||
err := mgr.Start(ctx)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to start manager")
|
|
||||||
}()
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := k8sClient.Delete(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for AutoScalingRunnerSet")
|
|
||||||
})
|
|
||||||
|
|
||||||
It("should be able to make requests to a server using a proxy", func() {
|
|
||||||
controller := &AutoscalingRunnerSetReconciler{
|
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
Scheme: mgr.GetScheme(),
|
Scheme: mgr.GetScheme(),
|
||||||
Log: logf.Log,
|
Log: logf.Log,
|
||||||
|
|
@ -644,6 +533,10 @@ var _ = Describe("Test Client optional configuration", func() {
|
||||||
err := controller.SetupWithManager(mgr)
|
err := controller.SetupWithManager(mgr)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
||||||
|
|
||||||
|
startManagers(GinkgoT(), mgr)
|
||||||
|
})
|
||||||
|
|
||||||
|
It("should be able to make requests to a server using a proxy", func() {
|
||||||
serverSuccessfullyCalled := false
|
serverSuccessfullyCalled := false
|
||||||
proxy := testserver.New(GinkgoT(), http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
proxy := testserver.New(GinkgoT(), http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
serverSuccessfullyCalled = true
|
serverSuccessfullyCalled = true
|
||||||
|
|
@ -681,7 +574,7 @@ var _ = Describe("Test Client optional configuration", func() {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, autoscalingRunnerSet)
|
err := k8sClient.Create(ctx, autoscalingRunnerSet)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingRunnerSet")
|
Expect(err).NotTo(HaveOccurred(), "failed to create AutoScalingRunnerSet")
|
||||||
|
|
||||||
// wait for server to be called
|
// wait for server to be called
|
||||||
|
|
@ -695,17 +588,6 @@ var _ = Describe("Test Client optional configuration", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should be able to make requests to a server using a proxy with user info", func() {
|
It("should be able to make requests to a server using a proxy with user info", func() {
|
||||||
controller := &AutoscalingRunnerSetReconciler{
|
|
||||||
Client: mgr.GetClient(),
|
|
||||||
Scheme: mgr.GetScheme(),
|
|
||||||
Log: logf.Log,
|
|
||||||
ControllerNamespace: autoscalingNS.Name,
|
|
||||||
DefaultRunnerScaleSetListenerImage: "ghcr.io/actions/arc",
|
|
||||||
ActionsClient: actions.NewMultiClient("test", logr.Discard()),
|
|
||||||
}
|
|
||||||
err := controller.SetupWithManager(mgr)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
|
||||||
|
|
||||||
serverSuccessfullyCalled := false
|
serverSuccessfullyCalled := false
|
||||||
proxy := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
proxy := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
header := r.Header.Get("Proxy-Authorization")
|
header := r.Header.Get("Proxy-Authorization")
|
||||||
|
|
@ -734,7 +616,7 @@ var _ = Describe("Test Client optional configuration", func() {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, secretCredentials)
|
err := k8sClient.Create(ctx, secretCredentials)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create secret credentials")
|
Expect(err).NotTo(HaveOccurred(), "failed to create secret credentials")
|
||||||
|
|
||||||
min := 1
|
min := 1
|
||||||
|
|
|
||||||
|
|
@ -22,11 +22,9 @@ import (
|
||||||
ctrl "sigs.k8s.io/controller-runtime"
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/manager"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
gh_token = "gh_token"
|
|
||||||
timeout = time.Second * 10
|
timeout = time.Second * 10
|
||||||
interval = time.Millisecond * 250
|
interval = time.Millisecond * 250
|
||||||
runnerImage = "ghcr.io/actions/actions-runner:latest"
|
runnerImage = "ghcr.io/actions/actions-runner:latest"
|
||||||
|
|
@ -87,42 +85,16 @@ func newExampleRunner(name, namespace, configSecretName string) *v1alpha1.Epheme
|
||||||
var _ = Describe("EphemeralRunner", func() {
|
var _ = Describe("EphemeralRunner", func() {
|
||||||
Describe("Resource manipulation", func() {
|
Describe("Resource manipulation", func() {
|
||||||
var ctx context.Context
|
var ctx context.Context
|
||||||
var cancel context.CancelFunc
|
var mgr ctrl.Manager
|
||||||
|
var autoscalingNS *corev1.Namespace
|
||||||
autoscalingNS := new(corev1.Namespace)
|
var configSecret *corev1.Secret
|
||||||
configSecret := new(corev1.Secret)
|
var controller *EphemeralRunnerReconciler
|
||||||
|
var ephemeralRunner *v1alpha1.EphemeralRunner
|
||||||
controller := new(EphemeralRunnerReconciler)
|
|
||||||
ephemeralRunner := new(v1alpha1.EphemeralRunner)
|
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
ctx, cancel = context.WithCancel(context.Background())
|
ctx = context.Background()
|
||||||
autoscalingNS = &corev1.Namespace{
|
autoscalingNS, mgr = createNamespace(GinkgoT(), k8sClient)
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
configSecret = createDefaultSecret(GinkgoT(), k8sClient, autoscalingNS.Name)
|
||||||
Name: "testns-autoscaling-runner" + RandStringRunes(5),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
err := k8sClient.Create(ctx, autoscalingNS)
|
|
||||||
Expect(err).To(BeNil(), "failed to create test namespace for EphemeralRunner")
|
|
||||||
|
|
||||||
configSecret = &corev1.Secret{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "github-config-secret",
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
},
|
|
||||||
Data: map[string][]byte{
|
|
||||||
"github_token": []byte(gh_token),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, configSecret)
|
|
||||||
Expect(err).To(BeNil(), "failed to create config secret")
|
|
||||||
|
|
||||||
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
MetricsBindAddress: "0",
|
|
||||||
})
|
|
||||||
Expect(err).To(BeNil(), "failed to create manager")
|
|
||||||
|
|
||||||
controller = &EphemeralRunnerReconciler{
|
controller = &EphemeralRunnerReconciler{
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
|
|
@ -131,26 +103,14 @@ var _ = Describe("EphemeralRunner", func() {
|
||||||
ActionsClient: fake.NewMultiClient(),
|
ActionsClient: fake.NewMultiClient(),
|
||||||
}
|
}
|
||||||
|
|
||||||
err = controller.SetupWithManager(mgr)
|
err := controller.SetupWithManager(mgr)
|
||||||
Expect(err).To(BeNil(), "failed to setup controller")
|
Expect(err).To(BeNil(), "failed to setup controller")
|
||||||
|
|
||||||
ephemeralRunner = newExampleRunner("test-runner", autoscalingNS.Name, configSecret.Name)
|
ephemeralRunner = newExampleRunner("test-runner", autoscalingNS.Name, configSecret.Name)
|
||||||
err = k8sClient.Create(ctx, ephemeralRunner)
|
err = k8sClient.Create(ctx, ephemeralRunner)
|
||||||
Expect(err).To(BeNil(), "failed to create ephemeral runner")
|
Expect(err).To(BeNil(), "failed to create ephemeral runner")
|
||||||
|
|
||||||
go func() {
|
startManagers(GinkgoT(), mgr)
|
||||||
defer GinkgoRecover()
|
|
||||||
|
|
||||||
err := mgr.Start(ctx)
|
|
||||||
Expect(err).To(BeNil(), "failed to start manager")
|
|
||||||
}()
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := k8sClient.Delete(ctx, autoscalingNS)
|
|
||||||
Expect(err).To(BeNil(), "failed to delete test namespace for EphemeralRunner")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
It("It should create/add all required resources for EphemeralRunner (finalizer, jit secret)", func() {
|
It("It should create/add all required resources for EphemeralRunner (finalizer, jit secret)", func() {
|
||||||
|
|
@ -668,52 +628,17 @@ var _ = Describe("EphemeralRunner", func() {
|
||||||
|
|
||||||
Describe("Checking the API", func() {
|
Describe("Checking the API", func() {
|
||||||
var ctx context.Context
|
var ctx context.Context
|
||||||
var cancel context.CancelFunc
|
var autoscalingNS *corev1.Namespace
|
||||||
|
var configSecret *corev1.Secret
|
||||||
autoscalingNS := new(corev1.Namespace)
|
var controller *EphemeralRunnerReconciler
|
||||||
configSecret := new(corev1.Secret)
|
var mgr ctrl.Manager
|
||||||
|
|
||||||
var mgr manager.Manager
|
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
ctx, cancel = context.WithCancel(context.Background())
|
ctx = context.Background()
|
||||||
autoscalingNS = &corev1.Namespace{
|
autoscalingNS, mgr = createNamespace(GinkgoT(), k8sClient)
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
configSecret = createDefaultSecret(GinkgoT(), k8sClient, autoscalingNS.Name)
|
||||||
Name: "testns-autoscaling-runner" + RandStringRunes(5),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
err := k8sClient.Create(ctx, autoscalingNS)
|
|
||||||
Expect(err).To(BeNil(), "failed to create test namespace for EphemeralRunner")
|
|
||||||
|
|
||||||
configSecret = &corev1.Secret{
|
controller = &EphemeralRunnerReconciler{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "github-config-secret",
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
},
|
|
||||||
Data: map[string][]byte{
|
|
||||||
"github_token": []byte(gh_token),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, configSecret)
|
|
||||||
Expect(err).To(BeNil(), "failed to create config secret")
|
|
||||||
|
|
||||||
mgr, err = ctrl.NewManager(cfg, ctrl.Options{
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
MetricsBindAddress: "0",
|
|
||||||
})
|
|
||||||
Expect(err).To(BeNil(), "failed to create manager")
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := k8sClient.Delete(ctx, autoscalingNS)
|
|
||||||
Expect(err).To(BeNil(), "failed to delete test namespace for EphemeralRunner")
|
|
||||||
})
|
|
||||||
|
|
||||||
It("It should set the Phase to Succeeded", func() {
|
|
||||||
controller := &EphemeralRunnerReconciler{
|
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
Scheme: mgr.GetScheme(),
|
Scheme: mgr.GetScheme(),
|
||||||
Log: logf.Log,
|
Log: logf.Log,
|
||||||
|
|
@ -732,20 +657,16 @@ var _ = Describe("EphemeralRunner", func() {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
err := controller.SetupWithManager(mgr)
|
err := controller.SetupWithManager(mgr)
|
||||||
Expect(err).To(BeNil(), "failed to setup controller")
|
Expect(err).To(BeNil(), "failed to setup controller")
|
||||||
|
|
||||||
go func() {
|
startManagers(GinkgoT(), mgr)
|
||||||
defer GinkgoRecover()
|
})
|
||||||
|
|
||||||
err := mgr.Start(ctx)
|
|
||||||
Expect(err).To(BeNil(), "failed to start manager")
|
|
||||||
}()
|
|
||||||
|
|
||||||
|
It("It should set the Phase to Succeeded", func() {
|
||||||
ephemeralRunner := newExampleRunner("test-runner", autoscalingNS.Name, configSecret.Name)
|
ephemeralRunner := newExampleRunner("test-runner", autoscalingNS.Name, configSecret.Name)
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, ephemeralRunner)
|
err := k8sClient.Create(ctx, ephemeralRunner)
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
|
||||||
pod := new(corev1.Pod)
|
pod := new(corev1.Pod)
|
||||||
|
|
@ -780,40 +701,15 @@ var _ = Describe("EphemeralRunner", func() {
|
||||||
|
|
||||||
Describe("Pod proxy config", func() {
|
Describe("Pod proxy config", func() {
|
||||||
var ctx context.Context
|
var ctx context.Context
|
||||||
var cancel context.CancelFunc
|
var mgr ctrl.Manager
|
||||||
|
var autoScalingNS *corev1.Namespace
|
||||||
autoScalingNS := new(corev1.Namespace)
|
var configSecret *corev1.Secret
|
||||||
configSecret := new(corev1.Secret)
|
var controller *EphemeralRunnerReconciler
|
||||||
controller := new(EphemeralRunnerReconciler)
|
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
ctx, cancel = context.WithCancel(context.Background())
|
ctx = context.Background()
|
||||||
autoScalingNS = &corev1.Namespace{
|
autoScalingNS, mgr = createNamespace(GinkgoT(), k8sClient)
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
configSecret = createDefaultSecret(GinkgoT(), k8sClient, autoScalingNS.Name)
|
||||||
Name: "testns-autoscaling-runner" + RandStringRunes(5),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
err := k8sClient.Create(ctx, autoScalingNS)
|
|
||||||
Expect(err).To(BeNil(), "failed to create test namespace for EphemeralRunner")
|
|
||||||
|
|
||||||
configSecret = &corev1.Secret{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "github-config-secret",
|
|
||||||
Namespace: autoScalingNS.Name,
|
|
||||||
},
|
|
||||||
Data: map[string][]byte{
|
|
||||||
"github_token": []byte(gh_token),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, configSecret)
|
|
||||||
Expect(err).To(BeNil(), "failed to create config secret")
|
|
||||||
|
|
||||||
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
|
|
||||||
Namespace: autoScalingNS.Name,
|
|
||||||
MetricsBindAddress: "0",
|
|
||||||
})
|
|
||||||
Expect(err).To(BeNil(), "failed to create manager")
|
|
||||||
|
|
||||||
controller = &EphemeralRunnerReconciler{
|
controller = &EphemeralRunnerReconciler{
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
|
|
@ -821,23 +717,10 @@ var _ = Describe("EphemeralRunner", func() {
|
||||||
Log: logf.Log,
|
Log: logf.Log,
|
||||||
ActionsClient: fake.NewMultiClient(),
|
ActionsClient: fake.NewMultiClient(),
|
||||||
}
|
}
|
||||||
|
err := controller.SetupWithManager(mgr)
|
||||||
err = controller.SetupWithManager(mgr)
|
|
||||||
Expect(err).To(BeNil(), "failed to setup controller")
|
Expect(err).To(BeNil(), "failed to setup controller")
|
||||||
|
|
||||||
go func() {
|
startManagers(GinkgoT(), mgr)
|
||||||
defer GinkgoRecover()
|
|
||||||
|
|
||||||
err := mgr.Start(ctx)
|
|
||||||
Expect(err).To(BeNil(), "failed to start manager")
|
|
||||||
}()
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := k8sClient.Delete(ctx, autoScalingNS)
|
|
||||||
Expect(err).To(BeNil(), "failed to delete test namespace for EphemeralRunner")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
It("uses an actions client with proxy transport", func() {
|
It("uses an actions client with proxy transport", func() {
|
||||||
|
|
|
||||||
|
|
@ -34,38 +34,15 @@ const (
|
||||||
|
|
||||||
var _ = Describe("Test EphemeralRunnerSet controller", func() {
|
var _ = Describe("Test EphemeralRunnerSet controller", func() {
|
||||||
var ctx context.Context
|
var ctx context.Context
|
||||||
var cancel context.CancelFunc
|
var mgr ctrl.Manager
|
||||||
autoscalingNS := new(corev1.Namespace)
|
var autoscalingNS *corev1.Namespace
|
||||||
ephemeralRunnerSet := new(actionsv1alpha1.EphemeralRunnerSet)
|
var ephemeralRunnerSet *actionsv1alpha1.EphemeralRunnerSet
|
||||||
configSecret := new(corev1.Secret)
|
var configSecret *corev1.Secret
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
ctx, cancel = context.WithCancel(context.TODO())
|
ctx = context.Background()
|
||||||
autoscalingNS = &corev1.Namespace{
|
autoscalingNS, mgr = createNamespace(GinkgoT(), k8sClient)
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling-runnerset" + RandStringRunes(5)},
|
configSecret = createDefaultSecret(GinkgoT(), k8sClient, autoscalingNS.Name)
|
||||||
}
|
|
||||||
|
|
||||||
err := k8sClient.Create(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for EphemeralRunnerSet")
|
|
||||||
|
|
||||||
configSecret = &corev1.Secret{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "github-config-secret",
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
},
|
|
||||||
Data: map[string][]byte{
|
|
||||||
"github_token": []byte(ephemeralRunnerSetTestGitHubToken),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, configSecret)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create config secret")
|
|
||||||
|
|
||||||
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
MetricsBindAddress: "0",
|
|
||||||
})
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create manager")
|
|
||||||
|
|
||||||
controller := &EphemeralRunnerSetReconciler{
|
controller := &EphemeralRunnerSetReconciler{
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
|
|
@ -73,7 +50,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() {
|
||||||
Log: logf.Log,
|
Log: logf.Log,
|
||||||
ActionsClient: fake.NewMultiClient(),
|
ActionsClient: fake.NewMultiClient(),
|
||||||
}
|
}
|
||||||
err = controller.SetupWithManager(mgr)
|
err := controller.SetupWithManager(mgr)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
||||||
|
|
||||||
ephemeralRunnerSet = &actionsv1alpha1.EphemeralRunnerSet{
|
ephemeralRunnerSet = &actionsv1alpha1.EphemeralRunnerSet{
|
||||||
|
|
@ -103,19 +80,7 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() {
|
||||||
err = k8sClient.Create(ctx, ephemeralRunnerSet)
|
err = k8sClient.Create(ctx, ephemeralRunnerSet)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create EphemeralRunnerSet")
|
Expect(err).NotTo(HaveOccurred(), "failed to create EphemeralRunnerSet")
|
||||||
|
|
||||||
go func() {
|
startManagers(GinkgoT(), mgr)
|
||||||
defer GinkgoRecover()
|
|
||||||
|
|
||||||
err := mgr.Start(ctx)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to start manager")
|
|
||||||
}()
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := k8sClient.Delete(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for EphemeralRunnerSet")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
Context("When creating a new EphemeralRunnerSet", func() {
|
Context("When creating a new EphemeralRunnerSet", func() {
|
||||||
|
|
@ -595,38 +560,15 @@ var _ = Describe("Test EphemeralRunnerSet controller", func() {
|
||||||
|
|
||||||
var _ = Describe("Test EphemeralRunnerSet controller with proxy settings", func() {
|
var _ = Describe("Test EphemeralRunnerSet controller with proxy settings", func() {
|
||||||
var ctx context.Context
|
var ctx context.Context
|
||||||
var cancel context.CancelFunc
|
var mgr ctrl.Manager
|
||||||
autoscalingNS := new(corev1.Namespace)
|
var autoscalingNS *corev1.Namespace
|
||||||
ephemeralRunnerSet := new(actionsv1alpha1.EphemeralRunnerSet)
|
var ephemeralRunnerSet *actionsv1alpha1.EphemeralRunnerSet
|
||||||
configSecret := new(corev1.Secret)
|
var configSecret *corev1.Secret
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
ctx, cancel = context.WithCancel(context.TODO())
|
ctx = context.Background()
|
||||||
autoscalingNS = &corev1.Namespace{
|
autoscalingNS, mgr = createNamespace(GinkgoT(), k8sClient)
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling-runnerset" + RandStringRunes(5)},
|
configSecret = createDefaultSecret(GinkgoT(), k8sClient, autoscalingNS.Name)
|
||||||
}
|
|
||||||
|
|
||||||
err := k8sClient.Create(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create test namespace for EphemeralRunnerSet")
|
|
||||||
|
|
||||||
configSecret = &corev1.Secret{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "github-config-secret",
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
},
|
|
||||||
Data: map[string][]byte{
|
|
||||||
"github_token": []byte(ephemeralRunnerSetTestGitHubToken),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
err = k8sClient.Create(ctx, configSecret)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create config secret")
|
|
||||||
|
|
||||||
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
|
|
||||||
Namespace: autoscalingNS.Name,
|
|
||||||
MetricsBindAddress: "0",
|
|
||||||
})
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to create manager")
|
|
||||||
|
|
||||||
controller := &EphemeralRunnerSetReconciler{
|
controller := &EphemeralRunnerSetReconciler{
|
||||||
Client: mgr.GetClient(),
|
Client: mgr.GetClient(),
|
||||||
|
|
@ -634,22 +576,10 @@ var _ = Describe("Test EphemeralRunnerSet controller with proxy settings", func(
|
||||||
Log: logf.Log,
|
Log: logf.Log,
|
||||||
ActionsClient: actions.NewMultiClient("test", logr.Discard()),
|
ActionsClient: actions.NewMultiClient("test", logr.Discard()),
|
||||||
}
|
}
|
||||||
err = controller.SetupWithManager(mgr)
|
err := controller.SetupWithManager(mgr)
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
|
||||||
|
|
||||||
go func() {
|
startManagers(GinkgoT(), mgr)
|
||||||
defer GinkgoRecover()
|
|
||||||
|
|
||||||
err := mgr.Start(ctx)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to start manager")
|
|
||||||
}()
|
|
||||||
})
|
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
defer cancel()
|
|
||||||
|
|
||||||
err := k8sClient.Delete(ctx, autoscalingNS)
|
|
||||||
Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace for EphemeralRunnerSet")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should create a proxy secret and delete the proxy secreat after the runner-set is deleted", func() {
|
It("should create a proxy secret and delete the proxy secreat after the runner-set is deleted", func() {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
package actionsgithubcom
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/onsi/ginkgo/v2"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"golang.org/x/sync/errgroup"
|
||||||
|
corev1 "k8s.io/api/core/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
|
"sigs.k8s.io/controller-runtime/pkg/manager"
|
||||||
|
)
|
||||||
|
|
||||||
|
const defaultGitHubToken = "gh_token"
|
||||||
|
|
||||||
|
func startManagers(t ginkgo.GinkgoTInterface, first manager.Manager, others ...manager.Manager) {
|
||||||
|
for _, mgr := range append([]manager.Manager{first}, others...) {
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
|
||||||
|
g, ctx := errgroup.WithContext(ctx)
|
||||||
|
g.Go(func() error {
|
||||||
|
return mgr.Start(ctx)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
cancel()
|
||||||
|
require.NoError(t, g.Wait())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func createNamespace(t ginkgo.GinkgoTInterface, client client.Client) (*corev1.Namespace, manager.Manager) {
|
||||||
|
ns := &corev1.Namespace{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "testns-autoscaling" + RandStringRunes(5)},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := k8sClient.Create(context.Background(), ns)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
err := k8sClient.Delete(context.Background(), ns)
|
||||||
|
require.NoError(t, err)
|
||||||
|
})
|
||||||
|
|
||||||
|
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
|
||||||
|
Namespace: ns.Name,
|
||||||
|
MetricsBindAddress: "0",
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
return ns, mgr
|
||||||
|
}
|
||||||
|
|
||||||
|
func createDefaultSecret(t ginkgo.GinkgoTInterface, client client.Client, namespace string) *corev1.Secret {
|
||||||
|
secret := &corev1.Secret{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "github-config-secret",
|
||||||
|
Namespace: namespace,
|
||||||
|
},
|
||||||
|
Data: map[string][]byte{
|
||||||
|
"github_token": []byte(defaultGitHubToken),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := k8sClient.Create(context.Background(), secret)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
return secret
|
||||||
|
}
|
||||||
1
go.mod
1
go.mod
|
|
@ -28,6 +28,7 @@ require (
|
||||||
go.uber.org/zap v1.24.0
|
go.uber.org/zap v1.24.0
|
||||||
golang.org/x/net v0.7.0
|
golang.org/x/net v0.7.0
|
||||||
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783
|
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4
|
||||||
gomodules.xyz/jsonpatch/v2 v2.2.0
|
gomodules.xyz/jsonpatch/v2 v2.2.0
|
||||||
gopkg.in/yaml.v2 v2.4.0
|
gopkg.in/yaml.v2 v2.4.0
|
||||||
k8s.io/api v0.26.1
|
k8s.io/api v0.26.1
|
||||||
|
|
|
||||||
2
go.sum
2
go.sum
|
|
@ -473,6 +473,8 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ
|
||||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue