1 8 9 package foxtrot.test; 10 11 import foxtrot.workers.MultiWorkerThread; 12 import foxtrot.Job; 13 14 17 public class MultiWorkerThreadTest extends FoxtrotTestCase 18 { 19 public MultiWorkerThreadTest(String s) 20 { 21 super(s); 22 } 23 24 public void testThreads() throws Exception 25 { 26 final MutableHolder thread = new MutableHolder(null); 27 final MultiWorkerThread worker = new MultiWorkerThread() 28 { 29 public void run() 30 { 31 thread.set(Thread.currentThread()); 32 super.run(); 33 } 34 }; 35 invokeTest(worker, new Runnable () 36 { 37 public void run() 38 { 39 worker.start(); 40 41 final MutableHolder runner = new MutableHolder(null); 42 worker.postTask(new Job() 43 { 44 public Object run() 45 { 46 runner.set(Thread.currentThread()); 47 return null; 48 } 49 }); 50 51 sleep(1000); 52 53 if (thread.get() == runner.get()) fail(); 54 } 55 }, null); 56 } 57 58 public void testLongBeforeShort() throws Exception 59 { 60 final MultiWorkerThread worker = new MultiWorkerThread(); 61 invokeTest(worker, new Runnable () 62 { 63 public void run() 64 { 65 worker.start(); 66 67 final long longDelay = 5000; 69 final MutableInteger longer = new MutableInteger(0); 70 worker.postTask(new Job() 71 { 72 public Object run() 73 { 74 longer.set(1); 75 sleep(longDelay); 76 longer.set(2); 77 return null; 78 } 79 }); 80 final long shortDelay = 2000; 81 final MutableInteger shorter = new MutableInteger(0); 82 worker.postTask(new Job() 83 { 84 public Object run() 85 { 86 shorter.set(1); 87 sleep(shortDelay); 88 shorter.set(2); 89 return null; 90 } 91 }); 92 93 sleep(shortDelay / 2); 94 if (shorter.get() != 1) fail(); 95 if (longer.get() != 1) fail(); 96 97 sleep(shortDelay); 98 if (shorter.get() != 2) fail(); 99 if (longer.get() != 1) fail(); 100 101 sleep(longDelay); 102 if (longer.get() != 2) fail(); 103 } 104 }, null); 105 } 106 } 107 | Popular Tags |