def test_schedule_in(self): l = [] def f1(): l.append(1) greenhouse.schedule_in(TESTING_TIMEOUT, f1) @greenhouse.schedule_in(TESTING_TIMEOUT) def f2(): l.append(2) @greenhouse.schedule_in(TESTING_TIMEOUT, args=(3,)) def f3(x): l.append(x) @greenhouse.schedule_in(TESTING_TIMEOUT, kwargs={'x': 4}) def f4(x=None): l.append(x) @greenhouse.compat.greenlet def f5(): l.append(5) greenhouse.schedule_in(TESTING_TIMEOUT, f5) greenhouse.pause() assert not l time.sleep(TESTING_TIMEOUT) greenhouse.pause() l.sort() assert l == [1, 2, 3, 4, 5], l
def test_downed_recipient_cancels_the_hub_sender_during_chunked_request(self): global PORT hub = junction.Hub(("127.0.0.1", PORT), []) PORT += 2 triggered = [False] @hub.accept_rpc('service', 0, 0, 'method') def handle(chunks): for item in chunks: pass return "all done" hub.start() hub2 = junction.Hub(("127.0.0.1", PORT), [("127.0.0.1", PORT - 2)]) PORT += 2 hub2.start() hub2.wait_connected() def gen(): try: while 1: yield None greenhouse.pause_for(TIMEOUT) finally: triggered[0] = True rpc = hub2.send_rpc('service', 0, 'method', (gen(),)) hub = [hub] greenhouse.schedule_in(TIMEOUT * 4, self.kill_hub, args=(hub,)) greenhouse.pause_for(TIMEOUT * 5) assert triggered[0]
def spawn(self, after=None): if after is None: schedule(self.greenlet) else: schedule_in(after, self.greenlet) return self