Skip to content
This repository was archived by the owner on Jan 16, 2025. It is now read-only.

Commit 3247f8d

Browse files
authored
refactor(runners): Move bootTimeExceeded to runners module (#2880)
refactor: Move bootTimeExceeded to runners module
1 parent af04380 commit 3247f8d

File tree

5 files changed

+19
-17
lines changed

5 files changed

+19
-17
lines changed

Diff for: modules/runners/lambdas/runners/src/aws/runners.ts

+8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { EC2, SSM } from 'aws-sdk';
2+
import moment from 'moment';
23

34
import { LogFields, logger as rootLogger } from '../logger';
45
import ScaleError from './../scale-runners/ScaleError';
@@ -275,3 +276,10 @@ export async function createRunner(runnerParameters: RunnerInputParameters): Pro
275276
}
276277
}
277278
}
279+
280+
// If launchTime is undefined, this will return false
281+
export function bootTimeExceeded(ec2Runner: { launchTime?: Date }): boolean {
282+
const runnerBootTimeInMinutes = process.env.RUNNER_BOOT_TIME_IN_MINUTES;
283+
const launchTimePlusBootTime = moment(ec2Runner.launchTime).utc().add(runnerBootTimeInMinutes, 'minutes');
284+
return launchTimePlusBootTime < moment(new Date()).utc();
285+
}

Diff for: modules/runners/lambdas/runners/src/pool/pool.test.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ jest.mock('@octokit/rest', () => ({
2323
Octokit: jest.fn().mockImplementation(() => mockOctokit),
2424
}));
2525

26-
jest.mock('./../aws/runners');
26+
jest.mock('./../aws/runners', () => ({
27+
...jest.requireActual('./../aws/runners'),
28+
listEC2Runners: jest.fn(),
29+
}));
2730
jest.mock('./../gh-auth/gh-auth');
2831
jest.mock('./../scale-runners/scale-up');
2932

Diff for: modules/runners/lambdas/runners/src/pool/pool.ts

+1-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import moment from 'moment';
21
import yn from 'yn';
32

4-
import { RunnerList, listEC2Runners } from '../aws/runners';
3+
import { bootTimeExceeded, listEC2Runners } from '../aws/runners';
54
import { createGithubAppAuth, createGithubInstallationAuth, createOctoClient } from '../gh-auth/gh-auth';
65
import { logger as rootLogger } from '../logger';
76
import { createRunners } from '../scale-runners/scale-up';
@@ -128,9 +127,3 @@ async function getInstallationId(ghesApiUrl: string, org: string): Promise<numbe
128127
})
129128
).data.id;
130129
}
131-
132-
function bootTimeExceeded(ec2Runner: RunnerList): boolean {
133-
const runnerBootTimeInMinutes = process.env.RUNNER_BOOT_TIME_IN_MINUTES;
134-
const launchTimePlusBootTime = moment(ec2Runner.launchTime).utc().add(runnerBootTimeInMinutes, 'minutes');
135-
return launchTimePlusBootTime < moment(new Date()).utc();
136-
}

Diff for: modules/runners/lambdas/runners/src/scale-runners/scale-down.test.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ jest.mock('@octokit/rest', () => ({
2727
Octokit: jest.fn().mockImplementation(() => mockOctokit),
2828
}));
2929

30-
jest.mock('./../aws/runners');
30+
jest.mock('./../aws/runners', () => ({
31+
...jest.requireActual('./../aws/runners'),
32+
terminateRunner: jest.fn(),
33+
listEC2Runners: jest.fn(),
34+
}));
3135
jest.mock('./../gh-auth/gh-auth');
3236
jest.mock('./cache');
3337

Diff for: modules/runners/lambdas/runners/src/scale-runners/scale-down.ts

+1-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import moment from 'moment';
33

44
import { createGithubAppAuth, createGithubInstallationAuth, createOctoClient } from '../gh-auth/gh-auth';
55
import { LogFields, logger as rootLogger } from '../logger';
6-
import { RunnerInfo, RunnerList, listEC2Runners, terminateRunner } from './../aws/runners';
6+
import { RunnerInfo, RunnerList, bootTimeExceeded, listEC2Runners, terminateRunner } from './../aws/runners';
77
import { GhRunners, githubCache } from './cache';
88
import { ScalingDownConfig, getIdleRunnerCount } from './scale-down-config';
99

@@ -101,12 +101,6 @@ function runnerMinimumTimeExceeded(runner: RunnerInfo): boolean {
101101
return launchTimePlusMinimum < now;
102102
}
103103

104-
function bootTimeExceeded(ec2Runner: RunnerInfo): boolean {
105-
const runnerBootTimeInMinutes = process.env.RUNNER_BOOT_TIME_IN_MINUTES;
106-
const launchTimePlusBootTime = moment(ec2Runner.launchTime).utc().add(runnerBootTimeInMinutes, 'minutes');
107-
return launchTimePlusBootTime < moment(new Date()).utc();
108-
}
109-
110104
async function removeRunner(ec2runner: RunnerInfo, ghRunnerIds: number[]): Promise<void> {
111105
const githubAppClient = await getOrCreateOctokit(ec2runner);
112106
try {

0 commit comments

Comments
 (0)