55from frequenz .channels import Broadcast , Receiver , Sender
66from 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
106100async def test_actor_does_not_restart () -> None :
0 commit comments