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