proxMon/agent/test/proxmox_agent/collectors/system_info_test.exs

38 lines
1.3 KiB
Elixir

defmodule ProxmoxAgent.Collectors.SystemInfoTest do
use ExUnit.Case, async: true
alias ProxmoxAgent.Collectors.SystemInfo
@fixtures Path.expand("../../fixtures/system", __DIR__)
defp fake_runner do
fn
"pveversion", [] -> {:ok, File.read!(Path.join(@fixtures, "pveversion.txt"))}
"zfs", ["--version"] -> {:ok, File.read!(Path.join(@fixtures, "zfs_version.txt"))}
"apt", ["list", "--upgradable"] -> {:ok, File.read!(Path.join(@fixtures, "apt_upgradable.txt"))}
end
end
test "collects pveversion, zfs version and pending upgrade count" do
sample = SystemInfo.collect(runner: fake_runner())
assert sample.pve_version =~ "pve-manager/8.3.1"
assert sample.zfs_version =~ "2.3.0"
assert sample.pending_updates == 2
assert sample.errors == []
end
test "partial sample when one command fails" do
partial = fn
"pveversion", [] -> {:ok, "pve-manager/8.3.1/abc (running kernel: 6.8.12-1-pve)\n"}
"zfs", ["--version"] -> {:error, {:enoent, "zfs"}}
"apt", ["list", "--upgradable"] -> {:ok, "Listing...\n"}
end
sample = SystemInfo.collect(runner: partial)
assert sample.pve_version =~ "8.3.1"
assert sample.zfs_version == nil
assert sample.pending_updates == 0
assert length(sample.errors) == 1
end
end