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 org.junit.runners.MethodSorters;
import com.vip.saturn.it.AbstractSaturnIT;
import com.vip.saturn.it.JobType;
import com.vip.saturn.it.job.SimpleJavaJob;
import com.vip.saturn.job.internal.config.JobConfiguration;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ReportExecutionInfoIt 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 test_Report() throws Exception {
final JobConfiguration jobConfiguration = new JobConfiguration("reportJob");
jobConfiguration.setCron("* * * * * ? 2099");
jobConfiguration.setJobType(JobType.JAVA_JOB.toString());
jobConfiguration.setJobClass(SimpleJavaJob.class.getCanonicalName());
jobConfiguration.setShardingTotalCount(1);
jobConfiguration.setShardingItemParameters("0=0");
addJob(jobConfiguration);
configJob(jobConfiguration.getJobName(), "config/enabledReport", "true");
Thread.sleep(1000);
enableJob(jobConfiguration.getJobName());
Thread.sleep(1000);
runAtOnce(jobConfiguration.getJobName());
Thread.sleep(1000);
assertThat(getJobNode(jobConfiguration, "execution/0/lastBeginTime")).isNull();
assertThat(getJobNode(jobConfiguration, "execution/0/nextFireTime")).isNull();
assertThat(getJobNode(jobConfiguration, "execution/0/lastCompleteTime")).isNull();
assertThat(getJobNode(jobConfiguration, "execution/0/jobMsg")).isNull();
assertThat(getJobNode(jobConfiguration, "execution/0/jobLog")).isNull();
assertThat(getJobNode(jobConfiguration, "execution/0/completed")).isNotNull();
doReport(jobConfiguration);
waitForFinish(new FinishCheck() {
@Override
public boolean docheck() {
if (getJobNode(jobConfiguration, "execution/0/lastBeginTime") != null &&
getJobNode(jobConfiguration, "execution/0/nextFireTime") != null &&
getJobNode(jobConfiguration, "execution/0/lastCompleteTime") != null &&
getJobNode(jobConfiguration, "execution/0/jobMsg") != null &&
getJobNode(jobConfiguration, "execution/0/jobLog") != null) {
return true;
}
return false;
}
}, 3);
removeJobNode(jobConfiguration, "execution/0/lastBeginTime");
removeJobNode(jobConfiguration, "execution/0/nextFireTime");
removeJobNode(jobConfiguration, "execution/0/lastCompleteTime");
removeJobNode(jobConfiguration, "execution/0/jobMsg");
removeJobNode(jobConfiguration, "execution/0/jobLog");
removeJobNode(jobConfiguration, "execution/0/completed");
disableJob(jobConfiguration.getJobName());
Thread.sleep(1000);
updateJobConfig(jobConfiguration, "enabledReport", false);
Thread.sleep(1000);
enableJob(jobConfiguration.getJobName());
Thread.sleep(1000);
runAtOnce(jobConfiguration.getJobName());
Thread.sleep(1000);
assertThat(getJobNode(jobConfiguration, "execution/0/completed")).isNull();
doReport(jobConfiguration);
waitForFinish(new FinishCheck() {
@Override
public boolean docheck() {
if (getJobNode(jobConfiguration, "execution/0/lastBeginTime") != null &&
getJobNode(jobConfiguration, "execution/0/nextFireTime") != null &&
getJobNode(jobConfiguration, "execution/0/lastCompleteTime") != null &&
getJobNode(jobConfiguration, "execution/0/jobMsg") != null &&
getJobNode(jobConfiguration, "execution/0/jobLog") != null) {
return true;
}
return false;
}
}, 3);
removeJob(jobConfiguration.getJobName());
Thread.sleep(1000);
forceRemoveJob(jobConfiguration.getJobName());
}
}