test: Add tests for sanitizeGuestAddressStrings, parseContainerConfigNetworks, mergeNVMeTempsIntoDisks
- sanitizeGuestAddressStrings: IPv6 loopback with CIDR (::1/128) edge case (96.2% -> 100%) - parseContainerConfigNetworks: parts without equals, mac/ips/ip6addr/ip6prefix key variants, whitespace-only values, all-empty results (97.2% -> 100%) - mergeNVMeTempsIntoDisks: NVMe disk with no legacy temps (continue branch), more disks than temps (break branch) (97% -> 100%)
This commit is contained in:
parent
4e33b396e0
commit
ed0644035f
3 changed files with 152 additions and 0 deletions
|
|
@ -434,6 +434,103 @@ func TestParseContainerConfigNetworks(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "parts without equals sign skipped",
|
||||
input: map[string]interface{}{
|
||||
"net0": "name=eth0,invalidpart,hwaddr=AA:BB:CC:DD:EE:FF",
|
||||
},
|
||||
want: []containerNetworkDetails{
|
||||
{
|
||||
Name: "eth0",
|
||||
MAC: "AA:BB:CC:DD:EE:FF",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "mac key variant",
|
||||
input: map[string]interface{}{
|
||||
"net0": "name=eth0,mac=AA:BB:CC:DD:EE:FF",
|
||||
},
|
||||
want: []containerNetworkDetails{
|
||||
{
|
||||
Name: "eth0",
|
||||
MAC: "AA:BB:CC:DD:EE:FF",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "ips key variant",
|
||||
input: map[string]interface{}{
|
||||
"net0": "name=eth0,ips=192.168.1.100",
|
||||
},
|
||||
want: []containerNetworkDetails{
|
||||
{
|
||||
Name: "eth0",
|
||||
Addresses: []string{"192.168.1.100"},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "ip6addr key variant",
|
||||
input: map[string]interface{}{
|
||||
"net0": "name=eth0,ip6addr=2001:db8::1",
|
||||
},
|
||||
want: []containerNetworkDetails{
|
||||
{
|
||||
Name: "eth0",
|
||||
Addresses: []string{"2001:db8::1"},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "ip6prefix key variant",
|
||||
input: map[string]interface{}{
|
||||
"net0": "name=eth0,ip6prefix=2001:db8::",
|
||||
},
|
||||
want: []containerNetworkDetails{
|
||||
{
|
||||
Name: "eth0",
|
||||
Addresses: []string{"2001:db8::"},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "whitespace only interface value",
|
||||
input: map[string]interface{}{
|
||||
"net0": " ",
|
||||
},
|
||||
want: nil,
|
||||
},
|
||||
{
|
||||
name: "all empty net values returns nil",
|
||||
input: map[string]interface{}{
|
||||
"net0": "",
|
||||
"net1": " ",
|
||||
},
|
||||
want: nil,
|
||||
},
|
||||
{
|
||||
name: "only unrecognized keys uses key as name",
|
||||
input: map[string]interface{}{
|
||||
"net0": "unknown=value,other=data",
|
||||
},
|
||||
want: []containerNetworkDetails{
|
||||
{
|
||||
Name: "net0",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "value parts only without equals",
|
||||
input: map[string]interface{}{
|
||||
"net0": "noequals,alsonoequals",
|
||||
},
|
||||
want: []containerNetworkDetails{
|
||||
{
|
||||
Name: "net0",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
|
|||
|
|
@ -434,6 +434,8 @@ func TestSanitizeGuestAddressStrings(t *testing.T) {
|
|||
{name: "filters loopback from list", input: "192.168.1.1,127.0.0.1,10.0.0.1", want: []string{"192.168.1.1", "10.0.0.1"}},
|
||||
{name: "ipv6 zone identifier stripped", input: "2001:db8::1%eth0", want: []string{"2001:db8::1"}},
|
||||
{name: "whitespace trimmed", input: " 192.168.1.100 ", want: []string{"192.168.1.100"}},
|
||||
// Edge case: ::1 with CIDR notation to hit the HasPrefix(lower, "::1") check after CIDR stripping
|
||||
{name: "loopback ipv6 with cidr", input: "::1/128", want: nil},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
|
|
|
|||
|
|
@ -231,6 +231,59 @@ func TestMergeNVMeTempsIntoDisks(t *testing.T) {
|
|||
{Node: "node1", DevPath: "/dev/nvme0n1", Type: "nvme", Temperature: 0},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "NVMe disk with no legacy temps for node (continue branch)",
|
||||
disks: []models.PhysicalDisk{
|
||||
{Node: "node1", DevPath: "/dev/nvme0n1", Type: "nvme", Temperature: 0},
|
||||
{Node: "node2", DevPath: "/dev/nvme0n1", Type: "nvme", Temperature: 0},
|
||||
},
|
||||
nodes: []models.Node{
|
||||
{
|
||||
Name: "node1",
|
||||
Temperature: &models.Temperature{
|
||||
Available: true,
|
||||
NVMe: []models.NVMeTemp{
|
||||
{Device: "nvme0", Temp: 45.0},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "node2",
|
||||
Temperature: &models.Temperature{
|
||||
Available: true,
|
||||
// No NVMe temps for node2, but SMART is empty too
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: []models.PhysicalDisk{
|
||||
{Node: "node1", DevPath: "/dev/nvme0n1", Type: "nvme", Temperature: 45},
|
||||
{Node: "node2", DevPath: "/dev/nvme0n1", Type: "nvme", Temperature: 0},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "more NVMe disks than temps (break branch)",
|
||||
disks: []models.PhysicalDisk{
|
||||
{Node: "node1", DevPath: "/dev/nvme0n1", Type: "nvme", Temperature: 0},
|
||||
{Node: "node1", DevPath: "/dev/nvme1n1", Type: "nvme", Temperature: 0},
|
||||
{Node: "node1", DevPath: "/dev/nvme2n1", Type: "nvme", Temperature: 0},
|
||||
},
|
||||
nodes: []models.Node{
|
||||
{
|
||||
Name: "node1",
|
||||
Temperature: &models.Temperature{
|
||||
Available: true,
|
||||
NVMe: []models.NVMeTemp{
|
||||
{Device: "nvme0", Temp: 40.0},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expected: []models.PhysicalDisk{
|
||||
{Node: "node1", DevPath: "/dev/nvme0n1", Type: "nvme", Temperature: 40},
|
||||
{Node: "node1", DevPath: "/dev/nvme1n1", Type: "nvme", Temperature: 0},
|
||||
{Node: "node1", DevPath: "/dev/nvme2n1", Type: "nvme", Temperature: 0},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
|
|||
Loading…
Reference in a new issue