two/internal/watchdog/resources_test.go
GnomeZworc ea60c0db54
f-29: watchdog: add checkvpc #29
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-17 23:39:07 +02:00

81 lines
2.4 KiB
Go

package watchdog
import (
"reflect"
"strings"
"testing"
)
func TestResourceNames_ExtraitDepuisLesClesState(t *testing.T) {
pairs := map[string]string{
"vpc/vp-admin/state": "running",
"vpc/vp-lab/state": "creating",
}
want := []string{"vp-admin", "vp-lab"}
if got := resourceNames(pairs, prefixVPC); !reflect.DeepEqual(got, want) {
t.Errorf("resourceNames = %v, attendu %v", got, want)
}
}
func TestResourceNames_IgnoreLesAutresCles(t *testing.T) {
pairs := map[string]string{
"subnet/br-000042/state": "running",
"subnet/br-000042/vpc": "vp-admin",
"subnet/br-000042/cidr": "10.0.0.0/24",
"subnet/br-000042/local_iface": "br-000042",
}
want := []string{"br-000042"}
if got := resourceNames(pairs, prefixSubnet); !reflect.DeepEqual(got, want) {
t.Errorf("resourceNames = %v, attendu %v", got, want)
}
}
func TestResourceNames_IgnoreLesClesImbriquees(t *testing.T) {
pairs := map[string]string{
"vm/i-test1/state": "running",
"vm/i-test1/disk/vda/state": "attached",
"vm/i-test1/disk/vdb/state": "attached",
"vm/i-test1/dhcp/10.0.0.5": "00:22:33:44:55:66",
}
want := []string{"i-test1"}
if got := resourceNames(pairs, prefixVM); !reflect.DeepEqual(got, want) {
t.Errorf("resourceNames = %v, attendu %v", got, want)
}
}
func TestResourceNames_Trie(t *testing.T) {
pairs := map[string]string{
"vpc/vp-c/state": "running",
"vpc/vp-a/state": "running",
"vpc/vp-b/state": "running",
}
want := []string{"vp-a", "vp-b", "vp-c"}
for i := range 20 {
if got := resourceNames(pairs, prefixVPC); !reflect.DeepEqual(got, want) {
t.Fatalf("itération %d : resourceNames = %v, attendu %v", i, got, want)
}
}
}
func TestResourceNames_MapVide(t *testing.T) {
if got := resourceNames(map[string]string{}, prefixVPC); len(got) != 0 {
t.Errorf("resourceNames = %v, attendu vide", got)
}
}
func TestResourceNames_PrefixeNonCorrespondant(t *testing.T) {
pairs := map[string]string{"vm/i-test1/state": "running"}
if got := resourceNames(pairs, prefixVPC); len(got) != 0 {
t.Errorf("resourceNames = %v, attendu vide", got)
}
}
func TestLinkProblem_InterfaceInexistante(t *testing.T) {
p := linkProblem("interface-qui-nexiste-pas-42")
if p == "" {
t.Fatal("linkProblem devrait signaler un problème pour une interface inexistante")
}
if !strings.Contains(p, "interface-qui-nexiste-pas-42") {
t.Errorf("le message %q devrait nommer l'interface", p)
}
}