instrumentation: add next-share/
[cs-p2p-next.git] / instrumentation / next-share / BaseLib / Test / test_gui_server.py
1 # Written by Arno Bakker
2 # see LICENSE.txt for license information
3 #
4 # TODO: integrate with test_TimedTaskQueue
5
6 import unittest
7 from time import sleep
8
9 from BaseLib.Utilities.TimedTaskQueue import TimedTaskQueue
10
11 class TestGUITaskQueue(unittest.TestCase):
12     
13     def setUp(self):
14         self.ntasks = 0
15         self.completed = []
16         self.guiserver = TimedTaskQueue()
17         
18     def tearDown(self):
19         sleep(2)
20         self.completed.sort()
21         if self.completed != range(self.ntasks):
22             print "test failed",self.completed
23             self.assert_(False)
24
25     def test_simple(self):
26         self.ntasks = 1
27         
28         self.guiserver.add_task(lambda:self.task(0),0)
29
30     def test_more(self):
31         self.ntasks = 10
32         
33         for i in range(self.ntasks):
34             # lambda functions are evil, this is not the same as lambda:task(i)
35             self.guiserver.add_task(self.define_task(i),0)
36
37     def test_delay(self):
38         self.ntasks = 1
39         
40         self.guiserver.add_task(lambda:self.task(0),3)
41         print "test: sleeping 5 secs so tasks gets executed"
42         sleep(5)
43
44     def test_delay2(self):
45         self.ntasks = 2
46         
47         self.guiserver.add_task(lambda:self.task(1),3)
48         self.guiserver.add_task(lambda:self.task(0),1)
49         print "test: sleeping 5 secs so tasks gets executed"
50         sleep(5)
51
52     def define_task(self,num):
53         return lambda:self.task(num)
54
55     def task(self,num):
56         print "Running task",num
57         self.completed.append(num)
58         
59
60 def test_suite():
61     suite = unittest.TestSuite()
62     suite.addTest(unittest.makeSuite(TestGUITaskQueue))
63     
64     return suite
65     
66 if __name__ == '__main__':
67     unittest.main(defaultTest='test_suite')