test: Fix flaky task-runner integration test (#11302)

This commit is contained in:
Tomi Turtiainen 2024-10-18 11:33:08 +03:00 committed by GitHub
parent 0be04c6348
commit 0aae47c295
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 12 additions and 8 deletions

View file

@ -23,10 +23,14 @@ export class TaskRunnerProcess {
return this.process?.pid;
}
/** Promise that resolves when the process has exited */
public get runPromise() {
return this._runPromise;
}
private process: ChildProcess | null = null;
/** Promise that resolves after the process has exited */
private runPromise: Promise<void> | null = null;
private _runPromise: Promise<void> | null = null;
private isShuttingDown = false;
@ -97,7 +101,7 @@ export class TaskRunnerProcess {
} else {
this.killNode();
}
await this.runPromise;
await this._runPromise;
this.isShuttingDown = false;
}
@ -128,7 +132,7 @@ export class TaskRunnerProcess {
}
private monitorProcess(taskRunnerProcess: ChildProcess) {
this.runPromise = new Promise((resolve) => {
this._runPromise = new Promise((resolve) => {
taskRunnerProcess.on('exit', (code) => {
this.onProcessExit(code, resolve);
});

View file

@ -88,15 +88,15 @@ describe('TaskRunnerProcess', () => {
// @ts-expect-error private property
runnerProcess.process?.kill('SIGKILL');
// Assert
// Wait until the runner is running again
await retryUntil(() => expect(runnerProcess.isRunning).toBeTruthy());
expect(runnerProcess.pid).not.toBe(processId);
// Wait until the runner has exited
await runnerProcess.runPromise;
// Assert
// Wait until the runner has connected again
await retryUntil(() => expect(getNumConnectedRunners()).toBe(1));
expect(getNumConnectedRunners()).toBe(1);
expect(getNumRegisteredRunners()).toBe(1);
expect(runnerProcess.pid).not.toBe(processId);
});
it('should launch runner directly if not using a launcher', async () => {