Merge pull request #1 from relayr/trace-id-leading-zeros

Use leading zeros in trace-id format for text headers
diff --git a/src/jaeger_passage_span_context.erl b/src/jaeger_passage_span_context.erl
index 7ce4e94..9f0eac8 100644
--- a/src/jaeger_passage_span_context.erl
+++ b/src/jaeger_passage_span_context.erl
@@ -229,7 +229,7 @@
 state_to_string(State) ->
     #?STATE{trace_id = TraceId, span_id = SpanId} = State,
     Flags = get_flags_from_state(State),
-    list_to_binary(io_lib:format("~.16b:~.16b:~.16b:~.16b",
+    list_to_binary(io_lib:format("~32.16.0b:~16.16.0b:~.16b:~.16b",
                                  [TraceId, SpanId, 0, Flags])).
 
 -spec state_from_string(binary()) -> #?STATE{}.
diff --git a/test/jaeger_passage_span_context_tests.erl b/test/jaeger_passage_span_context_tests.erl
index d128c75..4656bca 100644
--- a/test/jaeger_passage_span_context_tests.erl
+++ b/test/jaeger_passage_span_context_tests.erl
@@ -56,9 +56,11 @@
                Span0 = passage:start_span(foo, [{tracer, tracer}]),
                Span1 = passage:set_baggage_items(Span0, #{<<"a">> => <<"b">>}),
 
-               #{<<"uber-trace-id">> := _, <<"uberctx-a">> := _} = Injected =
+               #{<<"uber-trace-id">> := TraceId, <<"uberctx-a">> := _} = Injected =
                    passage:inject_span(Span1, http_header, fun maps:put/3, #{}),
 
+               ?assertEqual(match, re:run(TraceId, <<"^[0-9a-f]{32}:[0-9a-f]{16}:0:[0-3]$">>, [{capture, none}])),
+
                Extracted =
                    passage:extract_span(
                      tracer, http_header,