CN-894: 单测用例--用例更新
This commit is contained in:
@@ -1,14 +1,11 @@
|
||||
import linkBlock from '@/views/charts2/charts/linkMonitor/LinkBlock'
|
||||
import { mount } from '@vue/test-utils'
|
||||
import axios from 'axios'
|
||||
import { mockData, linkInfoData } from './MockData/LinkBlock'
|
||||
|
||||
const mockGet1 = mockData.common.data1
|
||||
const mockGet2 = mockData.common.data2
|
||||
|
||||
const mockGet1 = {
|
||||
data: { status: 200, code: 200, queryKey: '549b4c3bcabf0feee193b834671879de', success: true, message: null, statistics: { elapsed: 3, rows_read: 11480, bytes_read: 459200, result_size: 1214, result_rows: 21 }, job: null, formatType: 'json', meta: [{ name: 'link_id', type: 'string', category: 'Dimension' }, { name: 'egress_bytes', type: 'long', category: 'Metric' }, { name: 'ingress_bytes', type: 'long', category: 'Metric' }], data: { resultType: 'table', result: [{ linkId: '257', egressBytes: '0', egressBitsRate: 0, ingressBytes: '493739879', ingressBitsRate: 1097199.76 }, { linkId: '256', egressBytes: '4147998874', egressBitsRate: 9217775.28, ingressBytes: '0', ingressBitsRate: 0 }, { linkId: '1024', egressBytes: '4229808296', egressBitsRate: 9399574, ingressBytes: '0', ingressBitsRate: 0 }, { linkId: '1793', egressBytes: '0', egressBitsRate: 0, ingressBytes: '604840505', ingressBitsRate: 1344090 }, { linkId: '2817', egressBytes: '0', egressBitsRate: 0, ingressBytes: '430811638', ingressBitsRate: 957359.2 }, { linkId: '0', egressBytes: '819878366014', egressBitsRate: 1821951924.48, ingressBytes: '140774357362', ingressBitsRate: 312831905.28 }, { linkId: '1281', egressBytes: '0', egressBitsRate: 0, ingressBytes: '544675122', ingressBitsRate: 1210389.12 }, { linkId: '2049', egressBytes: '0', egressBitsRate: 0, ingressBytes: '711346274', ingressBitsRate: 1580769.52 }, { linkId: '1536', egressBytes: '4195896971', egressBitsRate: 9324215.52, ingressBytes: '0', ingressBitsRate: 0 }, { linkId: '2305', egressBytes: '0', egressBitsRate: 0, ingressBytes: '524865003', ingressBitsRate: 1166366.64 }, { linkId: '1792', egressBytes: '4145790227', egressBitsRate: 9212867.2, ingressBytes: '0', ingressBitsRate: 0 }, { linkId: '1025', egressBytes: '0', egressBitsRate: 0, ingressBytes: '492227445', ingressBitsRate: 1093838.8 }, { linkId: '2816', egressBytes: '4000074817', egressBitsRate: 8889055.12, ingressBytes: '0', ingressBitsRate: 0 }, { linkId: '513', egressBytes: '0', egressBitsRate: 0, ingressBytes: '1444814826', ingressBitsRate: 3210699.6 }, { linkId: '768', egressBytes: '4370006099', egressBitsRate: 9711124.64, ingressBytes: '0', ingressBitsRate: 0 }, { linkId: '512', egressBytes: '3894190397', egressBitsRate: 8653756.4, ingressBytes: '0', ingressBitsRate: 0 }, { linkId: '769', egressBytes: '0', egressBitsRate: 0, ingressBytes: '1877580759', ingressBitsRate: 4172401.68 }, { linkId: '2304', egressBytes: '3767761711', egressBitsRate: 8372803.84, ingressBytes: '0', ingressBitsRate: 0 }, { linkId: '1537', egressBytes: '0', egressBitsRate: 0, ingressBytes: '367986916', ingressBitsRate: 817748.72 }, { linkId: '1280', egressBytes: '4040444894', egressBitsRate: 8978766.4, ingressBytes: '0', ingressBitsRate: 0 }, { linkId: '2048', egressBytes: '4682050724', egressBitsRate: 10404557.2, ingressBytes: '0', ingressBitsRate: 0 }] }, originalUrl: 'http://192.168.44.55:9999?query=SELECT%20arrayJoin%28splitByChar%28%27_%27%2C%20concat%28toString%28common_egress_link_id%29%2C%20%27_%27%2C%20toString%28common_ingress_link_id%29%29%29%29%20AS%20link_id%2CSUM%28IF%28toString%28common_egress_link_id%29%20%3D%20link_id%2C%20traffic_outbound_byte%2C%200%29%29%20AS%20egress_bytes%2CSUM%28IF%28toString%28common_ingress_link_id%29%20%3D%20link_id%2C%20traffic_inbound_byte%2C%200%29%29%20AS%20ingress_bytes%20FROM%20metric_link%20WHERE%20stat_time%20%3E%3D%201675303793%20AND%20stat_time%20%3C%201675307393%20GROUP%20BY%20link_id&format=json&option=real-time', msg: 'OK' }
|
||||
}
|
||||
const mockGet2 = {
|
||||
data: { status: 200, code: 200, queryKey: 'ee2e820b1275748167cdee82b2b4ea40', success: true, message: null, statistics: { elapsed: 3, rows_read: 11480, bytes_read: 618564, result_size: 1053, result_rows: 10 }, job: null, formatType: 'json', meta: [{ name: 'egress_link_direction', type: 'string', category: 'Dimension' }, { name: 'ingress_link_direction', type: 'string', category: 'Dimension' }, { name: 'egress_bytes', type: 'long', category: 'Metric' }, { name: 'ingress_bytes', type: 'long', category: 'Metric' }], data: { resultType: 'table', result: [{ egressLinkDirection: '太原', ingressLinkDirection: '西宁', egressBytes: '2407509269', egressBitsRate: 5350020.56, ingressBytes: '193368911', ingressBitsRate: 429708.72 }, { egressLinkDirection: '西安', ingressLinkDirection: '西安', egressBytes: '3609358392', egressBitsRate: 8020796.4, ingressBytes: '345009143', ingressBitsRate: 766686.96 }, { egressLinkDirection: '西宁', ingressLinkDirection: '西安', egressBytes: '1273508499', egressBitsRate: 2830018.88, ingressBytes: '122646511', ingressBitsRate: 272547.84 }, { egressLinkDirection: '太原', ingressLinkDirection: '太原', egressBytes: '14840136119', egressBitsRate: 32978080.24, ingressBytes: '3386427658', ingressBitsRate: 7525394.8 }, { egressLinkDirection: '西安', ingressLinkDirection: '太原', egressBytes: '7070361369', egressBitsRate: 15711914.16, ingressBytes: '1853445429', ingressBitsRate: 4118767.6 }, { egressLinkDirection: '西宁', ingressLinkDirection: '太原', egressBytes: '2619231460', egressBitsRate: 5820514.32, ingressBytes: '291561196', ingressBitsRate: 647913.76 }, { egressLinkDirection: '', ingressLinkDirection: '', egressBytes: '409939183007', egressBitsRate: 910975962.24, ingressBytes: '70387178681', ingressBitsRate: 156415952.64 }, { egressLinkDirection: '太原', ingressLinkDirection: '西安', egressBytes: '7808050741', egressBitsRate: 17351223.84, ingressBytes: '1001570985', ingressBitsRate: 2225713.28 }, { egressLinkDirection: '西宁', ingressLinkDirection: '西宁', egressBytes: '337068337', egressBitsRate: 749040.72, ingressBytes: '165230290', ingressBitsRate: 367178.4 }, { egressLinkDirection: '西安', ingressLinkDirection: '西宁', egressBytes: '1508798824', egressBitsRate: 3352886.24, ingressBytes: '133628244', ingressBitsRate: 296951.68 }] }, originalUrl: 'http://192.168.44.55:9999?query=SELECT%20egress_link_direction%20AS%20egress_link_direction%2C%20ingress_link_direction%20AS%20ingress_link_direction%2C%20SUM%28traffic_outbound_byte%29%20AS%20egress_bytes%2C%20SUM%28traffic_inbound_byte%29%20AS%20ingress_bytes%20FROM%20metric_link%20WHERE%20stat_time%20%3E%3D%201675303793%20AND%20stat_time%20%3C%201675307393%20GROUP%20BY%20egress_link_direction%2C%20ingress_link_direction&format=json&option=real-time', msg: 'OK' }
|
||||
}
|
||||
const linkInfoData = [{ originalLinkId: '256', linkId: 'Hundredgige1', direction: 'egress', nextHop: '西安', bandwidth: 100000000000 }, { originalLinkId: '257', linkId: 'Hundredgige1', direction: 'ingress', nextHop: '西安', bandwidth: 100000000000 }, { originalLinkId: '512', linkId: 'Hundredgige2', direction: 'egress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '513', linkId: 'Hundredgige2', direction: 'ingress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '768', linkId: 'Hundredgige3', direction: 'egress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '769', linkId: 'Hundredgige3', direction: 'ingress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '1024', linkId: 'Hundredgige4', direction: 'egress', nextHop: '西宁', bandwidth: 100000000000 }, { originalLinkId: '1025', linkId: 'Hundredgige4', direction: 'ingress', nextHop: '西宁', bandwidth: 100000000000 }, { originalLinkId: '1280', linkId: 'Hundredgige5', direction: 'egress', nextHop: '西安', bandwidth: 100000000000 }, { originalLinkId: '1281', linkId: 'Hundredgige5', direction: 'ingress', nextHop: '西安', bandwidth: 100000000000 }, { originalLinkId: '1536', linkId: 'Hundredgige6', direction: 'egress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '1537', linkId: 'Hundredgige6', direction: 'ingress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '1792', linkId: 'Hundredgige7', direction: 'egress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '1793', linkId: 'Hundredgige7', direction: 'ingress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '2048', linkId: 'Hundredgige8', direction: 'egress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '2049', linkId: 'Hundredgige8', direction: 'ingress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '2304', linkId: 'Hundredgige9', direction: 'egress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '2305', linkId: 'Hundredgige9', direction: 'ingress', nextHop: '太原', bandwidth: 100000000000 }, { originalLinkId: '2816', linkId: 'Hundredgige10', direction: 'egress', nextHop: '西安', bandwidth: 100000000000 }, { originalLinkId: '2817', linkId: 'Hundredgige10', direction: 'ingress', nextHop: '西安', bandwidth: 100000000000 }]
|
||||
const linkInfo = JSON.stringify(linkInfoData)
|
||||
const timeFilter = {
|
||||
dateRangeValue: -1,
|
||||
@@ -20,25 +17,26 @@ var wrapper = null
|
||||
|
||||
/**
|
||||
* 进行axios请求,并挂载vue实例
|
||||
* @param list
|
||||
*
|
||||
*/
|
||||
function axiosPostAndMounted (list) {
|
||||
function axiosPostAndMounted (list1, list2) {
|
||||
require('vue-router').useRoute.mockReturnValue({ query: {} })
|
||||
|
||||
const data = list || mockGet1
|
||||
const data1 = list1 || mockGet1
|
||||
const data2 = list2 || mockGet2
|
||||
// 模拟axios返回数据
|
||||
axios.get.mockImplementation(url => {
|
||||
switch (url) {
|
||||
case '/interface/link/overview/analysis':
|
||||
return Promise.resolve(data)
|
||||
return Promise.resolve(data1)
|
||||
case '/interface/link/overview/nextHopAnalysis':
|
||||
return Promise.resolve(mockGet2)
|
||||
return Promise.resolve(data2)
|
||||
}
|
||||
})
|
||||
|
||||
// 模拟localStorage获取数据
|
||||
// eslint-disable-next-line no-proto
|
||||
jest.spyOn(localStorage.__proto__, 'getItem').mockImplementation(key => linkInfo)
|
||||
jest.spyOn(localStorage.__proto__, 'getItem').mockImplementation(() => linkInfo)
|
||||
|
||||
// 加载vue组件,获得实例
|
||||
wrapper = mount(linkBlock, {
|
||||
@@ -86,44 +84,79 @@ describe('views/charts2/charts/linkMonitor/LinkBlock.vue测试', () => {
|
||||
resolve()
|
||||
}, 200))
|
||||
})
|
||||
test('鼠标移动到链路蜂窝图第一个,测试total显示', async () => {
|
||||
// 以"Hundredgige3"为例,对应出方向linkId为768,对应出方向流量为9711124.64
|
||||
// 对应入方向linkId为769,对应入方向流量为4172401.68,修改流量测试total
|
||||
const list = JSON.parse(JSON.stringify(mockGet1))
|
||||
list.data.data.result[14].egressBitsRate = 9000000.00
|
||||
list.data.data.result[16].ingressBitsRate = 4000000.00
|
||||
test('链路蜂窝图和下一跳蜂窝图均无数据', async () => {
|
||||
const list1 = mockData.empty.data1
|
||||
const list2 = mockData.empty.data2
|
||||
|
||||
axiosPostAndMounted(list)
|
||||
axiosPostAndMounted(list1, list2)
|
||||
|
||||
// 延迟等待渲染。使用wrapper.vm.$nextTick有时不管用(例如组件中使用了setTimeout的时候)
|
||||
await new Promise(resolve => setTimeout(() => {
|
||||
const linkBlockTotal0 = wrapper.get('[test-id="linkBlockTotal0"]')
|
||||
const linkBlockEgressUsage0 = wrapper.get('[test-id="linkBlockEgressUsage0"]')
|
||||
const linkBlockIngressUsage0 = wrapper.get('[test-id="linkBlockIngressUsage0"]')
|
||||
const linkBlockNoData = wrapper.get('[test-id="linkBlockNoData"]')
|
||||
const nextHpNoData = wrapper.get('[test-id="nextHpNoData"]')
|
||||
|
||||
expect(linkBlockTotal0.text()).toBe('13 Mbps')
|
||||
expect(linkBlockEgressUsage0.text()).toBe('< 0.01%')
|
||||
expect(linkBlockIngressUsage0.text()).toBe('< 0.01%')
|
||||
expect(linkBlockNoData.text()).toBe('npm.noData')
|
||||
expect(nextHpNoData.text()).toBe('npm.noData')
|
||||
resolve()
|
||||
}, 200))
|
||||
})
|
||||
test('鼠标移动到链路蜂窝图第一个,测试出入流量占比', async () => {
|
||||
// 以"Hundredgige3"为例,修改其出入流量为100000000000,测试上行流量占比为100%,下行占比为0%的情况
|
||||
const list = JSON.parse(JSON.stringify(mockGet1))
|
||||
list.data.data.result[14].egressBitsRate = 100000000000.00
|
||||
list.data.data.result[16].ingressBitsRate = 0
|
||||
test('链路蜂窝图上行流量大数值', async () => {
|
||||
const list1 = mockData.boundary.data1
|
||||
|
||||
axiosPostAndMounted(list)
|
||||
axiosPostAndMounted(list1)
|
||||
|
||||
// 延迟等待渲染。使用wrapper.vm.$nextTick有时不管用(例如组件中使用了setTimeout的时候)
|
||||
await new Promise(resolve => setTimeout(() => {
|
||||
const linkBlockTotal0 = wrapper.get('[test-id="linkBlockTotal0"]')
|
||||
const linkBlockEgressUsage0 = wrapper.get('[test-id="linkBlockEgressUsage0"]')
|
||||
const linkBlockIngressUsage0 = wrapper.get('[test-id="linkBlockIngressUsage0"]')
|
||||
const linkBlockEgressUsage1 = wrapper.get('[test-id="linkBlockEgressUsage1"]')
|
||||
const linkBlockEgressUsage2 = wrapper.get('[test-id="linkBlockEgressUsage2"]')
|
||||
const linkBlockEgressUsage3 = wrapper.get('[test-id="linkBlockEgressUsage3"]')
|
||||
const linkBlockEgressUsage4 = wrapper.get('[test-id="linkBlockEgressUsage4"]')
|
||||
const linkBlockEgressUsage5 = wrapper.get('[test-id="linkBlockEgressUsage5"]')
|
||||
const linkBlockEgressUsage6 = wrapper.get('[test-id="linkBlockEgressUsage6"]')
|
||||
const linkBlockEgressUsage7 = wrapper.get('[test-id="linkBlockEgressUsage7"]')
|
||||
const linkBlockEgressUsage8 = wrapper.get('[test-id="linkBlockEgressUsage8"]')
|
||||
const linkBlockEgressUsage9 = wrapper.get('[test-id="linkBlockEgressUsage9"]')
|
||||
|
||||
// 超大流量时total显示
|
||||
expect(linkBlockTotal0.text()).toBe('100 Gbps')
|
||||
// 超大上行流量,上行占比情况
|
||||
expect(linkBlockEgressUsage0.text()).toBe('100.00%')
|
||||
expect(linkBlockIngressUsage0.text()).toBe('0%')
|
||||
expect(linkBlockEgressUsage1.text()).toBe('100.00%')
|
||||
expect(linkBlockEgressUsage2.text()).toBe('100.00%')
|
||||
expect(linkBlockEgressUsage3.text()).toBe('100.00%')
|
||||
expect(linkBlockEgressUsage4.text()).toBe('100.00%')
|
||||
expect(linkBlockEgressUsage5.text()).toBe('100.00%')
|
||||
expect(linkBlockEgressUsage6.text()).toBe('100.00%')
|
||||
expect(linkBlockEgressUsage7.text()).toBe('100.00%')
|
||||
expect(linkBlockEgressUsage8.text()).toBe('100.00%')
|
||||
expect(linkBlockEgressUsage9.text()).toBe('100.00%')
|
||||
resolve()
|
||||
}, 200))
|
||||
})
|
||||
test('下一跳蜂窝图下行流量大数值', async () => {
|
||||
const list1 = mockData.common.data1
|
||||
const list2 = mockData.boundary.data2
|
||||
|
||||
axiosPostAndMounted(list1, list2)
|
||||
|
||||
await new Promise(resolve => setTimeout(() => {
|
||||
const nextHopTotal0 = wrapper.get('[test-id="nextHopTotal0"]')
|
||||
const nextHopIngressUsage0 = wrapper.get('[test-id="nextHopIngressUsage0"]')
|
||||
const nextHopIngressUsage1 = wrapper.get('[test-id="nextHopIngressUsage1"]')
|
||||
const nextHopIngressUsage2 = wrapper.get('[test-id="nextHopIngressUsage2"]')
|
||||
const nextHopEgressUsage0 = wrapper.get('[test-id="nextHopEgressUsage0"]')
|
||||
const nextHopEgressUsage1 = wrapper.get('[test-id="nextHopEgressUsage1"]')
|
||||
const nextHopEgressUsage2 = wrapper.get('[test-id="nextHopEgressUsage2"]')
|
||||
|
||||
// 超大流量时total显示
|
||||
expect(nextHopTotal0.text()).toBe('30 Tbps')
|
||||
// 超大上行流量,上行、下行占比情况
|
||||
expect(nextHopEgressUsage0.text()).toBe('0%')
|
||||
expect(nextHopEgressUsage1.text()).toBe('0%')
|
||||
expect(nextHopEgressUsage2.text()).toBe('0%')
|
||||
expect(nextHopIngressUsage0.text()).toBe('100.00%')
|
||||
expect(nextHopIngressUsage1.text()).toBe('100.00%')
|
||||
expect(nextHopIngressUsage2.text()).toBe('100.00%')
|
||||
resolve()
|
||||
}, 200))
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user