-
Notifications
You must be signed in to change notification settings - Fork 131
Expand file tree
/
Copy pathJobTest.py
More file actions
73 lines (57 loc) · 1.91 KB
/
JobTest.py
File metadata and controls
73 lines (57 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
try:
from future import standard_library
standard_library.install_aliases()
except ModuleNotFoundError:
pass
except Module
import sys
import unittest
import re
import os.path
import threading
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..'))
from multiprocessing import Pipe
from tempfile import NamedTemporaryFile
from pickle import dumps, loads
from Exscript.workqueue.job import Thread, Process, Job
def do_nothing(job):
pass
class ThreadTest(unittest.TestCase):
CORRELATE = Thread
def testConstructor(self):
job = self.CORRELATE(1, do_nothing, 'myaction', None)
self.assertEqual(do_nothing, job.function)
def testRun(self):
job = self.CORRELATE(1, do_nothing, 'myaction', None)
to_child, to_self = Pipe()
job.start(to_self)
response = to_child.recv()
while job.is_alive():
pass
job.join()
self.assertEqual(response, '')
def testStart(self):
pass # See testRun()
class ProcessTest(ThreadTest):
CORRELATE = Process
class JobTest(unittest.TestCase):
def testConstructor(self):
job = Job(do_nothing, 'myaction', 1, 'foo')
self.assertEqual(job.name, 'myaction')
self.assertEqual(job.times, 1)
self.assertEqual(job.func, do_nothing)
self.assertEqual(job.data, 'foo')
self.assertEqual(job.child, None)
def testPickle(self):
job1 = Job(do_nothing, 'myaction', 1, None)
data = dumps(job1, -1)
job2 = loads(data)
self.assertEqual(job1.name, job2.name)
def suite():
loader = unittest.TestLoader()
suite1 = loader.loadTestsFromTestCase(ThreadTest)
suite2 = loader.loadTestsFromTestCase(ProcessTest)
suite3 = loader.loadTestsFromTestCase(JobTest)
return unittest.TestSuite((suite1, suite2, suite3))
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())