    001    package org.apache.turbine.services.schedule;
    002
    003    /*
    004     * Licensed to the Apache Software Foundation (ASF) under one
    005     * or more contributor license agreements.  See the NOTICE file
    006     * distributed with this work for additional information
    007     * regarding copyright ownership.  The ASF licenses this file
    008     * to you under the Apache License, Version 2.0 (the
    009     * "License"); you may not use this file except in compliance
    010     * with the License.  You may obtain a copy of the License at
    011     *
    012     *   http://www.apache.org/licenses/LICENSE-2.0
    013     *
    014     * Unless required by applicable law or agreed to in writing,
    015     * software distributed under the License is distributed on an
    016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    017     * KIND, either express or implied.  See the License for the
    018     * specific language governing permissions and limitations
    019     * under the License.
    020     */
    021
    022    import junit.framework.Test;
    023    import junit.framework.TestCase;
    024    import junit.framework.TestSuite;
    025
    026    import org.apache.commons.configuration.BaseConfiguration;
    027    import org.apache.commons.configuration.Configuration;
    028
    029    import org.apache.turbine.modules.scheduledjob.SimpleJob;
    030    import org.apache.turbine.services.ServiceManager;
    031    import org.apache.turbine.services.TurbineServices;
    032    //import org.apache.turbine.test.BaseTestCase;
    033
    034    /**
    035     * Unit testing for the non-persistent implementation of the scheduler service.
    036     *
    037     * @author <a href="mailto:quintonm@bellsouth.net">Quinton McCombs</a>
    038     * @version $Id: TurbineNonPersistentSchedulerServiceTest.java 615328 2008-01-25 20:25:05Z tv $
    039     */
    040    public class TurbineNonPersistentSchedulerServiceTest extends TestCase
    041    {
    042        private static final String PREFIX = "services." + ScheduleService.SERVICE_NAME + '.';
    043
    044        public TurbineNonPersistentSchedulerServiceTest(String name)
    045                throws Exception
    046        {
    047            super(name);
    048
    049            ServiceManager serviceManager = TurbineServices.getInstance();
    050            serviceManager.setApplicationRoot(".");
    051
    052            Configuration cfg = new BaseConfiguration();
    053            cfg.setProperty(PREFIX + "classname", TurbineNonPersistentSchedulerService.class.getName());
    054
    055            cfg.setProperty(PREFIX + "scheduler.jobs", "SimpleJob");
    056            cfg.setProperty(PREFIX + "scheduler.job.SimpleJob.ID", "1");
    057            cfg.setProperty(PREFIX + "scheduler.job.SimpleJob.SECOND", "10");
    058            cfg.setProperty(PREFIX + "scheduler.job.SimpleJob.MINUTE", "-1");
    059            cfg.setProperty(PREFIX + "scheduler.job.SimpleJob.HOUR", "-1");
    060            cfg.setProperty(PREFIX + "scheduler.job.SimpleJob.WEEK_DAY", "-1");
    061            cfg.setProperty(PREFIX + "scheduler.job.SimpleJob.DAY_OF_MONTH", "-1");
    062            cfg.setProperty(PREFIX + "enabled", "true");
    063
    064            serviceManager.setConfiguration(cfg);
    065
    066            try
    067            {
    068                serviceManager.init();
    069            }
    070            catch (Exception e)
    071            {
    072                e.printStackTrace();
    073                fail();
    074            }
    075        }
    076
    077        public static Test suite()
    078        {
    079            return new TestSuite(TurbineNonPersistentSchedulerServiceTest.class);
    080        }
    081
    082        /**
    083         * Tests the ability to enable and disable the service.
    084         */
    085        public void testEnableDisable()
    086        {
    087            try
    088            {
    089                TurbineScheduler.startScheduler();
    090                assertEquals(true, TurbineScheduler.isEnabled());
    091
    092                TurbineScheduler.stopScheduler();
    093                assertEquals(false, TurbineScheduler.isEnabled());
    094            }
    095            catch (Exception e)
    096            {
    097                e.printStackTrace();
    098                fail();
    099            }
    100        }
    101
    102        /**
    103         * Tests the ability to add and remove a job.  A list of jobs will be obtained from
    104         * the service to determine if the operation were successful.
    105         */
    106        public void testAddRemoveJob()
    107        {
    108            try
    109            {
    110                // get the current job count for later comparison
    111                int jobCount = TurbineScheduler.listJobs().size();
    112
    113                // Add a new job entry
    114                            JobEntry je = new JobEntry();
    115                je.setJobId(jobCount + 1);
    116                je.setSecond(0);
    117                je.setMinute(1);
    118                je.setHour(-1);
    119                je.setDayOfMonth(-1);
    120                je.setWeekDay(-1);
    121                je.setTask("SimpleJob");
    122
    123                TurbineScheduler.addJob(je);
    124                assertEquals(jobCount + 1, TurbineScheduler.listJobs().size());
    125
    126                TurbineScheduler.removeJob(je);
    127                assertEquals(jobCount, TurbineScheduler.listJobs().size());
    128
    129            }
    130            catch (Exception e)
    131            {
    132                e.printStackTrace();
    133                fail();
    134            }
    135        }
    136
    137        /**
    138         * Tests the ability to retrieve the job added during initialization.
    139         */
    140        public void testGetJob()
    141        {
    142            try
    143            {
    144                            JobEntry je = (JobEntry)TurbineScheduler.getJob(1);
    145                assertEquals(je.getJobId(), 1);
    146                assertEquals(je.getSecond(), 10);
    147                assertEquals(je.getMinute(), -1);
    148                assertEquals(je.getHour(), -1);
    149                assertEquals(je.getDayOfMonth(), -1);
    150                assertEquals(je.getWeekDay(), -1);
    151                assertEquals(je.getTask(), "SimpleJob");
    152            }
    153            catch (Exception e)
    154            {
    155                e.printStackTrace();
    156                fail();
    157            }
    158        }
    159
    160        /** Test to make sure a job actually runs.  Currently not work.
    161         * @TODO Must get testRunningJob to work.
    162         *
    163         */
    164        public void OFFtestRunningJob()
    165        {
    166            try
    167            {
    168               int beforeCount = SimpleJob.getCounter();
    169               Thread.sleep(120000);
    170               int afterCount = SimpleJob.getCounter();
    171               assertTrue(beforeCount < afterCount);
    172
    173            }
    174            catch (Exception e)
    175            {
    176                e.printStackTrace();
    177                fail();
    178            }
    179        }
    180
    181    }