| 
						
					 | 
					 | 
					@ -31,23 +31,22 @@ import (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					type testEnvironment struct {
 | 
					 | 
					 | 
					 | 
					type testEnvironment struct {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						Namespace *corev1.Namespace
 | 
					 | 
					 | 
					 | 
						Namespace *corev1.Namespace
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						Responses *fake.FixedResponses
 | 
					 | 
					 | 
					 | 
						Responses *fake.FixedResponses
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						webhookServer    *httptest.Server
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						ghClient         *github2.Client
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						fakeRunnerList   *fake.RunnersList
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						fakeGithubServer *httptest.Server
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					var (
 | 
					 | 
					 | 
					 | 
					var (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						workflowRunsFor3Replicas             = `{"total_count": 5, "workflow_runs":[{"status":"queued"}, {"status":"queued"}, {"status":"in_progress"}, {"status":"in_progress"}, {"status":"completed"}]}"`
 | 
					 | 
					 | 
					 | 
						workflowRunsFor3Replicas             = `{"total_count": 5, "workflow_runs":[{"status":"queued"}, {"status":"queued"}, {"status":"in_progress"}, {"status":"in_progress"}, {"status":"completed"}]}"`
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						workflowRunsFor3Replicas_queued      = `{"total_count": 2, "workflow_runs":[{"status":"queued"}, {"status":"queued"}]}"`
 | 
					 | 
					 | 
					 | 
						workflowRunsFor3Replicas_queued      = `{"total_count": 2, "workflow_runs":[{"status":"queued"}, {"status":"queued"}]}"`
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						workflowRunsFor3Replicas_in_progress = `{"total_count": 2, "workflow_runs":[{"status":"in_progress"}, {"status":"in_progress"}]}"`
 | 
					 | 
					 | 
					 | 
						workflowRunsFor3Replicas_in_progress = `{"total_count": 1, "workflow_runs":[{"status":"in_progress"}]}"`
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						workflowRunsFor1Replicas             = `{"total_count": 6, "workflow_runs":[{"status":"queued"}, {"status":"completed"}, {"status":"completed"}, {"status":"completed"}, {"status":"completed"}]}"`
 | 
					 | 
					 | 
					 | 
						workflowRunsFor1Replicas             = `{"total_count": 6, "workflow_runs":[{"status":"queued"}, {"status":"completed"}, {"status":"completed"}, {"status":"completed"}, {"status":"completed"}]}"`
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						workflowRunsFor1Replicas_queued      = `{"total_count": 1, "workflow_runs":[{"status":"queued"}]}"`
 | 
					 | 
					 | 
					 | 
						workflowRunsFor1Replicas_queued      = `{"total_count": 1, "workflow_runs":[{"status":"queued"}]}"`
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						workflowRunsFor1Replicas_in_progress = `{"total_count": 0, "workflow_runs":[]}"`
 | 
					 | 
					 | 
					 | 
						workflowRunsFor1Replicas_in_progress = `{"total_count": 0, "workflow_runs":[]}"`
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					)
 | 
					 | 
					 | 
					 | 
					)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					var webhookServer *httptest.Server
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					var ghClient *github2.Client
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					var fakeRunnerList *fake.RunnersList
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// SetupIntegrationTest will set up a testing environment.
 | 
					 | 
					 | 
					 | 
					// SetupIntegrationTest will set up a testing environment.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// This includes:
 | 
					 | 
					 | 
					 | 
					// This includes:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// * creating a Namespace to be used during the test
 | 
					 | 
					 | 
					 | 
					// * creating a Namespace to be used during the test
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -58,19 +57,11 @@ func SetupIntegrationTest(ctx context.Context) *testEnvironment {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						var stopCh chan struct{}
 | 
					 | 
					 | 
					 | 
						var stopCh chan struct{}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ns := &corev1.Namespace{}
 | 
					 | 
					 | 
					 | 
						ns := &corev1.Namespace{}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						responses := &fake.FixedResponses{}
 | 
					 | 
					 | 
					 | 
						env := &testEnvironment{
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						responses.ListRunners = fake.DefaultListRunnersHandler()
 | 
					 | 
					 | 
					 | 
							Namespace:     ns,
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						responses.ListRepositoryWorkflowRuns = &fake.Handler{
 | 
					 | 
					 | 
					 | 
							webhookServer: nil,
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Status: 200,
 | 
					 | 
					 | 
					 | 
							ghClient:      nil,
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Body:   workflowRunsFor3Replicas,
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Statuses: map[string]string{
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								"queued":      workflowRunsFor3Replicas_queued,
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								"in_progress": workflowRunsFor3Replicas_in_progress,
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							},
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fakeRunnerList = fake.NewRunnersList()
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						responses.ListRunners = fakeRunnerList.HandleList()
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fakeGithubServer := fake.NewServer(fake.WithFixedResponses(responses))
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						BeforeEach(func() {
 | 
					 | 
					 | 
					 | 
						BeforeEach(func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							stopCh = make(chan struct{})
 | 
					 | 
					 | 
					 | 
							stopCh = make(chan struct{})
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -84,14 +75,36 @@ func SetupIntegrationTest(ctx context.Context) *testEnvironment {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							mgr, err := ctrl.NewManager(cfg, ctrl.Options{})
 | 
					 | 
					 | 
					 | 
							mgr, err := ctrl.NewManager(cfg, ctrl.Options{})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to create manager")
 | 
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to create manager")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ghClient = newGithubClient(fakeGithubServer)
 | 
					 | 
					 | 
					 | 
							responses := &fake.FixedResponses{}
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							responses.ListRunners = fake.DefaultListRunnersHandler()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							responses.ListRepositoryWorkflowRuns = &fake.Handler{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Status: 200,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Body:   workflowRunsFor3Replicas,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Statuses: map[string]string{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"queued":      workflowRunsFor3Replicas_queued,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									"in_progress": workflowRunsFor3Replicas_in_progress,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							fakeRunnerList := fake.NewRunnersList()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							responses.ListRunners = fakeRunnerList.HandleList()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							fakeGithubServer := fake.NewServer(fake.WithFixedResponses(responses))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							env.Responses = responses
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							env.fakeRunnerList = fakeRunnerList
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							env.fakeGithubServer = fakeGithubServer
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							env.ghClient = newGithubClient(fakeGithubServer)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							controllerName := func(name string) string {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								return fmt.Sprintf("%s%s", ns.Name, name)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							replicasetController := &RunnerReplicaSetReconciler{
 | 
					 | 
					 | 
					 | 
							replicasetController := &RunnerReplicaSetReconciler{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Client:       mgr.GetClient(),
 | 
					 | 
					 | 
					 | 
								Client:       mgr.GetClient(),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Scheme:       scheme.Scheme,
 | 
					 | 
					 | 
					 | 
								Scheme:       scheme.Scheme,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Log:          logf.Log,
 | 
					 | 
					 | 
					 | 
								Log:          logf.Log,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Recorder:     mgr.GetEventRecorderFor("runnerreplicaset-controller"),
 | 
					 | 
					 | 
					 | 
								Recorder:     mgr.GetEventRecorderFor("runnerreplicaset-controller"),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								GitHubClient: ghClient,
 | 
					 | 
					 | 
					 | 
								GitHubClient: env.ghClient,
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Name:         controllerName("runnerreplicaset"),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							err = replicasetController.SetupWithManager(mgr)
 | 
					 | 
					 | 
					 | 
							err = replicasetController.SetupWithManager(mgr)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
 | 
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -101,19 +114,19 @@ func SetupIntegrationTest(ctx context.Context) *testEnvironment {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Scheme:   scheme.Scheme,
 | 
					 | 
					 | 
					 | 
								Scheme:   scheme.Scheme,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Log:      logf.Log,
 | 
					 | 
					 | 
					 | 
								Log:      logf.Log,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Recorder: mgr.GetEventRecorderFor("runnerdeployment-controller"),
 | 
					 | 
					 | 
					 | 
								Recorder: mgr.GetEventRecorderFor("runnerdeployment-controller"),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Name:     controllerName("runnnerdeployment"),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							err = deploymentsController.SetupWithManager(mgr)
 | 
					 | 
					 | 
					 | 
							err = deploymentsController.SetupWithManager(mgr)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
 | 
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							client := newGithubClient(fakeGithubServer)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							autoscalerController := &HorizontalRunnerAutoscalerReconciler{
 | 
					 | 
					 | 
					 | 
							autoscalerController := &HorizontalRunnerAutoscalerReconciler{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Client:        mgr.GetClient(),
 | 
					 | 
					 | 
					 | 
								Client:        mgr.GetClient(),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Scheme:        scheme.Scheme,
 | 
					 | 
					 | 
					 | 
								Scheme:        scheme.Scheme,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Log:           logf.Log,
 | 
					 | 
					 | 
					 | 
								Log:           logf.Log,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								GitHubClient:  client,
 | 
					 | 
					 | 
					 | 
								GitHubClient:  env.ghClient,
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Recorder:      mgr.GetEventRecorderFor("horizontalrunnerautoscaler-controller"),
 | 
					 | 
					 | 
					 | 
								Recorder:      mgr.GetEventRecorderFor("horizontalrunnerautoscaler-controller"),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								CacheDuration: 1 * time.Second,
 | 
					 | 
					 | 
					 | 
								CacheDuration: 1 * time.Second,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Name:          controllerName("horizontalrunnerautoscaler"),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							err = autoscalerController.SetupWithManager(mgr)
 | 
					 | 
					 | 
					 | 
							err = autoscalerController.SetupWithManager(mgr)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
 | 
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to setup controller")
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -123,6 +136,7 @@ func SetupIntegrationTest(ctx context.Context) *testEnvironment {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Scheme:   scheme.Scheme,
 | 
					 | 
					 | 
					 | 
								Scheme:   scheme.Scheme,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Log:      logf.Log,
 | 
					 | 
					 | 
					 | 
								Log:      logf.Log,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Recorder: mgr.GetEventRecorderFor("horizontalrunnerautoscaler-controller"),
 | 
					 | 
					 | 
					 | 
								Recorder: mgr.GetEventRecorderFor("horizontalrunnerautoscaler-controller"),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Name:     controllerName("horizontalrunnerautoscalergithubwebhook"),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							err = autoscalerWebhook.SetupWithManager(mgr)
 | 
					 | 
					 | 
					 | 
							err = autoscalerWebhook.SetupWithManager(mgr)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to setup autoscaler webhook")
 | 
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to setup autoscaler webhook")
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -130,7 +144,7 @@ func SetupIntegrationTest(ctx context.Context) *testEnvironment {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							mux := http.NewServeMux()
 | 
					 | 
					 | 
					 | 
							mux := http.NewServeMux()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							mux.HandleFunc("/", autoscalerWebhook.Handle)
 | 
					 | 
					 | 
					 | 
							mux.HandleFunc("/", autoscalerWebhook.Handle)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							webhookServer = httptest.NewServer(mux)
 | 
					 | 
					 | 
					 | 
							env.webhookServer = httptest.NewServer(mux)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							go func() {
 | 
					 | 
					 | 
					 | 
							go func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								defer GinkgoRecover()
 | 
					 | 
					 | 
					 | 
								defer GinkgoRecover()
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -143,25 +157,24 @@ func SetupIntegrationTest(ctx context.Context) *testEnvironment {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						AfterEach(func() {
 | 
					 | 
					 | 
					 | 
						AfterEach(func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							close(stopCh)
 | 
					 | 
					 | 
					 | 
							close(stopCh)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fakeGithubServer.Close()
 | 
					 | 
					 | 
					 | 
							env.fakeGithubServer.Close()
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							webhookServer.Close()
 | 
					 | 
					 | 
					 | 
							env.webhookServer.Close()
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							err := k8sClient.Delete(ctx, ns)
 | 
					 | 
					 | 
					 | 
							err := k8sClient.Delete(ctx, ns)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace")
 | 
					 | 
					 | 
					 | 
							Expect(err).NotTo(HaveOccurred(), "failed to delete test namespace")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						})
 | 
					 | 
					 | 
					 | 
						})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return &testEnvironment{Namespace: ns, Responses: responses}
 | 
					 | 
					 | 
					 | 
						return env
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					var _ = Context("INTEGRATION: Inside of a new namespace", func() {
 | 
					 | 
					 | 
					 | 
					var _ = Context("INTEGRATION: Inside of a new namespace", func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ctx := context.TODO()
 | 
					 | 
					 | 
					 | 
						ctx := context.TODO()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						env := SetupIntegrationTest(ctx)
 | 
					 | 
					 | 
					 | 
						env := SetupIntegrationTest(ctx)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ns := env.Namespace
 | 
					 | 
					 | 
					 | 
						ns := env.Namespace
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						responses := env.Responses
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						Describe("when no existing resources exist", func() {
 | 
					 | 
					 | 
					 | 
						Describe("when no existing resources exist", func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							It("should create and scale runners", func() {
 | 
					 | 
					 | 
					 | 
							It("should create and scale runners on pull_request event", func() {
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								name := "example-runnerdeploy"
 | 
					 | 
					 | 
					 | 
								name := "example-runnerdeploy"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								{
 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -195,7 +208,7 @@ var _ = Context("INTEGRATION: Inside of a new namespace", func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										rd.Spec.Replicas = intPtr(2)
 | 
					 | 
					 | 
					 | 
										rd.Spec.Replicas = intPtr(2)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									})
 | 
					 | 
					 | 
					 | 
									})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ExpectRunnerSetsCountEventuallyEquals(ctx, ns.Name, 1)
 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsCountEventuallyEquals(ctx, ns.Name, 1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx, ns.Namespace, 2)
 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx, ns.Name, 2)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								// Scale-up to 3 replicas
 | 
					 | 
					 | 
					 | 
								// Scale-up to 3 replicas
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -243,7 +256,7 @@ var _ = Context("INTEGRATION: Inside of a new namespace", func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									}
 | 
					 | 
					 | 
					 | 
									}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									for i, r := range runnerList.Items {
 | 
					 | 
					 | 
					 | 
									for i, r := range runnerList.Items {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										fakeRunnerList.Add(&github3.Runner{
 | 
					 | 
					 | 
					 | 
										env.fakeRunnerList.Add(&github3.Runner{
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
											ID:     github.Int64(int64(i)),
 | 
					 | 
					 | 
					 | 
											ID:     github.Int64(int64(i)),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
											Name:   github.String(r.Name),
 | 
					 | 
					 | 
					 | 
											Name:   github.String(r.Name),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
											OS:     github.String("linux"),
 | 
					 | 
					 | 
					 | 
											OS:     github.String("linux"),
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -252,7 +265,7 @@ var _ = Context("INTEGRATION: Inside of a new namespace", func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										})
 | 
					 | 
					 | 
					 | 
										})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									}
 | 
					 | 
					 | 
					 | 
									}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									rs, err := ghClient.ListRunners(context.Background(), "", "", "test/valid")
 | 
					 | 
					 | 
					 | 
									rs, err := env.ghClient.ListRunners(context.Background(), "", "", "test/valid")
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									Expect(err).NotTo(HaveOccurred(), "verifying list fake runners response")
 | 
					 | 
					 | 
					 | 
									Expect(err).NotTo(HaveOccurred(), "verifying list fake runners response")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									Expect(len(rs)).To(Equal(3), "count of fake list runners")
 | 
					 | 
					 | 
					 | 
									Expect(len(rs)).To(Equal(3), "count of fake list runners")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -261,9 +274,9 @@ var _ = Context("INTEGRATION: Inside of a new namespace", func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								{
 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									time.Sleep(time.Second)
 | 
					 | 
					 | 
					 | 
									time.Sleep(time.Second)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									responses.ListRepositoryWorkflowRuns.Body = workflowRunsFor1Replicas
 | 
					 | 
					 | 
					 | 
									env.Responses.ListRepositoryWorkflowRuns.Body = workflowRunsFor1Replicas
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									responses.ListRepositoryWorkflowRuns.Statuses["queued"] = workflowRunsFor1Replicas_queued
 | 
					 | 
					 | 
					 | 
									env.Responses.ListRepositoryWorkflowRuns.Statuses["queued"] = workflowRunsFor1Replicas_queued
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									responses.ListRepositoryWorkflowRuns.Statuses["in_progress"] = workflowRunsFor1Replicas_in_progress
 | 
					 | 
					 | 
					 | 
									env.Responses.ListRepositoryWorkflowRuns.Statuses["in_progress"] = workflowRunsFor1Replicas_in_progress
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									var hra actionsv1alpha1.HorizontalRunnerAutoscaler
 | 
					 | 
					 | 
					 | 
									var hra actionsv1alpha1.HorizontalRunnerAutoscaler
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -284,24 +297,133 @@ var _ = Context("INTEGRATION: Inside of a new namespace", func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								// Scale-up to 2 replicas on first pull_request create webhook event
 | 
					 | 
					 | 
					 | 
								// Scale-up to 2 replicas on first pull_request create webhook event
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								{
 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									SendPullRequestEvent("test/valid", "main", "created")
 | 
					 | 
					 | 
					 | 
									env.SendPullRequestEvent("test/valid", "main", "created")
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ExpectRunnerSetsCountEventuallyEquals(ctx, ns.Name, 1, "runner sets after webhook")
 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsCountEventuallyEquals(ctx, ns.Name, 1, "runner sets after webhook")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx, ns.Name, 2, "runners after first webhook event")
 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx, ns.Name, 2, "runners after first webhook event")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								// Scale-up to 3 replicas on second pull_request create webhook event
 | 
					 | 
					 | 
					 | 
								// Scale-up to 3 replicas on second pull_request create webhook event
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								{
 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									SendPullRequestEvent("test/valid", "main", "created")
 | 
					 | 
					 | 
					 | 
									env.SendPullRequestEvent("test/valid", "main", "created")
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx, ns.Name, 3, "runners after second webhook event")
 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx, ns.Name, 3, "runners after second webhook event")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							})
 | 
					 | 
					 | 
					 | 
							})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							It("should create and scale runners on check_run event", func() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								name := "example-runnerdeploy"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									rd := &actionsv1alpha1.RunnerDeployment{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										ObjectMeta: metav1.ObjectMeta{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											Name:      name,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											Namespace: ns.Name,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										Spec: actionsv1alpha1.RunnerDeploymentSpec{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											Replicas: intPtr(1),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											Template: actionsv1alpha1.RunnerTemplate{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
												Spec: actionsv1alpha1.RunnerSpec{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
													Repository: "test/valid",
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
													Image:      "bar",
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
													Group:      "baz",
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
													Env: []corev1.EnvVar{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
														{Name: "FOO", Value: "FOOVALUE"},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
													},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
												},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									ExpectCreate(ctx, rd, "test RunnerDeployment")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsCountEventuallyEquals(ctx, ns.Name, 1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx, ns.Name, 1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									env.ExpectRegisteredNumberCountEventuallyEquals(1, "count of fake list runners")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								// Scale-up to 3 replicas by the default TotalNumberOfQueuedAndInProgressWorkflowRuns-based scaling
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								// See workflowRunsFor3Replicas_queued and workflowRunsFor3Replicas_in_progress for GitHub List-Runners API responses
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								// used while testing.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									hra := &actionsv1alpha1.HorizontalRunnerAutoscaler{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										ObjectMeta: metav1.ObjectMeta{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											Name:      name,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											Namespace: ns.Name,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										Spec: actionsv1alpha1.HorizontalRunnerAutoscalerSpec{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											ScaleTargetRef: actionsv1alpha1.ScaleTargetRef{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
												Name: name,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											MinReplicas:                       intPtr(1),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											MaxReplicas:                       intPtr(5),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											ScaleDownDelaySecondsAfterScaleUp: intPtr(1),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											Metrics:                           nil,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											ScaleUpTriggers: []actionsv1alpha1.ScaleUpTrigger{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
												{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
													GitHubEvent: &actionsv1alpha1.GitHubEventScaleUpTriggerSpec{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
														CheckRun: &actionsv1alpha1.CheckRunSpec{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
															Types:  []string{"created"},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
															Status: "pending",
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
														},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
													},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
													Amount:   1,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
													Duration: metav1.Duration{Duration: time.Minute},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
												},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
											},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									ExpectCreate(ctx, hra, "test HorizontalRunnerAutoscaler")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsCountEventuallyEquals(ctx, ns.Name, 1)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx, ns.Name, 3)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									env.ExpectRegisteredNumberCountEventuallyEquals(3, "count of fake list runners")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								// Scale-up to 4 replicas on first check_run create webhook event
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									env.SendCheckRunEvent("test/valid", "pending", "created")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsCountEventuallyEquals(ctx, ns.Name, 1, "runner sets after webhook")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx, ns.Name, 4, "runners after first webhook event")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									env.ExpectRegisteredNumberCountEventuallyEquals(4, "count of fake list runners")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								// Scale-up to 5 replicas on second check_run create webhook event
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									env.SendCheckRunEvent("test/valid", "pending", "created")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx, ns.Name, 5, "runners after second webhook event")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								env.ExpectRegisteredNumberCountEventuallyEquals(5, "count of fake list runners")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						})
 | 
					 | 
					 | 
					 | 
						})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					})
 | 
					 | 
					 | 
					 | 
					})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func SendPullRequestEvent(repo string, branch string, action string) {
 | 
					 | 
					 | 
					 | 
					func (env *testEnvironment) ExpectRegisteredNumberCountEventuallyEquals(want int, optionalDescriptions ...interface{}) {
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						EventuallyWithOffset(
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							1,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							func() int {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								env.SyncRunnerRegistrations()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								rs, err := env.ghClient.ListRunners(context.Background(), "", "", "test/valid")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Expect(err).NotTo(HaveOccurred(), "verifying list fake runners response")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								return len(rs)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							time.Second*1, time.Millisecond*500).Should(Equal(want), optionalDescriptions...)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					func (env *testEnvironment) SendPullRequestEvent(repo string, branch string, action string) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						org := strings.Split(repo, "/")[0]
 | 
					 | 
					 | 
					 | 
						org := strings.Split(repo, "/")[0]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						resp, err := sendWebhook(webhookServer, "pull_request", &github.PullRequestEvent{
 | 
					 | 
					 | 
					 | 
						resp, err := sendWebhook(env.webhookServer, "pull_request", &github.PullRequestEvent{
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							PullRequest: &github.PullRequest{
 | 
					 | 
					 | 
					 | 
							PullRequest: &github.PullRequest{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								Base: &github.PullRequestBranch{
 | 
					 | 
					 | 
					 | 
								Base: &github.PullRequestBranch{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									Ref: github.String(branch),
 | 
					 | 
					 | 
					 | 
									Ref: github.String(branch),
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -321,6 +443,46 @@ func SendPullRequestEvent(repo string, branch string, action string) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ExpectWithOffset(1, resp.StatusCode).To(Equal(200))
 | 
					 | 
					 | 
					 | 
						ExpectWithOffset(1, resp.StatusCode).To(Equal(200))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					func (env *testEnvironment) SendCheckRunEvent(repo string, status string, action string) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						org := strings.Split(repo, "/")[0]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						resp, err := sendWebhook(env.webhookServer, "check_run", &github.CheckRunEvent{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							CheckRun: &github.CheckRun{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Status: github.String(status),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Org: &github.Organization{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Login: github.String(org),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Repo: &github.Repository{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Name: github.String(repo),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							Action: github.String(action),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						ExpectWithOffset(1, err).NotTo(HaveOccurred(), "failed to send check_run event")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						ExpectWithOffset(1, resp.StatusCode).To(Equal(200))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					func (env *testEnvironment) SyncRunnerRegistrations() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						var runnerList actionsv1alpha1.RunnerList
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						err := k8sClient.List(context.TODO(), &runnerList, client.InNamespace(env.Namespace.Name))
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if err != nil {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							logf.Log.Error(err, "list runners")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						for i, r := range runnerList.Items {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							env.fakeRunnerList.Add(&github3.Runner{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								ID:     github.Int64(int64(i)),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Name:   github.String(r.Name),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								OS:     github.String("linux"),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Status: github.String("online"),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								Busy:   github.Bool(false),
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func ExpectCreate(ctx context.Context, rd runtime.Object, s string) {
 | 
					 | 
					 | 
					 | 
					func ExpectCreate(ctx context.Context, rd runtime.Object, s string) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						err := k8sClient.Create(ctx, rd)
 | 
					 | 
					 | 
					 | 
						err := k8sClient.Create(ctx, rd)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -360,7 +522,7 @@ func ExpectRunnerSetsCountEventuallyEquals(ctx context.Context, ns string, count
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return len(runnerSets.Items)
 | 
					 | 
					 | 
					 | 
								return len(runnerSets.Items)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							},
 | 
					 | 
					 | 
					 | 
							},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							time.Second*5, time.Millisecond*500).Should(BeEquivalentTo(count), optionalDescription...)
 | 
					 | 
					 | 
					 | 
							time.Second*10, time.Millisecond*500).Should(BeEquivalentTo(count), optionalDescription...)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx context.Context, ns string, count int, optionalDescription ...interface{}) {
 | 
					 | 
					 | 
					 | 
					func ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx context.Context, ns string, count int, optionalDescription ...interface{}) {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					@ -379,6 +541,11 @@ func ExpectRunnerSetsManagedReplicasCountEventuallyEquals(ctx context.Context, n
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									return -1
 | 
					 | 
					 | 
					 | 
									return -1
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								if len(runnerSets.Items) != 1 {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									logf.Log.Info("Too many runnerreplicasets exist", "runnerSets", runnerSets)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									return -1
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return *runnerSets.Items[0].Spec.Replicas
 | 
					 | 
					 | 
					 | 
								return *runnerSets.Items[0].Spec.Replicas
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							},
 | 
					 | 
					 | 
					 | 
							},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							time.Second*5, time.Millisecond*500).Should(BeEquivalentTo(count), optionalDescription...)
 | 
					 | 
					 | 
					 | 
							time.Second*5, time.Millisecond*500).Should(BeEquivalentTo(count), optionalDescription...)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
					 | 
					 | 
					
 
 |