package tech.powerjob.server.web.controller; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import tech.powerjob.common.serialize.JsonUtils; import tech.powerjob.common.utils.CollectionUtils; import tech.powerjob.server.common.utils.TestUtils; import tech.powerjob.server.core.alarm.AlarmCenter; import tech.powerjob.server.core.alarm.module.JobInstanceAlarm; import tech.powerjob.server.extension.alarm.AlarmTarget; import javax.annotation.Resource; import java.util.Map; /** * 开发团队专用(或者 PRO 用户用来做自检也可以 lol) * 测试某些强依赖运行时环境的组件,如 Mail 告警等 * * @author tjq * @since 2023/7/31 */ @Slf4j @RestController @RequestMapping("/test") public class TestController { @Value("${server.port}") private int port; @Resource private AlarmCenter alarmCenter; @RequestMapping("/io") public Map io(@RequestBody Map input) { log.info("[TestController] input: {}", JsonUtils.toJSONString(input)); return input; } @GetMapping("/check") public void check() { Map testConfig = TestUtils.fetchTestConfig(); if (CollectionUtils.isEmpty(testConfig)) { log.info("[TestController] testConfig not exist, skip check!"); return; } log.info("[TestController] testConfig: {}", JsonUtils.toJSONString(testConfig)); testAlarmCenter(); } void testAlarmCenter() { JobInstanceAlarm jobInstanceAlarm = new JobInstanceAlarm().setAppId(277).setJobId(1).setInstanceId(2) .setJobName("test-alarm").setJobParams("jobParams").setInstanceParams("instanceParams") .setExecuteType(1).setFinishedTime(System.currentTimeMillis()); AlarmTarget target = new AlarmTarget().setName("ald").setPhone("208140").setExtra("extra") .setPhone(MapUtils.getString(TestUtils.fetchTestConfig(), TestUtils.KEY_PHONE_NUMBER)) .setEmail("tjq@zju.edu.cn") .setWebHook(localUrlPath().concat("/test/io")); log.info("[TestController] start to testAlarmCenter, target: {}", target); alarmCenter.alarmFailed(jobInstanceAlarm, Lists.newArrayList(target)); } private String localUrlPath() { return String.format("http://127.0.0.1:%d", port); } }