towerops/test
Graham McIntire 1c0cccdf25
feat: add UniFi channel-to-frequency dynamic conversion
Add TIER 3 MEDIUM priority dynamic frequency sensor discovery for Ubiquiti UniFi APs.
Implements channel-to-frequency conversion matching LibreNMS behavior exactly.

Implementation:
- discover_frequency_sensors/1: Orchestrates discovery with `with` for flat control flow
- fetch_channels/1: Walks channel OID (.1.3.6.1.4.1.41112.1.6.1.2.1.4)
- fetch_radio_names/1: Walks radio name OID (.1.3.6.1.4.1.41112.1.6.1.2.1.1)
- build_frequency_sensors/2: Converts channels to frequency sensors
- channel_to_frequency/1: Module attribute map lookup (29 Wi-Fi channels)
  - 2.4GHz: Channels 1-14 → 2412-2484 MHz
  - 5GHz: Channels 34-165 → 5170-5825 MHz
  - Unknown channels filtered out (return 0 → rejected)
- Frequency sensors added alongside static sensors
- Per-radio sensors with descriptive names (e.g., "Frequency (ng)")

Code Quality:
- Refactored to reduce cyclomatic complexity (map lookup vs case statements)
- Extracted helper functions to reduce nesting depth
- Pattern matching in tests instead of length/1 checks
- All Credo checks passing without disabling rules

Testing:
- Added comprehensive test coverage (16 tests, all passing)
- Tests 2.4GHz channel conversion (1, 6, 11)
- Tests 5GHz channel conversion (36, 149, 165)
- Tests unknown channel filtering (999 → filtered out)
- Tests integration with static sensors (10 static + 2 frequency = 12 total)
- Tests graceful handling of channel walk failures
- Mox-based SNMP adapter mocking

Impact:
- Dynamic frequency monitoring enables accurate channel tracking
- Handles AP channel changes (auto-DFS, manual config changes)
- Static OID approach was inaccurate (channel changes not reflected)

Source:
- LibreNMS LibreNMS/OS/Unifi.php discoverWirelessFrequency/pollWirelessFrequency
- LibreNMS LibreNMS/Modules/Wireless.php channelToFrequency lookup table

Priority: TIER 3 MEDIUM (3-5 hour effort, vendor module enhancement)
Gap Status: UniFi parity 80% → 90%
Result: TIER 3 COMPLETE - All Ubiquiti platform gaps resolved

Files:
- lib/towerops/snmp/profiles/vendors/unifi.ex
- test/towerops/snmp/profiles/vendors/unifi_test.exs
- CHANGELOG.txt
2026-02-12 09:05:00 -06:00
..
integration routeros fixes and latency rounding 2026-02-09 17:30:06 -06:00
mix/tasks more tests 2026-02-03 10:19:56 -06:00
snmpkit Fix all Credo issues 2026-02-06 10:31:09 -06:00
support feat: implement Arista EOS sensor enhancements (DOM power, thresholds, grouping) 2026-02-11 17:23:33 -06:00
towerops feat: add UniFi channel-to-frequency dynamic conversion 2026-02-12 09:05:00 -06:00
towerops_web feat: add Dell PowerVault storage array text-based sensor parsing 2026-02-12 08:38:30 -06:00
test_helper.exs complete overhaul of snmp engine to C nif 2026-01-30 12:27:12 -06:00
towerops_native_test.exs complete overhaul of snmp engine to C nif 2026-01-30 12:27:12 -06:00