Beispiel #1
0
    def test_done_callback_with_cancel(self):
        was_cancelled = None

        def fn(callback_future):
            nonlocal was_cancelled
            was_cancelled = callback_future.cancelled()

        f = Future()
        f.add_done_callback(fn)
        self.assertTrue(f.cancel())
        self.assertTrue(was_cancelled)
Beispiel #2
0
    def test_done_callback_already_successful(self):
        callback_result = None

        def fn(callback_future):
            nonlocal callback_result
            callback_result = callback_future.result()

        f = Future()
        f.set_result(5)
        f.add_done_callback(fn)
        self.assertEqual(5, callback_result)
Beispiel #3
0
    def test_done_callback_with_exception(self):
        callback_exception = None

        def fn(callback_future):
            nonlocal callback_exception
            callback_exception = callback_future.exception()

        f = Future()
        f.add_done_callback(fn)
        f.set_exception(Exception('test'))
        self.assertEqual(('test', ), callback_exception.args)
Beispiel #4
0
    def test_done_callback_with_result(self):
        callback_result = None

        def fn(callback_future):
            nonlocal callback_result
            callback_result = callback_future.result()

        f = Future()
        f.add_done_callback(fn)
        f.set_result(5)
        self.assertEqual(5, callback_result)
def test_send_requests_for_road_network(mocker, tmpdir, generated_request, google_directions_api_response):
    mocker.patch.object(google_directions, 'generate_requests', return_value={('107316', '107352'): generated_request})
    mocker.patch.object(google_directions, 'send_requests',
                        return_value={('107316', '107352'): {**generated_request,
                                                             **{'request': Future(), 'timestamp': 12345}}})
    mocker.patch.object(Future, 'result', return_value=google_directions_api_response)

    n = Network('epsg:27700')
    google_directions.send_requests_for_network(n, 10, tmpdir)
    google_directions.generate_requests.assert_called_once_with(n)
    google_directions.send_requests.assert_called_once_with(google_directions.generate_requests.return_value, None,
                                                            None, None, False)
    def test_done_callback_raises_already_succeeded(self):
        with test.support.captured_stderr() as stderr:
            def raising_fn(callback_future):
                raise Exception('doh!')

            f = Future()

            # Set the result first to simulate a future that runs instantly,
            # effectively allowing the callback to be run immediately.
            f.set_result(5)
            f.add_done_callback(raising_fn)

            self.assertIn('exception calling callback for', stderr.getvalue())
            self.assertIn('doh!', stderr.getvalue())
Beispiel #7
0
    def test_done_callback_raises(self):
        with captured_stderr() as stderr:
            raising_was_called = [False]
            fn_was_called = [False]

            def raising_fn(callback_future):
                raising_was_called[0] = True
                raise Exception('doh!')

            def fn(callback_future):
                fn_was_called[0] = True

            f = Future()
            f.add_done_callback(raising_fn)
            f.add_done_callback(fn)
            f.set_result(5)
            self.assertTrue(raising_was_called)
            self.assertTrue(fn_was_called)
            self.assertIn('Exception: doh!', stderr.getvalue())
Beispiel #8
0
    def test_done_callback_raises(self):
        with test.support.captured_stderr() as stderr:
            raising_was_called = False
            fn_was_called = False

            def raising_fn(callback_future):
                nonlocal raising_was_called
                raising_was_called = True
                raise Exception('doh!')

            def fn(callback_future):
                nonlocal fn_was_called
                fn_was_called = True
            f = Future()
            f.add_done_callback(raising_fn)
            f.add_done_callback(fn)
            f.set_result(5)
            self.assertTrue(raising_was_called)
            self.assertTrue(fn_was_called)
            self.assertIn('Exception: doh!', stderr.getvalue())
Beispiel #9
0
    def test_free_reference_yielded_future(self):
        # Issue #14406: Generator should not keep references
        # to finished futures.
        futures_list = [Future() for _ in range(8)]
        futures_list.append(create_future(state=CANCELLED_AND_NOTIFIED))
        futures_list.append(create_future(state=FINISHED, result=42))

        with self.assertRaises(futures.TimeoutError):
            for future in futures.as_completed(futures_list, timeout=0):
                futures_list.remove(future)
                wr = weakref.ref(future)
                del future
                self.assertIsNone(wr())

        futures_list[0].set_result("test")
        for future in futures.as_completed(futures_list):
            futures_list.remove(future)
            wr = weakref.ref(future)
            del future
            self.assertIsNone(wr())
            if futures_list:
                futures_list[0].set_result("test")
Beispiel #10
0
 def submit(self, fn):
     result = fn()
     future = Future()
     future.set_result(result)
     return future
def create_future(state=PENDING, exception=None, result=None):
    f = Future()
    f._state = state
    f._exception = exception
    f._result = result
    return f
Beispiel #12
0
 def __init__(self) -> None:
     super().__init__()
     self.completable_feature = Future()
     self.test_count = 0
     self.test_method = self.test
     self.test_method_with_sleep = self.test_with_sleep
Beispiel #13
0
 def submit(self, fn, *args, **kwargs):
     future = Future()
     future.set_result(fn(*args, **kwargs))
     return future
Beispiel #14
0
 def __init__(self,
              level: int = logging.NOTSET,
              maxlen: Optional[int] = None) -> None:
     super().__init__(level=level)
     self.cached_records = deque([], maxlen)
     self._emit_future = Future()