001/* 002 * $Id: ThreadPoolTest.java 3789 2011-10-01 18:54:43Z kredel $ 003 */ 004 005//package edu.unima.ky.parallel; 006package edu.jas.util; 007 008import junit.framework.Test; 009import junit.framework.TestCase; 010import junit.framework.TestSuite; 011 012import org.apache.log4j.BasicConfigurator; 013 014 015/** 016 * ThreadPool tests with JUnit. 017 * @author Akitoshi Yoshida 018 * @author Heinz Kredel 019 */ 020public class ThreadPoolTest extends TestCase { 021 022 023/** 024 * main. 025 */ 026 public static void main (String[] args) { 027 BasicConfigurator.configure(); 028 junit.textui.TestRunner.run( suite() ); 029 } 030 031 032/** 033 * Constructs a <CODE>ThreadPoolTest</CODE> object. 034 * @param name String. 035 */ 036 public ThreadPoolTest(String name) { 037 super(name); 038 } 039 040 041/** 042 */ 043 public static Test suite() { 044 TestSuite suite= new TestSuite(ThreadPoolTest.class); 045 return suite; 046 } 047 048 049 static final int JOBS = 10; // number of jobs to start 050 051 052 private ThreadPool p1; 053 054 055 protected void setUp() { 056 } 057 058 059 protected void tearDown() { 060 p1.terminate(); 061 } 062 063 064/** 065 * Tests if the created ThreadPool is empty. 066 */ 067 public void testThreadPool1() { 068 p1 = new ThreadPool(0); 069 assertTrue( "not empty pool ", p1.getNumber() == 0 ); 070 } 071 072 073/** 074 * Tests if the created ThreadPool is non empty. 075 */ 076 public void testThreadPool2() { 077 p1 = new ThreadPool(1); 078 //p1.init(); 079 assertTrue( "# empty pool ", p1.getNumber() == 1 ); 080 p1.terminate(); 081 082 p1 = new ThreadPool(); 083 //p1.init(); 084 assertTrue( "# empty pool ", p1.getNumber() == ThreadPool.DEFAULT_SIZE ); 085 p1.terminate(); 086 087 p1 = new ThreadPool(10); 088 //p1.init(); 089 assertTrue( "# empty pool ", p1.getNumber() == 10 ); 090 p1.terminate(); 091 } 092 093 094/** 095 * Tests if the created ThreadPool has no jobs. 096 */ 097 public void testThreadPool3() { 098 p1 = new ThreadPool(); 099 assertFalse( "no jobs ", p1.hasJobs() ); 100 assertFalse( "more than 0 jobs ", p1.hasJobs(0) ); 101 p1.terminate(); 102 } 103 104 105/** 106 * Tests if the created ThreadPool has jobs. 107 */ 108 public void testThreadPool4() { 109 p1 = new ThreadPool(); 110 assertFalse( "no jobs ", p1.hasJobs() ); 111 for (int i = 0; i < JOBS*p1.getNumber(); i++ ) { 112 p1.addJob( new FastWorker() ); 113 } 114 boolean j = p1.hasJobs(); 115 assertTrue( "more than 0 jobs ", (j | true) ); // stupid 116 p1.terminate(); 117 assertFalse( "no jobs ", p1.hasJobs() ); 118 } 119 120 121/** 122 * Tests if the created ThreadPool has many jobs. 123 */ 124 public void testThreadPool5() { 125 p1 = new ThreadPool(); 126 //p1.init(); 127 assertFalse( "no jobs ", p1.hasJobs() ); 128 for (int i = 0; i < JOBS*p1.getNumber(); i++ ) { 129 p1.addJob( new SlowWorker() ); 130 } 131 assertTrue( "more than 10 jobs ", p1.hasJobs(JOBS) ); 132 p1.terminate(); 133 assertFalse( "no jobs ", p1.hasJobs() ); 134 } 135 136 137/** 138 * Tests if the created ThreadPool has correct strategy. 139 */ 140 public void testThreadPool6() { 141 p1 = new ThreadPool(StrategyEnumeration.LIFO); 142 assertTrue( "FIFO strategy ", 143 p1.getStrategy() == StrategyEnumeration.LIFO ); 144 } 145 146 147/** 148 * Tests if the created ThreadPool has jobs and correct strategy. 149 */ 150 public void testThreadPool7() { 151 p1 = new ThreadPool(StrategyEnumeration.LIFO); 152 assertFalse( "no jobs ", p1.hasJobs() ); 153 for (int i = 0; i < JOBS*p1.getNumber(); i++ ) { 154 p1.addJob( new FastWorker() ); 155 } 156 boolean j = p1.hasJobs(); 157 assertTrue( "more than 0 jobs ", (j | true) ); // stupid 158 p1.terminate(); 159 assertFalse( "no jobs ", p1.hasJobs() ); 160 } 161 162} 163 164 165/** 166 * Utility class for ThreadPool Test. 167 */ 168class FastWorker implements Runnable { 169 public void run() { 170 } 171} 172 173/** 174 * Utility class for ThreadPool Test. 175 */ 176class SlowWorker implements Runnable { 177 public void run() { 178 try { 179 Thread.sleep(10); 180 } catch (InterruptedException e ) { 181 } 182 } 183}