package betsy.common.timeouts.calibration; import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; 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.assertNotNull; import static org.junit.Assert.assertTrue; /** * @author Christoph Broeker * @version 1.0 */ public class CalibrationTimeoutsTest { private CalibrationTimeouts calibrationTimeouts; private File properties; private File csv; private File testCsv; @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 { properties = new File("timeout.properties"); csv = new File("calibration_timeouts"); testCsv = new File(csv.getName() + ".csv"); calibrationTimeouts = new CalibrationTimeouts(); } @After public void tearDown() throws Exception { calibrationTimeouts = null; properties.delete(); properties = null; testCsv.delete(); testCsv = null; csv = null; } @Test public void testConstructor() throws Exception { calibrationTimeouts = new CalibrationTimeouts(); calibrationTimeouts.writeAllCalibrationTimeoutsToProperties(); assertTrue("The properties should exist.",properties.exists()); calibrationTimeouts.writeToCSV(); assertTrue("The csv file should exist.", testCsv.exists()); assertNotNull("The value should not be null.", calibrationTimeouts.getAllCalibrationTimeouts()); assertEquals("After creation there shouldn't exists values.", 0, calibrationTimeouts.getAllCalibrationTimeouts().size()); } @Test public void testConstructorOwnTimeoutsPropertiesCSV() throws Exception { ArrayList<CalibrationTimeout> calibrationTimeoutList = new ArrayList<>(); calibrationTimeouts = new CalibrationTimeouts(calibrationTimeoutList, properties.getName(), csv.getName()); calibrationTimeouts.writeAllCalibrationTimeoutsToProperties(); assertTrue("The properties should exist.", properties.exists()); calibrationTimeouts.writeToCSV(); assertTrue("The csv file should exist.", testCsv.exists()); assertNotNull("The timeoutList shouldn't not be null", calibrationTimeouts.getAllCalibrationTimeouts()); assertEquals("The sizes have to be equal.", calibrationTimeoutList.size(), calibrationTimeouts.getAllCalibrationTimeouts().size()); } @Test public void testConstructorOwnPropertiesCSV() throws Exception { calibrationTimeouts = new CalibrationTimeouts(properties.getName(), csv.getName()); calibrationTimeouts.writeAllCalibrationTimeoutsToProperties(); assertTrue("The properties should exist.", properties.exists()); calibrationTimeouts.writeToCSV(); assertTrue("The csv file should exist.", testCsv.exists()); assertNotNull("The timeoutList shouldn't be null.", calibrationTimeouts.getAllCalibrationTimeouts()); assertEquals("After creation there shouldn't exists values.", 0, calibrationTimeouts.getAllCalibrationTimeouts().size()); } @Test public void testConstructorOwnTimeouts() throws Exception { ArrayList<CalibrationTimeout> calibrationTimeoutList = new ArrayList<>(); calibrationTimeouts = new CalibrationTimeouts(calibrationTimeoutList); assertNotNull("The value shouldn't be null.", calibrationTimeouts.getAllCalibrationTimeouts()); assertEquals("The values sizes be equal.", calibrationTimeoutList.size(), calibrationTimeouts.getAllCalibrationTimeouts().size()); } @Test public void testAddCalibrationTimeout() throws Exception { CalibrationTimeout calibrationTimeout = new CalibrationTimeout("ode", "deploy", "maven", 20_000, 2_000); calibrationTimeouts.addCalibrationTimeout(calibrationTimeout); assertEquals("The keys should be equal.", calibrationTimeout, calibrationTimeouts.getCalibrationTimeout(calibrationTimeout.getCalibrationTimeoutKey())); assertEquals("The timeouts in ms should be equal.", calibrationTimeout.getTimeoutInMs(), calibrationTimeouts.getCalibrationTimeout(calibrationTimeout.getCalibrationTimeoutKey()).getTimeoutInMs()); assertEquals("The timeToRepetition in ms should be equal.", calibrationTimeout.getTimeToRepetitionInMs(), calibrationTimeouts.getCalibrationTimeout(calibrationTimeout.getCalibrationTimeoutKey()).getTimeToRepetitionInMs()); } @Test public void testAddCalibrationTimeoutNull() throws Exception { calibrationTimeouts.addCalibrationTimeout(null); } @Test public void testGetCalibrationTimeout() throws Exception { CalibrationTimeout calibrationTimeout = new CalibrationTimeout("ode", "deploy", "maven", 20_000, 2_000); calibrationTimeouts.addCalibrationTimeout(calibrationTimeout); assertEquals("The keys should be equal.", calibrationTimeout, calibrationTimeouts.getCalibrationTimeout(calibrationTimeout.getCalibrationTimeoutKey())); assertEquals("The timeouts in ms should be equal.", calibrationTimeout.getTimeoutInMs(), calibrationTimeouts.getCalibrationTimeout(calibrationTimeout.getCalibrationTimeoutKey()).getTimeoutInMs()); assertEquals("The timeToRepetition in ms should be equal.", calibrationTimeout.getTimeToRepetitionInMs(), calibrationTimeouts.getCalibrationTimeout(calibrationTimeout.getCalibrationTimeoutKey()).getTimeToRepetitionInMs()); } @Test public void testGetAllCalibrationTimeouts() throws Exception { CalibrationTimeout calibrationTimeout = new CalibrationTimeout("ode", "deploy", "maven", 20_000, 2_000); CalibrationTimeout calibrationTimeoutTest = new CalibrationTimeout("tomcat", "startup", "maven", 30_000, 4_000); calibrationTimeouts.addCalibrationTimeout(calibrationTimeout); calibrationTimeouts.addCalibrationTimeout(calibrationTimeoutTest); HashMap<String, CalibrationTimeout> timeouts = calibrationTimeouts.getAllCalibrationTimeouts(); assertEquals("The values should be equal.", calibrationTimeout, timeouts.get(calibrationTimeout.getCalibrationTimeoutKey())); assertEquals("The values should be equal.", calibrationTimeoutTest, timeouts.get(calibrationTimeoutTest.getCalibrationTimeoutKey())); } @Test public void testWriteAllCalibrationTimeoutsToProperties() throws Exception { CalibrationTimeout calibrationTimeout = new CalibrationTimeout("ode", "deploy", "maven", 20_000, 2_000); calibrationTimeouts.addCalibrationTimeout(calibrationTimeout); calibrationTimeouts.writeAllCalibrationTimeoutsToProperties(); assertTrue("The properties should exist.", properties.exists()); } @Test public void testWriteToCSVParameters() throws Exception { CalibrationTimeout calibrationTimeout = new CalibrationTimeout("ode", "deploy", "maven", 20_000, 2_000); calibrationTimeouts.addCalibrationTimeout(calibrationTimeout); Path csv = Paths.get("calibration_timeouts.csv"); calibrationTimeouts.writeToCSV(csv, 0); assertTrue("The csv file should exist.", csv.toFile().exists()); } @Test public void testWriteToCSV() throws Exception { CalibrationTimeout calibrationTimeout = new CalibrationTimeout("ode", "deploy", "maven", 20_000, 2_000); calibrationTimeouts.addCalibrationTimeout(calibrationTimeout); calibrationTimeouts.writeToCSV(); assertTrue("The csv file should exist.", testCsv.exists()); } @Test public void testClean() throws Exception { CalibrationTimeout calibrationTimeout = new CalibrationTimeout("ode", "deploy", "maven", 20_000, 2_000); calibrationTimeouts.addCalibrationTimeout(calibrationTimeout); calibrationTimeouts.clean(); assertEquals("After cleaning there shouldn't be values.", 0, calibrationTimeouts.getAllCalibrationTimeouts().size()); } @Test public void testGetAllNonRedundantTimeouts() throws Exception { CalibrationTimeout calibrationTimeout = new CalibrationTimeout("ode", "deploy", "maven", 20_000, 2_000); calibrationTimeouts.addCalibrationTimeout(calibrationTimeout); //to secure, that the timestamps are different Thread.sleep(1); CalibrationTimeout calibrationTimeoutTest = new CalibrationTimeout("ode", "deploy", "maven", 70_000, 5_000); calibrationTimeouts.addCalibrationTimeout(calibrationTimeoutTest); HashMap<String, CalibrationTimeout> timeouts = calibrationTimeouts.getAllNonRedundantTimeouts(); assertEquals("The keys should be equal.", calibrationTimeoutTest.getKey(), timeouts.get(calibrationTimeout.getKey()).getKey()); } @Test public void testGetAllNonRedundantTimeoutsStatusExceeded() throws Exception { CalibrationTimeout calibrationTimeout = new CalibrationTimeout("ode", "deploy", "maven", 20_000, 2_000); calibrationTimeouts.addCalibrationTimeout(calibrationTimeout); //to secure, that the timestamps are different Thread.sleep(1); CalibrationTimeout secondCalibrationTimeout = new CalibrationTimeout("ode", "deploy", "maven", 30_000, 5_000); secondCalibrationTimeout.setStatus(CalibrationTimeout.Status.EXCEEDED); calibrationTimeouts.addCalibrationTimeout(secondCalibrationTimeout); HashMap<String, CalibrationTimeout> timeouts = calibrationTimeouts.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()); } }