Add PromEx with Application/BEAM/Phoenix/LiveView/Ecto/Oban plugins plus a custom plugin that bridges existing Towerops Oban/Redis telemetry events. The metrics HTTP server runs isolated on port 9568 so scrape traffic never traverses the public Traefik IngressRoute. The pod template carries prometheus.io annotations (scrape, port, path, job) so the external Prometheus on 10.0.15.31 discovers each pod through the existing kubernetes-pods scrape job (apiserver-proxy).
115 lines
3.8 KiB
Elixir
115 lines
3.8 KiB
Elixir
import Config
|
|
|
|
alias Ecto.Adapters.SQL.Sandbox
|
|
|
|
# Only in tests, remove the complexity from the password hashing algorithm
|
|
config :argon2_elixir,
|
|
t_cost: 1,
|
|
m_cost: 8
|
|
|
|
config :error_tracker, enabled: false
|
|
|
|
# Suppress log output during tests (tests that need logs use capture_log)
|
|
config :logger, :default_handler, false
|
|
config :logger, level: :error
|
|
|
|
# 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
|
|
|
|
# Disable Oban job processing in tests (use testing mode)
|
|
config :towerops, Oban,
|
|
repo: Towerops.Repo,
|
|
testing: :manual,
|
|
queues: false,
|
|
plugins: false
|
|
|
|
# Configure your database
|
|
#
|
|
|
|
# In test we don't send emails
|
|
# 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 :towerops, Towerops.Mailer, adapter: Swoosh.Adapters.Test
|
|
|
|
# Disable PromEx HTTP server in test — avoids port conflicts under parallel runs.
|
|
config :towerops, Towerops.PromEx,
|
|
disabled: true,
|
|
manual_metrics_start_delay: :no_delay,
|
|
drop_metrics_groups: [],
|
|
grafana: :disabled,
|
|
metrics_server: :disabled
|
|
|
|
# MIB upload directory for tests — points at a writable tmp dir so
|
|
#
|
|
# the MibController upload/delete flows can actually be exercised.
|
|
# In CI, DATABASE_URL is set and will be used automatically by Ecto.
|
|
# Locally, fall back to individual connection parameters.
|
|
config :towerops, :mib_dir, Path.join(System.tmp_dir!(), "towerops-test-mibs")
|
|
|
|
if database_url = System.get_env("DATABASE_URL") do
|
|
config :towerops, Towerops.Repo,
|
|
url: database_url,
|
|
pool: Sandbox,
|
|
pool_size: System.schedulers_online() * 2
|
|
else
|
|
config :towerops, Towerops.Repo,
|
|
username: "postgres",
|
|
password: "postgres",
|
|
hostname: "localhost",
|
|
database: "towerops_test#{System.get_env("MIX_TEST_PARTITION")}",
|
|
pool: Sandbox,
|
|
pool_size: System.schedulers_online() * 2
|
|
end
|
|
|
|
# Configure Cloak encryption for testing
|
|
# Use a fixed test key (same as dev for simplicity)
|
|
config :towerops, Towerops.Vault,
|
|
ciphers: [
|
|
default: {
|
|
Cloak.Ciphers.AES.GCM,
|
|
# Test key - same as dev for consistency
|
|
tag: "AES.GCM.V1", key: Base.decode64!("nQWmgQYhoCNXA3PAxwriKxLyPHAOWH9VgpLkBOXrowM=")
|
|
}
|
|
]
|
|
|
|
# We don't run a server during test. If one is required,
|
|
# you can enable the server option below.
|
|
config :towerops, ToweropsWeb.Endpoint,
|
|
http: [ip: {127, 0, 0, 1}, port: 4002],
|
|
secret_key_base: "XDSSqVUtRXUjEfzxefIAaPIzBfonpNMOrCRyP1a0kjPzzyOpVNSRmMBVae/bwTqj",
|
|
server: false
|
|
|
|
# Webhook secret for CI-triggered agent updates
|
|
config :towerops, :agent_webhook_secret, "test-webhook-secret"
|
|
|
|
# Set environment identifier for runtime checks
|
|
config :towerops, :env, :test
|
|
|
|
config :towerops,
|
|
ping_module: Towerops.Monitoring.PingMock,
|
|
poller_module: Towerops.Snmp.PollerMock,
|
|
snmp_adapter: Towerops.Snmp.SnmpMock,
|
|
rate_limit_redis_client: Towerops.RateLimit.RedisClientMock,
|
|
sql_sandbox: true,
|
|
# Disable rate limiting in tests to avoid blocking concurrent test requests
|
|
rate_limiting_enabled: false,
|
|
# Reduce debounce delay in tests for faster test execution (50ms vs 500ms in prod)
|
|
agent_channel_debounce_ms: 50,
|
|
# Reduce poll interval in tests for faster test execution (100ms vs 60s in prod)
|
|
agent_poll_interval_ms: 100,
|
|
# Reduce device deletion delay for faster tests (10ms vs 500ms in prod)
|
|
device_deletion_delay_ms: 10,
|
|
# Stripe test configuration
|
|
stripe_product_id: "prod_test"
|