def test_same_futures(c, s, a, b): q = Queue('x') future = yield c._scatter(123) for i in range(5): yield q._put(future) assert s.wants_what['queue-x'] == {future.key} for i in range(4): future2 = yield q._get() assert s.wants_what['queue-x'] == {future.key} yield gen.sleep(0.05) assert s.wants_what['queue-x'] == {future.key} yield q._get() start = time() while s.wants_what['queue-x']: yield gen.sleep(0.01) assert time() - start < 2
def test_race(c, s, *workers): def f(i): with worker_client() as c: q = Queue('x', client=c) for _ in range(100): future = q.get() x = future.result() y = c.submit(inc, x) q.put(y) sleep(0.01) result = q.get().result() return result q = Queue('x', client=c) L = yield c._scatter(range(5)) for future in L: yield q._put(future) futures = c.map(f, range(5)) results = yield c._gather(futures) assert all(r > 80 for r in results) qsize = yield q._qsize() assert not qsize