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
|
#!/usr/bin/env python
# ClusterShell test suite
# Written by S. Thiell 2009-12-19
"""Unit test for ClusterShell inter-Task msg"""
import pickle
import sys
import threading
import unittest
sys.path.insert(0, '../lib')
from ClusterShell.Task import *
from ClusterShell.Event import EventHandler
class TaskPortTest(unittest.TestCase):
def tearDown(self):
task_cleanup()
def testPortMsg1(self):
"""test port msg from main thread to task"""
TaskPortTest.got_msg = False
# create task in new thread
task = Task()
class PortHandler(EventHandler):
def ev_msg(self, port, msg):
# receive msg
assert msg == "toto"
assert port.task.thread == threading.currentThread()
TaskPortTest.got_msg = True
port.task.abort()
# create non-autoclosing port
port = task.port(handler=PortHandler())
task.resume()
# send msg from main thread
port.msg("toto")
task_wait()
self.assert_(TaskPortTest.got_msg)
def testPortRemove(self):
"""test port remove [private as of 1.2]"""
task = Task()
class PortHandler(EventHandler):
def ev_msg(self, port, msg):
pass
port = task.port(handler=PortHandler(), autoclose=True)
task.resume()
task._remove_port(port)
task_wait()
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(TaskPortTest)
unittest.TextTestRunner(verbosity=2).run(suite)
|