package org.ovirt.engine.core.common.businessentities.gluster;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.gluster.StorageSyncSchedule.Day;
import org.ovirt.engine.core.common.businessentities.gluster.StorageSyncSchedule.Frequency;
import org.ovirt.engine.core.common.utils.ValidationUtils;
public class StorageSyncScheduleTest {
@Test
public void testCronExpressionForDaily() {
StorageSyncSchedule schedule = new StorageSyncSchedule();
schedule.setFrequency(Frequency.DAILY);
schedule.setHour(12);
schedule.setMins(50);
String expectedExpression = "0 50 12 * * ? *";
assertEquals(expectedExpression, schedule.toCronExpression());
}
@Test
public void testCronExpressionForWeekly() {
StorageSyncSchedule schedule = new StorageSyncSchedule();
schedule.setFrequency(Frequency.WEEKLY);
schedule.setHour(12);
schedule.setMins(50);
Day[] days = {Day.SAT, Day.FRI};
schedule.setDays(days);
String expectedExpression = "0 50 12 ? * FRI,SAT *";
assertEquals(expectedExpression, schedule.toCronExpression());
List<Class<?>> validationGroup = new ArrayList<>();
List<String> result = ValidationUtils.validateInputs(validationGroup, schedule);
assertTrue(result.isEmpty());
}
@Test
public void testCronExpressionForInvalidMinsDaily() {
StorageSyncSchedule schedule = new StorageSyncSchedule();
schedule.setFrequency(Frequency.DAILY);
schedule.setHour(23);
schedule.setMins(60);
List<Class<?>> validationGroup = new ArrayList<>();
List<String> result = ValidationUtils.validateInputs(validationGroup, schedule);
assertFalse(result.isEmpty());
assertTrue(result.contains("SCHEDULE_MINS_OUT_OF_RANGE"));
assertFalse(result.contains("SCHEDULE_HOUR_OUT_OF_RANGE"));
}
@Test
public void testCronExpressionForInvalidHourDaily() {
StorageSyncSchedule schedule = new StorageSyncSchedule();
schedule.setFrequency(Frequency.DAILY);
schedule.setHour(24);
schedule.setMins(59);
List<Class<?>> validationGroup = new ArrayList<>();
List<String> result = ValidationUtils.validateInputs(validationGroup, schedule);
assertFalse(result.isEmpty());
assertTrue(result.contains("SCHEDULE_HOUR_OUT_OF_RANGE"));
}
@Test
public void testCronExpressionForWeeklyNoDays() {
StorageSyncSchedule schedule = new StorageSyncSchedule();
schedule.setFrequency(Frequency.WEEKLY);
schedule.setHour(12);
schedule.setMins(50);
String expectedExpression = "";
assertEquals(expectedExpression, schedule.toCronExpression());
List<Class<?>> validationGroup = new ArrayList<>();
List<String> result = ValidationUtils.validateInputs(validationGroup, schedule);
assertEquals(true, result.isEmpty());
}
}