aprs.me/test/aprsme/cluster/topology_test.exs
Graham McIntire 094a50d183
Add tests for 14 modules with 0% coverage
Adds test files for:
- AprsIsConnection (83% coverage)
- Cluster.PacketDistributor (100%)
- Cluster.PacketReceiver (100%)
- Cluster.Topology (100%)
- ConnectionMonitor (78%)
- DbOptimizer (90%)
- DynamicSupervisor (100%)
- ErrorHandler (89%)
- MigrationLock (90%)
- MockHelpers (100%)
- PacketConsumerPool (90%)
- PacketCounter (100%)
- PacketPipelineSetup (75%)
- PacketPipelineSupervisor (100%)

Uses stub repo modules to test MigrationLock lock contention
paths without real multi-session PostgreSQL advisory lock
contention.
2026-02-09 17:19:50 -06:00

51 lines
1.5 KiB
Elixir

defmodule Aprsme.Cluster.TopologyTest do
use ExUnit.Case, async: false
alias Aprsme.Cluster.Topology
alias Cluster.Strategy.Gossip
setup do
on_exit(fn ->
Application.put_env(:aprsme, :cluster_enabled, false)
Application.put_env(:libcluster, :topologies, [])
end)
:ok
end
describe "start_link/1" do
test "returns :ignore" do
assert :ignore = Topology.start_link([])
end
end
describe "child_spec/1" do
test "returns no-op spec when cluster is disabled" do
Application.put_env(:aprsme, :cluster_enabled, false)
spec = Topology.child_spec([])
assert %{id: Topology, start: {Topology, :start_link, [[]]}, type: :worker} = spec
end
test "returns no-op spec when cluster is enabled but no topologies configured" do
Application.put_env(:aprsme, :cluster_enabled, true)
Application.put_env(:libcluster, :topologies, [])
spec = Topology.child_spec([])
assert %{id: Topology, start: {Topology, :start_link, [[]]}, type: :worker} = spec
end
test "returns Cluster.Supervisor tuple when cluster is enabled with valid topologies" do
Application.put_env(:aprsme, :cluster_enabled, true)
Application.put_env(:libcluster, :topologies, gossip: [strategy: Gossip])
spec = Topology.child_spec([])
assert {Cluster.Supervisor, [topologies, supervisor_opts]} = spec
assert topologies == [gossip: [strategy: Gossip]]
assert Keyword.get(supervisor_opts, :name) == Aprsme.ClusterSupervisor
end
end
end