|
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 { addMiddleware, adjustPool, scaleDownHandler, scaleUpHandler, ssmHousekeeper, jobRetryCheck, cleanupOrgRunnersHandler } from './lambda'; |
5 | 5 | import { adjust } from './pool/pool';
|
6 | 6 | import ScaleError from './scale-runners/ScaleError';
|
7 | 7 | import { scaleDown } from './scale-runners/scale-down';
|
8 | 8 | import { ActionRequestMessage, scaleUp } from './scale-runners/scale-up';
|
9 | 9 | import { cleanSSMTokens } from './scale-runners/ssm-housekeeper';
|
10 | 10 | import { checkAndRetryJob } from './scale-runners/job-retry';
|
11 | 11 | import { describe, it, expect, vi, MockedFunction } from 'vitest';
|
| 12 | +import { cleanupOrgRunners } from './scale-runners/cleanup-org-runners'; |
12 | 13 |
|
13 | 14 | const body: ActionRequestMessage = {
|
14 | 15 | eventType: 'workflow_job',
|
@@ -61,13 +62,32 @@ const context: Context = {
|
61 | 62 | },
|
62 | 63 | };
|
63 | 64 |
|
| 65 | +<<<<<<< HEAD |
64 | 66 | vi.mock('./pool/pool');
|
65 | 67 | vi.mock('./scale-runners/scale-down');
|
66 | 68 | vi.mock('./scale-runners/scale-up');
|
67 | 69 | vi.mock('./scale-runners/ssm-housekeeper');
|
68 | 70 | vi.mock('./scale-runners/job-retry');
|
69 | 71 | vi.mock('@aws-github-runner/aws-powertools-util');
|
70 | 72 | vi.mock('@aws-github-runner/aws-ssm-util');
|
| 73 | +||||||| parent of b4283485 (feat: add lambda function to cleanup org runners) |
| 74 | +jest.mock('./pool/pool'); |
| 75 | +jest.mock('./scale-runners/scale-down'); |
| 76 | +jest.mock('./scale-runners/scale-up'); |
| 77 | +jest.mock('./scale-runners/ssm-housekeeper'); |
| 78 | +jest.mock('./scale-runners/job-retry'); |
| 79 | +jest.mock('@aws-github-runner/aws-powertools-util'); |
| 80 | +jest.mock('@aws-github-runner/aws-ssm-util'); |
| 81 | +======= |
| 82 | +jest.mock('./pool/pool'); |
| 83 | +jest.mock('./scale-runners/scale-down'); |
| 84 | +jest.mock('./scale-runners/scale-up'); |
| 85 | +jest.mock('./scale-runners/ssm-housekeeper'); |
| 86 | +jest.mock('./scale-runners/job-retry'); |
| 87 | +jest.mock('./scale-runners/cleanup-org-runners'); |
| 88 | +jest.mock('@aws-github-runner/aws-powertools-util'); |
| 89 | +jest.mock('@aws-github-runner/aws-ssm-util'); |
| 90 | +>>>>>>> b4283485 (feat: add lambda function to cleanup org runners) |
71 | 91 |
|
72 | 92 | describe('Test scale up lambda wrapper.', () => {
|
73 | 93 | it('Do not handle multiple record sets.', async () => {
|
@@ -226,3 +246,26 @@ describe('Test job retry check wrapper', () => {
|
226 | 246 | expect(logSpyWarn).toHaveBeenCalledWith(`Error processing job retry: ${error.message}`, { error });
|
227 | 247 | });
|
228 | 248 | });
|
| 249 | + |
| 250 | +describe('Test cleanupOrgRunnersHandler lambda wrapper', () => { |
| 251 | + it('Cleanup without error should resolve.', async () => { |
| 252 | + const mock = mocked(cleanupOrgRunners); |
| 253 | + mock.mockImplementation(() => { |
| 254 | + return new Promise((resolve) => { |
| 255 | + resolve(); |
| 256 | + }); |
| 257 | + }); |
| 258 | + await expect(cleanupOrgRunnersHandler({}, context)).resolves.not.toThrow(); |
| 259 | + }); |
| 260 | + |
| 261 | + it('Cleanup with error should resolve and log error.', async () => { |
| 262 | + const logSpyError = jest.spyOn(logger, 'error'); |
| 263 | + |
| 264 | + const mock = mocked(cleanupOrgRunners); |
| 265 | + const error = new Error('Error cleaning up org runners.'); |
| 266 | + mock.mockRejectedValue(error); |
| 267 | + |
| 268 | + await expect(cleanupOrgRunnersHandler({}, context)).resolves.not.toThrow(); |
| 269 | + expect(logSpyError).toHaveBeenCalledWith(expect.stringContaining(error.message), expect.anything()); |
| 270 | + }); |
| 271 | +}); |
0 commit comments