package kubernetes import ( "testing" "github.com/coredns/coredns/plugin/pkg/dnstest" "github.com/coredns/coredns/plugin/test" "github.com/miekg/dns" "golang.org/x/net/context" meta "k8s.io/apimachinery/pkg/apis/meta/v1" api "k8s.io/client-go/pkg/api/v1" ) type APIConnReverseTest struct{} func (APIConnReverseTest) HasSynced() bool { return true } func (APIConnReverseTest) Run() { return } func (APIConnReverseTest) Stop() error { return nil } func (APIConnReverseTest) PodIndex(string) []*api.Pod { return nil } func (APIConnReverseTest) SvcIndex(string) []*api.Service { return nil } func (APIConnReverseTest) EpIndex(string) []*api.Endpoints { return nil } func (APIConnReverseTest) EndpointsList() []*api.Endpoints { return nil } func (APIConnReverseTest) ServiceList() []*api.Service { return nil } func (APIConnReverseTest) SvcIndexReverse(ip string) []*api.Service { if ip != "192.168.1.100" { return nil } svcs := []*api.Service{ { ObjectMeta: meta.ObjectMeta{ Name: "svc1", Namespace: "testns", }, Spec: api.ServiceSpec{ ClusterIP: "192.168.1.100", Ports: []api.ServicePort{{ Name: "http", Protocol: "tcp", Port: 80, }}, }, }, } return svcs } func (APIConnReverseTest) EpIndexReverse(ip string) []*api.Endpoints { switch ip { case "10.0.0.100": case "1234:abcd::1": default: return nil } eps := []*api.Endpoints{ { Subsets: []api.EndpointSubset{ { Addresses: []api.EndpointAddress{ { IP: "10.0.0.100", Hostname: "ep1a", }, { IP: "1234:abcd::1", Hostname: "ep1b", }, }, Ports: []api.EndpointPort{ { Port: 80, Protocol: "tcp", Name: "http", }, }, }, }, ObjectMeta: meta.ObjectMeta{ Name: "svc1", Namespace: "testns", }, }, } return eps } func (APIConnReverseTest) GetNodeByName(name string) (*api.Node, error) { return &api.Node{ ObjectMeta: meta.ObjectMeta{ Name: "test.node.foo.bar", }, }, nil } func (APIConnReverseTest) GetNamespaceByName(name string) (*api.Namespace, error) { return &api.Namespace{ ObjectMeta: meta.ObjectMeta{ Name: name, }, }, nil } func TestReverse(t *testing.T) { k := New([]string{"cluster.local.", "0.10.in-addr.arpa.", "168.192.in-addr.arpa.", "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.c.b.a.4.3.2.1.ip6.arpa."}) k.APIConn = &APIConnReverseTest{} tests := []test.Case{ { Qname: "100.0.0.10.in-addr.arpa.", Qtype: dns.TypePTR, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.PTR("100.0.0.10.in-addr.arpa. 5 IN PTR ep1a.svc1.testns.svc.cluster.local."), }, }, { Qname: "100.1.168.192.in-addr.arpa.", Qtype: dns.TypePTR, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.PTR("100.1.168.192.in-addr.arpa. 5 IN PTR svc1.testns.svc.cluster.local."), }, }, { // A PTR record query for an existing ipv6 endpoint should return a record Qname: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.c.b.a.4.3.2.1.ip6.arpa.", Qtype: dns.TypePTR, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.PTR("1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.c.b.a.4.3.2.1.ip6.arpa. 5 IN PTR ep1b.svc1.testns.svc.cluster.local."), }, }, { Qname: "101.0.0.10.in-addr.arpa.", Qtype: dns.TypePTR, Rcode: dns.RcodeSuccess, Ns: []dns.RR{ test.SOA("0.10.in-addr.arpa. 300 IN SOA ns.dns.0.10.in-addr.arpa. hostmaster.0.10.in-addr.arpa. 1502782828 7200 1800 86400 60"), }, }, { Qname: "example.org.cluster.local.", Qtype: dns.TypePTR, Rcode: dns.RcodeSuccess, Ns: []dns.RR{ test.SOA("cluster.local. 300 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1502989566 7200 1800 86400 60"), }, }, } ctx := context.TODO() for i, tc := range tests { r := tc.Msg() w := dnstest.NewRecorder(&test.ResponseWriter{}) _, err := k.ServeDNS(ctx, w, r) if err != tc.Error { t.Errorf("Test %d: expected no error, got %v", i, err) return } resp := w.Msg if resp == nil { t.Fatalf("Test %d: got nil message and no error for: %s %d", i, r.Question[0].Name, r.Question[0].Qtype) } test.SortAndCheck(t, resp, tc) } } lue='examples/hackernews'>examples/hackernews Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/packages/astro/e2e/fixtures/multiple-frameworks (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2024-02-27Improve the message of `MiddlewareCantBeLoaded` for clarity (#10239)Gravatar Ming-jun Lu 2-1/+6
2024-02-26[ci] formatGravatar Martin Trapp 1-1/+3
2024-02-26Warn when view transitions run on a prefer-reduced-motion device (#10222)Gravatar Martin Trapp 2-0/+8
2024-02-26[ci] release (#10218)astro@4.4.5@astrojs/vercel@7.3.4@astrojs/svelte@5.1.0@astrojs/db@0.4.1Gravatar Houston (Bot) 46-114/+100
2024-02-26fix: better assetsInlineLimit runtime type checking (#10154)Gravatar James Ross 2-9/+13
2024-02-26fix: correct remote url (#10223)Gravatar Ben Holmes 2-2/+8
2024-02-26fix(toolbar): Make it so every built-in app can be closed by outside clicks (...Gravatar Erika 8-51/+63
2024-02-26Fix an issue where Vercel adapter may create functions for prerendered routes...Gravatar Ming-jun Lu 4-2/+26
2024-02-26[ci] formatGravatar Matthew Phillips 1-1/+1
2024-02-26Fix hydration scripts missing from dynamic slot usage (#10219)Gravatar Matthew Phillips 6-1/+69
2024-02-26[ci] formatGravatar Matthew Phillips 1-5/+5
2024-02-26Prevent errors in rendering from crashing server (#10221)Gravatar Matthew Phillips 7-14/+78
2024-02-26fix: svelte 5 mount/hydrate api change. (#10224)Gravatar 前端子鱼 3-5/+12
2024-02-24[ci] formatGravatar Arsh 1-9/+30
2024-02-24prevent warning: `Astro.request.headers` is not available in "static" output ...Gravatar Arsh 2-27/+30
2024-02-23Improved error logging from config (#10207)Gravatar Ben Holmes 4-36/+67
2024-02-23[ci] formatGravatar Arsh 3-3/+3
2024-02-23fix(dev): remove params for prerendered pages (#10199)Gravatar Arsh 9-13/+78
2024-02-23[ci] release (#10213)astro@4.4.4@astrojs/vercel@7.3.3@astrojs/node@8.2.1@astrojs/db@0.4.0Gravatar Houston (Bot) 41-177/+95
2024-02-23Fixes edge middleware calling nested routes (#10215)Gravatar Matthew Phillips 2-1/+6
2024-02-23Adds an error message for non-string transition:name values (#10205)Gravatar Martin Trapp 2-0/+8
2024-02-23[ci] formatGravatar Furkan Erdem 1-1/+1
2024-02-23Fix(node): Custom headers are not present in responses from standalone Node s...Gravatar Furkan Erdem 8-0/+163