Skip to content

Commit

Permalink
added core interceptor for pipeline
Browse files Browse the repository at this point in the history
  • Loading branch information
pnaik1 committed May 14, 2024
1 parent 37469fd commit 93ae57a
Show file tree
Hide file tree
Showing 19 changed files with 476 additions and 431 deletions.
19 changes: 19 additions & 0 deletions frontend/src/__mocks__/mockGoogleRpcStatusKF.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { GoogleRpcStatusKF } from '~/concepts/pipelines/kfTypes';

type MockGoogleRpcStatusKF = { message?: string };

export const mockSuccessGoogleRpcStatus = ({
message = '',
}: MockGoogleRpcStatusKF): GoogleRpcStatusKF => ({
code: 0,
message,
details: [],
});

export const mockCancelledGoogleRpcStatus = ({
message = '',
}: MockGoogleRpcStatusKF): GoogleRpcStatusKF => ({
code: 1,
message,
details: [],
});
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
buildMockPipelineV2,
buildMockPipelines,
buildMockPipelineVersionV2,
buildMockPipelineVersionsV2,
mockProjectK8sResource,
mockRouteK8sResource,
buildMockRunKF,
Expand All @@ -23,6 +22,7 @@ import {
compareRunsListTable,
compareRunParamsTable,
} from '~/__tests__/cypress/cypress/pages/pipelines/compareRuns';
import { mockCancelledGoogleRpcStatus } from '~/__mocks__/mockGoogleRpcStatusKF';

const projectName = 'test-project-name';
const initialMockPipeline = buildMockPipelineV2({ display_name: 'Test pipeline' });
Expand Down Expand Up @@ -90,21 +90,24 @@ describe('Compare runs', () => {
});

it('valid number of runs but it is invalid', () => {
cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/runs/:runId',
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/runs/invalid_run_id`,
path: { namespace: projectName, runId: 'invalid_run_id' },
},
{ statusCode: 404 },
).as('invalidRun');

compareRunsGlobal.visit(projectName, mockExperiment.experiment_id, ['invalid_run_id']);
cy.wait('@invalidRun');
compareRunsGlobal.findInvalidRunsError().should('exist');
});

it('invalid runs are removed from url', () => {
cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/runs/:runId',
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/runs/invalid_run_id`,
path: { namespace: projectName, runId: 'invalid_run_id' },
},
{ statusCode: 404 },
).as('invalidRun');
Expand All @@ -121,18 +124,12 @@ describe('Compare runs', () => {
});

it('other failed requests dont change the url ', () => {
const errorRun = {
error: {
code: 1, // cancelled
message: 'Run cancelled by caller',
details: [],
},
};
cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/runs/:runId',
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/runs/invalid_run_id`,
path: { namespace: projectName, runId: 'invalid_run_id' },
},
errorRun,
mockCancelledGoogleRpcStatus({ message: 'Run cancelled by caller' }),
).as('invalidRun');
compareRunsGlobal.visit(projectName, mockExperiment.experiment_id, [
'invalid_run_id',
Expand Down Expand Up @@ -224,36 +221,31 @@ const initIntercepts = () => {
mockProjectK8sResource({ k8sName: projectName, displayName: projectName }),
]),
);

cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/pipelines',
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/pipelines`,
path: { namespace: projectName },
},
buildMockPipelines([initialMockPipeline]),
);

cy.intercept(
{
method: 'POST',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/pipeline_versions`,
},
buildMockPipelineVersionsV2([initialMockPipelineVersion]),
);
cy.intercept(
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/experiments/${mockExperiment.experiment_id}`,
},
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/experiments/:experimentId',
{ path: { namespace: projectName, experimentId: mockExperiment.experiment_id } },
mockExperiment,
);
cy.intercept(

cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/runs/:runId',
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/runs/${mockRun.run_id}`,
path: { namespace: projectName, runId: mockRun.run_id },
},
mockRun,
).as('validRun');
cy.intercept(

cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/runs/:runId',
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/runs/${mockRun2.run_id}`,
path: { namespace: projectName, runId: mockRun2.run_id },
},
mockRun2,
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import {
mockK8sResourceList,
buildMockPipelineV2,
buildMockPipelines,
buildMockPipelineVersionV2,
buildMockPipelineVersionsV2,
mockProjectK8sResource,
mockRouteK8sResource,
} from '~/__mocks__';
Expand All @@ -28,9 +26,6 @@ import {

const projectName = 'test-project-name';
const initialMockPipeline = buildMockPipelineV2({ display_name: 'Test pipeline' });
const initialMockPipelineVersion = buildMockPipelineVersionV2({
pipeline_id: initialMockPipeline.pipeline_id,
});
const mockExperiments = [
buildMockExperimentKF({
display_name: 'Test experiment 1',
Expand Down Expand Up @@ -270,40 +265,33 @@ const initIntercepts = () => {
mockProjectK8sResource({ k8sName: projectName, displayName: projectName }),
]),
);

cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/pipelines',
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/pipelines`,
path: { namespace: projectName },
},
buildMockPipelines([initialMockPipeline]),
);

cy.intercept(
{
method: 'POST',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/pipeline_versions`,
},
buildMockPipelineVersionsV2([initialMockPipelineVersion]),
);
cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/runs',
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/runs`,
path: { namespace: projectName },
},
{ runs: [] },
);
cy.intercept(
{
method: 'GET',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/recurringruns`,
},

cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/recurringruns',
{
recurringRuns: [],
path: { namespace: projectName },
},
{ recurringRuns: [] },
);
cy.intercept(
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/experiments/${mockExperiments[0].experiment_id}`,
},

cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/experiments/:experimentId',
{ path: { namespace: projectName, experimentId: mockExperiments[0].experiment_id } },
mockExperiments[0],
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const initialRunIds = ['test-run-1', 'test-run-2'];

const mockRuns = Array(11)
.fill(buildMockRunKF())
.map((mockRun: Partial<PipelineRunKFv2>, index) => ({
.map((mockRun: PipelineRunKFv2, index) => ({
...mockRun,
display_name: `Test run ${index + 1}`,
run_id: `test-run-${index + 1}`,
Expand Down Expand Up @@ -95,10 +95,10 @@ describe('Manage runs', () => {
});

it('navigates to "Compare runs" page with updated run IDs when "Update" toolbar action is clicked', () => {
cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/runs/:runId',
{
method: 'GET',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/runs/test-run-3`,
path: { namespace: projectName, runId: 'test-run-3' },
},
mockRuns[2],
);
Expand All @@ -117,10 +117,10 @@ const initIntercepts = () => {
configIntercept();
dspaIntercepts(projectName);
projectsIntercept([{ k8sName: projectName, displayName: 'Test project' }]);

cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/pipelines',
{
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/pipelines`,
path: { namespace: projectName },
},
buildMockPipelines([buildMockPipelineV2({ pipeline_id: pipelineId })]),
);
Expand All @@ -130,37 +130,32 @@ const initIntercepts = () => {
pipeline_id: pipelineId,
});

cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/pipelines/:pipelineId/versions',
{
method: 'GET',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/pipelines/${pipelineId}/versions`,
path: { namespace: projectName, pipelineId },
},
buildMockPipelineVersionsV2([mockPipelineVersion]),
);

cy.intercept(
{
method: 'GET',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/experiments/${experimentId}`,
},
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/experiments/:experimentId',
{ path: { namespace: projectName, experimentId } },
buildMockExperimentKF({ experiment_id: experimentId }),
);

initialRunIds.forEach((selectedRunId) => {
cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/runs/:runId',
{
method: 'GET',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/runs/${selectedRunId}`,
path: { namespace: projectName, runId: selectedRunId },
},
mockRuns.find((mockRun) => mockRun.run_id === selectedRunId),
mockRuns.find((mockRun) => mockRun.run_id === selectedRunId) as PipelineRunKFv2,
);
});

cy.intercept(
{
method: 'GET',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/runs`,
},
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/runs',
{ path: { namespace: projectName } },
{
runs: mockRuns,
total_size: mockRuns.length,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,18 +69,6 @@ describe('Pipeline create runs', () => {
});

describe('Runs', () => {
beforeEach(() => {
mockExperiments.forEach((experiment) => {
cy.intercept(
{
method: 'POST',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/experiments/${experiment.experiment_id}`,
},
experiment,
);
});
});

it('switches to scheduled runs from triggered', () => {
// Mock experiments, pipelines & versions for form select dropdowns
createRunPage.mockGetExperiments(projectName, mockExperiments);
Expand Down Expand Up @@ -471,11 +459,9 @@ describe('Pipeline create runs', () => {
describe('Schedules', () => {
beforeEach(() => {
mockExperiments.forEach((experiment) => {
cy.intercept(
{
method: 'GET',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/experiments/${experiment.experiment_id}`,
},
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/experiments/:experimentId',
{ path: { namespace: projectName, experimentId: experiment.experiment_id } },
experiment,
);
});
Expand Down Expand Up @@ -725,19 +711,17 @@ const initIntercepts = () => {
configIntercept();
dspaIntercepts(projectName);
projectsIntercept([{ k8sName: projectName, displayName: 'Test project' }]);

cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/recurringruns',
{
method: 'GET',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/recurringruns`,
path: { namespace: projectName },
},
{ recurringRuns: initialMockRecurringRuns, total_size: initialMockRecurringRuns.length },
);

cy.intercept(
cy.interceptOdh(
'GET /api/service/pipelines/:namespace/dspa/apis/v2beta1/runs',
{
method: 'GET',
pathname: `/api/service/pipelines/${projectName}/dspa/apis/v2beta1/runs`,
path: { namespace: projectName },
},
{ runs: initialMockRuns, total_size: initialMockRuns.length },
);
Expand Down
Loading

0 comments on commit 93ae57a

Please sign in to comment.