fix(消息设置):性能测试通知
This commit is contained in:
parent
76455e54a5
commit
6b5361f8b2
|
@ -112,6 +112,25 @@ public class MailService {
|
|||
LogUtil.error(e);
|
||||
}
|
||||
}
|
||||
public void sendLoadJenkinsNotification(String context, MessageDetail messageDetail) throws MessagingException {
|
||||
JavaMailSenderImpl javaMailSender = getMailSender();
|
||||
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
|
||||
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
|
||||
helper.setFrom(javaMailSender.getUsername());
|
||||
helper.setSubject("MeterSphere平台" + Translator.get("task_notification"));
|
||||
helper.setText(context);
|
||||
List<UserDetail> list = userService.queryTypeByIds(messageDetail.getUserIds());
|
||||
List<String> EmailList = new ArrayList<>();
|
||||
list.forEach(u -> {
|
||||
EmailList.add(u.getEmail());
|
||||
});
|
||||
helper.setTo(EmailList.toArray(new String[0]));
|
||||
try {
|
||||
javaMailSender.send(mimeMessage);
|
||||
} catch (MailException e) {
|
||||
LogUtil.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void sendHtmlTimeTasks(List<NoticeDetail> noticeList, String status, Map<String, String> context, String template) throws MessagingException {
|
||||
JavaMailSenderImpl javaMailSender = getMailSender();
|
||||
|
@ -168,7 +187,7 @@ public class MailService {
|
|||
}
|
||||
}
|
||||
|
||||
/*新建评审*/
|
||||
//新建评审
|
||||
public void sendReviewerNotice(MessageDetail messageDetail, List<String> userIds, SaveTestCaseReviewRequest reviewRequest, String eventType) {
|
||||
Map<String, String> context = getReviewContext(reviewRequest);
|
||||
try {
|
||||
|
|
|
@ -0,0 +1,148 @@
|
|||
package io.metersphere.performance.notice;
|
||||
|
||||
import io.metersphere.base.domain.LoadTest;
|
||||
import io.metersphere.base.domain.LoadTestWithBLOBs;
|
||||
import io.metersphere.base.mapper.LoadTestMapper;
|
||||
import io.metersphere.commons.constants.NoticeConstants;
|
||||
import io.metersphere.commons.constants.PerformanceTestStatus;
|
||||
import io.metersphere.commons.utils.LogUtil;
|
||||
import io.metersphere.notice.domain.MessageDetail;
|
||||
import io.metersphere.notice.domain.MessageSettingDetail;
|
||||
import io.metersphere.notice.domain.NoticeDetail;
|
||||
import io.metersphere.notice.service.DingTaskService;
|
||||
import io.metersphere.notice.service.MailService;
|
||||
import io.metersphere.notice.service.NoticeService;
|
||||
import io.metersphere.notice.service.WxChatTaskService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PreDestroy;
|
||||
import javax.annotation.Resource;
|
||||
import javax.mail.MessagingException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
@Component
|
||||
public class PerformanceNoticeTask {
|
||||
@Resource
|
||||
private NoticeService noticeService;
|
||||
@Resource
|
||||
private DingTaskService dingTaskService;
|
||||
@Resource
|
||||
private WxChatTaskService wxChatTaskService;
|
||||
@Resource
|
||||
private MailService mailService;
|
||||
@Resource
|
||||
private LoadTestMapper loadTestMapper;
|
||||
private final ExecutorService executorService = Executors.newFixedThreadPool(20);
|
||||
private boolean isRunning = true;
|
||||
|
||||
@PreDestroy
|
||||
public void preDestroy() {
|
||||
isRunning = false;
|
||||
}
|
||||
public void registerNoticeTask(String triggerMode,LoadTestWithBLOBs loadTest) {
|
||||
executorService.submit(() -> {
|
||||
while (isRunning) {
|
||||
LoadTestWithBLOBs result = loadTestMapper.selectByPrimaryKey(loadTest.getId());
|
||||
if (StringUtils.equals(result.getStatus(), PerformanceTestStatus.Completed.name())) {
|
||||
isRunning = false;
|
||||
sendSuccessNotice(triggerMode,loadTest);
|
||||
return;
|
||||
}
|
||||
if (StringUtils.equals(result.getStatus(), PerformanceTestStatus.Error.name())) {
|
||||
isRunning = false;
|
||||
sendFailNotice(triggerMode,loadTest);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
Thread.sleep(1000 * 60);// 每分钟检查 loadtest 的状态
|
||||
} catch (InterruptedException e) {
|
||||
LogUtil.error(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void sendSuccessNotice(String triggerMode,LoadTestWithBLOBs loadTest) {
|
||||
if (StringUtils.equals(NoticeConstants.API, "API")||StringUtils.equals(NoticeConstants.SCHEDULE,"SCHEDULE")) {
|
||||
List<String> userIds = new ArrayList<>();
|
||||
MessageSettingDetail messageSettingDetail = noticeService.searchMessage();
|
||||
List<MessageDetail> taskList = messageSettingDetail.getJenkinsTask();
|
||||
if(StringUtils.equals(triggerMode,NoticeConstants.SCHEDULE)){
|
||||
List<NoticeDetail> noticeList = null;
|
||||
noticeList = noticeService.queryNotice(loadTest.getId());
|
||||
mailService.sendPerformanceNotification(noticeList, PerformanceTestStatus.Completed.name(), loadTest, loadTest.getId()); }else{
|
||||
return;
|
||||
}
|
||||
|
||||
if(StringUtils.equals(triggerMode,NoticeConstants.SCHEDULE)){
|
||||
String contextSuccess="";
|
||||
contextSuccess = "jenkins任务通知:" + loadTest.getName() + "执行成功";
|
||||
String finalContextSuccess = contextSuccess;
|
||||
taskList.forEach(r -> {
|
||||
switch (r.getType()) {
|
||||
case NoticeConstants.NAIL_ROBOT:
|
||||
if (StringUtils.equals(NoticeConstants.EXECUTE_SUCCESSFUL, r.getEvent())
|
||||
&& StringUtils.equals(loadTest.getStatus(), PerformanceTestStatus.Completed.name())) {
|
||||
dingTaskService.sendNailRobot(r, userIds, finalContextSuccess, NoticeConstants.EXECUTE_SUCCESSFUL);
|
||||
}
|
||||
break;
|
||||
case NoticeConstants.WECHAT_ROBOT:
|
||||
if (StringUtils.equals(NoticeConstants.EXECUTE_SUCCESSFUL, r.getEvent())
|
||||
&& StringUtils.equals(loadTest.getStatus(), PerformanceTestStatus.Completed.name())) {
|
||||
wxChatTaskService.sendWechatRobot(r, userIds, finalContextSuccess, NoticeConstants.EXECUTE_SUCCESSFUL);
|
||||
}
|
||||
break;
|
||||
case NoticeConstants.EMAIL:
|
||||
if (StringUtils.equals(NoticeConstants.EXECUTE_SUCCESSFUL, r.getEvent())
|
||||
&& StringUtils.equals(loadTest.getStatus(), PerformanceTestStatus.Completed.name())) {
|
||||
try {
|
||||
mailService.sendLoadJenkinsNotification(finalContextSuccess, r);
|
||||
} catch (MessagingException messagingException) {
|
||||
messagingException.printStackTrace();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void sendFailNotice(String triggerMode,LoadTestWithBLOBs loadTest) {
|
||||
if (StringUtils.equals(NoticeConstants.API, "API")) {
|
||||
List<String> userIds = new ArrayList<>();
|
||||
MessageSettingDetail messageSettingDetail = noticeService.searchMessage();
|
||||
List<MessageDetail> taskList = messageSettingDetail.getJenkinsTask();
|
||||
String contextFailed = "jenkins任务通知:" + loadTest.getName() + "执行失败";
|
||||
taskList.forEach(r -> {
|
||||
switch (r.getType()) {
|
||||
case NoticeConstants.NAIL_ROBOT:
|
||||
if (StringUtils.equals(NoticeConstants.EXECUTE_FAILED, r.getEvent())) {
|
||||
dingTaskService.sendNailRobot(r, userIds, contextFailed, NoticeConstants.EXECUTE_FAILED);
|
||||
}
|
||||
break;
|
||||
case NoticeConstants.WECHAT_ROBOT:
|
||||
if (StringUtils.equals(NoticeConstants.EXECUTE_FAILED, r.getEvent())) {
|
||||
wxChatTaskService.sendWechatRobot(r, userIds, contextFailed, NoticeConstants.EXECUTE_FAILED);
|
||||
}
|
||||
break;
|
||||
case NoticeConstants.EMAIL:
|
||||
if (StringUtils.equals(NoticeConstants.EXECUTE_FAILED, r.getEvent())) {
|
||||
try {
|
||||
mailService.sendLoadJenkinsNotification(contextFailed, r);
|
||||
} catch (MessagingException messagingException) {
|
||||
messagingException.printStackTrace();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -24,6 +24,7 @@ import io.metersphere.notice.service.MailService;
|
|||
import io.metersphere.notice.service.NoticeService;
|
||||
import io.metersphere.performance.engine.Engine;
|
||||
import io.metersphere.performance.engine.EngineFactory;
|
||||
import io.metersphere.performance.notice.PerformanceNoticeTask;
|
||||
import io.metersphere.service.FileService;
|
||||
import io.metersphere.service.QuotaService;
|
||||
import io.metersphere.service.ScheduleService;
|
||||
|
@ -68,25 +69,21 @@ public class PerformanceTestService {
|
|||
@Resource
|
||||
private ExtLoadTestReportDetailMapper extLoadTestReportDetailMapper;
|
||||
@Resource
|
||||
private LoadTestReportLogMapper loadTestReportLogMapper;
|
||||
@Resource
|
||||
private LoadTestReportResultMapper loadTestReportResultMapper;
|
||||
@Resource
|
||||
private TestResourceService testResourceService;
|
||||
@Resource
|
||||
private ReportService reportService;
|
||||
@Resource
|
||||
private KafkaProperties kafkaProperties;
|
||||
@Resource
|
||||
private ScheduleService scheduleService;
|
||||
@Resource
|
||||
private TestCaseMapper testCaseMapper;
|
||||
@Resource
|
||||
private TestCaseService testCaseService;
|
||||
@Resource
|
||||
private NoticeService noticeService;
|
||||
@Resource
|
||||
private MailService mailService;
|
||||
@Resource
|
||||
private PerformanceNoticeTask performanceNoticeTask;
|
||||
|
||||
public List<LoadTestDTO> list(QueryTestPlanRequest request) {
|
||||
request.setOrders(ServiceUtils.getDefaultOrder(request.getOrders()));
|
||||
|
@ -247,6 +244,9 @@ public class PerformanceTestService {
|
|||
LogUtil.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
if(request.getTriggerMode().equals("API")){
|
||||
performanceNoticeTask.registerNoticeTask(request.getTriggerMode(),loadTest);
|
||||
}
|
||||
return engine.getReportId();
|
||||
}
|
||||
|
||||
|
|
|
@ -66,6 +66,7 @@
|
|||
prop="type"
|
||||
:label="$t('schedule.receiving_mode')"
|
||||
>
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:label="$t('test_resource_pool.enable_disable')"
|
||||
|
|
Loading…
Reference in New Issue