Both RTMA and METAR5 schemas + clients + workers were defined but never had a consumer. `find_nearest_rtma/3` and `recent_surface_obs/3` existed in `Microwaveprop.Weather` with zero callers cluster-wide; RtmaFetchWorker had test coverage but was never enqueued anywhere; no IEM 5-min ASOS fetcher was ever written. The tables sat empty in prod and the recalibrate audit was permanently flagging them BROKEN even though the empty state was the steady state. Drop the lot — schemas, clients, workers, queue config, Req.Test stubs, audit checks, and the per-table unique tests in the observation-changesets suite. New migration drops the now-unreferenced `rtma_observations` and `metar_5min_observations` tables (both 0 rows in prod). Trim the `:rtma` slot out of `backfill_only_queues` in runtime.exs so Oban Pro's Smart engine stops trying to manage a queue with no producer. Audit thresholds reset on the surviving NARR check: drop the "WARN < 5000 absolute rows" rule that didn't account for NarrFetchWorker's 0.13° spatial dedup, and point remediation at the existing BackfillEnqueueWorker cron instead of the dev-only `mix narr.backfill` task. scripts/recalibrate_algo.py: ROW_COUNT_SOURCES + DATA_GAP_SQL + DATA_GAP_RULES all stop referencing the dropped tables.
131 lines
5.7 KiB
Elixir
131 lines
5.7 KiB
Elixir
import Config
|
|
|
|
alias Ecto.Adapters.SQL.Sandbox
|
|
alias Microwaveprop.Qrz.Client
|
|
|
|
# Only in tests, remove the complexity from the password hashing algorithm
|
|
config :bcrypt_elixir, :log_rounds, 1
|
|
|
|
# Print only warnings and errors during test
|
|
config :logger, level: :warning
|
|
|
|
config :microwaveprop, Client,
|
|
username: "testuser",
|
|
password: "testpass",
|
|
agent: "microwaveprop-test/1.0",
|
|
plug: {Req.Test, Client},
|
|
retry: false
|
|
|
|
# Read-only secondary repo for aprs.me. Configured here so the app boots
|
|
# under MIX_ENV=test, but uses the SQL.Sandbox in :manual mode so tests
|
|
# that don't touch APRS data don't have to check the DB out. Tests that
|
|
# do query the AprsRepo must call `Ecto.Adapters.SQL.Sandbox.checkout/1`
|
|
# explicitly.
|
|
config :microwaveprop, Microwaveprop.AprsRepo,
|
|
username: "postgres",
|
|
password: "postgres",
|
|
hostname: "localhost",
|
|
database: "aprsme_test#{System.get_env("MIX_TEST_PARTITION")}",
|
|
pool: Sandbox,
|
|
pool_size: 2,
|
|
ownership_timeout: 60_000,
|
|
timeout: 60_000
|
|
|
|
config :microwaveprop, Microwaveprop.Geocoder,
|
|
plug: {Req.Test, Microwaveprop.Geocoder},
|
|
retry: false
|
|
|
|
# In test we don't send emails
|
|
config :microwaveprop, Microwaveprop.Mailer, adapter: Swoosh.Adapters.Test
|
|
config :microwaveprop, Microwaveprop.Qrz, cache_ttl_hours: 0
|
|
|
|
# Configure your database
|
|
#
|
|
# The MIX_TEST_PARTITION environment variable can be used
|
|
# to provide built-in test partitioning in CI environment.
|
|
# Run `mix help test` for more information.
|
|
config :microwaveprop, Microwaveprop.Repo,
|
|
username: "postgres",
|
|
password: "postgres",
|
|
hostname: "localhost",
|
|
database: "microwaveprop_test#{System.get_env("MIX_TEST_PARTITION")}",
|
|
pool: Sandbox,
|
|
pool_size: System.schedulers_online() * 2,
|
|
ownership_timeout: 60_000,
|
|
timeout: 60_000
|
|
|
|
# We don't run a server during test. If one is required,
|
|
# you can enable the server option below.
|
|
config :microwaveprop, MicrowavepropWeb.Endpoint,
|
|
http: [ip: {127, 0, 0, 1}, port: 4002],
|
|
secret_key_base: "f7KbnwUezGrPtrv/67l6Wi+W9/+wOqwFG5QJ/ZLs24cVM1gg2lBswZwrKuyWsBAZ",
|
|
server: false
|
|
|
|
# Run Oban jobs inline during tests
|
|
config :microwaveprop, Oban, testing: :inline
|
|
|
|
# Skip the registration-time QRZ lookup in tests — it needs a Mox stub
|
|
# that isn't set up across the test suite, and the worker is exercised
|
|
# directly in its own dedicated test.
|
|
config :microwaveprop, :enable_home_qth_lookup, false
|
|
|
|
# MetricsLogSuppressionTest hits GET /metrics and asserts no "Sent 200"
|
|
# log line; that path needs PromEx alive to return a 200. We can't
|
|
# blanket-disable PromEx. Instead, toggle off the Oban-queue poller
|
|
# below — its 5 s telemetry measurement issues an Ecto query from a
|
|
# process that doesn't hold a sandbox connection and crashes with
|
|
# DBConnection.OwnershipError, spamming the test log.
|
|
config :microwaveprop, :prom_ex_include_oban_plugin, false
|
|
|
|
# Score files land under a per-run tmp directory so replace_scores tests
|
|
# don't write into a shared location (and we can assert on the file
|
|
# contents from inside tests).
|
|
config :microwaveprop,
|
|
:propagation_scores_dir,
|
|
Path.join(System.tmp_dir!(), "microwaveprop_test_scores_#{System.unique_integer([:positive])}")
|
|
|
|
# Don't open an outbound MQTT connection from `mix test`. The
|
|
# Pskr.Aggregator still starts (so unit tests can drive it), but
|
|
# Pskr.Client is gated off here.
|
|
config :microwaveprop, :pskr_mqtt_enabled, false
|
|
|
|
# Skip the Overpass road-proximity HTTP call in tests — the rover live
|
|
# test exercises the full Calculate pipeline and we don't want it
|
|
# reaching out to overpass-api.de.
|
|
config :microwaveprop, :rover_road_proximity_enabled, false
|
|
config :microwaveprop, cache_contact_count: false
|
|
config :microwaveprop, cache_contact_map: false
|
|
config :microwaveprop, elevation_req_options: [plug: {Req.Test, Microwaveprop.Terrain.ElevationClient}, retry: false]
|
|
config :microwaveprop, gefs_req_options: [plug: {Req.Test, Microwaveprop.Weather.GefsClient}, retry: false]
|
|
config :microwaveprop, giro_req_options: [plug: {Req.Test, Microwaveprop.Ionosphere.GiroClient}, retry: false]
|
|
|
|
# Default the HRRR cycle freshness probe to "always available" in tests.
|
|
# Individual cases that exercise the fallback path override via
|
|
# `Application.put_env/3` in their setup.
|
|
config :microwaveprop, hrrr_cycle_available_fn: fn _run_time -> true end
|
|
config :microwaveprop, hrrr_req_options: [plug: {Req.Test, Microwaveprop.Weather.HrrrClient}, retry: false]
|
|
config :microwaveprop, iem_rate_limiter_interval_ms: 0
|
|
config :microwaveprop, iem_req_options: [plug: {Req.Test, Microwaveprop.Weather.IemClient}, retry: false]
|
|
config :microwaveprop, narr_req_options: [plug: {Req.Test, Microwaveprop.Weather.NarrClient}, retry: false]
|
|
|
|
# Route HTTP requests through Req.Test stubs
|
|
config :microwaveprop, nexrad_req_options: [plug: {Req.Test, Microwaveprop.Weather.NexradClient}, retry: false]
|
|
config :microwaveprop, solar_req_options: [plug: {Req.Test, Microwaveprop.Weather.SolarClient}]
|
|
config :microwaveprop, srtm_req_options: [plug: {Req.Test, Microwaveprop.Terrain.Srtm}, retry: false]
|
|
config :microwaveprop, start_freshness_monitor: false
|
|
config :microwaveprop, swpc_req_options: [plug: {Req.Test, Microwaveprop.SpaceWeather.SwpcClient}, retry: false]
|
|
config :microwaveprop, uwyo_req_options: [plug: {Req.Test, Microwaveprop.Weather.UwyoSoundingClient}, retry: false]
|
|
|
|
# Initialize plugs at runtime for faster test compilation
|
|
config :phoenix, :plug_init_mode, :runtime
|
|
|
|
# Sort query params output of verified routes for robust url comparisons
|
|
config :phoenix,
|
|
sort_verified_routes_query_params: true
|
|
|
|
# Enable helpful, but potentially expensive runtime checks
|
|
config :phoenix_live_view,
|
|
enable_expensive_runtime_checks: true
|
|
|
|
# Disable swoosh api client as it is only required for production adapters
|
|
config :swoosh, :api_client, false
|