Skip to content
This repository was archived by the owner on Oct 31, 2023. It is now read-only.

Commit e74fb34

Browse files
Fix the defer namespace in golem.core.deferred
Prevent importing the reactor in tests
1 parent 46a9a06 commit e74fb34

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

golem/core/deferred.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
from queue import Queue, Empty
22
from typing import Any
33

4-
from twisted.internet.defer import Deferred, inlineCallbacks, maybeDeferred
4+
from twisted.internet import defer
55
from twisted.internet.task import deferLater
6-
from twisted.internet.threads import deferToThread
76
from twisted.python.failure import Failure
87

98

109
class DeferredSeq:
1110
def __init__(self, *fns) -> None:
1211
self._seq = list(fns)
1312

14-
def execute(self) -> Deferred:
13+
def execute(self) -> defer.Deferred:
14+
from twisted.internet.threads import deferToThread
1515
# The executed function cannot return a Deferred, hence the bool cast
1616
return deferToThread(lambda *_: bool(self._execute()))
1717

18-
@inlineCallbacks
18+
@defer.inlineCallbacks
1919
def _execute(self) -> Any:
2020
arg = None
2121
for fn in self._seq:
22-
arg = yield maybeDeferred(fn, arg)
22+
arg = yield defer.maybeDeferred(fn, arg)
2323
return arg
2424

2525

2626
def chain_function(deferred, fn, *args, **kwargs):
27-
result = Deferred()
27+
result = defer.Deferred()
2828

2929
def resolve(_):
3030
fn(*args, **kwargs).addCallbacks(result.callback,
@@ -36,7 +36,7 @@ def resolve(_):
3636

3737

3838
def sync_wait(deferred, timeout=10):
39-
if not isinstance(deferred, Deferred):
39+
if not isinstance(deferred, defer.Deferred):
4040
return deferred
4141

4242
queue = Queue()
@@ -45,13 +45,13 @@ def sync_wait(deferred, timeout=10):
4545
try:
4646
result = queue.get(True, timeout)
4747
except Empty:
48-
raise TimeoutError("Command timed out")
48+
raise defer.TimeoutError("Command timed out")
4949

5050
if isinstance(result, Failure):
5151
result.raiseException()
5252
return result
5353

5454

55-
def call_later(delay: int, callable, *args, **kwargs) -> None:
55+
def call_later(delay: int, fn, *args, **kwargs) -> None:
5656
from twisted.internet import reactor
57-
deferLater(reactor, delay, callable, *args, **kwargs)
57+
deferLater(reactor, delay, fn, *args, **kwargs)

tests/golem/core/test_deferred.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
from golem.core.deferred import chain_function, DeferredSeq
88

99

10+
@mock.patch('twisted.internet.threads.deferToThread', lambda x: succeed(x()))
11+
@mock.patch('twisted.internet.reactor', mock.Mock(), create=True)
1012
class TestDeferredSeq(unittest.TestCase):
1113

1214
def test_init_empty(self):
@@ -19,11 +21,9 @@ def test_init_with_functions(self):
1921
]
2022
assert DeferredSeq(*fns)._seq == fns
2123

22-
@mock.patch('golem.core.deferred.deferToThread', lambda x: succeed(x()))
2324
def test_execute_empty(self):
2425
assert DeferredSeq().execute().result
2526

26-
@mock.patch('golem.core.deferred.deferToThread', lambda x: succeed(x()))
2727
def test_execute_functions(self):
2828
fn_1, fn_2 = mock.Mock(), mock.Mock()
2929
fns = [fn_1, fn_2]
@@ -43,7 +43,7 @@ def def2t(f, *args, **kwargs) -> Deferred:
4343
except Exception as exc: # pylint: disable=broad-except
4444
return fail(exc)
4545

46-
with mock.patch('golem.core.deferred.deferToThread', def2t):
46+
with mock.patch('twisted.internet.threads.deferToThread', def2t):
4747
DeferredSeq(fn_1, fn_2, fn_3, fn_4).execute()
4848

4949
assert fn_1.called

tests/golem/task/test_rpc.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def test_create_task(self, *_):
124124
def execute(f, *args, **kwargs):
125125
return defer.succeed(f(*args, **kwargs))
126126

127-
with mock.patch('golem.core.deferred.deferToThread', execute):
127+
with mock.patch('twisted.internet.threads.deferToThread', execute):
128128
result = self.provider.create_task(t.to_dict())
129129
rpc.enqueue_new_task.assert_called()
130130
self.assertEqual(result, ('task_id', None))
@@ -751,6 +751,7 @@ def setUp(self):
751751
rpc.enqueue_new_task(self.client, self.task),
752752
)
753753

754+
@mock.patch('twisted.internet.reactor', mock.Mock())
754755
@mock.patch("golem.task.rpc.prepare_and_validate_task_dict")
755756
def test_create_task(self, mock_method, *_):
756757
t = dummytaskstate.DummyTaskDefinition()

0 commit comments

Comments
 (0)