package kubernetes import ( "context" "testing" "github.com/coredns/coredns/plugin/kubernetes/object" "github.com/coredns/coredns/plugin/pkg/dnstest" "github.com/coredns/coredns/plugin/test" "github.com/miekg/dns" api "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" ) type APIConnReverseTest struct{} func (APIConnReverseTest) HasSynced() bool { return true } func (APIConnReverseTest) Run() {} func (APIConnReverseTest) Stop() error { return nil } func (APIConnReverseTest) PodIndex(string) []*object.Pod { return nil } func (APIConnReverseTest) EpIndex(string) []*object.Endpoints { return nil } func (APIConnReverseTest) EndpointsList() []*object.Endpoints { return nil } func (APIConnReverseTest) ServiceList() []*object.Service { return nil } func (APIConnReverseTest) Modified() int64 { return 0 } func (APIConnReverseTest) SvcIndex(svc string) []*object.Service { if svc != "svc1.testns" { return nil } svcs := []*object.Service{ { Name: "svc1", Namespace: "testns", ClusterIP: "192.168.1.100", Ports: []api.ServicePort{{Name: "http", Protocol: "tcp", Port: 80}}, }, } return svcs } func (APIConnReverseTest) SvcIndexReverse(ip string) []*object.Service { if ip != "192.168.1.100" { return nil } svcs := []*object.Service{ { Name: "svc1", Namespace: "testns", ClusterIP: "192.168.1.100", Ports: []api.ServicePort{{Name: "http", Protocol: "tcp", Port: 80}}, }, } return svcs } func (APIConnReverseTest) EpIndexReverse(ip string) []*object.Endpoints { switch ip { case "10.0.0.100": case "1234:abcd::1": case "fd00:77:30::a": case "fd00:77:30::2:9ba6": default: return nil } eps := []*object.Endpoints{ { Subsets: []object.EndpointSubset{ { Addresses: []object.EndpointAddress{ {IP: "10.0.0.100", Hostname: "ep1a"}, {IP: "1234:abcd::1", Hostname: "ep1b"}, {IP: "fd00:77:30::a", Hostname: "ip6svc1ex"}, {IP: "fd00:77:30::2:9ba6", Hostname: "ip6svc1in"}, }, Ports: []object.EndpointPort{ {Port: 80, Protocol: "tcp", Name: "http"}, }, }, }, 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.", "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.0.0.7.7.0.0.0.0.d.f.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."), }, }, { // A PTR record query for an existing ipv6 endpoint should return a record Qname: "a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.0.0.7.7.0.0.0.0.d.f.ip6.arpa.", Qtype: dns.TypePTR, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.PTR("a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.0.0.7.7.0.0.0.0.d.f.ip6.arpa. 5 IN PTR ip6svc1ex.svc1.testns.svc.cluster.local."), }, }, { // A PTR record query for an existing ipv6 endpoint should return a record Qname: "6.a.b.9.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.0.0.7.7.0.0.0.0.d.f.ip6.arpa.", Qtype: dns.TypePTR, Rcode: dns.RcodeSuccess, Answer: []dns.RR{ test.PTR("6.a.b.9.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.0.0.7.7.0.0.0.0.d.f.ip6.arpa. 5 IN PTR ip6svc1in.svc1.testns.svc.cluster.local."), }, }, { Qname: "101.0.0.10.in-addr.arpa.", Qtype: dns.TypePTR, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("0.10.in-addr.arpa. 5 IN SOA ns.dns.0.10.in-addr.arpa. hostmaster.0.10.in-addr.arpa. 1502782828 7200 1800 86400 5"), }, }, { Qname: "example.org.cluster.local.", Qtype: dns.TypePTR, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("cluster.local. 5 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1502989566 7200 1800 86400 5"), }, }, { Qname: "svc1.testns.svc.cluster.local.", Qtype: dns.TypePTR, Rcode: dns.RcodeSuccess, Ns: []dns.RR{ test.SOA("cluster.local. 5 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1502989566 7200 1800 86400 5"), }, }, { Qname: "svc1.testns.svc.0.10.in-addr.arpa.", Qtype: dns.TypeA, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("0.10.in-addr.arpa. 5 IN SOA ns.dns.0.10.in-addr.arpa. hostmaster.0.10.in-addr.arpa. 1502989566 7200 1800 86400 5"), }, }, { Qname: "100.0.0.10.cluster.local.", Qtype: dns.TypePTR, Rcode: dns.RcodeNameError, Ns: []dns.RR{ test.SOA("cluster.local. 5 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1502989566 7200 1800 86400 5"), }, }, } 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) } if err := test.SortAndCheck(resp, tc); err != nil { t.Error(err) } } } e='jarred/ci-check'>jarred/ci-check Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/src/cli/package_manager_command.zig (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2023-02-17use mapGravatar Jarred Sumner 1-21/+70
2023-02-17More correct filesystem flags parsingGravatar Jarred Sumner 1-49/+55
2023-02-17Fix issue with express body-parser introduced by our async_hooks polyfillGravatar Jarred Sumner 2-3/+14
2023-02-17Fix a couple flaky testsGravatar Jarred Sumner 5-13/+17
2023-02-17use `bun.logger` instead of `bun.Output` (#2099)Gravatar Alex Lam S.L 4-99/+181
2023-02-17Fix flaky testGravatar Jarred Sumner 1-18/+19
2023-02-17Fix #1602 (#2066)Gravatar Justin Whear 12-94/+228
2023-02-17[install] support git dependencies (#2094)Gravatar Alex Lam S.L 9-279/+1020
2023-02-17Fix #2005 (#2096)Gravatar Justin Whear 2-1/+60
2023-02-17allow `bun add` of packages with capital letters (#2095)Gravatar Alex Lam S.L 3-2/+53
2023-02-16faster Buffer.byteLength("latin1")Gravatar Jarred Sumner 1-36/+28
2023-02-16Support yarn-like `"workspaces"."packages": string[]` (#2086)Gravatar Jarred Sumner 2-97/+253
2023-02-16Implement `machine` for Linux (#2088)Gravatar Justin Whear 3-0/+19
2023-02-16Fix #1516 (#2089)Gravatar Justin Whear 3-7/+14
2023-02-16Update globals.d.tsGravatar Jarred Sumner 1-0/+15
2023-02-16Add missing type definitionGravatar Jarred Sumner 1-0/+2
2023-02-16[napi] Fix crash in creating arrays > 8 elements longGravatar Jarred Sumner 1-10/+9
2023-02-16Clarify and clean up macOS build process (#2087)Gravatar Luke Deen Taylor 2-4/+4
2023-02-15Don't crash on null version stringGravatar Jarred Sumner 1-1/+1
2023-02-15Add disabled optimizationGravatar Jarred Sumner 1-0/+51
2023-02-15Add more logging to napiGravatar Jarred Sumner 1-30/+150
2023-02-15Incorrect implementation of `napi_create_threadsafe_function`Gravatar Jarred Sumner 1-21/+43
2023-02-15feat(fetch) AbortSignal (#2019)Gravatar Ciro Spaciari 17-58/+443
2023-02-15fix(webcrypto): fix ed25519 CryptoKey.algorithm (#2082)Gravatar Derrick Farris 2-9/+28
2023-02-15Fix 2063 (#2079)Gravatar Justin Whear 2-2/+11
2023-02-15Make sure we test * in tesconfigGravatar Jarred Sumner 2-1/+3
2023-02-15don't return an error thereGravatar Jarred Sumner 2-1/+3
2023-02-15Fix castGravatar Jarred Sumner 1-15/+17
2023-02-15ensure we allocate for > 6 argumentsGravatar Jarred Sumner 1-6/+13
2023-02-15Update async_hooks.exports.jsGravatar Jarred Sumner 1-2/+2
2023-02-15workaround prisma's usage of `eval("__dirname")`Gravatar Jarred Sumner 1-1/+23
2023-02-15some cleanupGravatar Jarred Sumner 2-15/+9
2023-02-15ED25519 WebCrypto (#1971)Gravatar Jarred Sumner 12-11/+1167
2023-02-14Fix up async_hooks polyfillGravatar Jarred Sumner 2-8/+63
2023-02-14Add temporary polyfill for async_hooksGravatar Jarred Sumner 5-108/+324
2023-02-14:mask: async_hooksGravatar Jarred Sumner 1-0/+4
2023-02-14[install] link network-delayed `.bin` scripts correctly (#2076)Gravatar Alex Lam S.L 3-16/+21
2023-02-14don't break esbuildGravatar Jarred Sumner 7-75/+50
2023-02-14Add workaround for `tls` and `worker_threads`Gravatar Jarred Sumner 3-1/+64
2023-02-14[install] improve `package.json` validation (#2074)Gravatar Alex Lam S.L 6-104/+342
2023-02-14[WIP] fix(node:fs): export `fs.ReadStream` and `fs.WriteStream` (#1798)Gravatar Derrick Farris 4-72/+326
2023-02-14Reject with error when invalid fetch() body (#2047)Gravatar Eric Zhang 2-12/+44
2023-02-13fix(FormData): make String explicit, thanks @dylan-conway (#2065)Gravatar Derrick Farris 1-1/+1
2023-02-13fix(FormData): add string literal operator (#2064)Gravatar Derrick Farris 1-2/+2
2023-02-13Add pretty printer for FormDataGravatar Jarred Sumner 5-1/+101
2023-02-13Add dynamic port assigning to Bun.serve (#2062)Gravatar MichaƂ Warda 3-5/+40
2023-02-13feat(napi): add `napi_get_value_bigint_words` (#2061)Gravatar Derrick Farris 3-0/+44
2023-02-13Fixes https://github.com/oven-sh/bun/issues/1456Gravatar Jarred Sumner 8-1/+148