@@ -17,16 +17,8 @@ import {
17
17
resetGHRunnersCaches ,
18
18
} from './gh-runners' ;
19
19
import * as MetricsModule from './metrics' ;
20
+ import { listRunners , resetRunnersCaches , terminateRunner , RunnerType } from './runners' ;
20
21
import {
21
- doDeleteSSMParameter ,
22
- listRunners ,
23
- resetRunnersCaches ,
24
- terminateRunner ,
25
- RunnerType ,
26
- listSSMParameters ,
27
- } from './runners' ;
28
- import {
29
- cleanupOldSSMParameters ,
30
22
getGHRunnerOrg ,
31
23
getGHRunnerRepo ,
32
24
isEphemeralRunner ,
@@ -38,7 +30,6 @@ import {
38
30
sortSSMParametersByUpdateTime ,
39
31
} from './scale-down' ;
40
32
import { RequestError } from '@octokit/request-error' ;
41
- import { SSM } from 'aws-sdk' ;
42
33
43
34
jest . mock ( './gh-runners' , ( ) => ( {
44
35
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
@@ -56,9 +47,7 @@ jest.mock('./gh-runners', () => ({
56
47
jest . mock ( './runners' , ( ) => ( {
57
48
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
58
49
...( jest . requireActual ( './runners' ) as any ) ,
59
- doDeleteSSMParameter : jest . fn ( ) ,
60
50
listRunners : jest . fn ( ) ,
61
- listSSMParameters : jest . fn ( ) ,
62
51
resetRunnersCaches : jest . fn ( ) ,
63
52
terminateRunner : jest . fn ( ) ,
64
53
} ) ) ;
@@ -79,8 +68,6 @@ const mockRunner = (runnerDef: any) => {
79
68
return runnerDef as GhRunner ;
80
69
} ;
81
70
82
- const MAX_SSM_PARAMETERS = 25 ;
83
-
84
71
const metrics = new MetricsModule . ScaleDownMetrics ( ) ;
85
72
86
73
const minimumRunningTimeInMinutes = 10 ;
@@ -95,8 +82,6 @@ const baseConfig = {
95
82
shuffledSubnetIdsForAwsRegion : jest . fn ( ) . mockImplementation ( ( awsRegion : string ) => {
96
83
return Array . from ( subnetIds . get ( awsRegion ) ?? [ ] ) . sort ( ) ;
97
84
} ) ,
98
- sSMParamCleanupAgeDays : 7 ,
99
- sSMParamMaxCleanupAllowance : MAX_SSM_PARAMETERS , // Easier to test
100
85
} ;
101
86
102
87
describe ( 'scale-down' , ( ) => {
@@ -1506,122 +1491,6 @@ describe('scale-down', () => {
1506
1491
} ) ;
1507
1492
} ) ;
1508
1493
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
-
1625
1494
describe ( 'getGHRunnerOrg' , ( ) => {
1626
1495
const ghRunners = [
1627
1496
{ name : 'instance-id-01' , busy : true } ,
0 commit comments