| 245 |
| 246 |
| 247 |
| 248 |
| 249 |
| 250 |
| 251 |
| 252 |
| 253 |
| 254 |
| 255 |
| 256 |
| 257 |
| 258 |
| 259 |
| 260 |
| 261 |
| 262 |
| 263 |
| 264 |
| 265 |
| 266 |
| 267 |
| 268 |
| 269 |
| 270 |
| 271 |
| 272 |
| 273 | |
def test_channel_callback_stays_active(self, earlyfree=True): |
|
l = [] |
channel = self.gw.remote_exec(source=''' |
import thread, time |
def producer(subchannel): |
for i in range(5): |
time.sleep(0.15) |
subchannel.send(i*100) |
channel2 = channel.receive() |
thread.start_new_thread(producer, (channel2,)) |
del channel2 |
''') |
-> subchannel = self.gw.newchannel() |
subchannel.setcallback(l.append) |
channel.send(subchannel) |
if earlyfree: |
subchannel = None |
counter = 100 |
while len(l) < 5: |
if subchannel and subchannel.isclosed(): |
break |
counter -= 1 |
print counter |
if not counter: |
py.test.fail("timed out waiting for the answer[%d]" % len(l)) |
time.sleep(0.04) |
assert l == [0, 100, 200, 300, 400] |
return subchannel | |