/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestDatabaseTaskoptions.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.scheduler.taskoptionmanagers;
import com.uwyn.rife.database.Datasource;
import com.uwyn.rife.scheduler.Task;
import com.uwyn.rife.scheduler.TaskManager;
import com.uwyn.rife.scheduler.Taskoption;
import com.uwyn.rife.scheduler.TaskoptionManager;
import com.uwyn.rife.scheduler.TestTasktypes;
import com.uwyn.rife.scheduler.exceptions.SchedulerException;
import com.uwyn.rife.scheduler.exceptions.SchedulerManagerException;
import com.uwyn.rife.scheduler.exceptions.TaskoptionManagerException;
import com.uwyn.rife.scheduler.schedulermanagers.DatabaseScheduler;
import com.uwyn.rife.scheduler.schedulermanagers.DatabaseSchedulerFactory;
import com.uwyn.rife.scheduler.taskoptionmanagers.exceptions.InexistentTaskIdException;
import com.uwyn.rife.tools.ExceptionUtils;
import java.util.Calendar;
import java.util.Collection;
import junit.framework.TestCase;
public class TestDatabaseTaskoptions extends TestCase
{
private Datasource mDatasource = null;
public TestDatabaseTaskoptions(Datasource datasource, String datasourceName, String name)
{
super(name);
mDatasource = datasource;
}
public void testInstall()
{
DatabaseScheduler manager = DatabaseSchedulerFactory.getInstance(mDatasource);
try
{
assertTrue(true == manager.install());
}
catch (SchedulerManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testRemove()
{
DatabaseScheduler manager = DatabaseSchedulerFactory.getInstance(mDatasource);
try
{
assertTrue(true == manager.remove());
}
catch (SchedulerManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testInstantiateTaskoptionManager()
{
TaskoptionManager manager = DatabaseTaskoptionsFactory.getInstance(mDatasource);
assertNotNull(manager);
}
public void testAddTaskoptionWithInexistentTaskId()
{
DatabaseScheduler schedulermanager = DatabaseSchedulerFactory.getInstance(mDatasource);
try
{
schedulermanager.install();
}
catch (SchedulerManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
Taskoption taskoption = new Taskoption();
taskoption.setTaskId(0);
taskoption.setName("name");
taskoption.setValue("value");
TaskoptionManager manager = DatabaseTaskoptionsFactory.getInstance(mDatasource);
try
{
manager.addTaskoption(taskoption);
fail();
}
catch (InexistentTaskIdException e)
{
assertTrue(true);
}
catch (TaskoptionManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testAddTaskoption()
{
int task_id = 0;
Task task = new Task();
TaskManager task_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskManager();
TaskoptionManager taskoption_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskoptionManager();
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(task_id >= 0);
String taskoption_name = "name";
String value = "value";
Taskoption taskoption = new Taskoption();
taskoption.setTaskId(task_id);
taskoption.setName(taskoption_name);
taskoption.setValue(value);
assertTrue(taskoption_manager.addTaskoption(taskoption));
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testAddDuplicateTaskoption()
{
int task_id = 0;
Task task = new Task();
TaskManager task_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskManager();
TaskoptionManager taskoption_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskoptionManager();
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(task_id >= 0);
String taskoption_name = "name";
String value = "value";
Taskoption taskoption = new Taskoption();
taskoption.setTaskId(task_id);
taskoption.setName(taskoption_name);
taskoption.setValue(value);
assertTrue(taskoption_manager.addTaskoption(taskoption));
taskoption_manager.addTaskoption(taskoption);
fail();
}
catch (SchedulerException e)
{
assertTrue(true);
}
}
public void testGetTaskoption()
{
int task_id = 0;
Task task = new Task();
TaskManager task_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskManager();
TaskoptionManager taskoption_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskoptionManager();
try
{
Calendar cal = Calendar.getInstance();
cal.set(2001, 10, 24, 0, 0, 0);
task.setType(TestTasktypes.UPLOAD_GROUPS);
task.setFrequency("* * * * *");
task_id = task_manager.addTask(task);
assertTrue(task_id >= 0);
String taskoption_name = "name";
String value = "value";
Taskoption taskoption = new Taskoption();
taskoption.setTaskId(task_id);
taskoption.setName(taskoption_name);
taskoption.setValue(value);
assertTrue(taskoption_manager.addTaskoption(taskoption));
taskoption = taskoption_manager.getTaskoption(task_id, taskoption_name);
assertNotNull(taskoption);
assertEquals(taskoption.getTaskId(), task_id);
assertEquals(taskoption.getName(), taskoption_name);
assertEquals(taskoption.getValue(), value);
task = task_manager.getTask(task_id);
assertEquals(task.getTaskoptionValue(taskoption_name), value);
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testUpdateTaskoption()
{
int task_id = 0;
Task task = new Task();
TaskManager task_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskManager();
TaskoptionManager taskoption_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskoptionManager();
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(task_id >= 0);
String taskoption_name = "name";
String value = "value";
Taskoption taskoption = new Taskoption();
taskoption.setTaskId(task_id);
taskoption.setName(taskoption_name);
taskoption.setValue(value);
assertTrue(taskoption_manager.addTaskoption(taskoption));
value = "new_value";
taskoption = new Taskoption();
taskoption.setTaskId(task_id);
taskoption.setName(taskoption_name);
taskoption.setValue(value);
assertTrue(true == taskoption_manager.updateTaskoption(taskoption));
taskoption = taskoption_manager.getTaskoption(task_id, taskoption_name);
assertNotNull(taskoption);
assertEquals(taskoption.getTaskId(), task_id);
assertEquals(taskoption.getName(), taskoption_name);
assertEquals(taskoption.getValue(), value);
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testGetTaskoptions()
{
int task_id = 0;
Task task = new Task();
TaskManager task_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskManager();
TaskoptionManager taskoption_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskoptionManager();
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(task_id >= 0);
String taskoption_name = "name";
String value = "some_value";
Taskoption taskoption = new Taskoption();
taskoption.setTaskId(task_id);
taskoption.setName(taskoption_name);
taskoption.setValue(value);
assertTrue(taskoption_manager.addTaskoption(taskoption));
Collection<Taskoption> taskoptions = taskoption_manager.getTaskoptions(task_id);
assertEquals(1, taskoptions.size());
taskoption = taskoptions.iterator().next();
assertEquals(taskoption.getTaskId(), task_id);
assertEquals(taskoption.getName(), taskoption_name);
assertEquals(taskoption.getValue(), "some_value");
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testRemoveTaskoption()
{
int task_id = 0;
Task task = new Task();
TaskManager task_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskManager();
TaskoptionManager taskoption_manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskoptionManager();
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(task_id >= 0);
String taskoption_name = "name";
String value = "value";
Taskoption taskoption = new Taskoption();
taskoption.setTaskId(task_id);
taskoption.setName(taskoption_name);
taskoption.setValue(value);
assertTrue(taskoption_manager.addTaskoption(taskoption));
assertTrue(taskoption_manager.removeTaskoption(task_id, taskoption_name));
assertTrue(task_manager.removeTask(task_id));
task_id = 0;
taskoption_name = null;
}
catch (SchedulerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testGetNonExistingTaskoption()
{
TaskoptionManager manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskoptionManager();
int task_nonexisting_id = 340;
try
{
assertNull(manager.getTaskoption(task_nonexisting_id, "unknownname"));
}
catch (TaskoptionManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testRemoveNonExistingTaskoption()
{
TaskoptionManager manager = DatabaseSchedulerFactory.getInstance(mDatasource).getScheduler().getTaskoptionManager();
int task_nonexisting_id = 120;
try
{
assertTrue(false == manager.removeTaskoption(task_nonexisting_id, "unknownname"));
}
catch (TaskoptionManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
DatabaseScheduler schedulermanager = DatabaseSchedulerFactory.getInstance(mDatasource);
try
{
schedulermanager.remove();
}
catch (SchedulerManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
}