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

View file

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