package com.linkedin.thirdeye.datalayer.bao;
import java.util.List;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.google.common.collect.Sets;
import com.linkedin.thirdeye.anomaly.job.JobConstants.JobStatus;
import com.linkedin.thirdeye.datalayer.dto.JobDTO;
public class TestAnomalyJobManager extends AbstractManagerTestBase {
private Long anomalyJobId1;
private Long anomalyJobId2;
private Long anomalyJobId3;
@BeforeClass
void beforeClass() {
super.init();
}
@AfterClass(alwaysRun = true)
void afterClass() {
super.cleanup();
}
@Test
public void testCreate() {
anomalyJobId1 = jobDAO.save(getTestJobSpec());
Assert.assertNotNull(anomalyJobId1);
anomalyJobId2 = jobDAO.save(getTestJobSpec());
Assert.assertNotNull(anomalyJobId2);
anomalyJobId3 = jobDAO.save(getTestJobSpec());
Assert.assertNotNull(anomalyJobId3);
printAll("After insert");
}
@Test(dependsOnMethods = {"testCreate"})
public void testFindAll() {
List<JobDTO> anomalyJobs = jobDAO.findAll();
Assert.assertEquals(anomalyJobs.size(), 3);
}
@Test(dependsOnMethods = { "testFindAll" })
public void testUpdateStatusAndJobEndTime() {
JobStatus status = JobStatus.COMPLETED;
long jobEndTime = System.currentTimeMillis();
jobDAO.updateStatusAndJobEndTimeForJobIds(Sets.newHashSet(anomalyJobId1, anomalyJobId3), status, jobEndTime);
JobDTO anomalyJob = jobDAO.findById(anomalyJobId1);
Assert.assertEquals(anomalyJob.getStatus(), status);
Assert.assertEquals(anomalyJob.getScheduleEndTime(), jobEndTime);
printAll("After testUpdateStatusAndJobEndTime");
}
@Test(dependsOnMethods = {"testUpdateStatusAndJobEndTime"})
public void testFindByStatus() {
JobStatus status = JobStatus.COMPLETED;
List<JobDTO> anomalyJobs = jobDAO.findByStatus(status);
Assert.assertEquals(anomalyJobs.size(), 2);
Assert.assertEquals(anomalyJobs.get(0).getStatus(), status);
}
private void printAll(String msg) {
List<JobDTO> allAnomalyJobs = jobDAO.findAll();
System.out.println("START:ALL JOB after:"+ msg);
for(JobDTO jobDTO:allAnomalyJobs){
System.out.println(jobDTO);
}
System.out.println("END:ALL JOB after:"+ msg);
}
@Test(dependsOnMethods = { "testFindByStatus" })
public void testDeleteRecordsOlderThanDaysWithStatus() {
JobStatus status = JobStatus.COMPLETED;
int numRecordsDeleted = jobDAO.deleteRecordsOlderThanDaysWithStatus(0, status);
Assert.assertEquals(numRecordsDeleted, 2);
List<JobDTO> anomalyJobs = jobDAO.findByStatus(status);
Assert.assertEquals(anomalyJobs.size(), 0);
}
}