1
+ import remoulade
2
+ from remoulade .brokers .local import LocalBroker
3
+ from remoulade .results import Results
4
+ from remoulade .results .backends import LocalBackend
5
+ from opentelemetry .instrumentation .remoulade import RemouladeInstrumentor
6
+ from opentelemetry .test .test_base import TestBase
7
+ from opentelemetry .trace import SpanKind
8
+
9
+
10
+
11
+ @remoulade .actor
12
+ def actor_multiply (x , y ):
13
+ return x * y
14
+
15
+
16
+ class TestRemouladeInstrumentation (TestBase ):
17
+ def setUp (self ):
18
+ super ().setUp ()
19
+
20
+ broker = LocalBroker ()
21
+
22
+ # Should a backend be added to wait for the result ?
23
+ # result_backend = LocalBackend()
24
+ # broker.add_middleware(Results(backend=result_backend))
25
+ remoulade .set_broker (broker )
26
+ RemouladeInstrumentor ().instrument ()
27
+
28
+ broker .declare_actor (actor_multiply )
29
+
30
+ def test_message (self ):
31
+ message = actor_multiply .send (1 , 2 )
32
+ # result = message.result.get(block=True)
33
+
34
+ spans = self .sorted_spans (self .memory_exporter .get_finished_spans ())
35
+ self .assertEqual (len (spans ), 2 )
36
+
37
+ consumer , producer = spans
38
+
39
+ self .assertEqual (consumer .name , "remoulade/process" )
40
+ self .assertEqual (consumer .kind , SpanKind .CONSUMER )
41
+
42
+ self .assertEqual (producer .name , "remoulade/send" )
43
+ self .assertEqual (producer .kind , SpanKind .PRODUCER )
44
+
45
+ self .assertNotEqual (consumer .parent , producer .context )
46
+ self .assertEqual (consumer .parent .span_id , producer .context .span_id )
47
+ self .assertEqual (consumer .context .trace_id , producer .context .trace_id )
0 commit comments