From 763e416be3d2ed59daf026dcb8a8f5ce35e0ddc9 Mon Sep 17 00:00:00 2001 From: tjq Date: Thu, 8 Oct 2020 12:55:20 +0800 Subject: [PATCH] feat: optimize out of data's cron expression and passed the test --- .../powerjob/server/service/JobService.java | 2 +- .../web/controller/InstanceController.java | 5 ++-- .../powerjob/server/test/CronTest.java | 26 +++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 powerjob-server/src/test/java/com/github/kfcfans/powerjob/server/test/CronTest.java diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/JobService.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/JobService.java index 9ae00a1c..ad81184f 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/JobService.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/JobService.java @@ -194,7 +194,7 @@ public class JobService { CronExpression cronExpression = new CronExpression(jobInfoDO.getTimeExpression()); Date nextValidTime = cronExpression.getNextValidTimeAfter(now); if (nextValidTime == null) { - throw new PowerJobException("invalid cron expression: " + jobInfoDO.getTimeExpression()); + throw new PowerJobException("cron expression is out of date: " + jobInfoDO.getTimeExpression()); } jobInfoDO.setNextTriggerTime(nextValidTime.getTime()); }else if (timeExpressionType == TimeExpressionType.API || timeExpressionType == TimeExpressionType.WORKFLOW) { diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/InstanceController.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/InstanceController.java index 6f6f389c..300b55db 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/InstanceController.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/InstanceController.java @@ -1,6 +1,7 @@ package com.github.kfcfans.powerjob.server.web.controller; import com.github.kfcfans.powerjob.common.InstanceStatus; +import com.github.kfcfans.powerjob.common.PowerJobException; import com.github.kfcfans.powerjob.common.response.ResultDTO; import com.github.kfcfans.powerjob.server.akka.OhMyServer; import com.github.kfcfans.powerjob.server.common.utils.OmsFileUtils; @@ -145,10 +146,10 @@ public class InstanceController { private String getTargetServer(Long instanceId) { InstanceInfoDO instanceInfo = instanceInfoRepository.findByInstanceId(instanceId); if (instanceInfo == null) { - throw new RuntimeException("invalid instanceId: " + instanceId); + throw new PowerJobException("invalid instanceId: " + instanceId); } Optional appInfoOpt = appInfoRepository.findById(instanceInfo.getAppId()); - return appInfoOpt.orElseThrow(() -> new RuntimeException("impossible")).getCurrentServer(); + return appInfoOpt.orElseThrow(() -> new PowerJobException("impossible")).getCurrentServer(); } } diff --git a/powerjob-server/src/test/java/com/github/kfcfans/powerjob/server/test/CronTest.java b/powerjob-server/src/test/java/com/github/kfcfans/powerjob/server/test/CronTest.java new file mode 100644 index 00000000..98316099 --- /dev/null +++ b/powerjob-server/src/test/java/com/github/kfcfans/powerjob/server/test/CronTest.java @@ -0,0 +1,26 @@ +package com.github.kfcfans.powerjob.server.test; + + +import com.github.kfcfans.powerjob.server.common.utils.CronExpression; +import org.junit.Test; + +import java.util.Date; + +/** + * CRON 测试 + * + * @author tjq + * @since 2020/10/8 + */ +public class CronTest { + + private static final String FIXED_CRON = "0 0 13 8 10 ? 2020-2020"; + + @Test + public void testFixedTimeCron() throws Exception { + CronExpression cronExpression = new CronExpression(FIXED_CRON); + System.out.println(cronExpression.getCronExpression()); + System.out.println(cronExpression.getNextValidTimeAfter(new Date())); + } + +}