1
0
Fork 0

Fix tests

pull/1882/head
Bassem Dghaidi 2024-12-02 04:18:46 -08:00 committed by GitHub
parent a762876d6d
commit 87171e29ca
2 changed files with 27 additions and 46 deletions

View File

@ -1,13 +1,13 @@
import * as core from '@actions/core' import * as core from '@actions/core'
import * as path from 'path' import * as path from 'path'
import {saveCache} from '../src/cache' import { saveCache } from '../src/cache'
import * as cacheUtils from '../src/internal/cacheUtils' import * as cacheUtils from '../src/internal/cacheUtils'
import {CacheFilename, CompressionMethod} from '../src/internal/constants' import { CacheFilename, CompressionMethod } from '../src/internal/constants'
import * as config from '../src/internal/config' import * as config from '../src/internal/config'
import * as tar from '../src/internal/tar' import * as tar from '../src/internal/tar'
import {CacheServiceClientJSON} from '../src/generated/results/api/v1/cache.twirp' import { CacheServiceClientJSON } from '../src/generated/results/api/v1/cache.twirp'
import * as cacheHttpClient from '../src/internal/cacheHttpClient' import * as cacheHttpClient from '../src/internal/cacheHttpClient'
import {UploadOptions} from '../src/options' import { UploadOptions } from '../src/options'
let logDebugMock: jest.SpyInstance let logDebugMock: jest.SpyInstance
@ -27,11 +27,11 @@ jest.mock('@azure/storage-blob', () => ({
beforeAll(() => { beforeAll(() => {
process.env['ACTIONS_RUNTIME_TOKEN'] = 'token' process.env['ACTIONS_RUNTIME_TOKEN'] = 'token'
jest.spyOn(console, 'log').mockImplementation(() => {}) jest.spyOn(console, 'log').mockImplementation(() => { })
jest.spyOn(core, 'debug').mockImplementation(() => {}) jest.spyOn(core, 'debug').mockImplementation(() => { })
jest.spyOn(core, 'info').mockImplementation(() => {}) jest.spyOn(core, 'info').mockImplementation(() => { })
jest.spyOn(core, 'warning').mockImplementation(() => {}) jest.spyOn(core, 'warning').mockImplementation(() => { })
jest.spyOn(core, 'error').mockImplementation(() => {}) jest.spyOn(core, 'error').mockImplementation(() => { })
jest.spyOn(cacheUtils, 'resolvePaths').mockImplementation(async filePaths => { jest.spyOn(cacheUtils, 'resolvePaths').mockImplementation(async filePaths => {
return filePaths.map(x => path.resolve(x)) return filePaths.map(x => path.resolve(x))
}) })
@ -99,7 +99,7 @@ test('create cache entry failure', async () => {
const createCacheEntryMock = jest const createCacheEntryMock = jest
.spyOn(CacheServiceClientJSON.prototype, 'CreateCacheEntry') .spyOn(CacheServiceClientJSON.prototype, 'CreateCacheEntry')
.mockReturnValue(Promise.resolve({ok: false, signedUploadUrl: ''})) .mockReturnValue(Promise.resolve({ ok: false, signedUploadUrl: '' }))
const createTarMock = jest.spyOn(tar, 'createTar') const createTarMock = jest.spyOn(tar, 'createTar')
const finalizeCacheEntryMock = jest.spyOn( const finalizeCacheEntryMock = jest.spyOn(
@ -138,7 +138,9 @@ test('save cache fails if a signedUploadURL was not passed', async () => {
const key = 'Linux-node-bb828da54c148048dd17899ba9fda624811cfb43' const key = 'Linux-node-bb828da54c148048dd17899ba9fda624811cfb43'
const cachePaths = [path.resolve(paths)] const cachePaths = [path.resolve(paths)]
const signedUploadURL = '' const signedUploadURL = ''
const archiveFileSize = 1024
const options: UploadOptions = { const options: UploadOptions = {
archiveSizeBytes: archiveFileSize, // These should always match
useAzureSdk: true, useAzureSdk: true,
uploadChunkSize: 64 * 1024 * 1024, uploadChunkSize: 64 * 1024 * 1024,
uploadConcurrency: 8 uploadConcurrency: 8
@ -147,7 +149,7 @@ test('save cache fails if a signedUploadURL was not passed', async () => {
const createCacheEntryMock = jest const createCacheEntryMock = jest
.spyOn(CacheServiceClientJSON.prototype, 'CreateCacheEntry') .spyOn(CacheServiceClientJSON.prototype, 'CreateCacheEntry')
.mockReturnValue( .mockReturnValue(
Promise.resolve({ok: true, signedUploadUrl: signedUploadURL}) Promise.resolve({ ok: true, signedUploadUrl: signedUploadURL })
) )
const createTarMock = jest.spyOn(tar, 'createTar') const createTarMock = jest.spyOn(tar, 'createTar')
@ -159,7 +161,6 @@ test('save cache fails if a signedUploadURL was not passed', async () => {
.mockReturnValueOnce(Promise.resolve(compression)) .mockReturnValueOnce(Promise.resolve(compression))
const cacheVersion = cacheUtils.getCacheVersion([paths], compression) const cacheVersion = cacheUtils.getCacheVersion([paths], compression)
const archiveFileSize = 1024
jest jest
.spyOn(cacheUtils, 'getArchiveFileSizeInBytes') .spyOn(cacheUtils, 'getArchiveFileSizeInBytes')
.mockReturnValueOnce(archiveFileSize) .mockReturnValueOnce(archiveFileSize)
@ -195,7 +196,9 @@ test('finalize save cache failure', async () => {
const cachePaths = [path.resolve(paths)] const cachePaths = [path.resolve(paths)]
const logWarningMock = jest.spyOn(core, 'warning') const logWarningMock = jest.spyOn(core, 'warning')
const signedUploadURL = 'https://blob-storage.local?signed=true' const signedUploadURL = 'https://blob-storage.local?signed=true'
const archiveFileSize = 1024
const options: UploadOptions = { const options: UploadOptions = {
archiveSizeBytes: archiveFileSize, // These should always match
useAzureSdk: true, useAzureSdk: true,
uploadChunkSize: 64 * 1024 * 1024, uploadChunkSize: 64 * 1024 * 1024,
uploadConcurrency: 8 uploadConcurrency: 8
@ -204,7 +207,7 @@ test('finalize save cache failure', async () => {
const createCacheEntryMock = jest const createCacheEntryMock = jest
.spyOn(CacheServiceClientJSON.prototype, 'CreateCacheEntry') .spyOn(CacheServiceClientJSON.prototype, 'CreateCacheEntry')
.mockReturnValue( .mockReturnValue(
Promise.resolve({ok: true, signedUploadUrl: signedUploadURL}) Promise.resolve({ ok: true, signedUploadUrl: signedUploadURL })
) )
const createTarMock = jest.spyOn(tar, 'createTar') const createTarMock = jest.spyOn(tar, 'createTar')
@ -218,14 +221,13 @@ test('finalize save cache failure', async () => {
.mockReturnValueOnce(Promise.resolve(compression)) .mockReturnValueOnce(Promise.resolve(compression))
const cacheVersion = cacheUtils.getCacheVersion([paths], compression) const cacheVersion = cacheUtils.getCacheVersion([paths], compression)
const archiveFileSize = 1024
jest jest
.spyOn(cacheUtils, 'getArchiveFileSizeInBytes') .spyOn(cacheUtils, 'getArchiveFileSizeInBytes')
.mockReturnValueOnce(archiveFileSize) .mockReturnValueOnce(archiveFileSize)
const finalizeCacheEntryMock = jest const finalizeCacheEntryMock = jest
.spyOn(CacheServiceClientJSON.prototype, 'FinalizeCacheEntryUpload') .spyOn(CacheServiceClientJSON.prototype, 'FinalizeCacheEntryUpload')
.mockReturnValue(Promise.resolve({ok: false, entryId: ''})) .mockReturnValue(Promise.resolve({ ok: false, entryId: '' }))
const cacheId = await saveCache([paths], key, options) const cacheId = await saveCache([paths], key, options)
@ -268,13 +270,14 @@ test('save with valid inputs uploads a cache', async () => {
const cachePaths = [path.resolve(paths)] const cachePaths = [path.resolve(paths)]
const signedUploadURL = 'https://blob-storage.local?signed=true' const signedUploadURL = 'https://blob-storage.local?signed=true'
const createTarMock = jest.spyOn(tar, 'createTar') const createTarMock = jest.spyOn(tar, 'createTar')
const archiveFileSize = 1024
const options: UploadOptions = { const options: UploadOptions = {
archiveSizeBytes: archiveFileSize, // These should always match
useAzureSdk: true, useAzureSdk: true,
uploadChunkSize: 64 * 1024 * 1024, uploadChunkSize: 64 * 1024 * 1024,
uploadConcurrency: 8 uploadConcurrency: 8
} }
const archiveFileSize = 1024
jest jest
.spyOn(cacheUtils, 'getArchiveFileSizeInBytes') .spyOn(cacheUtils, 'getArchiveFileSizeInBytes')
.mockReturnValueOnce(archiveFileSize) .mockReturnValueOnce(archiveFileSize)
@ -283,7 +286,7 @@ test('save with valid inputs uploads a cache', async () => {
jest jest
.spyOn(CacheServiceClientJSON.prototype, 'CreateCacheEntry') .spyOn(CacheServiceClientJSON.prototype, 'CreateCacheEntry')
.mockReturnValue( .mockReturnValue(
Promise.resolve({ok: true, signedUploadUrl: signedUploadURL}) Promise.resolve({ ok: true, signedUploadUrl: signedUploadURL })
) )
const saveCacheMock = jest.spyOn(cacheHttpClient, 'saveCache') const saveCacheMock = jest.spyOn(cacheHttpClient, 'saveCache')
@ -296,7 +299,7 @@ test('save with valid inputs uploads a cache', async () => {
const finalizeCacheEntryMock = jest const finalizeCacheEntryMock = jest
.spyOn(CacheServiceClientJSON.prototype, 'FinalizeCacheEntryUpload') .spyOn(CacheServiceClientJSON.prototype, 'FinalizeCacheEntryUpload')
.mockReturnValue(Promise.resolve({ok: true, entryId: cacheId.toString()})) .mockReturnValue(Promise.resolve({ ok: true, entryId: cacheId.toString() }))
const expectedCacheId = await saveCache([paths], key) const expectedCacheId = await saveCache([paths], key)

View File

@ -1,5 +1,5 @@
import * as uploadUtils from '../src/internal/uploadUtils' import * as uploadUtils from '../src/internal/uploadUtils'
import {TransferProgressEvent} from '@azure/ms-rest-js' import { TransferProgressEvent } from '@azure/ms-rest-js'
test('upload progress tracked correctly', () => { test('upload progress tracked correctly', () => {
const progress = new uploadUtils.UploadProgress(1000) const progress = new uploadUtils.UploadProgress(1000)
@ -11,7 +11,7 @@ test('upload progress tracked correctly', () => {
expect(progress.getTransferredBytes()).toBe(0) expect(progress.getTransferredBytes()).toBe(0)
expect(progress.isDone()).toBe(false) expect(progress.isDone()).toBe(false)
progress.onProgress()({loadedBytes: 0} as TransferProgressEvent) progress.onProgress()({ loadedBytes: 0 } as TransferProgressEvent)
expect(progress.contentLength).toBe(1000) expect(progress.contentLength).toBe(1000)
expect(progress.sentBytes).toBe(0) expect(progress.sentBytes).toBe(0)
@ -20,7 +20,7 @@ test('upload progress tracked correctly', () => {
expect(progress.getTransferredBytes()).toBe(0) expect(progress.getTransferredBytes()).toBe(0)
expect(progress.isDone()).toBe(false) expect(progress.isDone()).toBe(false)
progress.onProgress()({loadedBytes: 250} as TransferProgressEvent) progress.onProgress()({ loadedBytes: 250 } as TransferProgressEvent)
expect(progress.contentLength).toBe(1000) expect(progress.contentLength).toBe(1000)
expect(progress.sentBytes).toBe(250) expect(progress.sentBytes).toBe(250)
@ -29,7 +29,7 @@ test('upload progress tracked correctly', () => {
expect(progress.getTransferredBytes()).toBe(250) expect(progress.getTransferredBytes()).toBe(250)
expect(progress.isDone()).toBe(false) expect(progress.isDone()).toBe(false)
progress.onProgress()({loadedBytes: 500} as TransferProgressEvent) progress.onProgress()({ loadedBytes: 500 } as TransferProgressEvent)
expect(progress.contentLength).toBe(1000) expect(progress.contentLength).toBe(1000)
expect(progress.sentBytes).toBe(500) expect(progress.sentBytes).toBe(500)
@ -38,7 +38,7 @@ test('upload progress tracked correctly', () => {
expect(progress.getTransferredBytes()).toBe(500) expect(progress.getTransferredBytes()).toBe(500)
expect(progress.isDone()).toBe(false) expect(progress.isDone()).toBe(false)
progress.onProgress()({loadedBytes: 750} as TransferProgressEvent) progress.onProgress()({ loadedBytes: 750 } as TransferProgressEvent)
expect(progress.contentLength).toBe(1000) expect(progress.contentLength).toBe(1000)
expect(progress.sentBytes).toBe(750) expect(progress.sentBytes).toBe(750)
@ -47,7 +47,7 @@ test('upload progress tracked correctly', () => {
expect(progress.getTransferredBytes()).toBe(750) expect(progress.getTransferredBytes()).toBe(750)
expect(progress.isDone()).toBe(false) expect(progress.isDone()).toBe(false)
progress.onProgress()({loadedBytes: 1000} as TransferProgressEvent) progress.onProgress()({ loadedBytes: 1000 } as TransferProgressEvent)
expect(progress.contentLength).toBe(1000) expect(progress.contentLength).toBe(1000)
expect(progress.sentBytes).toBe(1000) expect(progress.sentBytes).toBe(1000)
@ -56,25 +56,3 @@ test('upload progress tracked correctly', () => {
expect(progress.getTransferredBytes()).toBe(1000) expect(progress.getTransferredBytes()).toBe(1000)
expect(progress.isDone()).toBe(true) expect(progress.isDone()).toBe(true)
}) })
// test('upload to azure blob storage is successful', () => {
// const archivePath = 'path/to/archive.tzst'
// const signedUploadURL = 'https://storage10.blob.core.windows.net/cache-container/3fe-60?se=2024-12-002T11%3A08%3A58Z&sv=2024-11-04'
// const options: UploadOptions = {
// useAzureSdk: true,
// uploadChunkSize: 64 * 1024 * 1024,
// uploadConcurrency: 8
// }
// jest.spyOn(uploadUtils.UploadProgress.prototype, 'onProgress').mockImplementation(() => (progress: TransferProgressEvent) => {
// return progress.loadedBytes
// })
// jest.spyOn(uploadUtils.UploadProgress.prototype, 'onProgress').mockImplementation(() => (progress: TransferProgressEvent) => {
// return progress.loadedBytes
// })
// const response = uploadUtils.uploadCacheArchiveSDK(signedUploadURL, archivePath, options)
// expect(response).toBeInstanceOf(Promise)
// })