mirror of https://github.com/actions/toolkit
113 lines
3.1 KiB
TypeScript
113 lines
3.1 KiB
TypeScript
import {
|
|
DownloadOptions,
|
|
UploadOptions,
|
|
getDownloadOptions,
|
|
getUploadOptions
|
|
} from '../src/options'
|
|
|
|
const useAzureSdk = false
|
|
const concurrentBlobDownloads = true
|
|
const downloadConcurrency = 8
|
|
const timeoutInMs = 30000
|
|
const segmentTimeoutInMs = 600000
|
|
const lookupOnly = false
|
|
|
|
test('getDownloadOptions sets defaults', async () => {
|
|
const actualOptions = getDownloadOptions()
|
|
|
|
expect(actualOptions).toEqual({
|
|
useAzureSdk,
|
|
concurrentBlobDownloads,
|
|
downloadConcurrency,
|
|
timeoutInMs,
|
|
segmentTimeoutInMs,
|
|
lookupOnly
|
|
})
|
|
})
|
|
|
|
test('getDownloadOptions overrides all settings', async () => {
|
|
const expectedOptions: DownloadOptions = {
|
|
useAzureSdk: true,
|
|
concurrentBlobDownloads: false,
|
|
downloadConcurrency: 14,
|
|
timeoutInMs: 20000,
|
|
segmentTimeoutInMs: 3600000,
|
|
lookupOnly: true
|
|
}
|
|
|
|
const actualOptions = getDownloadOptions(expectedOptions)
|
|
|
|
expect(actualOptions).toEqual(expectedOptions)
|
|
})
|
|
|
|
test('getUploadOptions sets defaults', async () => {
|
|
const expectedOptions: UploadOptions = {
|
|
uploadConcurrency: 4,
|
|
uploadChunkSize: 32 * 1024 * 1024,
|
|
useAzureSdk: false
|
|
}
|
|
const actualOptions = getUploadOptions()
|
|
|
|
expect(actualOptions).toEqual(expectedOptions)
|
|
})
|
|
|
|
test('getUploadOptions overrides all settings', async () => {
|
|
const expectedOptions: UploadOptions = {
|
|
uploadConcurrency: 2,
|
|
uploadChunkSize: 16 * 1024 * 1024,
|
|
useAzureSdk: true
|
|
}
|
|
|
|
const actualOptions = getUploadOptions(expectedOptions)
|
|
|
|
expect(actualOptions).toEqual(expectedOptions)
|
|
})
|
|
|
|
test('env variables override all getUploadOptions settings', async () => {
|
|
const expectedOptions: UploadOptions = {
|
|
uploadConcurrency: 16,
|
|
uploadChunkSize: 64 * 1024 * 1024,
|
|
useAzureSdk: true
|
|
}
|
|
|
|
process.env.CACHE_UPLOAD_CONCURRENCY = '16'
|
|
process.env.CACHE_UPLOAD_CHUNK_SIZE = '64'
|
|
|
|
const actualOptions = getUploadOptions(expectedOptions)
|
|
expect(actualOptions).toEqual(expectedOptions)
|
|
})
|
|
|
|
test('env variables override all getUploadOptions settings but do not exceed caps', async () => {
|
|
const expectedOptions: UploadOptions = {
|
|
uploadConcurrency: 32,
|
|
uploadChunkSize: 128 * 1024 * 1024,
|
|
useAzureSdk: true
|
|
}
|
|
|
|
process.env.CACHE_UPLOAD_CONCURRENCY = '64'
|
|
process.env.CACHE_UPLOAD_CHUNK_SIZE = '256'
|
|
|
|
const actualOptions = getUploadOptions(expectedOptions)
|
|
expect(actualOptions).toEqual(expectedOptions)
|
|
})
|
|
|
|
test('getDownloadOptions overrides download timeout minutes', async () => {
|
|
const expectedOptions: DownloadOptions = {
|
|
useAzureSdk: false,
|
|
downloadConcurrency: 14,
|
|
timeoutInMs: 20000,
|
|
segmentTimeoutInMs: 3600000,
|
|
lookupOnly: true
|
|
}
|
|
process.env.SEGMENT_DOWNLOAD_TIMEOUT_MINS = '10'
|
|
const actualOptions = getDownloadOptions(expectedOptions)
|
|
|
|
expect(actualOptions.useAzureSdk).toEqual(expectedOptions.useAzureSdk)
|
|
expect(actualOptions.downloadConcurrency).toEqual(
|
|
expectedOptions.downloadConcurrency
|
|
)
|
|
expect(actualOptions.timeoutInMs).toEqual(expectedOptions.timeoutInMs)
|
|
expect(actualOptions.segmentTimeoutInMs).toEqual(600000)
|
|
expect(actualOptions.lookupOnly).toEqual(expectedOptions.lookupOnly)
|
|
})
|