示例#1
0
    def __init__(self, board):
        self.board = board
        self.round = 0

        self.on_change = toro.Condition()
        self.on_end = toro.Condition()
        self.on_progress = toro.Condition()

        self._players = {}
        self._future_round = None
示例#2
0
    def test_wait_timeout(self):
        c = toro.Condition(self.io_loop)
        st = time.time()
        with assert_raises(toro.Timeout):
            yield c.wait(deadline=timedelta(seconds=0.1))

        duration = time.time() - st
        self.assertAlmostEqual(0.1, duration, places=1)
示例#3
0
 def test_notify_1(self):
     c = toro.Condition()
     history = []
     c.wait().add_done_callback(make_callback('wait1', history))
     c.wait().add_done_callback(make_callback('wait2', history))
     c.notify(1)
     history.append('notify1')
     c.notify(1)
     history.append('notify2')
     self.assertEqual(['wait1', 'notify1', 'wait2', 'notify2'], history)
示例#4
0
    def test_wait_timeout_preempted(self):
        c = toro.Condition(self.io_loop)
        st = time.time()

        # This fires before the wait times out
        self.io_loop.add_timeout(st + .1, c.notify)
        yield c.wait(deadline=timedelta(seconds=0.2))
        duration = time.time() - st

        # Verify we were awakened by c.notify(), not by timeout
        self.assertAlmostEqual(0.1, duration, places=1)
示例#5
0
    def test_notify_all(self):
        c = toro.Condition()
        history = []
        for i in range(4):
            c.wait().add_done_callback(make_callback(i, history))

        c.notify_all()
        history.append('notify_all')

        # Callbacks execute in the order they were registered
        self.assertEqual(list(range(4)) + ['notify_all'], history)
示例#6
0
    def test_notify_n(self):
        c = toro.Condition()
        history = []
        for i in range(6):
            c.wait().add_done_callback(make_callback(i, history))

        c.notify(3)

        # Callbacks execute in the order they were registered
        self.assertEqual(list(range(3)), history)
        c.notify(1)
        self.assertEqual(list(range(4)), history)
        c.notify(2)
        self.assertEqual(list(range(6)), history)
示例#7
0
    def test_notify_all_with_timeout(self):
        c = toro.Condition(self.io_loop)
        st = time.time()
        history = []

        c.wait().add_done_callback(make_callback(0, history))
        c.wait(deadline=timedelta(seconds=.1)).add_done_callback(
            make_callback(1, history))

        c.wait().add_done_callback(make_callback(2, history))

        # Wait for callback 1 to time out
        yield gen.Task(self.io_loop.add_timeout, st + 0.2)
        self.assertEqual(['Timeout'], history)

        c.notify_all()
        self.assertEqual(['Timeout', 0, 2], history)
示例#8
0
    def test_notify_n_with_timeout(self):
        # Register callbacks 0, 1, 2, and 3. Callback 1 has a timeout.
        # Wait for that timeout to expire, then do notify(2) and make
        # sure everyone runs. Verifies that a timed-out callback does
        # not count against the 'n' argument to notify().
        c = toro.Condition(self.io_loop)
        st = time.time()
        history = []

        c.wait().add_done_callback(make_callback(0, history))
        c.wait(deadline=timedelta(seconds=.1)).add_done_callback(
            make_callback(1, history))

        c.wait().add_done_callback(make_callback(2, history))
        c.wait().add_done_callback(make_callback(3, history))

        # Wait for callback 1 to time out
        yield gen.Task(self.io_loop.add_timeout, st + 0.2)
        self.assertEqual(['Timeout'], history)

        c.notify(2)
        self.assertEqual(['Timeout', 0, 2], history)
        c.notify()
        self.assertEqual(['Timeout', 0, 2, 3], history)
示例#9
0
 def test_notify(self):
     c = toro.Condition(self.io_loop)
     self.io_loop.add_timeout(time.time() + 0.1, c.notify)
     yield c.wait()
示例#10
0
 def test_str(self):
     c = toro.Condition()
     self.assertTrue('Condition' in str(c))
     self.assertFalse('waiters' in str(c))
     c.wait()
     self.assertTrue('waiters' in str(c))