def test_can_get_threadpool_instance(self): instance = ThreadPool.instance(0) expect(instance.pool).to_be_null() instance = ThreadPool.instance(10) expect(instance).not_to_be_null() instance2 = ThreadPool.instance(10) expect(instance2).to_equal(instance) instance3 = ThreadPool.instance(11) expect(instance3).not_to_equal(instance)
def test_queueing_task_when_no_pool_runs_sync(self): instance = ThreadPool.instance(0) expect(instance).not_to_be_null() def add(): return 10 def handle_operation(result): self.handled = True expect(result.result()).to_equal(10) instance.queue(add, handle_operation) expect(self.handled).to_be_true()
def test_can_run_task_in_foreground(self): instance = ThreadPool.instance(0) expect(instance).not_to_be_null() def add(): return 10 def handle_operation(result): self.handled = True expect(result.result()).to_equal(10) instance._execute_in_foreground(add, handle_operation) expect(self.handled).to_be_true()
def test_queueing_task_when_no_pool_runs_sync_and_exception_happens(self): instance = ThreadPool.instance(0) expect(instance).not_to_be_null() exception = Exception('Boom') def add(): raise exception def handle_operation(result): self.handled = True expect(result.result()).to_equal(exception) instance.queue(add, handle_operation) expect(self.handled).to_be_true()
def test_can_run_task_in_foreground_and_exception_happens(self): instance = ThreadPool.instance(0) expect(instance).not_to_be_null() exception = Exception('Boom') def add(): raise exception def handle_operation(result): self.handled = True with expect.error_to_happen(Exception, message='Boom'): result.result() instance._execute_in_foreground(add, handle_operation) expect(self.handled).to_be_true()
def test_can_run_async(self): instance = ThreadPool.instance(10) expect(instance).not_to_be_null() def add(): sleep(1) self.handled = True return 10 instance._execute_in_pool(add, self.stop) expect(self.handled).to_be_false() result = self.wait() expect(self.handled).to_be_true() expect(result.result()).to_equal(10)
def test_can_cleanup_pool(self): instance = ThreadPool.instance(0) instance.pool = mock.Mock() instance.cleanup() expect(instance.pool.shutdown.called).to_be_true()