package provider import ( "fmt" "regexp" "testing" "k8s.io/apimachinery/pkg/types" ) var nameRegexp = regexp.MustCompile(`^proxy-[a-z2-7]{16}$`) func TestNameFromUID_idempotent(t *testing.T) { t.Parallel() uid := types.UID("f47ac10b-58cc-4372-a567-0e02b2c3d479") got1 := NameFromUID(uid) got2 := NameFromUID(uid) if got1 != got2 { t.Errorf("NameFromUID(%q) is not idempotent: %q != %q", uid, got1, got2) } } func TestNameFromUID_charsetAndLength(t *testing.T) { t.Parallel() tests := []types.UID{ "f47ac10b-58cc-4372-a567-0e02b2c3d479", "", "a", "00000000-0000-0000-0000-000000000000", "ffffffff-ffff-ffff-ffff-ffffffffffff", } for _, uid := range tests { t.Run(string(uid), func(t *testing.T) { t.Parallel() name := NameFromUID(uid) if !nameRegexp.MatchString(name) { t.Errorf("NameFromUID(%q) = %q, does not match %s", uid, name, nameRegexp) } if len(name) > 63 { t.Errorf("NameFromUID(%q) = %q, length %d exceeds GCP's 63-char limit", uid, name, len(name)) } if len(name) != len(namePrefix)+16 { t.Errorf("NameFromUID(%q) = %q, length %d, want %d", uid, name, len(name), len(namePrefix)+16) } }) } } func TestNameFromUID_distinctAcrossFleet(t *testing.T) { t.Parallel() const n = 10000 seen := make(map[string]types.UID, n) for i := range n { uid := types.UID(fmt.Sprintf("00000000-0000-0000-0000-%012d", i)) name := NameFromUID(uid) if prior, ok := seen[name]; ok { t.Fatalf("collision: NameFromUID(%q) == NameFromUID(%q) == %q", uid, prior, name) } seen[name] = uid } }