101 lines
2.6 KiB
Elixir
101 lines
2.6 KiB
Elixir
defmodule Towerops.Snmp.Profiles.Vendors.AlvarionTest do
|
|
use Towerops.DataCase, async: true
|
|
|
|
import Mox
|
|
|
|
alias Towerops.Snmp.Profiles.Vendors.Alvarion
|
|
alias Towerops.Snmp.SnmpMock
|
|
|
|
setup :verify_on_exit!
|
|
|
|
@client_opts [
|
|
ip: "192.168.1.1",
|
|
community: "public",
|
|
version: "2c",
|
|
port: 161,
|
|
timeout: 5000
|
|
]
|
|
|
|
describe "profile_names/0" do
|
|
test "returns breeze profile name" do
|
|
assert Alvarion.profile_names() == ["breeze"]
|
|
end
|
|
end
|
|
|
|
describe "detect_hardware/1" do
|
|
test "detects hardware from model OID" do
|
|
expect(SnmpMock, :get, fn _, "1.3.6.1.4.1.12394.4.1.1.1.0", _ ->
|
|
{:ok, "BreezeMAX 5000"}
|
|
end)
|
|
|
|
assert Alvarion.detect_hardware(@client_opts) == "BreezeMAX 5000"
|
|
end
|
|
|
|
test "returns nil when OID unavailable" do
|
|
expect(SnmpMock, :get, fn _, _, _ ->
|
|
{:error, :no_such_object}
|
|
end)
|
|
|
|
assert Alvarion.detect_hardware(@client_opts) == nil
|
|
end
|
|
end
|
|
|
|
describe "wireless_oid_defs/0" do
|
|
test "returns list of wireless sensor definitions" do
|
|
defs = Alvarion.wireless_oid_defs()
|
|
|
|
assert [_ | _] = defs
|
|
end
|
|
|
|
test "includes RSSI sensor" do
|
|
defs = Alvarion.wireless_oid_defs()
|
|
rssi = Enum.find(defs, &(&1.sensor_descr == "RSSI"))
|
|
|
|
assert rssi.sensor_type == "rssi"
|
|
assert rssi.sensor_unit == "dBm"
|
|
end
|
|
|
|
test "includes SNR sensor" do
|
|
defs = Alvarion.wireless_oid_defs()
|
|
snr = Enum.find(defs, &(&1.sensor_descr == "SNR"))
|
|
|
|
assert snr.sensor_type == "snr"
|
|
assert snr.sensor_unit == "dB"
|
|
end
|
|
|
|
test "includes associated subscribers sensor" do
|
|
defs = Alvarion.wireless_oid_defs()
|
|
clients = Enum.find(defs, &(&1.sensor_descr == "Associated Subscribers"))
|
|
|
|
assert clients.sensor_type == "clients"
|
|
end
|
|
end
|
|
|
|
describe "discover_wireless_sensors/1" do
|
|
test "discovers sensors when SNMP responds" do
|
|
expect(SnmpMock, :get, 4, fn _, oid, _ ->
|
|
cond do
|
|
String.contains?(oid, "12394.4.1.3.1.0") -> {:ok, -65}
|
|
String.contains?(oid, "12394.4.1.3.2.0") -> {:ok, 25}
|
|
String.contains?(oid, "12394.4.1.5.1.0") -> {:ok, 48}
|
|
String.contains?(oid, "12394.4.1.2.3.0") -> {:ok, 20}
|
|
true -> {:error, :no_such_object}
|
|
end
|
|
end)
|
|
|
|
sensors = Alvarion.discover_wireless_sensors(@client_opts)
|
|
|
|
assert length(sensors) == 4
|
|
end
|
|
|
|
test "returns empty list when no sensors respond" do
|
|
expect(SnmpMock, :get, 4, fn _, _, _ ->
|
|
{:error, :no_such_object}
|
|
end)
|
|
|
|
sensors = Alvarion.discover_wireless_sensors(@client_opts)
|
|
|
|
assert sensors == []
|
|
end
|
|
end
|
|
end
|