76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
| 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/cache"
 | |
| 	"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{
 | |
| 		Cache: cache.Options{
 | |
| 			DefaultNamespaces: map[string]cache.Config{
 | |
| 				ns.Name: {},
 | |
| 			},
 | |
| 		},
 | |
| 	})
 | |
| 	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
 | |
| }
 |