Make concurrency change opt-in, but can only go lower

This commit is contained in:
Yang Cao
2025-01-08 17:53:44 +00:00
parent f3c12d5561
commit ede05b95d7
2 changed files with 81 additions and 4 deletions

View File

@@ -1,4 +1,10 @@
import * as config from '../src/internal/shared/config'
import os from 'os'
// Mock the 'os' module
jest.mock('os', () => ({
cpus: jest.fn()
}))
beforeEach(() => {
jest.resetModules()
@@ -35,10 +41,12 @@ describe('uploadChunkTimeoutEnv', () => {
it('should return default 300000 when no env set', () => {
expect(config.getUploadChunkTimeout()).toBe(300000)
})
it('should return value set in ACTIONS_UPLOAD_TIMEOUT_MS', () => {
process.env.ACTIONS_UPLOAD_TIMEOUT_MS = '150000'
expect(config.getUploadChunkTimeout()).toBe(150000)
})
it('should throw if value set in ACTIONS_UPLOAD_TIMEOUT_MS is invalid', () => {
process.env.ACTIONS_UPLOAD_TIMEOUT_MS = 'abc'
expect(() => {
@@ -46,3 +54,40 @@ describe('uploadChunkTimeoutEnv', () => {
}).toThrow()
})
})
describe('uploadConcurrencyEnv', () => {
it('should return default 32 when cpu num is <= 4', () => {
;(os.cpus as jest.Mock).mockReturnValue(new Array(4))
expect(config.getConcurrency()).toBe(32)
})
it('should return 16 * num of cpu when cpu num is > 4', () => {
;(os.cpus as jest.Mock).mockReturnValue(new Array(6))
expect(config.getConcurrency()).toBe(96)
})
it('should return up to 300 max value', () => {
;(os.cpus as jest.Mock).mockReturnValue(new Array(32))
expect(config.getConcurrency()).toBe(300)
})
it('should return override value when ACTIONS_UPLOAD_CONCURRENCY is set', () => {
;(os.cpus as jest.Mock).mockReturnValue(new Array(4))
process.env.ACTIONS_UPLOAD_CONCURRENCY = '10'
expect(config.getConcurrency()).toBe(10)
})
it('should throw with invalid value of ACTIONS_UPLOAD_CONCURRENCY', () => {
;(os.cpus as jest.Mock).mockReturnValue(new Array(4))
process.env.ACTIONS_UPLOAD_CONCURRENCY = 'abc'
expect(() => {
config.getConcurrency()
}).toThrow()
})
it('cannot go over currency cap when override value is greater', () => {
;(os.cpus as jest.Mock).mockReturnValue(new Array(4))
process.env.ACTIONS_UPLOAD_CONCURRENCY = '40'
expect(config.getConcurrency()).toBe(32)
})
})