Skip to content

Commit 67a9c22

Browse files
committed
Convert actor decorator tests to Actor class tests
Signed-off-by: Leandro Lucarella <[email protected]>
1 parent 17d4a76 commit 67a9c22

File tree

1 file changed

+16
-22
lines changed

1 file changed

+16
-22
lines changed

tests/actor/test_decorator.py renamed to tests/actor/test_actor.py

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@
55
from frequenz.channels import Broadcast, Receiver, Sender
66
from frequenz.channels.util import select, selected_from
77

8-
from frequenz.sdk.actor import actor, run
8+
from frequenz.sdk.actor import Actor, run
99

1010

11-
@actor
12-
class FaultyActor:
11+
class FaultyActor(Actor):
1312
"""A faulty actor that crashes as soon as it receives a message."""
1413

1514
def __init__(
@@ -23,17 +22,16 @@ def __init__(
2322
name: Name of the actor.
2423
recv: A channel receiver for int data.
2524
"""
26-
self.name = name
25+
super().__init__(name=name)
2726
self._recv = recv
2827

29-
async def run(self) -> None:
28+
async def _run(self) -> None:
3029
"""Start the actor and crash upon receiving a message"""
3130
async for msg in self._recv:
3231
_ = msg / 0
3332

3433

35-
@actor
36-
class EchoActor:
34+
class EchoActor(Actor):
3735
"""An echo actor that whatever it receives into the output channel."""
3836

3937
def __init__(
@@ -50,13 +48,12 @@ def __init__(
5048
recv1 (Receiver[bool]): A channel receiver for test boolean data.
5149
recv2 (Receiver[bool]): A channel receiver for test boolean data.
5250
"""
53-
self.name = name
54-
51+
super().__init__(name=name)
5552
self._recv1 = recv1
5653
self._recv2 = recv2
5754
self._output = output
5855

59-
async def run(self) -> None:
56+
async def _run(self) -> None:
6057
"""Do computations depending on the selected input message.
6158
6259
Args:
@@ -81,26 +78,23 @@ async def test_basic_actor() -> None:
8178

8279
echo_chan: Broadcast[bool] = Broadcast("echo output")
8380

84-
_echo_actor = EchoActor(
81+
async with EchoActor(
8582
"EchoActor",
8683
input_chan_1.new_receiver(),
8784
input_chan_2.new_receiver(),
8885
echo_chan.new_sender(),
89-
)
90-
91-
echo_rx = echo_chan.new_receiver()
86+
):
87+
echo_rx = echo_chan.new_receiver()
9288

93-
await input_chan_1.new_sender().send(True)
89+
await input_chan_1.new_sender().send(True)
9490

95-
msg = await echo_rx.receive()
96-
assert msg is True
91+
msg = await echo_rx.receive()
92+
assert msg is True
9793

98-
await input_chan_2.new_sender().send(False)
94+
await input_chan_2.new_sender().send(False)
9995

100-
msg = await echo_rx.receive()
101-
assert msg is False
102-
# pylint: disable=protected-access,no-member
103-
await _echo_actor._stop() # type: ignore[attr-defined]
96+
msg = await echo_rx.receive()
97+
assert msg is False
10498

10599

106100
async def test_actor_does_not_restart() -> None:

0 commit comments

Comments
 (0)