diff options
author | 2023-01-31 03:38:15 +0800 | |
---|---|---|
committer | 2023-01-30 14:38:15 -0500 | |
commit | b7279d1f668ad2fe401c254543f9dcbc878b0378 (patch) | |
tree | d146e74e9f12c4f0038c974105c9468e4ee33219 /plugin/forward/forward_test.go | |
parent | 68b2aa6708cca8d9e7e32f493e07849543839b9d (diff) | |
download | coredns-b7279d1f668ad2fe401c254543f9dcbc878b0378.tar.gz coredns-b7279d1f668ad2fe401c254543f9dcbc878b0378.tar.zst coredns-b7279d1f668ad2fe401c254543f9dcbc878b0378.zip |
plugin/forward: fix broken tap plugins when dnstap plugins specified (#5890)
* plugin/forward: fix broken tap plugins when dnstap plugins specified
---------
Signed-off-by: Gerhard Tan <gwohau.tan@gmail.com>
Diffstat (limited to 'plugin/forward/forward_test.go')
-rw-r--r-- | plugin/forward/forward_test.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/plugin/forward/forward_test.go b/plugin/forward/forward_test.go index b0ef47ba9..b50f4ff22 100644 --- a/plugin/forward/forward_test.go +++ b/plugin/forward/forward_test.go @@ -1,7 +1,13 @@ package forward import ( + "strings" "testing" + + "github.com/coredns/caddy" + "github.com/coredns/caddy/caddyfile" + "github.com/coredns/coredns/core/dnsserver" + "github.com/coredns/coredns/plugin/dnstap" ) func TestList(t *testing.T) { @@ -22,3 +28,39 @@ func TestList(t *testing.T) { } } } + +func TestSetTapPlugin(t *testing.T) { + input := `forward . 127.0.0.1 + dnstap /tmp/dnstap.sock full + dnstap tcp://example.com:6000 + ` + stanzas := strings.Split(input, "\n") + c := caddy.NewTestController("dns", strings.Join(stanzas[1:], "\n")) + dnstapSetup, err := caddy.DirectiveAction("dns", "dnstap") + if err != nil { + t.Fatal(err) + } + if err = dnstapSetup(c); err != nil { + t.Fatal(err) + } + c.Dispenser = caddyfile.NewDispenser("", strings.NewReader(stanzas[0])) + if err = setup(c); err != nil { + t.Fatal(err) + } + dnsserver.NewServer("", []*dnsserver.Config{dnsserver.GetConfig(c)}) + f, ok := dnsserver.GetConfig(c).Handler("forward").(*Forward) + if !ok { + t.Fatal("Expected a forward plugin") + } + tap, ok := dnsserver.GetConfig(c).Handler("dnstap").(*dnstap.Dnstap) + if !ok { + t.Fatal("Expected a dnstap plugin") + } + f.SetTapPlugin(tap) + if len(f.tapPlugins) != 2 { + t.Fatalf("Expected: 2 results, got: %v", len(f.tapPlugins)) + } + if f.tapPlugins[0] != tap || tap.Next != f.tapPlugins[1] { + t.Error("Unexpected order of dnstap plugins") + } +} |