/*
* Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestMemoryTaskoptions.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.scheduler.taskoptionmanagers;
import com.uwyn.rife.scheduler.*;
import com.uwyn.rife.scheduler.exceptions.SchedulerException;
import com.uwyn.rife.scheduler.exceptions.TaskoptionManagerException;
import com.uwyn.rife.scheduler.taskmanagers.MemoryTasks;
import com.uwyn.rife.scheduler.taskoptionmanagers.exceptions.DuplicateTaskoptionException;
import com.uwyn.rife.scheduler.taskoptionmanagers.exceptions.InexistentTaskIdException;
import com.uwyn.rife.tools.ExceptionUtils;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;
import junit.framework.TestCase;
public class TestMemoryTaskoptions extends TestCase
{
public TestMemoryTaskoptions(String name)
{
super(name);
}
public void testInstantiateTaskoptionManager()
{
TaskoptionManager manager = new MemoryTaskoptions();
assertNotNull(manager);
}
public void testAddTaskoptionWithInexistentTaskId()
{
Taskoption taskoption = new Taskoption();
taskoption.setTaskId(0);
taskoption.setName("name");
taskoption.setValue("value");
Scheduler scheduler = new Scheduler(new MemoryTasks(), new MemoryTaskoptions());
TaskoptionManager manager = scheduler.getTaskoptionManager();
try
{
manager.addTaskoption(taskoption);
fail();
}
catch (InexistentTaskIdException e)
{
assertTrue(true);
}
catch (TaskoptionManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testAddTaskoption()
{
Scheduler scheduler = new Scheduler(new MemoryTasks(), new MemoryTaskoptions());
TaskManager task_manager = scheduler.getTaskManager();
TaskoptionManager taskoption_manager = scheduler.getTaskoptionManager();
int task_id = 0;
Task task = new Task();
String taskoption_name = "name";
String taskoption_value = "value";
try
{
Calendar cal = Calendar.getInstance();
cal.set(2001, 10, 24, 0, 0, 0);
task.setType(TestTasktypes.UPLOAD_GROUPS);
task.setPlanned(cal.getTime());
task.setFrequency("* * * * *");
task_id = task_manager.addTask(task);
Taskoption taskoption = new Taskoption();
taskoption.setTaskId(task_id);
taskoption.setName(taskoption_name);
taskoption.setValue(taskoption_value);
assertTrue(taskoption_manager.addTaskoption(taskoption));
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testAddDuplicateTaskoption()
{
Scheduler scheduler = new Scheduler(new MemoryTasks(), new MemoryTaskoptions());
TaskManager task_manager = scheduler.getTaskManager();
TaskoptionManager taskoption_manager = scheduler.getTaskoptionManager();
int task_id = 0;
Task task = new Task();
String taskoption_name = "name";
String taskoption_value = "value";
try
{
Calendar cal = Calendar.getInstance();
cal.set(2001, 10, 24, 0, 0, 0);
task.setType(TestTasktypes.UPLOAD_GROUPS);
task.setPlanned(cal.getTime());
task.setFrequency("* * * * *");
task_id = task_manager.addTask(task);
Taskoption taskoption1 = new Taskoption();
taskoption1.setTaskId(task_id);
taskoption1.setName(taskoption_name);
taskoption1.setValue(taskoption_value);
assertTrue(taskoption_manager.addTaskoption(taskoption1));
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
try
{
Taskoption taskoption2 = new Taskoption();
taskoption2.setTaskId(task_id);
taskoption2.setName(taskoption_name);
taskoption2.setValue(taskoption_value);
taskoption_manager.addTaskoption(taskoption2);
fail();
}
catch (DuplicateTaskoptionException e)
{
assertTrue(true);
}
catch (TaskoptionManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testGetTaskoption()
{
Scheduler scheduler = new Scheduler(new MemoryTasks(), new MemoryTaskoptions());
TaskManager task_manager = scheduler.getTaskManager();
TaskoptionManager taskoption_manager = scheduler.getTaskoptionManager();
int task_id = 0;
Task task = new Task();
String taskoption_name = "name";
String taskoption_value = "value";
try
{
Calendar cal = Calendar.getInstance();
cal.set(2001, 10, 24, 0, 0, 0);
task.setType(TestTasktypes.UPLOAD_GROUPS);
task.setPlanned(cal.getTime());
task.setFrequency("* * * * *");
task_id = task_manager.addTask(task);
Taskoption taskoption1 = new Taskoption();
taskoption1.setTaskId(task_id);
taskoption1.setName(taskoption_name);
taskoption1.setValue(taskoption_value);
assertTrue(taskoption_manager.addTaskoption(taskoption1));
task = task_manager.getTask(task_id);
assertEquals(task.getTaskoptionValue(taskoption_name), taskoption_value);
Taskoption taskoption = taskoption_manager.getTaskoption(task_id, taskoption_name);
assertNotNull(taskoption);
assertEquals(taskoption.getTaskId(), task_id);
assertEquals(taskoption.getName(), taskoption_name);
assertEquals(taskoption.getValue(), taskoption_value);
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testUpdateTaskoption()
{
Scheduler scheduler = new Scheduler(new MemoryTasks(), new MemoryTaskoptions());
TaskManager task_manager = scheduler.getTaskManager();
TaskoptionManager taskoption_manager = scheduler.getTaskoptionManager();
int task_id = 0;
Task task = new Task();
String taskoption_name = "name";
String taskoption_value = "value";
try
{
Calendar cal = Calendar.getInstance();
cal.set(2001, 10, 24, 0, 0, 0);
task.setType(TestTasktypes.UPLOAD_GROUPS);
task.setPlanned(cal.getTime());
task.setFrequency("* * * * *");
task_id = task_manager.addTask(task);
Taskoption taskoption1 = new Taskoption();
taskoption1.setTaskId(task_id);
taskoption1.setName(taskoption_name);
taskoption1.setValue(taskoption_value);
assertTrue(taskoption_manager.addTaskoption(taskoption1));
taskoption_value = "new_taskoption_value";
Taskoption taskoption2 = new Taskoption();
taskoption2.setTaskId(task_id);
taskoption2.setName(taskoption_name);
taskoption2.setValue(taskoption_value);
assertTrue(true == taskoption_manager.updateTaskoption(taskoption2));
taskoption2 = taskoption_manager.getTaskoption(task_id, taskoption_name);
assertNotNull(taskoption2);
assertEquals(taskoption2.getTaskId(), task_id);
assertEquals(taskoption2.getName(), taskoption_name);
assertEquals(taskoption2.getValue(), taskoption_value);
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testGetTaskoptions()
{
Scheduler scheduler = new Scheduler(new MemoryTasks(), new MemoryTaskoptions());
TaskManager task_manager = scheduler.getTaskManager();
TaskoptionManager taskoption_manager = scheduler.getTaskoptionManager();
int task_id1 = -1;
int task_id2 = -1;
Task task = new Task();
String taskoption_name = "name";
String taskoption_name2 = "name2";
String taskoption_value = "value";
try
{
Calendar cal = Calendar.getInstance();
cal.set(2001, 10, 24, 0, 0, 0);
task.setType(TestTasktypes.UPLOAD_GROUPS);
task.setPlanned(cal.getTime());
task.setFrequency("* * * * *");
task_id1 = task_manager.addTask(task);
Taskoption taskoption1 = new Taskoption();
taskoption1.setTaskId(task_id1);
taskoption1.setName(taskoption_name);
taskoption1.setValue(taskoption_value);
assertTrue(taskoption_manager.addTaskoption(taskoption1));
Taskoption taskoption2 = new Taskoption();
taskoption2.setTaskId(task_id1);
taskoption2.setName(taskoption_name2);
taskoption2.setValue(taskoption_value);
assertTrue(taskoption_manager.addTaskoption(taskoption2));
task_id2 = task_manager.addTask(task);
taskoption1.setTaskId(task_id2);
assertTrue(taskoption_manager.addTaskoption(taskoption1));
Collection<Taskoption> taskoptions = taskoption_manager.getTaskoptions(task_id1);
assertEquals(2, taskoptions.size());
Iterator<Taskoption> taskoptions_it = taskoptions.iterator();
assertTrue(taskoptions_it.hasNext());
Taskoption taskoption = taskoptions_it.next();
assertEquals(taskoption.getTaskId(), task_id1);
assertEquals(taskoption.getName(), taskoption_name);
assertEquals(taskoption.getValue(), "value");
assertTrue(taskoptions_it.hasNext());
taskoption = taskoptions_it.next();
assertEquals(taskoption.getTaskId(), task_id1);
assertEquals(taskoption.getName(), taskoption_name2);
assertEquals(taskoption.getValue(), "value");
assertTrue(!taskoptions_it.hasNext());
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testRemoveTaskoption()
{
Scheduler scheduler = new Scheduler(new MemoryTasks(), new MemoryTaskoptions());
TaskManager task_manager = scheduler.getTaskManager();
TaskoptionManager taskoption_manager = scheduler.getTaskoptionManager();
int task_id = 0;
Task task = new Task();
String taskoption_name = "name";
String taskoption_value = "value";
try
{
Calendar cal = Calendar.getInstance();
cal.set(2001, 10, 24, 0, 0, 0);
task.setType(TestTasktypes.UPLOAD_GROUPS);
task.setPlanned(cal.getTime());
task.setFrequency("* * * * *");
task_id = task_manager.addTask(task);
Taskoption taskoption1 = new Taskoption();
taskoption1.setTaskId(task_id);
taskoption1.setName(taskoption_name);
taskoption1.setValue(taskoption_value);
assertTrue(taskoption_manager.addTaskoption(taskoption1));
assertTrue(taskoption_manager.removeTaskoption(task_id, taskoption_name));
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testGetNonExistingTaskoption()
{
Scheduler scheduler = new Scheduler(new MemoryTasks(), new MemoryTaskoptions());
TaskManager task_manager = scheduler.getTaskManager();
TaskoptionManager taskoption_manager = scheduler.getTaskoptionManager();
int task_id = 0;
Task task = new Task();
try
{
Calendar cal = Calendar.getInstance();
cal.set(2001, 10, 24, 0, 0, 0);
task.setType(TestTasktypes.UPLOAD_GROUPS);
task.setPlanned(cal.getTime());
task.setFrequency("* * * * *");
task_id = task_manager.addTask(task);
assertNull(taskoption_manager.getTaskoption(task_id, "name"));
assertNull(taskoption_manager.getTaskoption(task_id+1, "name"));
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testRemoveNonExistingTaskoption()
{
Scheduler scheduler = new Scheduler(new MemoryTasks(), new MemoryTaskoptions());
TaskManager task_manager = scheduler.getTaskManager();
TaskoptionManager taskoption_manager = scheduler.getTaskoptionManager();
int task_id = 0;
Task task = new Task();
try
{
Calendar cal = Calendar.getInstance();
cal.set(2001, 10, 24, 0, 0, 0);
task.setType(TestTasktypes.UPLOAD_GROUPS);
task.setPlanned(cal.getTime());
task.setFrequency("* * * * *");
task_id = task_manager.addTask(task);
assertTrue(false == taskoption_manager.removeTaskoption(task_id, "name"));
assertTrue(false == taskoption_manager.removeTaskoption(task_id+1, "name"));
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
}