/** * Copyright (c) 2008--2013 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package com.redhat.satellite.search.scheduler.tasks.tests; import com.redhat.satellite.search.config.Configuration; import com.redhat.satellite.search.db.DatabaseManager; import com.redhat.satellite.search.db.WriteQuery; import com.redhat.satellite.search.index.IndexManager; import com.redhat.satellite.search.index.IndexingException; import com.redhat.satellite.search.scheduler.tasks.IndexSystemsTask; import com.redhat.satellite.search.tests.BaseTestCase; import com.redhat.satellite.search.tests.TestUtil; import org.apache.lucene.document.Document; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SimpleTrigger; import org.quartz.Trigger; import org.quartz.TriggerListener; import org.quartz.impl.StdSchedulerFactory; import org.apache.log4j.Logger; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * IndexSystemsTaskTest * @version $Rev$ */ public class IndexSystemsTaskTest extends BaseTestCase { private static Logger log = Logger.getLogger(IndexSystemsTaskTest.class); private Scheduler scheduler; public void tearDown() throws Exception { DatabaseManager databaseManager = (DatabaseManager) container.getComponentInstanceOfType(DatabaseManager.class); WriteQuery updateQuery = databaseManager.getWriterQuery("updateLastServer"); Map<String, Object> params = new HashMap<String, Object>(); params.put("id", 0L); params.put("last_modified", new Date(0)); updateQuery.update(params); updateQuery.close(); scheduler.shutdown(false); super.tearDown(); } public void testExecute() throws InterruptedException, SchedulerException { DatabaseManager databaseManager = (DatabaseManager) container.getComponentInstanceOfType(DatabaseManager.class); IndexManager indexManager = (IndexManager) container.getComponentInstanceOfType(IndexManager.class); try { scheduler = StdSchedulerFactory.getDefaultScheduler(); } catch (SchedulerException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } Trigger trigger = new SimpleTrigger("index", "default", "index", "default", new Date(), null, 0, 100); trigger.setMisfireInstruction( SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW); JobDetail detail = new JobDetail("index", "default", IndexSystemsTask.class); JobDataMap jobData = new JobDataMap(); jobData.put("indexManager", indexManager); jobData.put("databaseManager", databaseManager); detail.setJobDataMap(jobData); try { scheduler.addTriggerListener(new TestTrigger()); scheduler.scheduleJob(detail, trigger); } catch (SchedulerException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { scheduler.start(); } catch (SchedulerException e) { System.out.println("woo hoo"); } Thread.sleep(1000); if(!scheduler.isShutdown()) { scheduler.shutdown(true); } System.out.println("running"); } /** * {@inheritDoc} */ @Override protected Class[] getComponentClasses() { Class[] comps = {DatabaseManager.class, TestIndexManager.class}; return TestUtil.buildComponentsList(comps); } public static class TestIndexManager extends IndexManager { @Override public void addToIndex(String indexName, Document doc, String lang) throws IndexingException { assertNotNull(doc); assertNotNull(doc.getField("id")); assertNotNull(doc.getField("name").stringValue()); assertNotNull(doc.getField("description").stringValue()); assertNotNull(doc.getField("info").stringValue()); log.info("idx[" + indexName + "] doc [" + doc.toString() + "]"); } /** * @param config */ public TestIndexManager(Configuration config) { super(config); } } public static class TestTrigger implements TriggerListener { /** * {@inheritDoc} */ public String getName() { return "test trigger"; } /** * {@inheritDoc} */ public void triggerComplete(Trigger trigger, JobExecutionContext context, int triggerInstructionCode) { System.out.println("**************************** completed"); } /** * {@inheritDoc} */ public void triggerFired(Trigger trigger, JobExecutionContext context) { System.out.println("**************************** fired"); } /** * {@inheritDoc} */ public void triggerMisfired(Trigger trigger) { System.out.println("**************************** misfire"); } /** * {@inheritDoc} */ public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) { return false; } } }