/*
* Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestXml2MemoryScheduler.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.scheduler.schedulermanagers;
import com.uwyn.rife.scheduler.*;
import com.uwyn.rife.config.RifeConfig;
import com.uwyn.rife.resources.ResourceFinderClasspath;
import com.uwyn.rife.scheduler.exceptions.SchedulerManagerException;
import com.uwyn.rife.scheduler.exceptions.TaskManagerException;
import com.uwyn.rife.scheduler.exceptions.TaskoptionManagerException;
import com.uwyn.rife.scheduler.schedulermanagers.exceptions.SchedulerNotFoundException;
import com.uwyn.rife.tools.ExceptionUtils;
import com.uwyn.rife.tools.Localization;
import java.util.Calendar;
import java.util.Collection;
import junit.framework.TestCase;
public class TestXml2MemoryScheduler extends TestCase
{
public TestXml2MemoryScheduler(String name)
{
super(name);
}
public void testInstantiation()
{
Xml2MemoryScheduler xml2scheduler = new Xml2MemoryScheduler();
assertNotNull(xml2scheduler);
}
public void testParse()
{
Scheduler scheduler = null;
try
{
scheduler = new MemoryScheduler("xml/test_xml2scheduler.xml", ResourceFinderClasspath.getInstance()).getScheduler();
TaskManager task_manager = scheduler.getTaskManager();
TaskoptionManager taskoption_manager = scheduler.getTaskoptionManager();
Collection<Task> tasks = task_manager.getTasksToProcess();
TestExecutor executor1 = new TestExecutor();
TestExecutor2 executor2 = new TestExecutor2();
assertEquals(tasks.size(), 4);
for (Task task : tasks)
{
Calendar cal = Calendar.getInstance(RifeConfig.Tools.getDefaultTimeZone(), Localization.getLocale());
switch (task.getId())
{
case 0:
assertNotNull(task);
assertEquals(executor1.getHandledTasktype(), task.getType());
assertTrue(task.getPlanned() <= Calendar.getInstance().getTimeInMillis());
assertNull(task.getFrequency());
break;
case 1:
assertNotNull(task);
assertEquals(executor2.getHandledTasktype(), task.getType());
assertTrue(task.getPlanned() <= Calendar.getInstance().getTimeInMillis());
assertNull(task.getFrequency());
break;
case 2:
assertNotNull(task);
assertEquals(executor1.getHandledTasktype(), task.getType());
cal.set(2002, Calendar.SEPTEMBER, 10, 17, 10, 0);
cal.set(Calendar.MILLISECOND, 0);
assertEquals(task.getPlanned(), cal.getTimeInMillis());
assertNull(task.getFrequency());
break;
case 4:
assertNotNull(task);
assertEquals(executor2.getHandledTasktype(), task.getType());
cal.set(2002, Calendar.JULY, 7, 10, 12, 0);
cal.set(Calendar.MILLISECOND, 0);
assertEquals(task.getPlanned(), cal.getTimeInMillis());
assertEquals("*/10 9 15 * *", task.getFrequency());
break;
default:
fail();
break;
}
}
tasks = task_manager.getScheduledTasks();
assertEquals(tasks.size(), 1);
for (Task task : tasks)
{
switch (task.getId())
{
case 3:
assertNotNull(task);
assertEquals(executor1.getHandledTasktype(), task.getType());
assertTrue(task.getPlanned() > Calendar.getInstance().getTimeInMillis());
assertEquals("0 9 * * 1", task.getFrequency());
break;
default:
fail();
break;
}
}
Collection<Taskoption> taskoptions = taskoption_manager.getTaskoptions(2);
assertEquals(taskoptions.size(), 2);
for (Taskoption taskoption : taskoptions)
{
assertNotNull(taskoption);
if (taskoption.getName().equals("option1"))
{
assertEquals("value1", taskoption.getValue());
}
else if (taskoption.getName().equals("option2"))
{
assertEquals("value2", taskoption.getValue());
}
else
{
fail();
}
}
Collection<Executor> executors = scheduler.getExecutors();
assertEquals(executors.size(), 2);
for (Executor executor : executors)
{
assertNotNull(executor);
if (executor.getHandledTasktype().equals("test_executor"))
{
assertTrue(executor instanceof com.uwyn.rife.scheduler.TestExecutor);
}
else if (executor.getHandledTasktype().equals("test_executor2"))
{
assertTrue(executor instanceof com.uwyn.rife.scheduler.TestExecutor2);
}
else
{
fail();
}
}
}
catch (TaskManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
catch (TaskoptionManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
catch (SchedulerManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testSelectedShortClassname()
{
MemoryScheduler scheduler = null;
try
{
scheduler = new MemoryScheduler("TestSelectorScheduler", ResourceFinderClasspath.getInstance());
}
catch (SchedulerManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
assertTrue(null != scheduler.getScheduler());
}
public void testSelectedFullClassname()
{
MemoryScheduler scheduler = null;
try
{
scheduler = new MemoryScheduler("com.uwyn.rife.selector.TestSelectorScheduler", ResourceFinderClasspath.getInstance());
}
catch (SchedulerManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
assertTrue(null != scheduler.getScheduler());
}
public void testUnavailableXmlFile()
{
Scheduler scheduler = null;
try
{
scheduler = new MemoryScheduler("xml/this_file_is_not_there.xml", ResourceFinderClasspath.getInstance()).getScheduler();
fail();
assertNotNull(scheduler);
}
catch (SchedulerManagerException e)
{
assertTrue(e instanceof SchedulerNotFoundException);
}
}
}