commit | 5c7dec08745b7367c5cad74fe5ce2e698a98b94c | [log] [tgz] |
---|---|---|
author | Takeru Ohta <phjgt308@gmail.com> | Sat Oct 28 04:12:52 2017 +0900 |
committer | Takeru Ohta <phjgt308@gmail.com> | Sat Oct 28 04:29:04 2017 +0900 |
tree | 9a5dbe9f8da4c35f8726d9db093322177750f138 | |
parent | 4ec915c7d17bba8757e01f4bcce6b8ff5bea57fa [diff] |
Merge `start_root_span` into `start_span`
OpenTraceing API for Erlang
%% Registers `tracer` Context = passage_span_context_null, Sampler = passage_sampler_all:new(), Reporter = passage_reporter_process:new(self(), span), ok = passage_tracer_registry:register(tracer, Context, Sampler, Reporter), %% Starts a root span RootSpan = passage:start_span(example_root, [{tracer, tracer}]), %% Starts a child span ChildSpan = passage:start_span(example_child, [{child_of, RootSpan}]), %% Finishes spans passage:finish_span(ChildSpan), passage:finish_span(RootSpan), %% Receives the finished spans receive {span, FinishedChildSpan} -> ok end, receive {span, FinishedRootSpan} -> ok end.
%% Registers `tracer` Context = passage_span_context_null, Sampler = passage_sampler_all:new(), Reporter = passage_reporter_process:new(self(), span), ok = passage_tracer_registry:register(tracer, Context, Sampler, Reporter), %% Starts a root span ok = passage_pd:start_span(example_root, [{tracer, tracer}]), %% Starts a child span ok = passage_pd:start_span(example_child), %% Finishes spans passage_pd:finish_span(), % child passage_pd:finish_span(), % root %% Receives the finished spans receive {span, FinishedChildSpan} -> ok end, receive {span, FinishedRootSpan} -> ok end.
-module(example). -compile({parse_transform, passage_transform}). % Enables `passage_transform' -passage_trace([{tags, #{foo => bar}}, {eval_tags, #{size => "byte_size(Bin)"}}]). -spec foo(binary()) -> binary(). foo(Bin) -> <<"foo", Bin/binary>>.
The above foo
function will be transformed as follows:
foo(Bin) -> try passage_pd:start_span( 'example:foo/1', [{tags, #{application => example, module => example, lien => 7, foo => bar}}]), passage_pd:set_tags(#{process => self(), size => byte_size(Bin)}), <<"foo", Bin/binary>> after passage_pd:finish_span() end.