diff --git a/lib/span.ex b/lib/span.ex index 95acdee..4552836 100644 --- a/lib/span.ex +++ b/lib/span.ex @@ -16,6 +16,7 @@ defmodule Spandex.Span do :private, :resource, :service, + :service_version, :services, :sql_query, :start, @@ -37,6 +38,7 @@ defmodule Spandex.Span do private: Keyword.t(), resource: atom() | String.t(), service: atom(), + service_version: String.t() | nil, services: Keyword.t() | nil, sql_query: Keyword.t() | nil, start: Spandex.timestamp(), @@ -57,6 +59,7 @@ defmodule Spandex.Span do private: :keyword, resource: [:atom, :string], service: :atom, + service_version: :string, services: :keyword, sql_query: :keyword, start: :integer, diff --git a/lib/tracer.ex b/lib/tracer.ex index a6242b7..9cdf3d3 100644 --- a/lib/tracer.ex +++ b/lib/tracer.ex @@ -51,6 +51,7 @@ defmodule Spandex.Tracer do service: :atom, disabled?: :boolean, env: :string, + service_version: :string, services: {:keyword, :atom}, strategy: :atom, sender: :atom, @@ -68,6 +69,7 @@ defmodule Spandex.Tracer do sender: "Once a trace is complete, it is sent using this module. Defaults to the `default_sender/0` of the selected adapter", service: "The default service name to use for spans declared without a service", + service_version: "The version of the service, used for tracking deployments.", disabled?: "Allows for wholesale disabling a tracer", env: "A name used to identify the environment name, e.g `prod` or `development`", services: "A mapping of service name to the default span types.", diff --git a/test/spandex_test.exs b/test/spandex_test.exs index 2466546..4406f95 100644 --- a/test/spandex_test.exs +++ b/test/spandex_test.exs @@ -25,6 +25,7 @@ defmodule Spandex.Test.SpandexTest do @span_opts [ service: :test_service, + service_version: "v1", resource: "test_resource" ] @@ -91,11 +92,11 @@ defmodule Spandex.Test.SpandexTest do assert {:error, :disabled} = Spandex.start_span("root_span", :disabled) end - test "inherits service and resource from parent span if not specified" do + test "inherits service, service_version and resource from parent span if not specified" do opts = @base_opts ++ @span_opts assert {:ok, %Trace{id: _trace_id}} = Spandex.start_trace("root_span", opts) assert {:ok, %Span{} = span} = Spandex.start_span("span_name", @base_opts) - assert %Span{name: "span_name", service: :test_service, resource: "test_resource"} = span + assert %Span{name: "span_name", service: :test_service, service_version: "v1", resource: "test_resource"} = span end test "returns an error if invalid options are specified" do