Commit 517842c20ceb80cfc9e65ee6a5e4942e6e95007a
Committed by
Gitee
!21 job 单元测试增加校验调用
Merge pull request !21 from neilz/feature/ut-job
Showing
2 changed files
with
41 additions
and
20 deletions
src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobBaseVO.java
src/test/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobServiceTest.java
| @@ -14,6 +14,9 @@ import static cn.iocoder.dashboard.util.RandomUtils.randomString; | @@ -14,6 +14,9 @@ import static cn.iocoder.dashboard.util.RandomUtils.randomString; | ||
| 14 | import static org.junit.jupiter.api.Assertions.assertEquals; | 14 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 15 | import static org.junit.jupiter.api.Assertions.assertNotNull; | 15 | import static org.junit.jupiter.api.Assertions.assertNotNull; |
| 16 | import static org.junit.jupiter.api.Assertions.assertNull; | 16 | import static org.junit.jupiter.api.Assertions.assertNull; |
| 17 | +import static org.mockito.ArgumentMatchers.eq; | ||
| 18 | +import static org.mockito.Mockito.times; | ||
| 19 | +import static org.mockito.Mockito.verify; | ||
| 17 | 20 | ||
| 18 | import java.util.ArrayList; | 21 | import java.util.ArrayList; |
| 19 | import java.util.List; | 22 | import java.util.List; |
| @@ -84,6 +87,9 @@ public class InfJobServiceTest extends BaseDbUnitTest { | @@ -84,6 +87,9 @@ public class InfJobServiceTest extends BaseDbUnitTest { | ||
| 84 | InfJobDO job = jobMapper.selectById(jobId); | 87 | InfJobDO job = jobMapper.selectById(jobId); |
| 85 | assertPojoEquals(reqVO, job); | 88 | assertPojoEquals(reqVO, job); |
| 86 | assertEquals(InfJobStatusEnum.NORMAL.getStatus(), job.getStatus()); | 89 | assertEquals(InfJobStatusEnum.NORMAL.getStatus(), job.getStatus()); |
| 90 | + // 校验调用 | ||
| 91 | + verify(schedulerManager, times(1)).addJob(eq(job.getId()), eq(job.getHandlerName()), eq(job.getHandlerParam()), eq(job.getCronExpression()), | ||
| 92 | + eq(reqVO.getRetryCount()), eq(reqVO.getRetryInterval())); | ||
| 87 | } | 93 | } |
| 88 | 94 | ||
| 89 | @Test | 95 | @Test |
| @@ -120,8 +126,6 @@ public class InfJobServiceTest extends BaseDbUnitTest { | @@ -120,8 +126,6 @@ public class InfJobServiceTest extends BaseDbUnitTest { | ||
| 120 | job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); | 126 | job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); |
| 121 | fillJobMonitorTimeoutEmpty(job); | 127 | fillJobMonitorTimeoutEmpty(job); |
| 122 | jobMapper.insert(job); | 128 | jobMapper.insert(job); |
| 123 | - schedulerManager.addJob(job.getId(), job.getHandlerName(), job.getHandlerParam(), job.getCronExpression(), | ||
| 124 | - createReqVO.getRetryCount(), createReqVO.getRetryInterval()); | ||
| 125 | // 准备参数 | 129 | // 准备参数 |
| 126 | InfJobUpdateReqVO updateReqVO = randomPojo(InfJobUpdateReqVO.class, o -> { | 130 | InfJobUpdateReqVO updateReqVO = randomPojo(InfJobUpdateReqVO.class, o -> { |
| 127 | o.setId(job.getId()); | 131 | o.setId(job.getId()); |
| @@ -133,6 +137,9 @@ public class InfJobServiceTest extends BaseDbUnitTest { | @@ -133,6 +137,9 @@ public class InfJobServiceTest extends BaseDbUnitTest { | ||
| 133 | // 校验记录的属性是否正确 | 137 | // 校验记录的属性是否正确 |
| 134 | InfJobDO updateJob = jobMapper.selectById(updateReqVO.getId()); | 138 | InfJobDO updateJob = jobMapper.selectById(updateReqVO.getId()); |
| 135 | assertPojoEquals(updateReqVO, updateJob); | 139 | assertPojoEquals(updateReqVO, updateJob); |
| 140 | + // 校验调用 | ||
| 141 | + verify(schedulerManager, times(1)).updateJob(eq(job.getHandlerName()), eq(updateReqVO.getHandlerParam()), eq(updateReqVO.getCronExpression()), | ||
| 142 | + eq(updateReqVO.getRetryCount()), eq(updateReqVO.getRetryInterval())); | ||
| 136 | } | 143 | } |
| 137 | 144 | ||
| 138 | @Test | 145 | @Test |
| @@ -154,36 +161,51 @@ public class InfJobServiceTest extends BaseDbUnitTest { | @@ -154,36 +161,51 @@ public class InfJobServiceTest extends BaseDbUnitTest { | ||
| 154 | } | 161 | } |
| 155 | 162 | ||
| 156 | @Test | 163 | @Test |
| 157 | - public void testUpdateJobStatus_success() throws SchedulerException { | 164 | + public void testUpdateJobStatus_NormalToStop_success() throws SchedulerException { |
| 158 | // mock 数据 | 165 | // mock 数据 |
| 159 | InfJobCreateReqVO createReqVO = randomPojo(InfJobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *")); | 166 | InfJobCreateReqVO createReqVO = randomPojo(InfJobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *")); |
| 160 | InfJobDO job = InfJobConvert.INSTANCE.convert(createReqVO); | 167 | InfJobDO job = InfJobConvert.INSTANCE.convert(createReqVO); |
| 161 | job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); | 168 | job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); |
| 162 | fillJobMonitorTimeoutEmpty(job); | 169 | fillJobMonitorTimeoutEmpty(job); |
| 163 | jobMapper.insert(job); | 170 | jobMapper.insert(job); |
| 164 | - schedulerManager.addJob(job.getId(), job.getHandlerName(), job.getHandlerParam(), job.getCronExpression(), | ||
| 165 | - createReqVO.getRetryCount(), createReqVO.getRetryInterval()); | ||
| 166 | // 调用 | 171 | // 调用 |
| 167 | jobService.updateJobStatus(job.getId(), InfJobStatusEnum.STOP.getStatus()); | 172 | jobService.updateJobStatus(job.getId(), InfJobStatusEnum.STOP.getStatus()); |
| 168 | // 校验记录的属性是否正确 | 173 | // 校验记录的属性是否正确 |
| 169 | InfJobDO updateJob = jobMapper.selectById(job.getId()); | 174 | InfJobDO updateJob = jobMapper.selectById(job.getId()); |
| 170 | assertEquals(InfJobStatusEnum.STOP.getStatus(), updateJob.getStatus()); | 175 | assertEquals(InfJobStatusEnum.STOP.getStatus(), updateJob.getStatus()); |
| 176 | + // 校验调用 | ||
| 177 | + verify(schedulerManager, times(1)).pauseJob(eq(job.getHandlerName())); | ||
| 178 | + } | ||
| 179 | + | ||
| 180 | + @Test | ||
| 181 | + public void testUpdateJobStatus_StopToNormal_success() throws SchedulerException { | ||
| 182 | + // mock 数据 | ||
| 183 | + InfJobCreateReqVO createReqVO = randomPojo(InfJobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *")); | ||
| 184 | + InfJobDO job = InfJobConvert.INSTANCE.convert(createReqVO); | ||
| 185 | + job.setStatus(InfJobStatusEnum.STOP.getStatus()); | ||
| 186 | + fillJobMonitorTimeoutEmpty(job); | ||
| 187 | + jobMapper.insert(job); | ||
| 188 | + // 调用 | ||
| 189 | + jobService.updateJobStatus(job.getId(), InfJobStatusEnum.NORMAL.getStatus()); | ||
| 190 | + // 校验记录的属性是否正确 | ||
| 191 | + InfJobDO updateJob = jobMapper.selectById(job.getId()); | ||
| 192 | + assertEquals(InfJobStatusEnum.NORMAL.getStatus(), updateJob.getStatus()); | ||
| 193 | + // 校验调用 | ||
| 194 | + verify(schedulerManager, times(1)).resumeJob(eq(job.getHandlerName())); | ||
| 171 | } | 195 | } |
| 172 | 196 | ||
| 173 | - /** | ||
| 174 | - * 页面"执行一次"按钮功能集成测试发现问题: | ||
| 175 | - * inf_job 表初始化任务 sysUserSessionTimeoutJob 点击报错,是因为 Job 并没有添加到 Quartz 中; | ||
| 176 | - * 没有走 createJob 中 scheduler.scheduleJob() 这一步,报错任务找不到。 | ||
| 177 | - * // FINISHED Quartz 相关表新增初始化任务 sysUserSessionTimeoutJob sql | ||
| 178 | - */ | ||
| 179 | @Test | 197 | @Test |
| 180 | public void testTriggerJob_success() throws SchedulerException { | 198 | public void testTriggerJob_success() throws SchedulerException { |
| 181 | - /** | ||
| 182 | - * TODO 不知道是否要将 Quartz 相关 SQL 引入来做单元测试 | ||
| 183 | - * 1、schedulerManager.addJob sysUserSessionTimeoutJob | ||
| 184 | - * 2、schedulerManager.triggerJob | ||
| 185 | - * 3、check inf_job_log | ||
| 186 | - */ | 199 | + // mock 数据 |
| 200 | + InfJobCreateReqVO createReqVO = randomPojo(InfJobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *")); | ||
| 201 | + InfJobDO job = InfJobConvert.INSTANCE.convert(createReqVO); | ||
| 202 | + job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); | ||
| 203 | + fillJobMonitorTimeoutEmpty(job); | ||
| 204 | + jobMapper.insert(job); | ||
| 205 | + // 调用 | ||
| 206 | + jobService.triggerJob(job.getId()); | ||
| 207 | + // 校验调用 | ||
| 208 | + verify(schedulerManager, times(1)).triggerJob(eq(job.getId()), eq(job.getHandlerName()), eq(job.getHandlerParam())); | ||
| 187 | } | 209 | } |
| 188 | 210 | ||
| 189 | @Test | 211 | @Test |
| @@ -194,12 +216,12 @@ public class InfJobServiceTest extends BaseDbUnitTest { | @@ -194,12 +216,12 @@ public class InfJobServiceTest extends BaseDbUnitTest { | ||
| 194 | job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); | 216 | job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); |
| 195 | fillJobMonitorTimeoutEmpty(job); | 217 | fillJobMonitorTimeoutEmpty(job); |
| 196 | jobMapper.insert(job); | 218 | jobMapper.insert(job); |
| 197 | - schedulerManager.addJob(job.getId(), job.getHandlerName(), job.getHandlerParam(), job.getCronExpression(), | ||
| 198 | - createReqVO.getRetryCount(), createReqVO.getRetryInterval()); | ||
| 199 | // 调用 UPDATE inf_job SET deleted=1 WHERE id=? AND deleted=0 | 219 | // 调用 UPDATE inf_job SET deleted=1 WHERE id=? AND deleted=0 |
| 200 | jobService.deleteJob(job.getId()); | 220 | jobService.deleteJob(job.getId()); |
| 201 | // 校验数据不存在了 WHERE id=? AND deleted=0 查询为空正常 | 221 | // 校验数据不存在了 WHERE id=? AND deleted=0 查询为空正常 |
| 202 | assertNull(jobMapper.selectById(job.getId())); | 222 | assertNull(jobMapper.selectById(job.getId())); |
| 223 | + // 校验调用 | ||
| 224 | + verify(schedulerManager, times(1)).deleteJob(eq(job.getHandlerName())); | ||
| 203 | } | 225 | } |
| 204 | 226 | ||
| 205 | @Test | 227 | @Test |