1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 from twisted.trial import unittest
17 from elisa.core.tests.elisa_test_case import ElisaTestCase
18 from elisa.core import log
19
20 from elisa.core.bus import bus, bus_message
21 from twisted.internet import defer, reactor
22 import platform
23
28
33
34
36
37 - def __init__(self, methodName='runTest'):
38 ElisaTestCase.__init__(self, methodName)
39 if platform.system() == 'Windows':
40 self.skip = "test not supported under windows (Twisted lock)"
41
46
50
52 global received_messages
53 received_messages = []
54 mybus = bus.Bus()
55
56 def on_message(message, sender):
57 global received_messages
58 received_messages.append(message)
59
60 mybus.register(on_message)
61
62 for i in range(5):
63 data = '%s. Hello you' % i
64 mybus.send_message(DataMessage(data), sender=self)
65
66 def done():
67 global received_messages
68 self.assertEqual(len(received_messages), 5)
69 mybus.unregister(on_message)
70 mybus.stop()
71
72 mybus.start()
73 reactor.callFromThread(done)
74
76 """ Check a message receiver callback correctly gets called on
77 message bus dispatch.
78 """
79 global received_messages
80 received_messages = []
81
82 def on_message(message, sender):
83 global received_messages
84 received_messages.append(message)
85
86 self._bus.register(on_message)
87
88 for i in range(5):
89 self._bus.send_message(DataMessage("data"), sender=self)
90
91 def done():
92 global received_messages
93 self.assertEqual(len(received_messages), 5)
94
95 reactor.callFromThread(done)
96
98 """
99 """
100 global received_messages
101 received_messages = []
102
103 def on_message(message, sender):
104 global received_messages
105 received_messages.append(message)
106
107 self._bus.register(on_message, FooMessage)
108
109 for i in range(5):
110 data = '%s. Hello you' % i
111 self._bus.send_message(DataMessage(data), sender=self)
112
113 global sent_foo_messages
114 sent_foo_messages = []
115 for i in range(5):
116 data = '%s. Hello you' % i
117 msg = FooMessage(data)
118 self._bus.send_message(msg, sender=self)
119 sent_foo_messages.append(msg)
120
121 def done():
122 global received_messages
123 global sent_foo_messages
124 self.assertEqual(len(received_messages), 5)
125 for msg in received_messages:
126 self.failIf(msg not in sent_foo_messages)
127 self._bus.unregister(on_message)
128
129 reactor.callFromThread(done)
130
132 """
133 """
134 global received_messages
135 received_messages = []
136
137 def on_message(message, sender):
138 global received_messages
139 received_messages.append(message)
140
141 self._bus.register(on_message, DataMessage,FooMessage)
142
143 global sent_messages
144 sent_messages = []
145 for i in range(5):
146 data = '%s. Hello you' % i
147 msg = DataMessage(data)
148 self._bus.send_message(msg, sender=self)
149 sent_messages.append(msg)
150
151 for i in range(5):
152 data = '%s. Hello you' % i
153 msg = FooMessage(data)
154 self._bus.send_message(msg, sender=self)
155 sent_messages.append(msg)
156
157 def done():
158 global received_messages
159 global sent_messages
160 self.assertEqual(len(received_messages), 10)
161 for msg in received_messages:
162 self.failIf(msg not in sent_messages)
163
164 reactor.callFromThread(done)
165
167 """
168 """
169 global received_messages
170 received_messages = []
171
172 @bus.bus_listener(self._bus, FooMessage)
173 def on_message(message, sender):
174 global received_messages
175 received_messages.append(message)
176
177 for i in range(5):
178 data = '%s. Hello you' % i
179 self._bus.send_message(DataMessage(data), sender=self)
180
181 global sent_foo_messages
182 sent_foo_messages = []
183 for i in range(5):
184 data = '%s. Hello you' % i
185 msg = FooMessage(data)
186 self._bus.send_message(msg, sender=self)
187 sent_foo_messages.append(msg)
188
189 def done():
190 global received_messages
191 global sent_foo_messages
192 self.assertEqual(len(received_messages), 5)
193 for msg in received_messages:
194 self.failIf(msg not in sent_foo_messages)
195 self._bus.unregister(on_message)
196
197 reactor.callFromThread(done)
198