package com.vip.saturn.it.impl; import static org.assertj.core.api.Assertions.assertThat; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.FixMethodOrder; import org.junit.Test; import com.vip.saturn.it.AbstractSaturnIT; import com.vip.saturn.it.JobType; import com.vip.saturn.it.job.SimpleJavaJob; import com.vip.saturn.it.job.UpdateCronJob; import com.vip.saturn.job.executor.Main; import com.vip.saturn.job.internal.config.JobConfiguration; import org.junit.runners.MethodSorters; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class UpdateCronJobIT extends AbstractSaturnIT { @BeforeClass public static void setUp() throws Exception { startNamespaceShardingManagerList(1); startExecutorList(1); } @AfterClass public static void tearDown() throws Exception { stopExecutorList(); stopNamespaceShardingManagerList(); } @Test public void updateCron() throws Exception{ final int shardCount = 3; final String jobName = "toBeupdatedITJob"; for(int i=0;i<shardCount;i++){ String key = jobName+"_"+i; SimpleJavaJob.statusMap.put(key, 0); } JobConfiguration jobConfiguration = new JobConfiguration(jobName); jobConfiguration.setCron("59 59 1 * * ?"); jobConfiguration.setJobType(JobType.JAVA_JOB.toString()); jobConfiguration.setJobClass(SimpleJavaJob.class.getCanonicalName()); jobConfiguration.setShardingTotalCount(shardCount); jobConfiguration.setTimeoutSeconds(0); jobConfiguration.setShardingItemParameters("0=0,1=1,2=2"); addJob(jobConfiguration); Thread.sleep(2000); enableJob(jobName); jobConfiguration = new JobConfiguration("updateCronITJob"); jobConfiguration.setCron("0 1 1 1 * ?"); jobConfiguration.setJobType(JobType.JAVA_JOB.toString()); jobConfiguration.setJobClass(UpdateCronJob.class.getCanonicalName()); jobConfiguration.setShardingTotalCount(1); jobConfiguration.setProcessCountIntervalSeconds(1); jobConfiguration.setShardingItemParameters("0=toBeupdatedITJob"); addJob(jobConfiguration); Thread.sleep(2000); for(int i=0;i<shardCount;i++){ String key = jobName+"_"+i; assertThat(SimpleJavaJob.statusMap.get(key)).isEqualTo(0); } enableJob(jobConfiguration.getJobName()); Thread.sleep(2000); runAtOnce(jobConfiguration.getJobName()); Thread.sleep(2000); final JobConfiguration t = jobConfiguration; waitForFinish(new FinishCheck(){ @Override public boolean docheck() { for(Main executor:saturnExecutorList){ String count = getJobNode(t, "servers/" + executor.getExecutorName() + "/processSuccessCount"); System.out.println("count:"+count+";executor:"+executor.getExecutorName()); if(count == null) return false; int times = Integer.parseInt(count); if(times <= 0) return false; } return true; } },10); disableJob(jobConfiguration.getJobName()); Thread.sleep(2*1000); removeJob(jobConfiguration.getJobName()); waitForFinish(new FinishCheck(){ @Override public boolean docheck() { for(int i=0;i<shardCount;i++){ String key = jobName+"_"+i; if(SimpleJavaJob.statusMap.get(key) < 1){ return false; } } return true; } },30); disableJob(jobName); removeJob(jobName); Thread.sleep(2000); SimpleJavaJob.statusMap.clear(); } }