fix(e2e): Make runner graceful shutdown checker cancellable (#2145)
So that the whole test run can be stopped immediately with a failure, without failing until the verify timeout.
This commit is contained in:
		
							parent
							
								
									057b04763f
								
							
						
					
					
						commit
						d32319be50
					
				|  | @ -222,12 +222,26 @@ func TestE2E(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| 		ctx, cancel := context.WithCancel(context.Background()) | 		ctx, cancel := context.WithCancel(context.Background()) | ||||||
| 		go func() { | 		go func() { | ||||||
|  | 			var cancelled bool | ||||||
|  | 			defer func() { | ||||||
|  | 				if !cancelled { | ||||||
|  | 					t.Logf("Stopping the continuous rolling-update of runners due to error(s)") | ||||||
|  | 				} | ||||||
|  | 				cancel() | ||||||
|  | 			}() | ||||||
|  | 
 | ||||||
| 			for i := 1; ; i++ { | 			for i := 1; ; i++ { | ||||||
|  | 				if t.Failed() { | ||||||
|  | 					cancelled = true | ||||||
|  | 					return | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
| 				select { | 				select { | ||||||
| 				case _, ok := <-ctx.Done(): | 				case _, ok := <-ctx.Done(): | ||||||
| 					if !ok { | 					if !ok { | ||||||
| 						t.Logf("Stopping the continuous rolling-update of runners") | 						t.Logf("Stopping the continuous rolling-update of runners") | ||||||
| 					} | 					} | ||||||
|  | 					cancelled = true | ||||||
| 				default: | 				default: | ||||||
| 					time.Sleep(60 * time.Second) | 					time.Sleep(60 * time.Second) | ||||||
| 
 | 
 | ||||||
|  | @ -242,7 +256,7 @@ func TestE2E(t *testing.T) { | ||||||
| 		}) | 		}) | ||||||
| 
 | 
 | ||||||
| 		t.Run("Verify workflow run result", func(t *testing.T) { | 		t.Run("Verify workflow run result", func(t *testing.T) { | ||||||
| 			env.verifyActionsWorkflowRun(t, testID) | 			env.verifyActionsWorkflowRun(t, ctx, testID) | ||||||
| 		}) | 		}) | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
|  | @ -322,12 +336,26 @@ func TestE2E(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| 		ctx, cancel := context.WithCancel(context.Background()) | 		ctx, cancel := context.WithCancel(context.Background()) | ||||||
| 		go func() { | 		go func() { | ||||||
|  | 			var cancelled bool | ||||||
|  | 			defer func() { | ||||||
|  | 				if !cancelled { | ||||||
|  | 					t.Logf("Stopping the continuous rolling-update of runners due to error(s)") | ||||||
|  | 				} | ||||||
|  | 				cancel() | ||||||
|  | 			}() | ||||||
|  | 
 | ||||||
| 			for i := 1; ; i++ { | 			for i := 1; ; i++ { | ||||||
|  | 				if t.Failed() { | ||||||
|  | 					cancelled = true | ||||||
|  | 					return | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
| 				select { | 				select { | ||||||
| 				case _, ok := <-ctx.Done(): | 				case _, ok := <-ctx.Done(): | ||||||
| 					if !ok { | 					if !ok { | ||||||
| 						t.Logf("Stopping the continuous rolling-update of runners") | 						t.Logf("Stopping the continuous rolling-update of runners") | ||||||
| 					} | 					} | ||||||
|  | 					cancelled = true | ||||||
| 					return | 					return | ||||||
| 				default: | 				default: | ||||||
| 					time.Sleep(10 * time.Second) | 					time.Sleep(10 * time.Second) | ||||||
|  | @ -347,7 +375,7 @@ func TestE2E(t *testing.T) { | ||||||
| 		}) | 		}) | ||||||
| 
 | 
 | ||||||
| 		t.Run("Verify workflow run result", func(t *testing.T) { | 		t.Run("Verify workflow run result", func(t *testing.T) { | ||||||
| 			env.verifyActionsWorkflowRun(t, testID) | 			env.verifyActionsWorkflowRun(t, ctx, testID) | ||||||
| 		}) | 		}) | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
|  | @ -887,10 +915,10 @@ func (e *env) testJobs(testID string) []job { | ||||||
| 	return createTestJobs(testID, testResultCMNamePrefix, 6) | 	return createTestJobs(testID, testResultCMNamePrefix, 6) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (e *env) verifyActionsWorkflowRun(t *testing.T, testID string) { | func (e *env) verifyActionsWorkflowRun(t *testing.T, ctx context.Context, testID string) { | ||||||
| 	t.Helper() | 	t.Helper() | ||||||
| 
 | 
 | ||||||
| 	verifyActionsWorkflowRun(t, e.Env, e.testJobs(testID), e.verifyTimeout(), e.getKubectlConfig()) | 	verifyActionsWorkflowRun(t, ctx, e.Env, e.testJobs(testID), e.verifyTimeout(), e.getKubectlConfig()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (e *env) verifyTimeout() time.Duration { | func (e *env) verifyTimeout() time.Duration { | ||||||
|  | @ -1162,7 +1190,7 @@ kubectl create cm %s$id --from-literal=status=ok | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func verifyActionsWorkflowRun(t *testing.T, env *testing.Env, testJobs []job, timeout time.Duration, cmCfg testing.KubectlConfig) { | func verifyActionsWorkflowRun(t *testing.T, ctx context.Context, env *testing.Env, testJobs []job, timeout time.Duration, cmCfg testing.KubectlConfig) { | ||||||
| 	t.Helper() | 	t.Helper() | ||||||
| 
 | 
 | ||||||
| 	var expected []string | 	var expected []string | ||||||
|  | @ -1171,7 +1199,7 @@ func verifyActionsWorkflowRun(t *testing.T, env *testing.Env, testJobs []job, ti | ||||||
| 		expected = append(expected, "ok") | 		expected = append(expected, "ok") | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	gomega.NewGomegaWithT(t).Eventually(func() ([]string, error) { | 	gomega.NewGomegaWithT(t).Eventually(ctx, func() ([]string, error) { | ||||||
| 		var results []string | 		var results []string | ||||||
| 
 | 
 | ||||||
| 		var errs []error | 		var errs []error | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue