test: HistoricalLoader RF path + low-zoom heat map paths
This commit is contained in:
parent
c8a182a3b9
commit
c264a9bc3d
1 changed files with 77 additions and 0 deletions
|
|
@ -312,6 +312,83 @@ defmodule AprsmeWeb.MapLive.HistoricalLoaderTest do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "tracking a callsign drives maybe_include_latest_packet and RF path loading" do
|
||||||
|
test "first batch with a tracked callsign + packets triggers RF path scheduling" do
|
||||||
|
now = DateTime.utc_now()
|
||||||
|
|
||||||
|
Mox.stub(Aprsme.PacketsMock, :get_recent_packets, fn _opts ->
|
||||||
|
[
|
||||||
|
%{
|
||||||
|
id: "rf-1",
|
||||||
|
sender: "RFME-1",
|
||||||
|
base_callsign: "RFME",
|
||||||
|
ssid: "1",
|
||||||
|
lat: 33.5,
|
||||||
|
lon: -96.5,
|
||||||
|
has_position: true,
|
||||||
|
symbol_table_id: "/",
|
||||||
|
symbol_code: ">",
|
||||||
|
received_at: now,
|
||||||
|
path: "K5ABC-1*,WIDE1-1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
end)
|
||||||
|
|
||||||
|
socket =
|
||||||
|
build_socket(%{
|
||||||
|
map_bounds: %{north: 34.0, south: 32.0, east: -95.0, west: -97.0},
|
||||||
|
map_zoom: 10,
|
||||||
|
tracked_callsign: "RFME-1",
|
||||||
|
historical_loading: true,
|
||||||
|
loading_generation: 1
|
||||||
|
})
|
||||||
|
|
||||||
|
_ = HistoricalLoader.load_historical_batch(socket, 0, nil)
|
||||||
|
# RF path scheduling sends a :load_rf_path_station_packets after 100ms.
|
||||||
|
# Wait a bit, then check the mailbox.
|
||||||
|
Process.sleep(120)
|
||||||
|
assert_received {:load_rf_path_station_packets, _stations}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "low zoom with packets path" do
|
||||||
|
test "low zoom accumulates historical_packets without pushing markers" do
|
||||||
|
now = DateTime.utc_now()
|
||||||
|
|
||||||
|
Mox.stub(Aprsme.PacketsMock, :get_recent_packets, fn _opts ->
|
||||||
|
[
|
||||||
|
%{
|
||||||
|
id: "lz-1",
|
||||||
|
sender: "LZ1",
|
||||||
|
base_callsign: "LZ",
|
||||||
|
ssid: "1",
|
||||||
|
lat: 33.5,
|
||||||
|
lon: -96.5,
|
||||||
|
has_position: true,
|
||||||
|
symbol_table_id: "/",
|
||||||
|
symbol_code: ">",
|
||||||
|
received_at: now,
|
||||||
|
path: ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
end)
|
||||||
|
|
||||||
|
socket =
|
||||||
|
build_socket(%{
|
||||||
|
map_bounds: %{north: 34.0, south: 32.0, east: -95.0, west: -97.0},
|
||||||
|
# zoom <= 8 uses heat map path.
|
||||||
|
map_zoom: 5,
|
||||||
|
historical_loading: true,
|
||||||
|
loading_generation: 1,
|
||||||
|
total_batches: 3
|
||||||
|
})
|
||||||
|
|
||||||
|
result = HistoricalLoader.load_historical_batch(socket, 0, nil)
|
||||||
|
# Packet should be merged into historical_packets map.
|
||||||
|
assert map_size(result.assigns.historical_packets) >= 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "max packets-for-zoom limit" do
|
describe "max packets-for-zoom limit" do
|
||||||
test "finishes loading when batch_offset * batch_size exceeds zoom limit" do
|
test "finishes loading when batch_offset * batch_size exceeds zoom limit" do
|
||||||
# At zoom 10, limit=1500, batch_size=500. A batch_offset of 3 exceeds
|
# At zoom 10, limit=1500, batch_size=500. A batch_offset of 3 exceeds
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue