package com.linkedin.thirdeye.datalayer.bao;
import java.util.List;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.linkedin.thirdeye.datalayer.dto.DataCompletenessConfigDTO;
public class TestDataCompletenessConfigManager extends AbstractManagerTestBase {
private Long dataCompletenessConfigId1;
private Long dataCompletenessConfigId2;
private static String collection1 = "my dataset1";
private DateTime now = new DateTime();
private DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyyMMddHHmm");
@BeforeClass
void beforeClass() {
super.init();
}
@AfterClass(alwaysRun = true)
void afterClass() {
super.cleanup();
}
@Test
public void testCreate() {
dataCompletenessConfigId1 = dataCompletenessConfigDAO.
save(getTestDataCompletenessConfig(collection1, now.getMillis(), dateTimeFormatter.print(now.getMillis()), true));
dataCompletenessConfigId2 = dataCompletenessConfigDAO.
save(getTestDataCompletenessConfig(collection1, now.minusHours(1).getMillis(), dateTimeFormatter.print(now.minusHours(1).getMillis()), false));
Assert.assertNotNull(dataCompletenessConfigId1);
Assert.assertNotNull(dataCompletenessConfigId2);
List<DataCompletenessConfigDTO> dataCompletenessConfigDTOs = dataCompletenessConfigDAO.findAll();
Assert.assertEquals(dataCompletenessConfigDTOs.size(), 2);
}
@Test(dependsOnMethods = {"testCreate"})
public void testFind() {
List<DataCompletenessConfigDTO> dataCompletenessConfigDTOs =
dataCompletenessConfigDAO.findAllByDataset(collection1);
Assert.assertEquals(dataCompletenessConfigDTOs.get(0).getDataset(), collection1);
dataCompletenessConfigDTOs = dataCompletenessConfigDAO.findAllInTimeRange(now.minusMinutes(30).getMillis(),
new DateTime().getMillis());
Assert.assertEquals(dataCompletenessConfigDTOs.size(), 1);
dataCompletenessConfigDTOs = dataCompletenessConfigDAO.findAllByTimeOlderThan(new DateTime().getMillis());
Assert.assertEquals(dataCompletenessConfigDTOs.size(), 2);
dataCompletenessConfigDTOs =
dataCompletenessConfigDAO.findAllByTimeOlderThanAndStatus(new DateTime().getMillis(), true);
Assert.assertEquals(dataCompletenessConfigDTOs.size(), 1);
DataCompletenessConfigDTO config =
dataCompletenessConfigDAO.findByDatasetAndDateSDF(collection1, dateTimeFormatter.print(now.getMillis()));
Assert.assertNotNull(config);
Assert.assertEquals(config.getId(), dataCompletenessConfigId1);
config = dataCompletenessConfigDAO.findByDatasetAndDateMS(collection1, now.minusHours(1).getMillis());
Assert.assertNotNull(config);
Assert.assertEquals(config.getId(), dataCompletenessConfigId2);
}
@Test(dependsOnMethods = { "testFind" })
public void testUpdate() {
DataCompletenessConfigDTO dataCompletenessConfigDTO = dataCompletenessConfigDAO.findById(dataCompletenessConfigId2);
Assert.assertNotNull(dataCompletenessConfigDTO);
Assert.assertFalse(dataCompletenessConfigDTO.isTimedOut());
dataCompletenessConfigDTO.setTimedOut(true);
dataCompletenessConfigDAO.update(dataCompletenessConfigDTO);
dataCompletenessConfigDTO = dataCompletenessConfigDAO.findById(dataCompletenessConfigId2);
Assert.assertNotNull(dataCompletenessConfigDTO);
Assert.assertTrue(dataCompletenessConfigDTO.isTimedOut());
}
@Test(dependsOnMethods = { "testUpdate" })
public void testDelete() {
dataCompletenessConfigDAO.deleteById(dataCompletenessConfigId2);
DataCompletenessConfigDTO dataCompletenessConfigDTO = dataCompletenessConfigDAO.findById(dataCompletenessConfigId2);
Assert.assertNull(dataCompletenessConfigDTO);
}
}