diff --git a/lib/aprsme/connection_monitor.ex b/lib/aprsme/connection_monitor.ex index 487e095..6f9df5e 100644 --- a/lib/aprsme/connection_monitor.ex +++ b/lib/aprsme/connection_monitor.ex @@ -77,7 +77,7 @@ defmodule Aprsme.ConnectionMonitor do Get current node statistics """ def get_stats do - if cluster_enabled?() do + if cluster_enabled?() and Process.whereis(__MODULE__) != nil do GenServer.call(__MODULE__, :get_stats) else %{connections: 0, cpu: 0.0, memory: 0.0} diff --git a/test/aprsme/connection_monitor_test.exs b/test/aprsme/connection_monitor_test.exs index f0f4c18..a708f9f 100644 --- a/test/aprsme/connection_monitor_test.exs +++ b/test/aprsme/connection_monitor_test.exs @@ -17,6 +17,18 @@ defmodule Aprsme.ConnectionMonitorTest do end end + describe "cluster enabled without a running monitor" do + test "get_stats/0 returns default stats instead of crashing" do + Application.put_env(:aprsme, :cluster_enabled, true) + + on_exit(fn -> + Application.put_env(:aprsme, :cluster_enabled, false) + end) + + assert ConnectionMonitor.get_stats() == %{connections: 0, cpu: 0.0, memory: 0.0} + end + end + describe "cluster enabled" do setup do Application.put_env(:aprsme, :cluster_enabled, true)