Commit graph

15 commits

Author SHA1 Message Date
fde6158251 ci: enable PostGIS in test workflows + add tests covering ~3pp more
CI: switch postgres service image to timescale/timescaledb-ha:pg17-all
which bundles PostGIS, fixing the lidar migration failure in PR and
production workflows.

Tests: ~30 new test files / extensions, ~600+ new tests, taking total
coverage from 70.42% to 73.4%. Targets included GraphQL resolver
unauthenticated paths, SNMP context queries (mempools, processors,
ip_addresses, neighbors, wireless_clients, arp_entries), worker
routing/lifecycle (alert notification, alert digest, weather sync,
job cleanup, cn_maestro, uisp, mikrotik backup, report worker),
SNMP monitoring executors (storage, interface, processor) end-to-end
via stub adapter, NetBox + Sonar sync integration paths, ConfigChanges
listing and correlator, organizations membership query, and live-view
smoke tests for org-scoped settings, integrations, maintenance, agent,
device deep paths, schedules. Property tests used for query
composition and pure helpers where natural.
2026-05-05 10:35:22 -05:00
6a98787cfa ci: enable Debian non-free in deb822 sources for snmp-mibs-downloader
Bookworm runner images use /etc/apt/sources.list.d/*.sources (deb822),
which the legacy sed didn't touch — non-free stayed off and
snmp-mibs-downloader was unavailable. Patch the Components: line in
deb822 sources too.
2026-05-01 13:16:50 -05:00
28dd7a6953 ci: bump _build cache key v2 -> v3
Stale cache contains compiled oban_pro 1.6.13 artifacts that conflict
with the vendored 1.7.0 source.
2026-05-01 13:09:57 -05:00
45413095a9 ci: guard sources.list sed against missing file
Newer Ubuntu/Debian runners use /etc/apt/sources.list.d/ and don't have
/etc/apt/sources.list, causing the sed to fail with exit code 2.
2026-04-29 14:34:27 -05:00
f648b6cb9b fix(ci): modify existing sources.list to add non-free instead of creating new file 2026-04-17 17:42:34 -05:00
bc7651cec4 fix(ci): detect OS before enabling non-free — Debian needs it, Ubuntu multiverse already enabled 2026-04-17 17:38:06 -05:00
a878fb7abd fix(ci): remove bad Debian sources entry — runner is Ubuntu Noble with multiverse already enabled 2026-04-17 17:32:32 -05:00
dd028f6157 fix(ci): enable Debian non-free repo for snmp-mibs-downloader; loosen flaky timing assertion to 500ms 2026-04-17 17:24:15 -05:00
84f38b6491 fix(ci): remove sudo from apt-get — Forgejo runner runs as root 2026-04-17 17:16:18 -05:00
efaf5558ff refactor: convert 6 Gleam modules to idiomatic Elixir with TDD (#196)
Phase 1: Foundation Types (100% complete)
- query_helpers: SQL LIKE sanitization with pipe operators
- numeric: Integer parsing with pattern matching guards
- result: Pure Elixir Result monad (map, and_then, unwrap_or)

Phase 2: Ecto Domain Types (100% complete)
- ip_address: IPv4/IPv6 validation using :inet directly
- mac_address: Multi-format MAC parsing (colon/hyphen/dot/compact)
- snmp_oid: OID parsing/manipulation with recursive pattern matching

All 198 tests passing across converted modules.
API changed from Gleam-style {:some/:none to idiomatic {:ok/:error.
Refactored parse_numeric_oid to use with statement, reducing nesting depth.

Reviewed-on: graham/towerops-web#196
2026-03-28 09:52:07 -05:00
e54ee75513 Rewrite protobuf encoding/decoding in pure Gleam with integrated validation (#104)
Replace the protobuf hex package (agent.pb.ex) and hand-written validator
(validator.ex) with a pure Gleam implementation: wire format primitives,
all 23 message types, encode/decode functions, and validation merged into
decode. Thin Elixir wrappers in agent.ex preserve the existing struct API.

- Wire format: varint, length-delimited, double (IEEE 754 via FFI), tag encode/decode
- Types: all proto3 message types as Gleam custom types with enums and oneof
- Decode: field-level parsing with integrated validation (UUID, IP, hostname, limits)
- Encode: proto3 default omission, bytes_tree concatenation, map/repeated fields
- Wrappers: Elixir structs with encode/decode delegating to Gleam, enum atom conversion
- Remove {:protobuf, "~> 0.12"} dependency

Reviewed-on: graham/towerops-web#104
2026-03-21 16:08:40 -05:00
6859525a1b Integrate Gleam into the build pipeline and rewrite three pure-function modules (#98)
Set up mix_gleam archive, gleam_stdlib, and gleeunit deps. Add Gleam
compiler to all Dockerfiles, CI workflows, nix shell, and .tool-versions.

Rewrite Numeric, QueryHelpers, and URLValidator from Elixir to Gleam with
full ExUnit test coverage. Update all callers to use the Gleam modules
directly via :towerops@module syntax. Remove duplicate sanitize_like/1
private functions in snmp.ex and trace.ex.

Reviewed-on: graham/towerops-web#98
2026-03-21 07:30:36 -05:00
b8e56ee88c ci-stop-tests-on-merge (#33)
Reviewed-on: graham/towerops-web#33
2026-03-15 18:21:59 -05:00
b183351933
ci: compile C NIF before tests to avoid warnings 2026-03-15 16:51:39 -05:00
9fffa28b00
ci: add ExUnit test workflow for pull requests 2026-03-15 16:41:35 -05:00