def test_listen(self): values = [] heard = threading.Event() def listener(x): values.append(x) heard.set() q = Queue(0) q.listen(listener) heard.clear() q.put(1) heard.wait() assert values[-1] == 1 heard.clear() q.put(2) heard.wait() assert values[-1] == 2 q.listen(None) q.put(3) assert q.get(3) == 3 q.listen(listener) heard.clear() q.put(4) heard.wait() assert values[-1] == 4
def test_close(self): q = Queue(0) q.put(1) q.put(2) q.put(3) q.close() assert q.get() == 1 assert q.get() == 2 assert q.get() == 3 for i in range(10): try: q.get() raise AssertionError("expected Closed") except Closed: pass
def setUp(self): self.queue = Queue() self.running = True started = Event() def run(): ts = TestServer(self.queue) for s in listen("0.0.0.0", PORT, lambda: self.running, lambda: started.set()): conn = Connection(s, delegate=ts.connection) try: conn.start(5) except Closed: pass self.server = Thread(target=run) self.server.setDaemon(True) self.server.start() started.wait(3) assert started.isSet()