Subversion Repositories HomeAutomation

Rev

Details | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
742 olof 1
import logging as log
2
log.basicConfig(level=log.DEBUG,
3
                format='%(asctime)s %(levelname)s %(message)s',
4
                filename=__name__ + '.log',
5
                filemode='w')
6
import unittest
7
 
8
from TCPServer import TCPServer
9
from TCPClient import TCPClient
10
import time
11
 
12
class CanPktTests(unittest.TestCase):
13
 
14
    client = None
15
 
16
    server = None
17
    serverNotifier = None
18
    serverRunning = False
19
 
20
    def setUp(self):
21
        """Call before every test case."""
22
        pass
23
 
24
    def tearDown(self):
25
        """Call after every test case."""
26
        if self.serverRunning:
27
            self.stopServer()
28
 
29
    class ServerNotifier():
30
 
31
        parent = None
32
        UNDEFINED = 0
33
        TERMINATE = 1
34
 
35
        def __init__(self, parent):
36
            self.parent = parent
37
 
38
        def notify(self, msg):
39
            if msg == self.TERMINATE:
40
                log.debug('Server terminate notify')
41
                self.parent.serverRunning = False
42
 
43
    def startServer(self):
44
        self.serverNotifier = self.ServerNotifier(self)
45
        self.server = TCPServer(27000, self.serverNotifier)
46
        assert self.server.start() == True
47
        self.serverRunning = True
48
 
49
    def stopServer(self):
50
        assert self.serverRunning == True
51
        self.server.stop()
52
        waitTime = 0
53
        while self.serverRunning:
54
            log.debug('Waiting 0.2s for server shutdown..')
55
            time.sleep(0.2)
56
            waitTime += 0.2
57
            if waitTime > 4:
58
                log.debug('Giving up!')
59
                assert False
60
                break
61
 
62
    def startClient(self):
63
        self.client = TCPClient('localhost', 27000)
64
        return self.client.connect(1)
65
 
66
    def stopClient(self):
67
        self.client.disconnect()
68
        time.sleep(0.1)
69
 
70
    def testATcpServer(self):
71
        self.startServer()
72
        self.stopServer()
73
 
74
    def testBTcpClientNegative(self):
75
        assert self.startClient() == False
76
        self.stopClient()
77
 
78
    def testCTcpServerWithSingleClient(self):
79
        self.startServer()
80
        self.startClient()
81
        self.stopClient()
82
        self.stopServer()
83
 
84
    def testDTcpConnection(self):
85
        log.debug('testTcpConnection')
86
        self.startServer()
87
        assert self.startClient() == True
88
        log.debug('Server sends hej')
89
        self.server.writeAll('hej')
90
        time.sleep(0.5)
91
        resp = str(self.client.read())
92
        log.debug('Client gets:' + resp)
93
        assert (resp == '\'hej\'')
94
        self.stopClient()
95
        self.stopServer()