Java tutorial
/* * JCaptcha, the open source java framework for captcha definition and integration * Copyright (c) 2007 jcaptcha.net. All Rights Reserved. * See the LICENSE.txt file distributed with this package. */ /* * jcaptcha, the open source java framework for captcha definition and integration * copyright (c) 2007 jcaptcha.net. All Rights Reserved. * See the LICENSE.txt file distributed with this package. */ package com.octo.captcha.engine.bufferedengine.manager; import java.util.Locale; import java.util.Map; import junit.framework.TestCase; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import com.octo.captcha.CaptchaException; import com.octo.captcha.engine.bufferedengine.BufferedEngineContainer; /** * Unit test the QuartzBufferedEngineManager * * @author Benoit Doumas */ public class QuartzBufferedEngineManagerTest extends TestCase { private static final Log log = LogFactory.getLog(QuartzBufferedEngineManagerTest.class.getName()); // loader init by default //protected Class loader = DefaultEngineLoadTestHelper.class; BufferedEngineContainer container = null; QuartzBufferedEngineManager manager; Object scheduler = null; /* * @see TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); Resource ressource = new ClassPathResource("testQuartzBufferedEngine.xml"); ConfigurableBeanFactory bf = new XmlBeanFactory(ressource); container = (BufferedEngineContainer) bf.getBean("container"); scheduler = bf.getBean("quartz"); manager = (QuartzBufferedEngineManager) bf.getBean("manager"); } public void testStartStopToFeedPersistentBuffer() { String cronFeed = "0/3 * * * * ?"; //there should be swap in order to have feeds (so persistent buffer is not full) String cronSwap = "0/2 * * * * ?"; manager.setFeedSize(10); manager.setFeedCronExpr(cronFeed); manager.setSwapSize(10); manager.setSwapCronExpr(cronSwap); manager.stopToFeedPersistentBuffer(); //get some captcha for (int i = 0; i < 10; i++) container.getNextCaptcha(); int size = manager.getPersistentBufferSize(); //wait to see if there is some feed try { Thread.sleep(3500); } catch (InterruptedException e) { throw new CaptchaException(e); } //is ti still the same? assertEquals(size, manager.getPersistentBufferSize()); //take the time to have some swap try { Thread.sleep(3500); } catch (InterruptedException e) { throw new CaptchaException(e); } //stop to swap manager.stopToSwapFromPersistentToVolatileMemory(); //now start manager.startToFeedPersistantBuffer(); //wait, now shoult be some action try { Thread.sleep(3500); } catch (InterruptedException e) { throw new CaptchaException(e); } //the size shoult have increase assertTrue(size < manager.getPersistentBufferSize()); manager.startToSwapFromPersistentToVolatileMemory(); } public void testStartStopToSwapFromPersistentToVolatileMemory() { //there should be feeds in order to have swap (so persistent buffer contains some stuff) String cronFeed = "0/2 * * * * ?"; String cronSwap = "0/3 * * * * ?"; manager.setFeedSize(10); manager.setFeedCronExpr(cronFeed); manager.setSwapSize(10); manager.setSwapCronExpr(cronSwap); manager.stopToSwapFromPersistentToVolatileMemory(); //get some captcha for (int i = 0; i < 10; i++) container.getNextCaptcha(); int size = manager.getVolatileBufferSize(); //wait to see if there is some swaps try { Thread.sleep(4000); } catch (InterruptedException e) { throw new CaptchaException(e); } //is ti still the same? assertEquals(size, manager.getVolatileBufferSize()); //now start manager.startToSwapFromPersistentToVolatileMemory(); //wait, now shoult be some action try { Thread.sleep(4000); } catch (InterruptedException e) { throw new CaptchaException(e); } //the size shoult have increase assertTrue(size < manager.getVolatileBufferSize()); } public void testSetFeedCronExpr() { String cron = "0/23 * * * * ?"; manager.setFeedCronExpr(cron); assertEquals(cron, manager.getFeedCronExpr()); } public void testSetSwapCronExpr() { String cron = "0/23 * * * * ?"; manager.setSwapCronExpr(cron); assertEquals(cron, manager.getSwapCronExpr()); } public void testPauseResume() { manager.pause(); manager.resume(); } public void testSetFeedSize() { int size = 10; manager.setFeedSize(size); assertEquals(size, manager.getFeedSize()); } public void testSetLocaleRatio() { manager.setLocaleRatio(Locale.GERMANY.toString(), 0.2); Map map = manager.getLocaleRatio(); assertEquals(new Double(0.2), (Double) map.get(Locale.GERMANY)); } public void testRemoveLocaleRatio() { manager.setLocaleRatio(Locale.GERMANY.getDisplayName(), 0.2); manager.removeLocaleRatio(Locale.GERMANY.getDisplayName()); assertEquals(null, manager.getLocaleRatio().get(Locale.GERMANY.getDisplayName())); } public void testSetMaxPersistentMemorySize() { int size = 100; manager.setMaxPersistentMemorySize(size); assertEquals(size, manager.getMaxPersistentMemorySize()); } public void testSetMaxVolatileMemorySize() { int size = 100; manager.setMaxVolatileMemorySize(size); assertEquals(size, manager.getMaxVolatileMemorySize()); } public void testSetSwapSize() { int size = 10; manager.setSwapSize(size); assertEquals(size, manager.getSwapSize()); } public void testClearVolatileBuffer() { manager.pause(); manager.clearVolatileBuffer(); assertEquals(0, manager.getVolatileBufferSize()); manager.resume(); } public void testClearPersistentBuffer() { manager.pause(); manager.clearPersistentBuffer(); assertEquals(0, manager.getPersistentBufferSize()); manager.resume(); } }