e2e: Continuous rolling-update of runners while workflow jobs are running
This should help revealing issues like https://github.com/actions-runner-controller/actions-runner-controller/issues/1535 if any.
This commit is contained in:
		
							parent
							
								
									6ef276b239
								
							
						
					
					
						commit
						ebcd838501
					
				|  | @ -49,6 +49,10 @@ spec: | ||||||
|       labels: |       labels: | ||||||
|       - "${RUNNER_LABEL}" |       - "${RUNNER_LABEL}" | ||||||
| 
 | 
 | ||||||
|  |       env: | ||||||
|  |       - name: ROLLING_UPDATE_PHASE | ||||||
|  |         value: "${ROLLING_UPDATE_PHASE}" | ||||||
|  | 
 | ||||||
|       # |       # | ||||||
|       # Non-standard working directory |       # Non-standard working directory | ||||||
|       # |       # | ||||||
|  |  | ||||||
|  | @ -121,6 +121,8 @@ spec: | ||||||
|           value: "${RUNNER_FEATURE_FLAG_EPHEMERAL}" |           value: "${RUNNER_FEATURE_FLAG_EPHEMERAL}" | ||||||
|         - name: GOMODCACHE |         - name: GOMODCACHE | ||||||
|           value: "/home/runner/.cache/go-mod" |           value: "/home/runner/.cache/go-mod" | ||||||
|  |         - name: ROLLING_UPDATE_PHASE | ||||||
|  |           value: "${ROLLING_UPDATE_PHASE}" | ||||||
|         # PV-backed runner work dir |         # PV-backed runner work dir | ||||||
|         volumeMounts: |         volumeMounts: | ||||||
|         # Comment out the ephemeral work volume if you're going to test the kubernetes container mode |         # Comment out the ephemeral work volume if you're going to test the kubernetes container mode | ||||||
|  |  | ||||||
|  | @ -205,6 +205,27 @@ func TestE2E(t *testing.T) { | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | 		ctx, cancel := context.WithCancel(context.Background()) | ||||||
|  | 		go func() { | ||||||
|  | 			for i := 1; ; i++ { | ||||||
|  | 				select { | ||||||
|  | 				case _, ok := <-ctx.Done(): | ||||||
|  | 					if !ok { | ||||||
|  | 						t.Logf("Stopping the continuous rolling-update of runners") | ||||||
|  | 					} | ||||||
|  | 				default: | ||||||
|  | 					time.Sleep(10 * time.Second) | ||||||
|  | 
 | ||||||
|  | 					t.Run(fmt.Sprintf("update runners attempt %d", i), func(t *testing.T) { | ||||||
|  | 						env.deploy(t, RunnerSets, testID, fmt.Sprintf("ROLLING_UPDATE_PHASE=%d", i)) | ||||||
|  | 					}) | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		}() | ||||||
|  | 		t.Cleanup(func() { | ||||||
|  | 			cancel() | ||||||
|  | 		}) | ||||||
|  | 
 | ||||||
| 		t.Run("Install workflow", func(t *testing.T) { | 		t.Run("Install workflow", func(t *testing.T) { | ||||||
| 			env.installActionsWorkflow(t, RunnerSets, testID) | 			env.installActionsWorkflow(t, RunnerSets, testID) | ||||||
| 		}) | 		}) | ||||||
|  | @ -280,6 +301,27 @@ func TestE2E(t *testing.T) { | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | 		ctx, cancel := context.WithCancel(context.Background()) | ||||||
|  | 		go func() { | ||||||
|  | 			for i := 1; ; i++ { | ||||||
|  | 				select { | ||||||
|  | 				case _, ok := <-ctx.Done(): | ||||||
|  | 					if !ok { | ||||||
|  | 						t.Logf("Stopping the continuous rolling-update of runners") | ||||||
|  | 					} | ||||||
|  | 				default: | ||||||
|  | 					time.Sleep(10 * time.Second) | ||||||
|  | 
 | ||||||
|  | 					t.Run(fmt.Sprintf("update runners - attempt %d", i), func(t *testing.T) { | ||||||
|  | 						env.deploy(t, RunnerDeployments, testID, fmt.Sprintf("ROLLING_UPDATE_PHASE=%d", i)) | ||||||
|  | 					}) | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		}() | ||||||
|  | 		t.Cleanup(func() { | ||||||
|  | 			cancel() | ||||||
|  | 		}) | ||||||
|  | 
 | ||||||
| 		t.Run("Install workflow", func(t *testing.T) { | 		t.Run("Install workflow", func(t *testing.T) { | ||||||
| 			env.installActionsWorkflow(t, RunnerDeployments, testID) | 			env.installActionsWorkflow(t, RunnerDeployments, testID) | ||||||
| 		}) | 		}) | ||||||
|  | @ -628,9 +670,9 @@ func (e *env) installActionsRunnerController(t *testing.T, repo, tag, testID, ch | ||||||
| 	e.RunScript(t, "../../acceptance/deploy.sh", testing.ScriptConfig{Dir: "../..", Env: scriptEnv}) | 	e.RunScript(t, "../../acceptance/deploy.sh", testing.ScriptConfig{Dir: "../..", Env: scriptEnv}) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (e *env) deploy(t *testing.T, kind DeployKind, testID string) { | func (e *env) deploy(t *testing.T, kind DeployKind, testID string, env ...string) { | ||||||
| 	t.Helper() | 	t.Helper() | ||||||
| 	e.do(t, "apply", kind, testID) | 	e.do(t, "apply", kind, testID, env...) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (e *env) undeploy(t *testing.T, kind DeployKind, testID string) { | func (e *env) undeploy(t *testing.T, kind DeployKind, testID string) { | ||||||
|  | @ -638,7 +680,7 @@ func (e *env) undeploy(t *testing.T, kind DeployKind, testID string) { | ||||||
| 	e.do(t, "delete", kind, testID) | 	e.do(t, "delete", kind, testID) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (e *env) do(t *testing.T, op string, kind DeployKind, testID string) { | func (e *env) do(t *testing.T, op string, kind DeployKind, testID string, env ...string) { | ||||||
| 	t.Helper() | 	t.Helper() | ||||||
| 
 | 
 | ||||||
| 	e.createControllerNamespaceAndServiceAccount(t) | 	e.createControllerNamespaceAndServiceAccount(t) | ||||||
|  | @ -649,6 +691,7 @@ func (e *env) do(t *testing.T, op string, kind DeployKind, testID string) { | ||||||
| 		"RUNNER_NAMESPACE=" + e.runnerNamespace, | 		"RUNNER_NAMESPACE=" + e.runnerNamespace, | ||||||
| 		"RUNNER_SERVICE_ACCOUNT_NAME=" + e.runnerServiceAccuontName, | 		"RUNNER_SERVICE_ACCOUNT_NAME=" + e.runnerServiceAccuontName, | ||||||
| 	} | 	} | ||||||
|  | 	scriptEnv = append(scriptEnv, env...) | ||||||
| 
 | 
 | ||||||
| 	switch kind { | 	switch kind { | ||||||
| 	case RunnerSets: | 	case RunnerSets: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue