@@ -11,12 +11,12 @@ defmodule Realtime.PromEx.Plugins.PhoenixTest do
1111 end
1212 end
1313
14- describe "pooling metrics" do
15- setup do
16- start_supervised! ( MetricsTest )
17- % { tenant: Containers . checkout_tenant ( run_migrations: true ) }
18- end
14+ setup do
15+ start_supervised! ( MetricsTest )
16+ % { tenant: Containers . checkout_tenant ( run_migrations: true ) }
17+ end
1918
19+ describe "pooling metrics" do
2020 test "number of connections" , % { tenant: tenant } do
2121 { :ok , token } = token_valid ( tenant , "anon" , % { } )
2222
@@ -37,17 +37,49 @@ defmodule Realtime.PromEx.Plugins.PhoenixTest do
3737 )
3838
3939 Process . sleep ( 200 )
40- assert metric_value ( ) >= 2
40+ assert metric_value ( ~r/ phoenix_connections_total\s (?<number>\d +)/ ) >= 2
41+ end
42+ end
43+
44+ describe "event metrics" do
45+ test "socket connected" , % { tenant: tenant } do
46+ { :ok , token } = token_valid ( tenant , "anon" , % { } )
47+
48+ { :ok , _ } =
49+ WebsocketClient . connect (
50+ self ( ) ,
51+ uri ( tenant , Phoenix.Socket.V1.JSONSerializer , 4002 ) ,
52+ Phoenix.Socket.V1.JSONSerializer ,
53+ [ { "x-api-key" , token } ]
54+ )
55+
56+ { :ok , _ } =
57+ WebsocketClient . connect (
58+ self ( ) ,
59+ uri ( tenant , RealtimeWeb.Socket.V2Serializer , 4002 ) ,
60+ RealtimeWeb.Socket.V2Serializer ,
61+ [ { "x-api-key" , token } ]
62+ )
63+
64+ Process . sleep ( 200 )
65+
66+ assert metric_value (
67+ ~r/ phoenix_socket_connected_duration_milliseconds_count{endpoint="RealtimeWeb.Endpoint",result="ok",serializer="Elixir.Phoenix.Socket.V1.JSONSerializer",transport="websocket"}\s (?<number>\d +)/
68+ ) == 1
69+
70+ assert metric_value (
71+ ~r/ phoenix_socket_connected_duration_milliseconds_count{endpoint="RealtimeWeb.Endpoint",result="ok",serializer="Elixir.RealtimeWeb.Socket.V2Serializer",transport="websocket"}\s (?<number>\d +)/
72+ ) == 1
4173 end
4274 end
4375
44- defp metric_value ( ) do
76+ defp metric_value ( pattern ) do
4577 PromEx . get_metrics ( MetricsTest )
4678 |> String . split ( "\n " , trim: true )
4779 |> Enum . find_value (
4880 "0" ,
4981 fn item ->
50- case Regex . run ( ~r / phoenix_connections_total \s (?<number> \d +) / , item , capture: [ "number" ] ) do
82+ case Regex . run ( pattern , item , capture: [ "number" ] ) do
5183 [ number ] -> number
5284 _ -> false
5385 end
0 commit comments