@@ -17,16 +17,8 @@ import {
1717 resetGHRunnersCaches ,
1818} from './gh-runners' ;
1919import * as MetricsModule from './metrics' ;
20+ import { listRunners , resetRunnersCaches , terminateRunner , RunnerType } from './runners' ;
2021import {
21- doDeleteSSMParameter ,
22- listRunners ,
23- resetRunnersCaches ,
24- terminateRunner ,
25- RunnerType ,
26- listSSMParameters ,
27- } from './runners' ;
28- import {
29- cleanupOldSSMParameters ,
3022 getGHRunnerOrg ,
3123 getGHRunnerRepo ,
3224 isEphemeralRunner ,
@@ -38,7 +30,6 @@ import {
3830 sortSSMParametersByUpdateTime ,
3931} from './scale-down' ;
4032import { RequestError } from '@octokit/request-error' ;
41- import { SSM } from 'aws-sdk' ;
4233
4334jest . mock ( './gh-runners' , ( ) => ( {
4435 /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
@@ -56,9 +47,7 @@ jest.mock('./gh-runners', () => ({
5647jest . mock ( './runners' , ( ) => ( {
5748 /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
5849 ...( jest . requireActual ( './runners' ) as any ) ,
59- doDeleteSSMParameter : jest . fn ( ) ,
6050 listRunners : jest . fn ( ) ,
61- listSSMParameters : jest . fn ( ) ,
6251 resetRunnersCaches : jest . fn ( ) ,
6352 terminateRunner : jest . fn ( ) ,
6453} ) ) ;
@@ -79,8 +68,6 @@ const mockRunner = (runnerDef: any) => {
7968 return runnerDef as GhRunner ;
8069} ;
8170
82- const MAX_SSM_PARAMETERS = 25 ;
83-
8471const metrics = new MetricsModule . ScaleDownMetrics ( ) ;
8572
8673const minimumRunningTimeInMinutes = 10 ;
@@ -95,8 +82,6 @@ const baseConfig = {
9582 shuffledSubnetIdsForAwsRegion : jest . fn ( ) . mockImplementation ( ( awsRegion : string ) => {
9683 return Array . from ( subnetIds . get ( awsRegion ) ?? [ ] ) . sort ( ) ;
9784 } ) ,
98- sSMParamCleanupAgeDays : 7 ,
99- sSMParamMaxCleanupAllowance : MAX_SSM_PARAMETERS , // Easier to test
10085} ;
10186
10287describe ( 'scale-down' , ( ) => {
@@ -1506,122 +1491,6 @@ describe('scale-down', () => {
15061491 } ) ;
15071492 } ) ;
15081493
1509- describe ( 'cleanupOldSSMParameters' , ( ) => {
1510- it ( 'Stops when LastModifiedDate === undefined' , async ( ) => {
1511- const oldDt = moment ( )
1512- . subtract ( Config . Instance . sSMParamCleanupAgeDays + 1 , 'days' )
1513- . toDate ( ) ;
1514- const ssmParameters = new Map < string , SSM . ParameterMetadata > ( ) ;
1515- ssmParameters . set ( 'WG113' , { Name : 'WG113' , LastModifiedDate : undefined } ) ;
1516- ssmParameters . set ( 'WG115' , { Name : 'WG115' , LastModifiedDate : oldDt } ) ;
1517- ssmParameters . set ( 'WG116' , { Name : 'WG116' , LastModifiedDate : oldDt } ) ;
1518-
1519- const mockedDoDeleteSSMParameter = mocked ( doDeleteSSMParameter ) ;
1520- const mockedListSSMParameters = mocked ( listSSMParameters ) ;
1521-
1522- mockedListSSMParameters . mockResolvedValueOnce ( ssmParameters ) ;
1523- mockedDoDeleteSSMParameter . mockResolvedValue ( true ) ;
1524-
1525- await cleanupOldSSMParameters ( new Set ( [ 'us-east-1' ] ) , metrics ) ;
1526-
1527- expect ( mockedDoDeleteSSMParameter ) . toBeCalledTimes ( 2 ) ;
1528- expect ( mockedDoDeleteSSMParameter ) . toBeCalledWith ( 'WG115' , metrics , 'us-east-1' ) ;
1529- expect ( mockedDoDeleteSSMParameter ) . toBeCalledWith ( 'WG116' , metrics , 'us-east-1' ) ;
1530- expect ( mockedListSSMParameters ) . toBeCalledTimes ( 1 ) ;
1531- } ) ;
1532-
1533- it ( 'Stops when LastModifiedDate is < Config.Instance.sSMParamCleanupAgeDays' , async ( ) => {
1534- const oldDt = moment ( )
1535- . subtract ( Config . Instance . sSMParamCleanupAgeDays + 1 , 'days' )
1536- . toDate ( ) ;
1537- const olderDt = moment ( )
1538- . subtract ( Config . Instance . sSMParamCleanupAgeDays - 1 , 'days' )
1539- . toDate ( ) ;
1540- const ssmParameters = new Map < string , SSM . ParameterMetadata > ( ) ;
1541- ssmParameters . set ( 'WG113' , { Name : 'WG113' , LastModifiedDate : undefined } ) ;
1542- ssmParameters . set ( 'WG115' , { Name : 'WG115' , LastModifiedDate : oldDt } ) ;
1543- ssmParameters . set ( 'WG116' , { Name : 'WG116' , LastModifiedDate : olderDt } ) ;
1544-
1545- const mockedDoDeleteSSMParameter = mocked ( doDeleteSSMParameter ) ;
1546- const mockedListSSMParameters = mocked ( listSSMParameters ) ;
1547-
1548- mockedListSSMParameters . mockResolvedValueOnce ( ssmParameters ) ;
1549- mockedDoDeleteSSMParameter . mockResolvedValue ( true ) ;
1550-
1551- await cleanupOldSSMParameters ( new Set ( [ 'us-east-1' ] ) , metrics ) ;
1552-
1553- expect ( mockedDoDeleteSSMParameter ) . toBeCalledTimes ( 1 ) ;
1554- expect ( mockedDoDeleteSSMParameter ) . toBeCalledWith ( 'WG115' , metrics , 'us-east-1' ) ;
1555- expect ( mockedListSSMParameters ) . toBeCalledTimes ( 1 ) ;
1556- } ) ;
1557-
1558- it ( 'Stops when deleted >= Config.Instance.sSMParamMaxCleanupAllowance' , async ( ) => {
1559- const oldDt = moment ( )
1560- . subtract ( Config . Instance . sSMParamCleanupAgeDays + 1 , 'days' )
1561- . toDate ( ) ;
1562- const ssmParameters = new Map < string , SSM . ParameterMetadata > ( ) ;
1563- [ ...Array ( MAX_SSM_PARAMETERS + 5 ) . keys ( ) ] . forEach ( ( i ) => {
1564- const name = `AGDGADUWG113-${ i } ` ;
1565- ssmParameters . set ( name , { Name : name , LastModifiedDate : oldDt } ) ;
1566- } ) ;
1567-
1568- const mockedDoDeleteSSMParameter = mocked ( doDeleteSSMParameter ) ;
1569- const mockedListSSMParameters = mocked ( listSSMParameters ) ;
1570-
1571- mockedListSSMParameters . mockResolvedValueOnce ( ssmParameters ) ;
1572- mockedDoDeleteSSMParameter . mockResolvedValue ( true ) ;
1573-
1574- await cleanupOldSSMParameters ( new Set ( [ 'us-east-1' ] ) , metrics ) ;
1575-
1576- expect ( mockedDoDeleteSSMParameter ) . toBeCalledTimes ( MAX_SSM_PARAMETERS ) ;
1577- expect ( mockedListSSMParameters ) . toBeCalledTimes ( 1 ) ;
1578- } ) ;
1579-
1580- it ( 'Breaks when deleted >= Config.Instance.sSMParamMaxCleanupAllowance' , async ( ) => {
1581- const oldDt = moment ( )
1582- . subtract ( Config . Instance . sSMParamCleanupAgeDays + 1 , 'days' )
1583- . toDate ( ) ;
1584- const ssmParameters = new Map < string , SSM . ParameterMetadata > ( ) ;
1585- [ ...Array ( MAX_SSM_PARAMETERS + 5 ) . keys ( ) ] . forEach ( ( i ) => {
1586- const name = `AGDGADUWG113-${ i } ` ;
1587- ssmParameters . set ( name , { Name : name , LastModifiedDate : oldDt } ) ;
1588- } ) ;
1589-
1590- const mockedDoDeleteSSMParameter = mocked ( doDeleteSSMParameter ) ;
1591- const mockedListSSMParameters = mocked ( listSSMParameters ) ;
1592-
1593- mockedListSSMParameters . mockResolvedValueOnce ( ssmParameters ) ;
1594- mockedDoDeleteSSMParameter . mockResolvedValue ( true ) ;
1595-
1596- await cleanupOldSSMParameters ( new Set ( [ 'us-east-1' ] ) , metrics ) ;
1597-
1598- expect ( mockedDoDeleteSSMParameter ) . toBeCalledTimes ( MAX_SSM_PARAMETERS ) ;
1599- expect ( mockedListSSMParameters ) . toBeCalledTimes ( 1 ) ;
1600- } ) ;
1601-
1602- it ( 'Dont count failed to delete' , async ( ) => {
1603- const oldDt = moment ( )
1604- . subtract ( Config . Instance . sSMParamCleanupAgeDays + 1 , 'days' )
1605- . toDate ( ) ;
1606- const ssmParameters = new Map < string , SSM . ParameterMetadata > ( ) ;
1607- [ ...Array ( MAX_SSM_PARAMETERS + 5 ) . keys ( ) ] . forEach ( ( i ) => {
1608- const name = `AGDGADUWG113-${ i } ` ;
1609- ssmParameters . set ( name , { Name : name , LastModifiedDate : oldDt } ) ;
1610- } ) ;
1611-
1612- const mockedDoDeleteSSMParameter = mocked ( doDeleteSSMParameter ) ;
1613- const mockedListSSMParameters = mocked ( listSSMParameters ) ;
1614-
1615- mockedListSSMParameters . mockResolvedValueOnce ( ssmParameters ) ;
1616- mockedDoDeleteSSMParameter . mockResolvedValue ( false ) ;
1617-
1618- await cleanupOldSSMParameters ( new Set ( [ 'us-east-1' ] ) , metrics ) ;
1619-
1620- expect ( mockedDoDeleteSSMParameter ) . toBeCalledTimes ( MAX_SSM_PARAMETERS + 5 ) ;
1621- expect ( mockedListSSMParameters ) . toBeCalledTimes ( 1 ) ;
1622- } ) ;
1623- } ) ;
1624-
16251494 describe ( 'getGHRunnerOrg' , ( ) => {
16261495 const ghRunners = [
16271496 { name : 'instance-id-01' , busy : true } ,
0 commit comments