fix(UI 自动化): cloud环境有时候刷不出来执行时间较长的报告
--bug=1014412 --user=张大海 【UI测试】github#13927,ui-场景执行关闭了性能测试模式,执行页面任务等很久就不出报告,查看任务中心实际已经执行完了 https://www.tapd.cn/55049933/s/1192594
This commit is contained in:
parent
5ffdac5032
commit
b85c3ebf7e
|
@ -6,6 +6,7 @@ import io.metersphere.websocket.c.to.c.util.MsgDto;
|
||||||
import javax.websocket.RemoteEndpoint;
|
import javax.websocket.RemoteEndpoint;
|
||||||
import javax.websocket.Session;
|
import javax.websocket.Session;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
public class WebSocketUtils {
|
public class WebSocketUtils {
|
||||||
|
@ -27,8 +28,8 @@ public class WebSocketUtils {
|
||||||
|
|
||||||
// 单用户推送
|
// 单用户推送
|
||||||
public static void sendMessageSingle(MsgDto dto) {
|
public static void sendMessageSingle(MsgDto dto) {
|
||||||
sendMessage(ONLINE_USER_SESSIONS.get(dto.getReportId()), dto.getContent());
|
sendMessage(ONLINE_USER_SESSIONS.get(Optional.ofNullable(dto.getReportId()).orElse("")), dto.getContent());
|
||||||
sendMessage(ONLINE_USER_SESSIONS.get(dto.getToReport()), dto.getContent());
|
sendMessage(ONLINE_USER_SESSIONS.get(Optional.ofNullable(dto.getToReport()).orElse("")), dto.getContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 全用户推送
|
// 全用户推送
|
||||||
|
|
|
@ -151,7 +151,11 @@ export default {
|
||||||
infoDb: Boolean,
|
infoDb: Boolean,
|
||||||
debug: Boolean,
|
debug: Boolean,
|
||||||
scenario: {},
|
scenario: {},
|
||||||
scenarioId: String
|
scenarioId: String,
|
||||||
|
isUi: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initTree() {
|
initTree() {
|
||||||
|
@ -300,7 +304,12 @@ export default {
|
||||||
}
|
}
|
||||||
const uri = protocol + window.location.host + "/ws/" + this.reportId;
|
const uri = protocol + window.location.host + "/ws/" + this.reportId;
|
||||||
this.messageWebSocket = new WebSocket(uri);
|
this.messageWebSocket = new WebSocket(uri);
|
||||||
|
//初始化心跳 目前ui的机制容易使得 ws 超时
|
||||||
|
if (this.isUi) {
|
||||||
|
this.initHeartBeat();
|
||||||
|
}
|
||||||
this.messageWebSocket.onmessage = this.onMessage;
|
this.messageWebSocket.onmessage = this.onMessage;
|
||||||
|
this.messageWebSocket.onerror = this.cleanHeartBeat;
|
||||||
},
|
},
|
||||||
getReport() {
|
getReport() {
|
||||||
let url = "/api/scenario/report/get/" + this.reportId;
|
let url = "/api/scenario/report/get/" + this.reportId;
|
||||||
|
@ -458,6 +467,7 @@ export default {
|
||||||
if (e.data && e.data.indexOf("MS_TEST_END") !== -1) {
|
if (e.data && e.data.indexOf("MS_TEST_END") !== -1) {
|
||||||
this.getReport();
|
this.getReport();
|
||||||
this.messageWebSocket.close();
|
this.messageWebSocket.close();
|
||||||
|
this.cleanHeartBeat();
|
||||||
this.$EventBus.$emit('hide', this.scenarioId);
|
this.$EventBus.$emit('hide', this.scenarioId);
|
||||||
this.$emit('refresh', this.debugResult);
|
this.$emit('refresh', this.debugResult);
|
||||||
}
|
}
|
||||||
|
@ -490,6 +500,32 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
websocketKey(){
|
||||||
|
return "ui_ws_" + this.reportId;
|
||||||
|
},
|
||||||
|
initHeartBeat() {
|
||||||
|
if (!window.localStorage.getItem(this.websocketKey())) {
|
||||||
|
window.localStorage.setItem(this.websocketKey(), this.reportId);
|
||||||
|
window.heartBeatHandle = setInterval(this.heartBeat, 30000);
|
||||||
|
} else {
|
||||||
|
this.cleanHeartBeat();
|
||||||
|
this.initHeartBeat();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
cleanHeartBeat() {
|
||||||
|
if (window.heartBeatHandle) {
|
||||||
|
clearInterval(window.heartBeatHandle);
|
||||||
|
if (window.localStorage.getItem(this.websocketKey()))
|
||||||
|
window.localStorage.removeItem(this.websocketKey());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
heartBeat() {
|
||||||
|
let msg = {
|
||||||
|
reportId: this.reportId,
|
||||||
|
content: "i'm alive"
|
||||||
|
};
|
||||||
|
this.messageWebSocket.send(JSON.stringify(msg));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
Loading…
Reference in New Issue