コード例 #1
0
ファイル: test_base_events.py プロジェクト: 5l1v3r1/cpython-1
    def test__run_once(self):
        h1 = events.TimerHandle(time.monotonic() + 5.0, lambda: True, ())
        h2 = events.TimerHandle(time.monotonic() + 10.0, lambda: True, ())

        h1.cancel()

        self.loop._process_events = unittest.mock.Mock()
        self.loop._scheduled.append(h1)
        self.loop._scheduled.append(h2)
        self.loop._run_once()

        t = self.loop._selector.select.call_args[0][0]
        self.assertTrue(9.5 < t < 10.5, t)
        self.assertEqual([h2], self.loop._scheduled)
        self.assertTrue(self.loop._process_events.called)
コード例 #2
0
ファイル: test_base_events.py プロジェクト: 5l1v3r1/cpython-1
    def test_run_once_in_executor_handle(self):
        def cb():
            pass

        self.assertRaises(AssertionError, self.loop.run_in_executor, None,
                          events.Handle(cb, ()), ('', ))
        self.assertRaises(AssertionError, self.loop.run_in_executor, None,
                          events.TimerHandle(10, cb, ()))
コード例 #3
0
ファイル: test_base_events.py プロジェクト: 5l1v3r1/cpython-1
    def test__run_once_logging(self, m_logging, m_time):
        # Log to INFO level if timeout > 1.0 sec.
        idx = -1
        data = [10.0, 10.0, 12.0, 13.0]

        def monotonic():
            nonlocal data, idx
            idx += 1
            return data[idx]

        m_time.monotonic = monotonic
        m_logging.INFO = logging.INFO
        m_logging.DEBUG = logging.DEBUG

        self.loop._scheduled.append(events.TimerHandle(11.0, lambda: True, ()))
        self.loop._process_events = unittest.mock.Mock()
        self.loop._run_once()
        self.assertEqual(logging.INFO, m_logging.log.call_args[0][0])

        idx = -1
        data = [10.0, 10.0, 10.3, 13.0]
        self.loop._scheduled = [events.TimerHandle(11.0, lambda: True, ())]
        self.loop._run_once()
        self.assertEqual(logging.DEBUG, m_logging.log.call_args[0][0])
コード例 #4
0
ファイル: test_base_events.py プロジェクト: 5l1v3r1/cpython-1
    def test__run_once_schedule_handle(self):
        handle = None
        processed = False

        def cb(loop):
            nonlocal processed, handle
            processed = True
            handle = loop.call_soon(lambda: True)

        h = events.TimerHandle(time.monotonic() - 1, cb, (self.loop, ))

        self.loop._process_events = unittest.mock.Mock()
        self.loop._scheduled.append(h)
        self.loop._run_once()

        self.assertTrue(processed)
        self.assertEqual([handle], list(self.loop._ready))
コード例 #5
0
ファイル: loop.py プロジェクト: pfreixes/qloop
    def call_at(self, when, callback, *args):
        """Like call_later(), but uses an absolute time.

        Absolute time corresponds to the event loop's time() method.
        """
        self._check_closed()
        if self._debug:
            self._check_thread()
            self._check_callback(callback, 'call_at')
        timer = events.TimerHandle(when, callback, args, self)
        if timer._source_traceback:
            del timer._source_traceback[-1]

        partition = _find_partition(self)
        heapq.heappush(self._partitions[partition].scheduled, timer)
        timer._scheduled = True
        return timer
コード例 #6
0
ファイル: test_base_events.py プロジェクト: 5l1v3r1/cpython-1
    def test__add_callback_timer(self):
        h = events.TimerHandle(time.monotonic() + 10, lambda: False, ())

        self.loop._add_callback(h)
        self.assertIn(h, self.loop._scheduled)