package betsy.common.timeouts.calibration; import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; import betsy.common.tasks.FileTasks; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; /** * @author Christoph Broeker * @version 1.0 */ public class CalibrationTimeoutRepositoryTest { private CalibrationTimeout calibrationTimeout; @BeforeClass public static void setUpClass() { String transitionFolder = "transition_folder"; FileTasks.mkdirs(Paths.get(transitionFolder)); File properties = new File("timeout.properties"); if (properties.exists()) { FileTasks.copyFileIntoFolder(properties.toPath(), Paths.get(transitionFolder)); FileTasks.deleteFile(properties.toPath()); } File csv = new File("calibration_timeouts.csv"); if (csv.exists()) { FileTasks.copyFileIntoFolder(csv.toPath(), Paths.get(transitionFolder)); FileTasks.deleteFile(csv.toPath()); } } @AfterClass public static void tearDownClass() { File properties = new File("timeout.properties"); File csv = new File("calibration_timeouts.csv"); FileTasks.deleteFile(properties.toPath()); FileTasks.deleteFile(csv.toPath()); String transitionFolder = "transition_folder"; Path currentRelativePath = Paths.get(""); FileTasks.copyFilesInFolderIntoOtherFolder(Paths.get(transitionFolder), currentRelativePath); FileTasks.deleteDirectory(Paths.get(transitionFolder)); } @Before public void setUp() throws Exception { calibrationTimeout = new CalibrationTimeout("ode", "deploy", "install", 50_000, 5_000); } @After public void tearDown() throws Exception { calibrationTimeout = null; CalibrationTimeoutRepository.clean(); } @Test public void testGetAllCalibrationTimeouts() throws Exception { CalibrationTimeout secondCalibrationTimeout = new CalibrationTimeout("tomcat", "startup", "install", 50_000, 5_000); CalibrationTimeoutRepository.addCalibrationTimeout(calibrationTimeout); CalibrationTimeoutRepository.addCalibrationTimeout(secondCalibrationTimeout); HashMap<String, CalibrationTimeout> calibrationTimeoutList = CalibrationTimeoutRepository.getAllCalibrationTimeouts(); assertEquals("The keys should be equal.", calibrationTimeout.getKey(), calibrationTimeoutList.get(calibrationTimeout.getCalibrationTimeoutKey()).getKey()); assertEquals("The timeouts in ms should be equal.",calibrationTimeout.getTimeoutInMs(), calibrationTimeoutList.get(calibrationTimeout.getCalibrationTimeoutKey()).getTimeoutInMs()); assertEquals("The timeToRepetitions should be equal.", calibrationTimeout.getTimeToRepetitionInMs(), calibrationTimeoutList.get(calibrationTimeout.getCalibrationTimeoutKey()).getTimeToRepetitionInMs()); assertEquals("The keys should be equal.", secondCalibrationTimeout.getKey(), calibrationTimeoutList.get(secondCalibrationTimeout.getCalibrationTimeoutKey()).getKey()); assertEquals("The timeouts in ms should be equal.", secondCalibrationTimeout.getTimeoutInMs(), calibrationTimeoutList.get(secondCalibrationTimeout.getCalibrationTimeoutKey()).getTimeoutInMs()); assertEquals("The timeToRepetitions in ms should be equal.", secondCalibrationTimeout.getTimeToRepetitionInMs(), calibrationTimeoutList.get(secondCalibrationTimeout.getCalibrationTimeoutKey()).getTimeToRepetitionInMs()); } @Test public void testAddTimeout() throws Exception { CalibrationTimeoutRepository.addCalibrationTimeout(calibrationTimeout); HashMap<String, CalibrationTimeout> calibrationTimeoutList = CalibrationTimeoutRepository.getAllCalibrationTimeouts(); assertEquals("The keys should be equal.", calibrationTimeout.getKey(), calibrationTimeoutList.get(calibrationTimeout.getCalibrationTimeoutKey()).getKey()); assertEquals("The timeouts in ms should be equal.", calibrationTimeout.getTimeoutInMs(), calibrationTimeoutList.get(calibrationTimeout.getCalibrationTimeoutKey()).getTimeoutInMs()); assertEquals("The timeToRepetitions in ms should be equal.", calibrationTimeout.getTimeToRepetitionInMs(), calibrationTimeoutList.get(calibrationTimeout.getCalibrationTimeoutKey()).getTimeToRepetitionInMs()); } @Test public void testWriteAllCalibrationTimeoutsToProperties() throws Exception { CalibrationTimeoutRepository.addCalibrationTimeout(calibrationTimeout); CalibrationTimeoutRepository.writeAllCalibrationTimeoutsToProperties(); File properties = new File("timeout.properties"); assertTrue("The properties file should exists.", properties.exists()); } @Test public void testWriteToCSVParameters() throws Exception { CalibrationTimeoutRepository.addCalibrationTimeout(calibrationTimeout); CalibrationTimeoutRepository.writeAllCalibrationTimeoutsToProperties(); Path csv = Paths.get("calibration_timeouts.csv"); CalibrationTimeoutRepository.writeToCSV(csv, 1); assertTrue("The csv file should exists.", csv.toFile().exists()); } @Test public void testWriteToCSV() throws Exception { CalibrationTimeoutRepository.addCalibrationTimeout(calibrationTimeout); CalibrationTimeoutRepository.writeAllCalibrationTimeoutsToProperties(); CalibrationTimeoutRepository.writeToCSV(); File file = new File("calibration_timeouts.csv"); assertTrue("The csv file should exists.", file.exists()); } @Test public void testClean() throws Exception { CalibrationTimeoutRepository.addCalibrationTimeout(calibrationTimeout); CalibrationTimeoutRepository.clean(); assertEquals("After cleaning the size should be null.", 0, CalibrationTimeoutRepository.getAllCalibrationTimeouts().size()); } @Test public void testGetAllNonRedundantTimeouts() throws Exception { CalibrationTimeoutRepository.addCalibrationTimeout(calibrationTimeout); //to secure, that the timestamps are different Thread.sleep(1); CalibrationTimeout calibrationTimeoutTest = new CalibrationTimeout("ode", "deploy", "install", 70_000, 5_000); CalibrationTimeoutRepository.addCalibrationTimeout(calibrationTimeoutTest); HashMap<String, CalibrationTimeout> timeouts = CalibrationTimeoutRepository.getAllNonRedundantTimeouts(); assertEquals("The keys should be equal.", calibrationTimeoutTest.getKey(), timeouts.get(calibrationTimeout.getKey()).getKey()); } @Test public void testGetAllNonRedundantTimeoutsStatusExceeded() throws Exception { CalibrationTimeoutRepository.addCalibrationTimeout(calibrationTimeout); //to secure, that the timestamps are different Thread.sleep(1); CalibrationTimeout secondCalibrationTimeout = new CalibrationTimeout("ode", "deploy", "install", 30_000, 5_000); secondCalibrationTimeout.setStatus(CalibrationTimeout.Status.EXCEEDED); CalibrationTimeoutRepository.addCalibrationTimeout(secondCalibrationTimeout); HashMap<String, CalibrationTimeout> timeouts = CalibrationTimeoutRepository.getAllNonRedundantTimeouts(); assertEquals("The timeouts in ms should be equal.", secondCalibrationTimeout.getTimeoutInMs(), timeouts.get(calibrationTimeout.getKey()).getTimeoutInMs()); assertEquals("The statuses should be equal.", secondCalibrationTimeout.getStatus(), timeouts.get(calibrationTimeout.getKey()).getStatus()); } }