Skip to content

Commit a34ca4d

Browse files
committed
Add custom executor tests
1 parent 7c42ab7 commit a34ca4d

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

tests/test_executor.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import logging
44
import random
55
import time
6+
from concurrent.futures import _base
67
from threading import local
78

89
import pytest
@@ -38,6 +39,15 @@ def fail():
3839
print(hello)
3940

4041

42+
class CustomThreadPoolExecutor(concurrent.futures.ThreadPoolExecutor):
43+
class _Future(_base.Future):
44+
def __getattr__(self, item):
45+
return lambda: True
46+
47+
def submit(self, fn, /, *args, **kwargs):
48+
return self._Future()
49+
50+
4151
def test_init(app):
4252
executor = Executor(app)
4353
assert 'executor' in app.extensions
@@ -67,6 +77,20 @@ def test_process_executor_init(default_app):
6777
assert isinstance(executor, concurrent.futures.ProcessPoolExecutor)
6878

6979

80+
def test_custom_executor_init(default_app):
81+
default_app.config['EXECUTOR_TYPE'] = 'custom'
82+
default_app.config['EXECUTOR_POOL_CLASS'] = CustomThreadPoolExecutor
83+
executor = Executor(default_app)
84+
assert isinstance(executor._self, CustomThreadPoolExecutor)
85+
assert isinstance(executor, CustomThreadPoolExecutor)
86+
87+
88+
def test_invalid_process_custom_init(default_app):
89+
default_app.config['EXECUTOR_TYPE'] = 'custom'
90+
with pytest.raises(ValueError):
91+
_ = Executor(default_app)
92+
93+
7094
def test_default_executor_init(default_app):
7195
executor = Executor(default_app)
7296
assert isinstance(executor._self, concurrent.futures.ThreadPoolExecutor)
@@ -319,6 +343,15 @@ def decorated(n):
319343
assert future.result() == fib(5)
320344

321345

346+
def test_custom_executor_getarrt(default_app):
347+
default_app.config['EXECUTOR_TYPE'] = 'custom'
348+
default_app.config['EXECUTOR_POOL_CLASS'] = CustomThreadPoolExecutor
349+
executor = Executor(default_app)
350+
with default_app.test_request_context(''):
351+
executor.submit_stored('fibonacci', fib, 35)
352+
assert executor.futures.custom_func('fibonacci')
353+
354+
322355
thread_local = local()
323356

324357

0 commit comments

Comments
 (0)