Author: peter_firmstone Date: Wed Sep 21 14:48:01 2011 New Revision: 1173687
URL: http://svn.apache.org/viewvc?rev=1173687&view=rev Log: Reference Collection Utilities Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/dos/IsolateTest.java Modified: river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/dos/IsolateTest.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/dos/IsolateTest.java?rev=1173687&r1=1173686&r2=1173687&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/dos/IsolateTest.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/test/src/org/apache/river/impl/security/dos/IsolateTest.java Wed Sep 21 14:48:01 2011 @@ -56,26 +56,70 @@ public class IsolateTest { @Before public void setUp() { + executor = new IsolatedExecutor(); + } + + @After + public void tearDown() { + executor.shutdownNow(); + executor = null; } /** * Test of process method, of class IsolatedExecutor. + * This test leaves stale threads consuming CPU. */ @Test - public void timeout() throws Exception { - System.out.println("process"); - Callable<Object> task = new EndlessLoopTask(); + public void stackOverflow() { + System.out.println("Stack overflow"); + Callable<Object> task = new StackOverflowTask(); long timeout = 10L; - IsolatedExecutor instance = new IsolatedExecutor(); Exception e = null; + Future result = executor.submit(task); try { - instance.process(task, timeout, TimeUnit.SECONDS); - } catch ( TimeoutException ex ){ - e = ex; - System.out.println(ex); - } - assertTrue((e instanceof TimeoutException)); + result.get(); + } catch ( Exception ex ){ + e = ex; + ex.printStackTrace(System.out); + } + assertTrue((e instanceof Exception)); // TODO review the generated test code and remove the default call to fail. } + + /** + * Test of process method, of class IsolatedExecutor. + */ + @Test + public void arrayListOverflow() { + System.out.println("ArrayList overflow"); +// This leaves stale threads consuming CPU. + Callable<Object> task = new ArrayListOverflow(); + long timeout = 120L; + Exception e = null; + try { + executor.process(task, timeout, TimeUnit.SECONDS); + } catch ( Exception ex ){ + e = ex; + ex.printStackTrace(System.out); + if (ex instanceof ExecutionException){ + Throwable t = ((ExecutionException)ex).getCause(); + if (t instanceof Error) executor = new IsolatedExecutor(); + } + } + assertTrue((e instanceof Exception)); + Callable<Boolean> task2 = new PrintTask(); + Boolean result = Boolean.FALSE; + try { + result = (Boolean) executor.process(task2, timeout, TimeUnit.MINUTES); + } catch (ExecutionException ex) { + + } catch (InterruptedException ex) { + + } catch (TimeoutException ex) { + + } + assertTrue(result); +// // TODO review the generated test code and remove the default call to fail. + } } \ No newline at end of file
