aboutsummaryrefslogtreecommitdiff
path: root/plugin/grpc/grpc_test.go
diff options
context:
space:
mode:
authorGravatar IƱigo <inigohu@gmail.com> 2019-03-14 08:12:28 +0100
committerGravatar Miek Gieben <miek@miek.nl> 2019-03-14 07:12:28 +0000
commit7b6cb76237d151ffa056c742ec281a17548fa089 (patch)
tree2100dd26d9e41f0be6fb365de9aeb334d7a94075 /plugin/grpc/grpc_test.go
parent0d8e1cf8b4ac157ef08837d0ff1e83597b8d1211 (diff)
downloadcoredns-7b6cb76237d151ffa056c742ec281a17548fa089.tar.gz
coredns-7b6cb76237d151ffa056c742ec281a17548fa089.tar.zst
coredns-7b6cb76237d151ffa056c742ec281a17548fa089.zip
plugin/grpc: New gRPC plugin (#2667)
* plugin/grpc: New gRPC plugin * some changes after the first review: - remove healthcheck. gRPC already has this implicitly implemented - some naming and stetic changes - fix some comments - other minor fixes * plugin/grpc: New gRPC plugin * some changes after the first review: - remove healthcheck. gRPC already has this implicitly implemented - some naming and stetic changes - fix some comments - other minor fixes * add OWNERS file and change plugin order * remove Rcode checker
Diffstat (limited to 'plugin/grpc/grpc_test.go')
-rw-r--r--plugin/grpc/grpc_test.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/plugin/grpc/grpc_test.go b/plugin/grpc/grpc_test.go
new file mode 100644
index 000000000..06375ec5e
--- /dev/null
+++ b/plugin/grpc/grpc_test.go
@@ -0,0 +1,75 @@
+package grpc
+
+import (
+ "context"
+ "errors"
+ "testing"
+
+ "github.com/coredns/coredns/pb"
+ "github.com/coredns/coredns/plugin/pkg/dnstest"
+ "github.com/coredns/coredns/plugin/test"
+
+ "github.com/miekg/dns"
+)
+
+func TestGRPC(t *testing.T) {
+ m := &dns.Msg{}
+ msg, err := m.Pack()
+ if err != nil {
+ t.Fatalf("Error packing response: %s", err.Error())
+ }
+ dnsPacket := &pb.DnsPacket{Msg: msg}
+ tests := map[string]struct {
+ proxies []*Proxy
+ wantErr bool
+ }{
+ "single_proxy_ok": {
+ proxies: []*Proxy{
+ {client: &testServiceClient{dnsPacket: dnsPacket, err: nil}},
+ },
+ wantErr: false,
+ },
+ "multiple_proxies_ok": {
+ proxies: []*Proxy{
+ {client: &testServiceClient{dnsPacket: dnsPacket, err: nil}},
+ {client: &testServiceClient{dnsPacket: dnsPacket, err: nil}},
+ {client: &testServiceClient{dnsPacket: dnsPacket, err: nil}},
+ },
+ wantErr: false,
+ },
+ "single_proxy_ko": {
+ proxies: []*Proxy{
+ {client: &testServiceClient{dnsPacket: nil, err: errors.New("")}},
+ },
+ wantErr: true,
+ },
+ "multiple_proxies_one_ko": {
+ proxies: []*Proxy{
+ {client: &testServiceClient{dnsPacket: dnsPacket, err: nil}},
+ {client: &testServiceClient{dnsPacket: nil, err: errors.New("")}},
+ {client: &testServiceClient{dnsPacket: dnsPacket, err: nil}},
+ },
+ wantErr: false,
+ },
+ "multiple_proxies_ko": {
+ proxies: []*Proxy{
+ {client: &testServiceClient{dnsPacket: nil, err: errors.New("")}},
+ {client: &testServiceClient{dnsPacket: nil, err: errors.New("")}},
+ {client: &testServiceClient{dnsPacket: nil, err: errors.New("")}},
+ },
+ wantErr: true,
+ },
+ }
+
+ for name, tt := range tests {
+ t.Run(name, func(t *testing.T) {
+ g := newGRPC()
+ g.from = "."
+ g.proxies = tt.proxies
+ rec := dnstest.NewRecorder(&test.ResponseWriter{})
+ if _, err := g.ServeDNS(context.TODO(), rec, m); err != nil && !tt.wantErr {
+ t.Fatal("Expected to receive reply, but didn't")
+ }
+ })
+ }
+}