Skip to content

Commit dfb9ef5

Browse files
committed
Merge branch 'telemetry'
2 parents 4011f4e + 3f0708b commit dfb9ef5

File tree

13 files changed

+554
-107
lines changed

13 files changed

+554
-107
lines changed

apps/elixir_ls_debugger/lib/debugger/output.ex

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,20 @@ defmodule ElixirLS.Debugger.Output do
2121
GenServer.call(server, {:send_response, request_packet, response_body})
2222
end
2323

24-
def send_error_response(server \\ __MODULE__, request_packet, message, format, variables) do
25-
GenServer.call(server, {:send_error_response, request_packet, message, format, variables})
24+
def send_error_response(
25+
server \\ __MODULE__,
26+
request_packet,
27+
message,
28+
format,
29+
variables,
30+
send_telemetry,
31+
show_user
32+
) do
33+
GenServer.call(
34+
server,
35+
{:send_error_response, request_packet, message, format, variables, send_telemetry,
36+
show_user}
37+
)
2638
end
2739

2840
def send_event(server \\ __MODULE__, event, body) do
@@ -48,6 +60,27 @@ defmodule ElixirLS.Debugger.Output do
4860
send_event(server, "output", %{"category" => "stderr", "output" => maybe_append_newline(str)})
4961
end
5062

63+
def telemetry(server \\ __MODULE__, event, properties, measurements)
64+
when is_binary(event) and is_map(properties) and is_map(measurements) do
65+
common_properties = %{
66+
"elixir_ls.elixir_version" => System.version(),
67+
"elixir_ls.otp_release" => System.otp_release(),
68+
"elixir_ls.erts_version" => Application.spec(:erts, :vsn),
69+
"elixir_ls.mix_env" => Mix.env(),
70+
"elixir_ls.mix_target" => Mix.target()
71+
}
72+
73+
send_event(server, "output", %{
74+
"category" => "telemetry",
75+
"output" => event,
76+
"data" => %{
77+
"name" => event,
78+
"properties" => Map.merge(common_properties, properties),
79+
"measurements" => measurements
80+
}
81+
})
82+
end
83+
5184
defp maybe_append_newline(message) do
5285
unless String.ends_with?(message, "\n") do
5386
message <> "\n"
@@ -69,7 +102,12 @@ defmodule ElixirLS.Debugger.Output do
69102
{:reply, res, seq + 1}
70103
end
71104

72-
def handle_call({:send_error_response, request_packet, message, format, variables}, _from, seq) do
105+
def handle_call(
106+
{:send_error_response, request_packet, message, format, variables, send_telemetry,
107+
show_user},
108+
_from,
109+
seq
110+
) do
73111
res =
74112
WireProtocol.send(
75113
error_response(
@@ -78,7 +116,9 @@ defmodule ElixirLS.Debugger.Output do
78116
request_packet["command"],
79117
message,
80118
format,
81-
variables
119+
variables,
120+
send_telemetry,
121+
show_user
82122
)
83123
)
84124

apps/elixir_ls_debugger/lib/debugger/protocol.basic.ex

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,16 @@ defmodule ElixirLS.Debugger.Protocol.Basic do
3636
end
3737
end
3838

39-
defmacro error_response(seq, request_seq, command, message, format, variables) do
39+
defmacro error_response(
40+
seq,
41+
request_seq,
42+
command,
43+
message,
44+
format,
45+
variables,
46+
send_telemetry,
47+
show_user
48+
) do
4049
quote do
4150
%{
4251
"type" => "response",
@@ -50,8 +59,8 @@ defmodule ElixirLS.Debugger.Protocol.Basic do
5059
"id" => unquote(seq),
5160
"format" => unquote(format),
5261
"variables" => unquote(variables),
53-
"showUser" => false,
54-
"sendTelemetry" => false
62+
"showUser" => unquote(show_user),
63+
"sendTelemetry" => unquote(send_telemetry)
5564
}
5665
}
5766
}

0 commit comments

Comments
 (0)