package daemonsetdns import ( "testing" "time" ) func TestCorrectName(t *testing.T) { type resp struct { nodename string daemonset string namespace string err error } tests := map[string]struct { input string want resp }{ "simple": { input: "worker1.vncserver.novnc.pod-locator.", want: resp{nodename: "worker1", daemonset: "vncserver", namespace: "novnc", err: nil}, }, "multipart node name": { input: "node1.worker1.vncserver.novnc.pod-locator.", want: resp{nodename: "node1.worker1", daemonset: "vncserver", namespace: "novnc", err: nil}, }, "Invalid Name": { input: "worker1.vncserver.novnc.pod.", want: resp{nodename: "", daemonset: "", namespace: "", err: errDNSName}, }, "Invalid length": { input: "vncserver.novnc.pod-locator.", want: resp{nodename: "", daemonset: "", namespace: "", err: errDNSLen}, }, } for name, tc := range tests { t.Run(name, func(t *testing.T) { nodeName, daemonset, namespace, err := extractName(tc.input) got := resp{ nodename: nodeName, daemonset: daemonset, namespace: namespace, err: err, } if tc.want != got { t.Fatalf("Expected %#v, got %#v", tc.want, got) } }) } } func TestDNSTimeout(t *testing.T) { // Nginx (used by novnc and queries daemonsetdns) has a default dns // resolver_timeout of 30s. Any requests which take longer than this should // be abandoned to save resources. Should consider the affect on nginx if // increasing the timeout. // https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver_timeout if dnsTimeout != 30*time.Second { t.Fatalf("Unexpected dns timeout, expected %v, found %v", "30s", dnsTimeout) } }