|
1 | 1 | import { captureLambdaHandler, logger } from '@aws-github-runner/aws-powertools-util';
|
2 | 2 | import { Context, SQSEvent, SQSRecord } from 'aws-lambda';
|
3 | 3 |
|
4 |
| -import { addMiddleware, adjustPool, scaleDownHandler, scaleUpHandler, ssmHousekeeper, jobRetryCheck } from './lambda'; |
| 4 | +import { |
| 5 | + addMiddleware, |
| 6 | + adjustPool, |
| 7 | + scaleDownHandler, |
| 8 | + scaleUpHandler, |
| 9 | + ssmHousekeeper, |
| 10 | + jobRetryCheck, |
| 11 | + cleanupOrgRunnersHandler, |
| 12 | +} from './lambda'; |
5 | 13 | import { adjust } from './pool/pool';
|
6 | 14 | import ScaleError from './scale-runners/ScaleError';
|
7 | 15 | import { scaleDown } from './scale-runners/scale-down';
|
8 | 16 | import { ActionRequestMessage, scaleUp } from './scale-runners/scale-up';
|
9 | 17 | import { cleanSSMTokens } from './scale-runners/ssm-housekeeper';
|
10 | 18 | import { checkAndRetryJob } from './scale-runners/job-retry';
|
11 | 19 | import { describe, it, expect, vi, MockedFunction } from 'vitest';
|
| 20 | +import { cleanupOrgRunners } from './scale-runners/cleanup-org-runners'; |
12 | 21 |
|
13 | 22 | const body: ActionRequestMessage = {
|
14 | 23 | eventType: 'workflow_job',
|
@@ -66,6 +75,7 @@ vi.mock('./scale-runners/scale-down');
|
66 | 75 | vi.mock('./scale-runners/scale-up');
|
67 | 76 | vi.mock('./scale-runners/ssm-housekeeper');
|
68 | 77 | vi.mock('./scale-runners/job-retry');
|
| 78 | +vi.mock('./scale-runners/cleanup-org-runners'); |
69 | 79 | vi.mock('@aws-github-runner/aws-powertools-util');
|
70 | 80 | vi.mock('@aws-github-runner/aws-ssm-util');
|
71 | 81 |
|
@@ -226,3 +236,26 @@ describe('Test job retry check wrapper', () => {
|
226 | 236 | expect(logSpyWarn).toHaveBeenCalledWith(`Error processing job retry: ${error.message}`, { error });
|
227 | 237 | });
|
228 | 238 | });
|
| 239 | + |
| 240 | +describe('Test cleanupOrgRunnersHandler lambda wrapper', () => { |
| 241 | + it('Cleanup without error should resolve.', async () => { |
| 242 | + const mock = mocked(cleanupOrgRunners); |
| 243 | + mock.mockImplementation(() => { |
| 244 | + return new Promise((resolve) => { |
| 245 | + resolve(); |
| 246 | + }); |
| 247 | + }); |
| 248 | + await expect(cleanupOrgRunnersHandler({}, context)).resolves.not.toThrow(); |
| 249 | + }); |
| 250 | + |
| 251 | + it('Cleanup with error should resolve and log error.', async () => { |
| 252 | + const logSpyError = jest.spyOn(logger, 'error'); |
| 253 | + |
| 254 | + const mock = mocked(cleanupOrgRunners); |
| 255 | + const error = new Error('Error cleaning up org runners.'); |
| 256 | + mock.mockRejectedValue(error); |
| 257 | + |
| 258 | + await expect(cleanupOrgRunnersHandler({}, context)).resolves.not.toThrow(); |
| 259 | + expect(logSpyError).toHaveBeenCalledWith(expect.stringContaining(error.message), expect.anything()); |
| 260 | + }); |
| 261 | +}); |
0 commit comments