package com.linkedin.thirdeye.datalayer.bao;
import com.linkedin.thirdeye.api.DimensionMap;
import com.linkedin.thirdeye.datalayer.dto.GroupedAnomalyResultsDTO;
import com.linkedin.thirdeye.datalayer.dto.MergedAnomalyResultDTO;
import java.util.ArrayList;
import java.util.List;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestGroupedAnomalyResultsManager extends AbstractManagerTestBase {
@BeforeClass
void beforeClass() {
super.init();
}
@AfterClass(alwaysRun = true)
void afterClass() {
super.cleanup();
}
@Test(dataProvider="groupedAnomalies")
public void testGroupedResultCRUD(List<MergedAnomalyResultDTO> mergedAnomalyResultsSet1,
List<MergedAnomalyResultDTO> mergedAnomalyResultsSet2) {
DimensionMap dimensionMap = new DimensionMap();
dimensionMap.put("D1", "K1");
GroupedAnomalyResultsDTO groupedAnomalyResultsDTO = new GroupedAnomalyResultsDTO();
groupedAnomalyResultsDTO.setAlertConfigId(1);
groupedAnomalyResultsDTO.setDimensions(dimensionMap);
groupedAnomalyResultsDTO.setAnomalyResults(mergedAnomalyResultsSet1);
Long id = groupedAnomalyResultsDAO.save(groupedAnomalyResultsDTO);
Assert.assertNotEquals(id, null);
GroupedAnomalyResultsDTO groupedAnomalyResultsDTOByID = groupedAnomalyResultsDAO.findById(id);
Assert.assertEquals(groupedAnomalyResultsDTOByID.getAnomalyResults(), groupedAnomalyResultsDTO.getAnomalyResults());
Assert.assertEquals(groupedAnomalyResultsDTO.getEndTime(), 15);
Assert.assertEquals(groupedAnomalyResultsDTO.getAlertConfigId(), 1);
Assert.assertEquals(groupedAnomalyResultsDTO.getDimensions(), dimensionMap);
}
@Test(dataProvider="groupedAnomalies", dependsOnMethods = "testGroupedResultCRUD")
public void testFindMostRecent(List<MergedAnomalyResultDTO> mergedAnomalyResultsSet1,
List<MergedAnomalyResultDTO> mergedAnomalyResultsSet2) {
DimensionMap dimensionMap = new DimensionMap();
dimensionMap.put("D1", "K1");
GroupedAnomalyResultsDTO groupedAnomalyResultsDTO2 = new GroupedAnomalyResultsDTO();
groupedAnomalyResultsDTO2.setAlertConfigId(1);
groupedAnomalyResultsDTO2.setDimensions(dimensionMap);
groupedAnomalyResultsDTO2.setAnomalyResults(mergedAnomalyResultsSet2);
Long id2 = groupedAnomalyResultsDAO.save(groupedAnomalyResultsDTO2);
Assert.assertNotEquals(id2, null);
GroupedAnomalyResultsDTO groupedAnomalyResultsDTO3 = new GroupedAnomalyResultsDTO();
groupedAnomalyResultsDTO3.setAlertConfigId(1);
groupedAnomalyResultsDTO3.setDimensions(dimensionMap);
groupedAnomalyResultsDTO3.setAnomalyResults(mergedAnomalyResultsSet1);
Long id3 = groupedAnomalyResultsDAO.save(groupedAnomalyResultsDTO3);
GroupedAnomalyResultsDTO groupedAnomalyResultsDTOByID = groupedAnomalyResultsDAO.findById(id2);
GroupedAnomalyResultsDTO recentGroupedAnomalyResultsDTO =
groupedAnomalyResultsDAO.findMostRecentInTimeWindow(1, dimensionMap.toString(), 0, 50);
Assert.assertNotEquals(recentGroupedAnomalyResultsDTO, null);
Assert.assertEquals(recentGroupedAnomalyResultsDTO.getId(), groupedAnomalyResultsDTOByID.getId());
Assert.assertEquals(recentGroupedAnomalyResultsDTO.getAnomalyResults(), groupedAnomalyResultsDTO2.getAnomalyResults());
}
@DataProvider(name = "groupedAnomalies")
public Object[][] groupedAnomalies() {
MergedAnomalyResultDTO mergedAnomalyResultDTO1 = new MergedAnomalyResultDTO();
mergedAnomalyResultDTO1.setEndTime(10);
MergedAnomalyResultDTO mergedAnomalyResultDTO2 = new MergedAnomalyResultDTO();
mergedAnomalyResultDTO2.setEndTime(15);
Long mergedAnomalyResultDTO1Id = mergedAnomalyResultDAO.save(mergedAnomalyResultDTO1);
mergedAnomalyResultDTO1.setId(mergedAnomalyResultDTO1Id);
Long mergedAnomalyResultDTO2Id = mergedAnomalyResultDAO.save(mergedAnomalyResultDTO2);
mergedAnomalyResultDTO2.setId(mergedAnomalyResultDTO2Id);
List<MergedAnomalyResultDTO> mergedAnomalyResultsSet1 = new ArrayList<>();
mergedAnomalyResultsSet1.add(mergedAnomalyResultDTO2);
mergedAnomalyResultsSet1.add(mergedAnomalyResultDTO1);
MergedAnomalyResultDTO mergedAnomalyResultDTO3 = new MergedAnomalyResultDTO();
mergedAnomalyResultDTO3.setEndTime(20);
MergedAnomalyResultDTO mergedAnomalyResultDTO4 = new MergedAnomalyResultDTO();
mergedAnomalyResultDTO4.setEndTime(25);
Long mergedAnomalyResultDTO3Id = mergedAnomalyResultDAO.save(mergedAnomalyResultDTO3);
mergedAnomalyResultDTO3.setId(mergedAnomalyResultDTO3Id);
Long mergedAnomalyResultDTO4Id = mergedAnomalyResultDAO.save(mergedAnomalyResultDTO4);
mergedAnomalyResultDTO4.setId(mergedAnomalyResultDTO4Id);
List<MergedAnomalyResultDTO> mergedAnomalyResultsSet2 = new ArrayList<>();
mergedAnomalyResultsSet2.add(mergedAnomalyResultDTO4);
mergedAnomalyResultsSet2.add(mergedAnomalyResultDTO3);
return new Object[][] {
{ mergedAnomalyResultsSet1, mergedAnomalyResultsSet2},
};
}
}