func TestSkyNamedPortSRVLookup(t *testing.T) { kd := newKubeDNS() skydnsConfig := &skyserver.Config{Domain: testDomain, DnsAddr: "0.0.0.0:53"} skyserver.SetDefaults(skydnsConfig) s := skyserver.New(kd, skydnsConfig) service := newHeadlessService() eip := "10.0.0.1" endpoints := newEndpoints(service, newSubsetWithOnePort("http", 8081, eip)) assert.NoError(t, kd.endpointsStore.Add(endpoints)) kd.newService(service) name := strings.Join([]string{"_http", "_tcp", testService, testNamespace, "svc", testDomain}, ".") question := dns.Question{Name: name, Qtype: dns.TypeSRV, Qclass: dns.ClassINET} rec, extra, err := s.SRVRecords(question, name, 512, false) if err != nil { t.Fatalf("Failed srv record lookup on service with fqdn %v", name) } svcDomain := strings.Join([]string{testService, testNamespace, "svc", testDomain}, ".") assertARecordsMatchIPs(t, extra, eip) assertSRVRecordsMatchTarget( t, rec, fmt.Sprintf("%x.%v", util.HashServiceRecord(util.NewServiceRecord(eip, 0)), svcDomain)) assertSRVRecordsMatchPort(t, rec, 8081) }
func TestSkySimpleSRVLookup(t *testing.T) { kd := newKubeDNS() skydnsConfig := &skyserver.Config{Domain: testDomain, DnsAddr: "0.0.0.0:53"} skyserver.SetDefaults(skydnsConfig) s := skyserver.New(kd, skydnsConfig) service := newHeadlessService() endpointIPs := []string{"10.0.0.1", "10.0.0.2"} endpoints := newEndpoints(service, newSubsetWithOnePort("", 80, endpointIPs...)) assert.NoError(t, kd.endpointsStore.Add(endpoints)) kd.newService(service) name := strings.Join([]string{testService, testNamespace, "svc", testDomain}, ".") question := dns.Question{Name: name, Qtype: dns.TypeSRV, Qclass: dns.ClassINET} rec, extra, err := s.SRVRecords(question, name, 512, false) if err != nil { t.Fatalf("Failed srv record lookup on service with fqdn %v", name) } assertARecordsMatchIPs(t, extra, endpointIPs...) targets := []string{} for _, eip := range endpointIPs { // A portal service is always created with a port of '0' targets = append(targets, fmt.Sprintf("%x.%v", util.HashServiceRecord(util.NewServiceRecord(eip, 0)), name)) } assertSRVRecordsMatchTarget(t, rec, targets...) }