Slim down VariantAnalysisMonitorResult
This commit is contained in:
@@ -1,16 +1,11 @@
|
||||
import { VariantAnalysis } from './variant-analysis';
|
||||
|
||||
export type VariantAnalysisMonitorStatus =
|
||||
| 'InProgress'
|
||||
| 'CompletedSuccessfully'
|
||||
| 'CompletedUnsuccessfully'
|
||||
| 'Failed'
|
||||
| 'Cancelled'
|
||||
| 'TimedOut';
|
||||
| 'Completed'
|
||||
| 'Canceled';
|
||||
|
||||
export interface VariantAnalysisMonitorResult {
|
||||
status: VariantAnalysisMonitorStatus;
|
||||
error?: string;
|
||||
scannedReposDownloaded?: number[],
|
||||
variantAnalysis?: VariantAnalysis
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ export class VariantAnalysisMonitor extends DisposableObject {
|
||||
await this.sleep(VariantAnalysisMonitor.sleepTime);
|
||||
|
||||
if (cancellationToken && cancellationToken.isCancellationRequested) {
|
||||
return { status: 'Cancelled', error: 'Variant Analysis was canceled.' };
|
||||
return { status: 'Canceled' };
|
||||
}
|
||||
|
||||
const variantAnalysisSummary = await ghApiClient.getVariantAnalysis(
|
||||
@@ -59,22 +59,14 @@ export class VariantAnalysisMonitor extends DisposableObject {
|
||||
const downloadedRepos = this.downloadVariantAnalysisResults(variantAnalysisSummary, scannedReposDownloaded);
|
||||
scannedReposDownloaded.push(...downloadedRepos);
|
||||
|
||||
if (variantAnalysis.failureReason) {
|
||||
return {
|
||||
status: 'Failed',
|
||||
error: `Variant Analysis has failed: ${variantAnalysis.failureReason}`,
|
||||
variantAnalysis: variantAnalysis
|
||||
};
|
||||
}
|
||||
|
||||
if (isFinalVariantAnalysisStatus(variantAnalysis.status)) {
|
||||
if (isFinalVariantAnalysisStatus(variantAnalysis.status) || variantAnalysis.failureReason) {
|
||||
break;
|
||||
}
|
||||
|
||||
attemptCount++;
|
||||
}
|
||||
|
||||
return { status: 'CompletedSuccessfully', scannedReposDownloaded: scannedReposDownloaded };
|
||||
return { status: 'Completed', scannedReposDownloaded, variantAnalysis };
|
||||
}
|
||||
|
||||
private scheduleForDownload(
|
||||
|
||||
@@ -62,7 +62,7 @@ export function processUpdatedVariantAnalysis(
|
||||
executionStartTime: previousVariantAnalysis.executionStartTime,
|
||||
createdAt: response.created_at,
|
||||
updatedAt: response.updated_at,
|
||||
status: processApiStatus(response.status),
|
||||
status: processApiStatus(response.status, response.failure_reason),
|
||||
completedAt: response.completed_at,
|
||||
actionsWorkflowRunId: response.actions_workflow_run_id,
|
||||
scannedRepos: scannedRepos,
|
||||
@@ -158,11 +158,12 @@ function processApiRepoStatus(analysisStatus: ApiVariantAnalysisRepoStatus): Var
|
||||
}
|
||||
}
|
||||
|
||||
function processApiStatus(status: ApiVariantAnalysisStatus): VariantAnalysisStatus {
|
||||
switch (status) {
|
||||
case 'in_progress':
|
||||
function processApiStatus(status: ApiVariantAnalysisStatus, failureReason: string | undefined): VariantAnalysisStatus {
|
||||
if (status === 'in_progress') {
|
||||
return VariantAnalysisStatus.InProgress;
|
||||
case 'completed':
|
||||
} else if (failureReason !== undefined) {
|
||||
return VariantAnalysisStatus.Failed;
|
||||
} else {
|
||||
return VariantAnalysisStatus.Succeeded;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,14 +83,14 @@ describe('Variant Analysis Monitor', async function() {
|
||||
|
||||
const result = await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis, cancellationTokenSource.token);
|
||||
|
||||
expect(result).to.eql({ status: 'Cancelled', error: 'Variant Analysis was canceled.' });
|
||||
expect(result).to.eql({ status: 'Canceled' });
|
||||
});
|
||||
|
||||
describe('when the variant analysis fails', async () => {
|
||||
let mockFailedApiResponse: VariantAnalysisApiResponse;
|
||||
|
||||
beforeEach(async function() {
|
||||
mockFailedApiResponse = createFailedMockApiResponse('in_progress');
|
||||
mockFailedApiResponse = createFailedMockApiResponse();
|
||||
mockGetVariantAnalysis = sandbox.stub(ghApiClient, 'getVariantAnalysis').resolves(mockFailedApiResponse);
|
||||
});
|
||||
|
||||
@@ -98,8 +98,7 @@ describe('Variant Analysis Monitor', async function() {
|
||||
const result = await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis, cancellationTokenSource.token);
|
||||
|
||||
expect(mockGetVariantAnalysis.calledOnce).to.be.true;
|
||||
expect(result.status).to.eql('Failed');
|
||||
expect(result.error).to.eql(`Variant Analysis has failed: ${mockFailedApiResponse.failure_reason}`);
|
||||
expect(result.status).to.eql('Completed');
|
||||
expect(result.variantAnalysis?.status).to.equal(VariantAnalysisStatus.Failed);
|
||||
expect(result.variantAnalysis?.failureReason).to.equal(processFailureReason(mockFailedApiResponse.failure_reason as VariantAnalysisFailureReason));
|
||||
});
|
||||
@@ -130,7 +129,7 @@ describe('Variant Analysis Monitor', async function() {
|
||||
it('should succeed and return a list of scanned repo ids', async () => {
|
||||
const result = await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis, cancellationTokenSource.token);
|
||||
|
||||
expect(result.status).to.equal('CompletedSuccessfully');
|
||||
expect(result.status).to.equal('Completed');
|
||||
expect(result.scannedReposDownloaded).to.eql(succeededRepos.map(r => r.repository.id));
|
||||
});
|
||||
|
||||
@@ -173,7 +172,7 @@ describe('Variant Analysis Monitor', async function() {
|
||||
it('should succeed and return an empty list of scanned repo ids', async () => {
|
||||
const result = await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis, cancellationTokenSource.token);
|
||||
|
||||
expect(result.status).to.equal('CompletedSuccessfully');
|
||||
expect(result.status).to.equal('Completed');
|
||||
expect(result.scannedReposDownloaded).to.eql([]);
|
||||
});
|
||||
|
||||
@@ -194,7 +193,7 @@ describe('Variant Analysis Monitor', async function() {
|
||||
it('should succeed and return an empty list of scanned repo ids', async () => {
|
||||
const result = await variantAnalysisMonitor.monitorVariantAnalysis(variantAnalysis, cancellationTokenSource.token);
|
||||
|
||||
expect(result.status).to.equal('CompletedSuccessfully');
|
||||
expect(result.status).to.equal('Completed');
|
||||
expect(result.scannedReposDownloaded).to.eql([]);
|
||||
});
|
||||
|
||||
|
||||
@@ -39,13 +39,10 @@ export function createMockApiResponse(
|
||||
}
|
||||
|
||||
export function createFailedMockApiResponse(
|
||||
status: VariantAnalysisStatus = 'in_progress',
|
||||
scannedRepos: VariantAnalysisScannedRepository[] = createMockScannedRepos(),
|
||||
skippedRepos: VariantAnalysisSkippedRepositories = createMockSkippedRepos(),
|
||||
): VariantAnalysisApiResponse {
|
||||
const variantAnalysis = createMockApiResponse(status, scannedRepos, skippedRepos);
|
||||
variantAnalysis.status = status;
|
||||
const variantAnalysis = createMockApiResponse('completed', scannedRepos, skippedRepos);
|
||||
variantAnalysis.failure_reason = 'internal_error';
|
||||
|
||||
return variantAnalysis;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user