def test_nonempty_multiple_items_before_add(self): latch = mitogen.core.Latch() latch.put(123) latch.put(234) select = self.klass([latch], oneshot=False) self.assertEquals(123, select.get()) self.assertEquals(234, select.get()) self.assertRaises(mitogen.core.TimeoutError, lambda: select.get(block=False))
def test_nonempty_multiple_items_before_add(self): recv = mitogen.core.Receiver(self.router) recv._on_receive(mitogen.core.Message.pickled('123')) recv._on_receive(mitogen.core.Message.pickled('234')) select = self.klass([recv], oneshot=False) msg = select.get() self.assertEquals('123', msg.unpickle()) msg = select.get() self.assertEquals('234', msg.unpickle()) self.assertRaises(mitogen.core.TimeoutError, lambda: select.get(block=False))
def test_true_latch_removed_after_get(self): latch = mitogen.core.Latch() select = self.klass([latch]) latch.put(123) self.assertEquals(123, select.get()) self.assertEquals(0, len(select._receivers)) self.assertEquals(None, latch.notify)
def test_drained_by_other_thread(self): latch = mitogen.core.Latch() latch.put(123) select = self.klass([latch]) self.assertEquals(123, latch.get()) self.assertRaises(mitogen.core.TimeoutError, lambda: select.get(timeout=0.0))
def test_drained_by_other_thread(self): recv = mitogen.core.Receiver(self.router) recv._on_receive(mitogen.core.Message.pickled('123')) select = self.klass([recv]) msg = recv.get() self.assertEquals('123', msg.unpickle()) self.assertRaises(mitogen.core.TimeoutError, lambda: select.get(timeout=0.0))
def test_drained_by_other_thread(self): recv = mitogen.core.Receiver(self.router) recv._on_receive(mitogen.core.Message.pickled('123')) select = self.klass([recv]) msg = recv.get() self.assertEquals('123', msg.unpickle()) self.assertRaises(mitogen.core.TimeoutError, lambda: select.get(timeout=0.0))
def test_true_removed_after_get(self): recv = mitogen.core.Receiver(self.router) select = self.klass([recv]) msg = mitogen.core.Message.pickled('123') recv._on_receive(msg) msg_ = select.get() self.assertEquals(msg, msg_) self.assertEquals(0, len(select._receivers)) self.assertEquals(None, recv.notify)
def test_true_removed_after_get(self): recv = mitogen.core.Receiver(self.router) select = self.klass([recv]) msg = mitogen.core.Message.pickled('123') recv._on_receive(msg) msg_ = select.get() self.assertEquals(msg, msg_) self.assertEquals(0, len(select._receivers)) self.assertEquals(None, recv.notify)
def test_false_latch_persists_after_get(self): latch = mitogen.core.Latch() select = self.klass([latch], oneshot=False) latch.put(123) self.assertEquals(123, select.get()) self.assertEquals(1, len(select._receivers)) self.assertEquals(latch, select._receivers[0]) self.assertEquals(select._put, latch.notify)
def test_false_persists_after_get(self): recv = mitogen.core.Receiver(self.router) select = self.klass([recv], oneshot=False) msg = mitogen.core.Message.pickled('123') recv._on_receive(msg) self.assertEquals(msg, select.get()) self.assertEquals(1, len(select._receivers)) self.assertEquals(recv, select._receivers[0]) self.assertEquals(select._put, recv.notify)
def test_false_persists_after_get(self): recv = mitogen.core.Receiver(self.router) select = self.klass([recv], oneshot=False) msg = mitogen.core.Message.pickled('123') recv._on_receive(msg) self.assertEquals(msg, select.get()) self.assertEquals(1, len(select._receivers)) self.assertEquals(recv, select._receivers[0]) self.assertEquals(select._put, recv.notify)
def test_receiver(self): recv = mitogen.core.Receiver(self.router) # oneshot select = self.klass() self.assertFalse(select) select.add(recv) self.assertTrue(select) recv._on_receive(mitogen.core.Message.pickled('123')) self.assertTrue(select) self.assertEquals('123', select.get().unpickle()) self.assertFalse(select)
def test_latch(self): latch = mitogen.core.Latch() # oneshot select = self.klass() self.assertFalse(select) select.add(latch) self.assertTrue(select) latch.put(123) self.assertTrue(select) self.assertEquals(123, select.get()) self.assertFalse(select)
def master_main(painter, router, select, delay): """ Loop until CTRL+C is pressed, waiting for the next result delivered by the Select. Use parse_output() to turn that result ('ps' command output) into rich data, and finally repaint the screen if the repaint delay has passed. """ next_paint = 0 while True: msg = select.get() parse_output(msg.receiver.host, msg.unpickle()) if next_paint < time.time(): next_paint = time.time() + delay painter.paint()
def test_nonempty_after_add(self): recv = mitogen.core.Receiver(self.router) select = self.klass([recv]) recv._on_receive(mitogen.core.Message.pickled('123')) msg = select.get() self.assertEquals('123', msg.unpickle())
def test_timeout(self): recv = mitogen.core.Receiver(self.router) select = self.klass([recv]) self.assertRaises(mitogen.core.TimeoutError, lambda: select.get(timeout=0.1))
def test_timeout_no_receivers(self): select = self.klass() exc = self.assertRaises(mitogen.select.Error, lambda: select.get(timeout=1.0)) self.assertEquals(str(exc), self.klass.empty_msg)
def test_timeout_no_receivers(self): select = self.klass() exc = self.assertRaises(mitogen.select.Error, lambda: select.get(timeout=1.0)) self.assertEquals(str(exc), self.klass.empty_msg)
def test_timeout(self): recv = mitogen.core.Receiver(self.router) select = self.klass([recv]) self.assertRaises(mitogen.core.TimeoutError, lambda: select.get(timeout=0.1))
def test_nonempty_before_add(self): latch = mitogen.core.Latch() latch.put(123) select = self.klass([latch]) self.assertEquals(123, select.get())
def test_nonempty_after_add(self): recv = mitogen.core.Receiver(self.router) select = self.klass([recv]) recv._on_receive(mitogen.core.Message.pickled('123')) msg = select.get() self.assertEquals('123', msg.unpickle())
def test_nonempty_receiver_attr_set(self): recv = mitogen.core.Receiver(self.router) select = self.klass([recv]) recv._on_receive(mitogen.core.Message.pickled('123')) msg = select.get() self.assertEquals(msg.receiver, recv)
def test_nonempty_receiver_attr_set(self): recv = mitogen.core.Receiver(self.router) select = self.klass([recv]) recv._on_receive(mitogen.core.Message.pickled('123')) msg = select.get() self.assertEquals(msg.receiver, recv)
def test_timeout(self): latch = mitogen.core.Latch() select = self.klass([latch]) self.assertRaises(mitogen.core.TimeoutError, lambda: select.get(timeout=0.1))
def test_empty(self): select = self.klass() exc = self.assertRaises(mitogen.select.Error, lambda: select.get()) self.assertEquals(str(exc), self.klass.empty_msg)