Skip to content

Commit

Permalink
chore: more tests
Browse files Browse the repository at this point in the history
Signed-off-by: Nastya Rusina <nastya@union.ai>
  • Loading branch information
anrusina committed Mar 29, 2022
1 parent bc7cdff commit 2541edf
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { getNodeExecutionPhaseConstants } from 'components/Executions/utils';
import { primaryTextColor } from 'components/Theme/constants';
import { NodeExecutionPhase } from 'models/Execution/enums';

const CASHED_GREEN = 'rgba(74,227,174,0.25)'; // statusColors.SUCCESS (Mint20) with 25% opacity
const TRANSPARENT = 'rgba(0, 0, 0, 0)';
export const CASHED_GREEN = 'rgba(74,227,174,0.25)'; // statusColors.SUCCESS (Mint20) with 25% opacity
export const TRANSPARENT = 'rgba(0, 0, 0, 0)';

export enum RelationToCache {
None = 'none',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
import { formatSecondsToHmsFormat } from '../Timeline/BarChart/utils';
import { getChartDurationData } from '../Timeline/BarChart/chartData';
import {
CASHED_GREEN,
formatSecondsToHmsFormat,
generateChartData,
getOffsetColor,
TRANSPARENT,
} from '../Timeline/BarChart/utils';
import { getMockExecutionsForBarChart, mockbarItems } from './__mocks__/NodeExecution.mock';

describe('ExecutionDetails > Timeline > BarChart', () => {
it('formatSecondsToHmsFormat works as expected', () => {
Expand All @@ -19,4 +27,42 @@ describe('ExecutionDetails > Timeline > BarChart', () => {
expect(formatSecondsToHmsFormat(23)).toEqual('23s');
expect(formatSecondsToHmsFormat(0)).toEqual('0s');
});

it('getOffsetColor returns colored background for cached items', () => {
const cachedArray = [false, true, false];
const offsetColors = getOffsetColor(cachedArray);

// If items is not cached - offset is transparent
expect(offsetColors[0]).toEqual(TRANSPARENT);
expect(offsetColors[2]).toEqual(TRANSPARENT);
// If cached - colored backfground
expect(offsetColors[1]).toEqual(CASHED_GREEN);
});

// Mock bars used below
// const mockbarItems = [
// { phase: NodeExecutionPhase.FAILED, startOffsetSec: 0, durationSec: 15, isFromCache: false },
// { phase: NodeExecutionPhase.SUCCEEDED, startOffsetSec: 5, durationSec: 11, isFromCache: true },
// { phase: NodeExecutionPhase.RUNNING, startOffsetSec: 17, durationSec: 23, isFromCache: false },
// { phase: NodeExecutionPhase.QUEUED, startOffsetSec: 39, durationSec: 0, isFromCache: false },
// ];
// it('getChartDurationData is properly generated from Node[] items', () => {
// /** */
// const startTime = 1642627611;
// const mockData = getMockExecutionsForBarChart(startTime);
// const chartItems = getChartDurationData(mockData, new Date(1642627611 * 1000));

// expect(chartItems[0]).toEqual(mockbarItems[0]);
// });

it('generateChartData properly generates map of data for ChartBars', () => {
const chartData = generateChartData(mockbarItems);
expect(chartData.durations).toEqual([15, 11, 23, 0]);
expect(chartData.startOffset).toEqual([0, 5, 17, 39]);
expect(chartData.offsetColor).toEqual([TRANSPARENT, CASHED_GREEN, TRANSPARENT, TRANSPARENT]);
// labels looks as expected
expect(chartData.barLabel[0]).toEqual(formatSecondsToHmsFormat(mockbarItems[0].durationSec));
expect(chartData.barLabel[1]).toEqual('\u229A From cache');
expect(chartData.barLabel[3]).toEqual('');
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import { CatalogCacheStatus, NodeExecutionPhase } from 'models/Execution/enums';

const dNodeBasicExecution = {
id: 'other-root-n0',
scopedId: 'other-root-n0',
execution: {
id: {
nodeId: 'other-root-n0',
executionId: { project: 'flytesnacks', domain: 'development', name: 'rnktdb3skr' },
},
closure: {
phase: 3,
startedAt: { seconds: { low: 1642627611, high: 0, unsigned: false }, nanos: 0 },
duration: { seconds: { low: 55, high: 0, unsigned: false }, nanos: 0 },
createdAt: { seconds: { low: 1642627611, high: 0, unsigned: false }, nanos: 0 },
updatedAt: { seconds: { low: 1642627666, high: 0, unsigned: false }, nanos: 0 },
outputUri:
's3://flyte-demo/metadata/propeller/flytesnacks-development-rnktdb3skr/other-root-n0/data/0/outputs.pb',
},
metadata: { isParentNode: true, specNodeId: 'other-root-n0' },
scopedId: 'other-root-n0',
},
};

const getMockNodeExecution = (
initialStartSec: number,
phase: NodeExecutionPhase,
startOffsetSec: number,
durationSec: number,
cacheStatus?: CatalogCacheStatus,
) => {
const node = { ...dNodeBasicExecution } as any;
node.execution.closure.phase = phase;
if (cacheStatus) {
node.execution.closure = {
...node.execution.closure,
taskNodeMetadata: {
cacheStatus: cacheStatus,
},
};
if (cacheStatus === CatalogCacheStatus.CACHE_HIT) {
node.execution.closure.createdAt.seconds.low = initialStartSec + startOffsetSec;
node.execution.closure.updatedAt.seconds.low = initialStartSec + startOffsetSec + durationSec;
return {
...node,
execution: {
...node.execution,
closure: {
...node.execution.closure,
startedAt: undefined,
duration: undefined,
},
},
};
}
}
node.execution.closure.startedAt.seconds.low = initialStartSec + startOffsetSec;
node.execution.closure.duration.seconds.low = initialStartSec + startOffsetSec + durationSec;
return node;
};

export const mockbarItems = [
{ phase: NodeExecutionPhase.FAILED, startOffsetSec: 0, durationSec: 15, isFromCache: false },
{ phase: NodeExecutionPhase.SUCCEEDED, startOffsetSec: 5, durationSec: 11, isFromCache: true },
{ phase: NodeExecutionPhase.RUNNING, startOffsetSec: 17, durationSec: 23, isFromCache: false },
{ phase: NodeExecutionPhase.QUEUED, startOffsetSec: 39, durationSec: 0, isFromCache: false },
];

export const getMockExecutionsForBarChart = (startTimeSec: number) => {
const start = startTimeSec;
return [
getMockNodeExecution(start, NodeExecutionPhase.FAILED, 0, 15),
getMockNodeExecution(start, NodeExecutionPhase.SUCCEEDED, 5, 11, CatalogCacheStatus.CACHE_HIT),
getMockNodeExecution(start, NodeExecutionPhase.RUNNING, 17, 23, CatalogCacheStatus.CACHE_MISS),
getMockNodeExecution(start, NodeExecutionPhase.QUEUED, 39, 0),
];
};

0 comments on commit 2541edf

Please sign in to comment.