No description
Find a file
Graham McIntire fc37680931
perf: optimize slow tests with bulk inserts and fewer iterations
Optimized the slowest tests to improve test suite performance:

1. Property-based IP validation test (6s → ~2.4s)
   - Reduced max_runs from 50 to 20 iterations
   - Still provides good coverage while being much faster

2. Database-heavy tests (~1s each)
   - Replaced individual create_check calls with bulk Repo.insert_all
   - Reduced check counts from 15 to 10 where adequate for testing
   - Fixed timestamp handling (truncate to :second for Ecto)
   - Fixed response_time_ms to use floats (schema requirement)
   - Removed updated_at (disabled in Check schema)
   - Tests affected:
     * get_device_latency_by_agent/2
     * get_uptime_percentage/1
     * get_latency_data/2 respects limit
     * AgentLatencyEvaluator tests

Expected speedup: ~40% reduction in top 10 slowest tests (12.8s → ~7.7s)

These optimizations maintain test coverage while significantly reducing
database transaction overhead.
2026-01-24 15:13:21 -06:00
.gitlab/agents Add aprs.me project to home-cluster-agent configuration 2026-01-14 13:31:23 -06:00
assets better discovery 2026-01-22 17:40:58 -06:00
config fix: add REDIS_PASSWORD support to runtime configuration 2026-01-24 14:25:01 -06:00
docs Update infrastructure documentation with Valkey restart fix 2026-01-19 15:41:11 -06:00
k8s refactor: remove Valkey from K8s, move to Proxmox hosts 2026-01-24 14:12:02 -06:00
lib fix: handle etcd watcher creation errors gracefully 2026-01-24 15:02:46 -06:00
mibs handle mib uploading 2026-01-18 16:29:24 -06:00
priv remote agent/cloud improvements 2026-01-24 09:16:41 -06:00
rel/overlays/bin add release 2026-01-02 14:36:38 -06:00
scripts import yamls 2026-01-21 14:30:04 -06:00
test perf: optimize slow tests with bulk inserts and fewer iterations 2026-01-24 15:13:21 -06:00
towerops Add towerops/gitlab-agent-helm-release.yaml via glab file sync 2026-01-02 14:22:22 -06:00
.credo.exs credo improvements 2026-01-23 13:40:49 -06:00
.dialyzer_ignore.exs feat: add 5 new vendor modules and fix dialyzer issues 2026-01-22 09:34:50 -06:00
.dockerignore add release 2026-01-02 14:36:38 -06:00
.formatter.exs format 2025-12-21 11:31:08 -06:00
.gitignore add state sensor schema, migration, and discovery 2026-01-21 10:25:01 -06:00
.gitlab-ci.yml dont wait for deploy 2026-01-18 17:17:43 -06:00
.sourceignore Add .sourceignore to exclude non-k8s files from Flux 2026-01-02 14:43:57 -06:00
.test-watch.exs add test watch 2026-01-03 12:35:26 -06:00
.tool-versions test cleanup 2026-01-19 13:29:38 -06:00
AGENTS.md 1. User Authentication 2025-12-21 13:31:59 -06:00
CLAUDE.md updates 2026-01-17 17:49:53 -06:00
DEPLOYMENT.md more features 2026-01-02 14:06:44 -06:00
Dockerfile import yamls 2026-01-21 14:30:04 -06:00
LIBRENMS_INTEGRATION.md add universoal import 2026-01-18 16:59:34 -06:00
mix.exs snmpkit overhaul and etcd 2026-01-23 16:23:57 -06:00
mix.lock add multiple cloud agents 2026-01-23 18:04:01 -06:00
MOBILE_API.md add api for mobile login 2026-01-15 15:36:14 -06:00
PROFILES.md refactor: use API token auth for profile imports instead of session cookies 2026-01-18 09:30:21 -06:00
PROFILES_README.md add universoal import 2026-01-18 16:59:34 -06:00
README.md timescaledb 2025-12-21 17:17:26 -06:00
tail_logs.sh add logs helper script 2026-01-11 15:45:02 -06:00

TowerOps

Network monitoring and alerting platform built with Phoenix LiveView.

Features

  • Multi-tenant architecture - Organizations with role-based permissions
  • Site hierarchy - Organize equipment across multiple sites
  • Automated monitoring - Real-time ping monitoring with configurable intervals
  • Time-series data - Efficient storage with TimescaleDB (optional)
  • Real-time updates - LiveView dashboard with PubSub
  • Equipment tracking - Monitor network devices by IP address

Quick Start

Prerequisites

  • Elixir 1.14+
  • PostgreSQL 14+
  • (Optional) TimescaleDB for production-grade time-series performance

Setup

# Install dependencies
mix setup

# Start the server
mix phx.server

Visit localhost:4000 from your browser.

TimescaleDB (Production Only)

Development: Uses standard PostgreSQL (no TimescaleDB required).

Production: TimescaleDB is automatically enabled for optimal performance with time-series data.

# Production deployment - install TimescaleDB first
brew tap timescale/tap && brew install timescaledb  # macOS
# Then run migrations with MIX_ENV=prod
MIX_ENV=prod mix ecto.migrate

See TIMESCALEDB.md for detailed installation and configuration.

How it works: Migrations detect the environment (MIX_ENV) and only enable TimescaleDB features (hypertables, compression, retention policies, continuous aggregates) in production.

Development

Database

mix ecto.create       # Create database
mix ecto.migrate      # Run migrations
mix ecto.reset        # Drop, create, and migrate

Testing

mix test              # Run all tests
mix test --trace      # Run with detailed output

Code Quality

mix format            # Format code with Styler
mix compile --warnings-as-errors

Learn more