This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
cyber-narrator-cn-ui/test/views/charts2/charts/linkMonitor/LinkDirectionGrid.test.js
2023-12-26 15:40:37 +08:00

228 lines
7.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import LinkDirectionGrid from '@/views/charts2/charts/linkMonitor/LinkDirectionGrid'
import { mount } from '@vue/test-utils'
import axios from 'axios'
import ElementPlus from 'element-plus'
import { mockData } from './MockData/LinkDirectionGrid'
import { linkInfoData } from './MockData/LinkBlock'
import { createStore } from 'vuex'
const mockGet1 = mockData.common.data1
const mockGet2 = mockData.common.data2
const linkInfo = JSON.stringify(linkInfoData)
const timeFilter = {
dateRangeValue: -1,
startTime: 1673244000000,
endTime: 1673247600000
}
const store = createStore({
state () {
return {
scoreBase: {
isReady: false,
establishLatencyMs: {
p10: null,
p90: null
},
httpResponseLatency: {
p10: null,
p90: null
},
sslConLatency: {
p10: null,
p90: null
},
tcpLostlenPercent: {
p10: null,
p90: null
},
pktRetransPercent: {
p10: null,
p90: null
}
}
}
},
getters: {
scoreBaseReady (state) {
return state.scoreBase.isReady
}
}
})
/**
* 进行axios请求并挂载vue实例
* @param list1
* @param list2
*/
function axiosPostAndMounted (list1, list2) {
require('vue-router').useRoute.mockReturnValue({ query: {} })
const data1 = list1 || mockGet1
const data2 = list2 || mockGet2
// 模拟axios返回数据
axios.get.mockImplementation(url => {
switch (url) {
case '/interface/link/overview/bigramAnalysis':
return Promise.resolve(data1)
case '/interface/link/overview/bigramNextHopAnalysis':
return Promise.resolve(data2)
}
})
// 模拟localStorage获取数据
// eslint-disable-next-line no-proto
jest.spyOn(localStorage.__proto__, 'getItem').mockImplementation(() => linkInfo)
}
describe('views/charts2/charts/linkMonitor/LinkDirectionGrid.vue测试', () => {
test('鼠标移动到链路网格图第5行第3列下一跳网格图第3行第1列测试链路编号和悬浮框dom内容', async () => {
axiosPostAndMounted()
// 加载vue组件获得实例
// 如需加载悬浮框dom则此处不需要挂载Element挂载Element的话需要触发hover事件获取悬浮框dom
const wrapper = mount(LinkDirectionGrid, {
global: {
plugins: [store]
},
propsData: {
timeFilter
}
})
await new Promise(resolve => setTimeout(() => {
/**
* 此为左侧链路网格图dom
*/
const fromLinkId5 = wrapper.find('[test-id="fromLinkId5"]')
const toLinkId3 = wrapper.find('[test-id="toLinkId3"]')
// 出入流量占比domegressUsage10-5-310-5-3表示10行10列的左侧网格图第5行第3列的上行流量
const egressUsage1053 = wrapper.find('[test-id="egressUsage10-5-3"]')
const ingressUsage1053 = wrapper.find('[test-id="ingressUsage10-5-3"]')
// 总流量
const totalBitsRate1053 = wrapper.find('[test-id="totalBitsRate10-5-3"]')
// 评分
const score1053 = wrapper.find('[test-id="score10-5-3"]')
// TCP连接建立延迟
const tcp1053 = wrapper.find('[test-id="tcp10-5-3"]')
// HTTP响应延迟
const http1053 = wrapper.find('[test-id="http10-5-3"]')
// SSL响应延迟
const ssl1053 = wrapper.find('[test-id="ssl10-5-3"]')
// 数据包丢失
const packetLoss1053 = wrapper.find('[test-id="packetLoss10-5-3"]')
// 重传率
const packetRetrans1053 = wrapper.find('[test-id="packetRetrans10-5-3"]')
expect(fromLinkId5.text()).toBe('Hundredgige5')
expect(toLinkId3.text()).toBe('Hundredgige3')
expect(egressUsage1053.text()).toBe('< 0.01%')
expect(ingressUsage1053.text()).toBe('< 0.01%')
expect(totalBitsRate1053.text()).toBe('576.94Kbps')
expect(score1053.text()).toBe('6')
expect(tcp1053.text()).toBe('83ms')
expect(http1053.text()).toBe('107ms')
expect(ssl1053.text()).toBe('<1ms')
expect(packetLoss1053.text()).toBe('0.38%')
expect(packetRetrans1053.text()).toBe('0.91%')
/**
* 此为右侧下一跳网络网格图dom
*/
const toNextHop3 = wrapper.find('[test-id="toNextHop3"]')
const toNextHop1 = wrapper.find('[test-id="toNextHop1"]')
// 出入流量占比domegressUsage3-3-13-3-1表示3行3列的右侧网格图第3行第1列的上行流量
const egressUsage331 = wrapper.find('[test-id="egressUsage3-3-1"]')
const ingressUsage331 = wrapper.find('[test-id="ingressUsage3-3-1"]')
// 总流量
const totalBitsRate331 = wrapper.find('[test-id="totalBitsRate3-3-1"]')
// 评分
const score331 = wrapper.find('[test-id="score3-3-1"]')
// TCP连接建立延迟
const tcp331 = wrapper.find('[test-id="tcp3-3-1"]')
// HTTP响应延迟
const http331 = wrapper.find('[test-id="http3-3-1"]')
// SSL响应延迟
const ssl331 = wrapper.find('[test-id="ssl3-3-1"]')
// 数据包丢失
const packetLoss331 = wrapper.find('[test-id="packetLoss3-3-1"]')
// 重传率
const packetRetrans331 = wrapper.find('[test-id="packetRetrans3-3-1"]')
expect(toNextHop3.text()).toBe('西宁')
expect(toNextHop1.text()).toBe('西安')
expect(egressUsage331.text()).toBe('< 0.01%')
expect(ingressUsage331.text()).toBe('< 0.01%')
expect(totalBitsRate331.text()).toBe('2.73Mbps')
expect(score331.text()).toBe('6')
expect(tcp331.text()).toBe('94ms')
expect(http331.text()).toBe('168ms')
expect(ssl331.text()).toBe('<1ms')
expect(packetLoss331.text()).toBe('0.48%')
expect(packetRetrans331.text()).toBe('1.39%')
resolve()
}, 200))
})
/*test('链路网格图第5行第3列下一跳网格图第3行第1列测试网格颜色随评分和流量占比变化', async () => {
const list1 = JSON.parse(JSON.stringify(mockGet1))
const list2 = JSON.parse(JSON.stringify(mockGet2))
// 修改链路评分为-,使得网格颜色为前绿后红
list1.data.data.result[43].establishLatencyMs = null
list1.data.data.result[43].httpResponseLatency = null
list1.data.data.result[43].sslConLatency = null
list1.data.data.result[43].tcpLostlenPercent = null
list1.data.data.result[43].pktRetransPercent = null
// 修改下一跳的流量占比为100%,使得网格颜色为前红后绿
list2.data.data.result[6].outBitsRate = 0
list2.data.data.result[6].inBitsRate = 100000000000
axiosPostAndMounted(list1, list2)
const wrapper = mount(LinkDirectionGrid, {
global: {
plugins: [ElementPlus, store]
},
propsData: {
timeFilter
}
})
await new Promise(resolve => setTimeout(() => {
/!**
* 此为左侧链路网格图dom
*!/
const scorePoint1053 = wrapper.find('[test-id="scorePoint10-5-3"]')
const usagePoint1053 = wrapper.find('[test-id="usagePoint10-5-3"]')
expect(scorePoint1053.classes()).toContain('data-item__point-red')
expect(usagePoint1053.classes()).toContain('data-item__point')
/!**
* 此为右侧下一跳网络网格图dom
*!/
const usagePoint331 = wrapper.find('[test-id="usagePoint3-3-1"]')
const scorePoint331 = wrapper.find('[test-id="scorePoint3-3-1"]')
expect(usagePoint331.classes()).toContain('data-item__point-red')
expect(scorePoint331.classes()).toContain('data-item__point')
resolve()
}, 200))
})*/
test('链路网格图、下一跳网格图无数据', async () => {
const list1 = mockData.empty.data1
const list2 = mockData.empty.data2
axiosPostAndMounted(list1, list2)
const wrapper = mount(LinkDirectionGrid, {
global: {
plugins: [ElementPlus, store]
},
propsData: {
timeFilter
}
})
await new Promise(resolve => setTimeout(() => {
const noData0 = wrapper.find('[test-id="noData0"]')
expect(noData0.text()).toBe('npm.noData')
resolve()
}, 200))
})
})