def test_no_timeout(self): future1 = self.executor.submit(mul, 2, 21) future2 = self.executor.submit(mul, 7, 6) completed = set(futures.as_completed([CANCELLED_AND_NOTIFIED_FUTURE, EXCEPTION_FUTURE, SUCCESSFUL_FUTURE, future1, future2])) assert set([CANCELLED_AND_NOTIFIED_FUTURE, EXCEPTION_FUTURE, SUCCESSFUL_FUTURE, future1, future2]) == completed
def test_zero_timeout(self): future1 = self.executor.submit(time.sleep, 2) completed_futures = set() with pytest.raises(futures.TimeoutError): for future in futures.as_completed([ CANCELLED_AND_NOTIFIED_FUTURE, EXCEPTION_FUTURE, SUCCESSFUL_FUTURE, future1 ], timeout=0): completed_futures.add(future) assert set([ CANCELLED_AND_NOTIFIED_FUTURE, EXCEPTION_FUTURE, SUCCESSFUL_FUTURE ]) == completed_futures
def test_zero_timeout(self, exit_on_deadlock): future1 = self.executor.submit(time.sleep, 2) completed_futures = set() try: for future in futures.as_completed([ CANCELLED_AND_NOTIFIED_FUTURE, EXCEPTION_FUTURE, SUCCESSFUL_FUTURE, future1 ], timeout=0): completed_futures.add(future) except futures.TimeoutError: pass assert set([ CANCELLED_AND_NOTIFIED_FUTURE, EXCEPTION_FUTURE, SUCCESSFUL_FUTURE ]) == completed_futures
def test_duplicate_futures(self): # Issue 20367. Duplicate futures should not raise exceptions or give # duplicate responses. future1 = self.executor.submit(time.sleep, .1) completed = [f for f in futures.as_completed([future1, future1])] assert len(completed) == 1